[PATCH v2 1/2] powerpc/powernv: Add poweroff (EPOW, DPO) events support for PowerNV platform
Vipin K Parashar
vipin at linux.vnet.ibm.com
Mon May 11 20:47:36 AEST 2015
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
>>> are generated by SPCN/FSP due to various critical system conditions
>>> need system shutdown. Few examples of these conditions are high
>>> temperature or system running on UPS power with low UPS battery. DPO
>>> 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()
> 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
> 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
> 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
> 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
> 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 ?
> Linuxppc-dev mailing list
> Linuxppc-dev at lists.ozlabs.org
More information about the Linuxppc-dev