Mercurial > illumos > illumos-gate
changeset 4052:e1d7db144217
6512088 v240 can hardhang in case of double panic
6515766 Files boston/os/boston.c and seattle/os/seattle.c need cleaning up
author | philippm |
---|---|
date | Tue, 17 Apr 2007 02:10:47 -0700 |
parents | f133c2050317 |
children | 4d5790f56f2a |
files | usr/src/uts/sun4u/boston/os/boston.c usr/src/uts/sun4u/seattle/os/seattle.c |
diffstat | 2 files changed, 26 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/sun4u/boston/os/boston.c Tue Apr 17 09:54:22 2007 -0700 +++ b/usr/src/uts/sun4u/boston/os/boston.c Tue Apr 17 02:10:47 2007 -0700 @@ -20,7 +20,7 @@ */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -345,7 +345,6 @@ { dp_cpu_signature_t signature; rmc_comm_msg_t req; /* request */ - int (*rmc_req_res)(rmc_comm_msg_t *, rmc_comm_msg_t *, time_t) = NULL; int (*rmc_req_now)(rmc_comm_msg_t *, uint8_t) = NULL; @@ -385,15 +384,6 @@ /* * find the symbol for the mailbox routine */ - rmc_req_res = (int (*)(rmc_comm_msg_t *, rmc_comm_msg_t *, time_t)) - modgetsymvalue("rmc_comm_request_response", 0); - if (rmc_req_res == NULL) { - return; - } - - /* - * find the symbol for the mailbox routine - */ rmc_req_now = (int (*)(rmc_comm_msg_t *, uint8_t)) modgetsymvalue("rmc_comm_request_nowait", 0); if (rmc_req_now == NULL) { @@ -410,8 +400,18 @@ req.msg_buf = (caddr_t)&signature; /* - * ship it - * - note that for panic or reboot need to send with nowait/urgent + * We need to tell the SP that the host is about to stop running. The + * SP will then allow the date to be set at its console, it will change + * state of the activity indicator, it will display the correct host + * status, and it will stop sending console messages and alerts to the + * host communication channel. + * + * This requires the RMC_COMM_DREQ_URGENT as we want to + * be sure activity indicators will reflect the correct status. + * + * When sub_state SIGSUBST_DUMP is sent, the urgent flag + * (RMC_COMM_DREQ_URGENT) is not required as SIGSUBST_PANIC_REBOOT + * has already been sent and changed activity indicators. */ if (state == SIGST_EXIT && (sub_state == SIGSUBST_HALT || sub_state == SIGSUBST_REBOOT || sub_state == SIGSUBST_ENVIRON ||
--- a/usr/src/uts/sun4u/seattle/os/seattle.c Tue Apr 17 09:54:22 2007 -0700 +++ b/usr/src/uts/sun4u/seattle/os/seattle.c Tue Apr 17 02:10:47 2007 -0700 @@ -20,7 +20,7 @@ */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -347,7 +347,6 @@ { dp_cpu_signature_t signature; rmc_comm_msg_t req; /* request */ - int (*rmc_req_res)(rmc_comm_msg_t *, rmc_comm_msg_t *, time_t) = NULL; int (*rmc_req_now)(rmc_comm_msg_t *, uint8_t) = NULL; @@ -387,15 +386,6 @@ /* * find the symbol for the mailbox routine */ - rmc_req_res = (int (*)(rmc_comm_msg_t *, rmc_comm_msg_t *, time_t)) - modgetsymvalue("rmc_comm_request_response", 0); - if (rmc_req_res == NULL) { - return; - } - - /* - * find the symbol for the mailbox routine - */ rmc_req_now = (int (*)(rmc_comm_msg_t *, uint8_t)) modgetsymvalue("rmc_comm_request_nowait", 0); if (rmc_req_now == NULL) { @@ -412,8 +402,18 @@ req.msg_buf = (caddr_t)&signature; /* - * ship it - * - note that for panic or reboot need to send with nowait/urgent + * We need to tell the SP that the host is about to stop running. The + * SP will then allow the date to be set at its console, it will change + * state of the activity indicator, it will display the correct host + * status, and it will stop sending console messages and alerts to the + * host communication channel. + * + * This requires the RMC_COMM_DREQ_URGENT as we want to + * be sure activity indicators will reflect the correct status. + * + * When sub_state SIGSUBST_DUMP is sent, the urgent flag + * (RMC_COMM_DREQ_URGENT) is not required as SIGSUBST_PANIC_REBOOT + * has already been sent and changed activity indicators. */ if (state == SIGST_EXIT && (sub_state == SIGSUBST_HALT || sub_state == SIGSUBST_REBOOT || sub_state == SIGSUBST_ENVIRON ||