Subject: Re: [PATCH v2 1/2] powerpc/powernv: Add poweroff (EPOW, DPO) events support for PowerNV platform

From: Vipin K Parashar <[email-masked]>
Date: Mon, 11 May 2015 16:17:36 +0530

On 05/11/2015 02:31 PM, Vipin K Parashar wrote:
>
> On 05/11/2015 12:19 PM, Michael Ellerman wrote:
>> On Thu, 2015-05-07 at 15:00 +0530, Vipin K Parashar wrote:
>>> This patch adds support for FSP EPOW (Early Power Off Warning) and
>>> DPO (Delayed Power Off) events support for PowerNV platform. EPOW 
>>> events
>>> are generated by SPCN/FSP due to various critical system conditions 
>>> that
>>> need system shutdown.  Few examples of these conditions are high 
>>> ambient
>>> temperature or system running on UPS power with low UPS battery. DPO 
>>> event
>>> is generated in response to admin initiated system shutdown request.
>>>     This patch enables host kernel on PowerNV platform to handle OPAL
>>> notifications for these events and initiate system poweroff. Since EPOW
>>> notifications are sent in advance of impending shutdown event and thus
>>> this patch also adds functionality to wait for EPOW condition to 
>>> return to
>>> normal. Host allows MAX_POWEROFF_SYS_TIME (600 seconds) as system
>>> poweroff time (time for host + guests shutdown) and waits for remaining
>>> time for EPOW condition to return to normal. If EPOW condition doesn't
>>> return to normal in calculated time it proceeds with graceful system
>>> shutdown. For EPOW events with smaller timeouts values than
>>> MAX_POWEROFF_SYS_TIME it proceeds with system shutdown without any wait
>>> for EPOW condition to return to normal.
>>
>> Can I suggest an alternative design:
>>   - when we recieve a DPO event call orderly_poweroff()
>>   - when we recieve an EPOW event call orderly_poweroff()
>>
>> Thoughts?
>
> Current design is calling orderly_poweroff immediately upon DPO event
> as there is not need to wait for user initiated shutdowns.
>     EPOW is sent in anticipation of a poweroff needed ahead of time. A 
> typical example
> is EPOW due to system on UPS power with 15 mins timeout. There could 
> be case
> when power is restored back within timeout and a poweroff is not 
> needed. In such case
> HW sends EPOW reset informing that EPOW condition has returned to normal.
>     Another example is EPOW due to high ambient temp with 15 mins 
> timeout.
> Here too if temp goes down to manageable limits within timeout window, 
> HW sends EPOW reset
> to avoid shutdown.
>     So to handle such cases current design implements wait for
> HW Timeout - MAX_POWEROFF_SYS_TIME seconds before poweroff. If EPOW 
> condition
> returns to normal within this time poweroff is cancelled. So immediate 
> poweroff is avoided
> here to handle cases when EPOW condition returns to  normal.
>     For EPOW cases (like system on UPS power with UPS battery low or 
> Ambient temp
> critically high) which have timeouts lower than MAX_POWEROFF_SYS 
> seconds, it calls immediate
> orderly_poweroff.
>      In concise design implements immediate orderly_poweroff for DPO 
> as well as EPOW cases when
> timeout is less than  MAX_POWEROFF_SYS_TIME while for EPOW cases with 
> MAX_POWEROFF_SYS_TIME
> timeout it implements a wait for EPOW to return the normal.
Correction as below for above line:
     ........... it implements a wait for EPOW to return to normal 
followed by a orderly_poweroff after wait time.

>
> Suggestions/thoughts ?
>
> --Vipin
>> cheers
>>
>>
>
> _______________________________________________
> Linuxppc-dev mailing list
> [email-masked]
> https://lists.ozlabs.org/listinfo/linuxppc-dev