diff options
author | Richard J. Knight <rjknight@us.ibm.com> | 2015-04-03 16:17:56 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-04-24 16:14:19 -0500 |
commit | c17473f12baf51fb45ec6966d3ce007743a44bf5 (patch) | |
tree | 3ab88bf59fa26268b154296a9151cbfa26746b2a /src/include/usr/initservice | |
parent | 7aa1479447c6a941b2fc7dca9a162907b04494ab (diff) | |
download | talos-hostboot-c17473f12baf51fb45ec6966d3ce007743a44bf5.tar.gz talos-hostboot-c17473f12baf51fb45ec6966d3ce007743a44bf5.zip |
Investigate graceful shutdown path anomolies
-Fix shutdown loop to notify processes correctly
-Block pnor writes when gracefull shutdown is in process
Change-Id: I1d882e8596a0218fa499d947f3c6387e7ecd4ee8
RTC:125361
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/16852
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Tested-by: Jenkins Server
Diffstat (limited to 'src/include/usr/initservice')
-rw-r--r-- | src/include/usr/initservice/initserviceif.H | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/src/include/usr/initservice/initserviceif.H b/src/include/usr/initservice/initserviceif.H index e475dadb5..c8d98ce35 100644 --- a/src/include/usr/initservice/initserviceif.H +++ b/src/include/usr/initservice/initserviceif.H @@ -39,17 +39,38 @@ namespace INITSERVICE { /** - * Priority scheme, if needed + * Priority scheme: + * The message queue will be sorted in ascending priority order, meaing a + * process registering with a priority of zero will be notified first. + * + * There are two ranges of callback priorities supported. + * + * 1. Pre Memory flush callback priorities are in the range 0-127 and + * will occur before the memory has been flushed to pnor. + * + * 2. Post memory flush callback priorities are in the range 127-255, + * and are signaled after the memory has been flushed to pnor. + * + * NOTE: The final call back for systems which support IPMI should be + * POST_MEM_FLUSH_NOTIFY_LAST since it will trigger a power off + * request to the BMC. + * */ enum EventPriority_t { - LOWEST_PRIORITY = 0, //!<< Notify last, LIFO order - CONSOLE_PRIORITY = LOWEST_PRIORITY, //!<< Shutdown Console - INTR_PRIORITY = 1, //!<< Shutdown INTR - MBOX_PRIORITY = 2, //!<< Shutdown MBOX - NO_PRIORITY = 16, //!<< No dependency / dont' care, LIFO order - HIGHEST_PRIORITY = 127, //!<< Notify first, LIFO order - POST_MEM_FLUSH_START_PRIORITY = 128, //!<< Post Mem Flush callbacks + NOTIFY_FIRST = 0, + HIGHEST_PRIORITY = NOTIFY_FIRST, + NO_PRIORITY = 16, + MBOX_PRIORITY = 17, + INTR_PRIORITY = 18, + LOWEST_PRIORITY = 127, + CONSOLE_PRIORITY = LOWEST_PRIORITY, + LAST_PRE_MEM_FLUSH_PRIORITY = LOWEST_PRIORITY, + + HIGHEST_POST_MEM_FLUSH_PRIORITY = 128, // 1st post mem flush callback + PNOR_RP_PRIORITY = HIGHEST_POST_MEM_FLUSH_PRIORITY, + POST_MEM_FLUSH_NOTIFY_LAST = 255 + }; /** |