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.

Suggestions/thoughts ?

--Vipin
cheers



_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to