From: Bjorn Helgaas <bjorn_helgaas@hp.com>
To: linux-ia64@vger.kernel.org
Subject: Re: [Linux-ia64] [patch] 2.4.21-rc1 SAL MCA timeout
Date: Tue, 13 May 2003 22:48:46 +0000 [thread overview]
Message-ID: <marc-linux-ia64-105590723705765@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-105590723705642@msgid-missing>
On Monday 05 May 2003 11:02 pm, Keith Owens wrote:
> SAL can reject an MCA rendezvous timeout value and require a different
> value. The new value is part of the SAL return value structure so the
> full structure must be returned by ia64_sal_mc_set_params.
I applied this for 2.4, except that I made a couple whitespace changes
and left out the SGI-specific flags value. I hesitate to add more
platform-specific #ifdefs, and I think the SN kernel still requires
extra patches anyway, so I figured that change could go in there.
Here's the actual patch I applied:
#### AUTHOR kaos@sgi.com
#### COMMENT START
### Comments for ChangeSet
ia64: Handle SAL rejection of MCA rendezvous timeout value.
### Comments for arch/ia64/kernel/mca.c
(ia64_mca_init): Handle SAL rejection of MCA rendezvous timeout value.
### Comments for include/asm-ia64/sal.h
(ia64_sal_mc_set_params): Return struct ia64_sal_retval because sometimes
more than just status value is returned.
#### COMMENT END
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1144 -> 1.1145
# arch/ia64/kernel/mca.c 1.24 -> 1.25
# include/asm-ia64/sal.h 1.12 -> 1.13
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/05/13 bjorn_helgaas@hp.com 1.1145
# ia64: Handle SAL rejection of MCA rendezvous timeout value.
# --------------------------------------------
#
diff -Nru a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
--- a/arch/ia64/kernel/mca.c Tue May 13 16:18:17 2003
+++ b/arch/ia64/kernel/mca.c Tue May 13 16:18:17 2003
@@ -404,7 +404,10 @@
ia64_mca_register_cpev (int cpev)
{
/* Register the CPE interrupt vector with SAL */
- if (ia64_sal_mc_set_params(SAL_MC_PARAM_CPE_INT, SAL_MC_PARAM_MECHANISM_INT, cpev, 0, 0)) {
+ struct ia64_sal_retval isrv;
+
+ isrv = ia64_sal_mc_set_params(SAL_MC_PARAM_CPE_INT, SAL_MC_PARAM_MECHANISM_INT, cpev, 0, 0);
+ if (isrv.status) {
printk(KERN_ERR "ia64_mca_platform_init: failed to register Corrected "
"Platform Error interrupt vector with SAL.\n");
return;
@@ -602,6 +605,8 @@
ia64_fptr_t *mca_hldlr_ptr = (ia64_fptr_t *)ia64_os_mca_dispatch;
int i;
s64 rc;
+ struct ia64_sal_retval isrv;
+ u64 timeout = IA64_MCA_RENDEZ_TIMEOUT; /* platform specific */
IA64_MCA_DEBUG("ia64_mca_init: begin\n");
@@ -617,23 +622,33 @@
*/
/* Register the rendezvous interrupt vector with SAL */
- if ((rc = ia64_sal_mc_set_params(SAL_MC_PARAM_RENDEZ_INT,
- SAL_MC_PARAM_MECHANISM_INT,
- IA64_MCA_RENDEZ_VECTOR,
- IA64_MCA_RENDEZ_TIMEOUT,
- SAL_MC_PARAM_RZ_ALWAYS)))
- {
+ while (1) {
+ isrv = ia64_sal_mc_set_params(SAL_MC_PARAM_RENDEZ_INT,
+ SAL_MC_PARAM_MECHANISM_INT,
+ IA64_MCA_RENDEZ_VECTOR,
+ timeout,
+ SAL_MC_PARAM_RZ_ALWAYS);
+ rc = isrv.status;
+ if (rc = 0)
+ break;
+ if (rc = -2) {
+ printk(KERN_INFO "ia64_mca_init: increasing MCA rendezvous timeout from "
+ "%ld to %ld\n", timeout, isrv.v0);
+ timeout = isrv.v0;
+ continue;
+ }
printk(KERN_ERR "ia64_mca_init: Failed to register rendezvous interrupt "
"with SAL. rc = %ld\n", rc);
return;
}
/* Register the wakeup interrupt vector with SAL */
- if ((rc = ia64_sal_mc_set_params(SAL_MC_PARAM_RENDEZ_WAKEUP,
- SAL_MC_PARAM_MECHANISM_INT,
- IA64_MCA_WAKEUP_VECTOR,
- 0, 0)))
- {
+ isrv = ia64_sal_mc_set_params(SAL_MC_PARAM_RENDEZ_WAKEUP,
+ SAL_MC_PARAM_MECHANISM_INT,
+ IA64_MCA_WAKEUP_VECTOR,
+ 0, 0);
+ rc = isrv.status;
+ if (rc) {
printk(KERN_ERR "ia64_mca_init: Failed to register wakeup interrupt with SAL. "
"rc = %ld\n", rc);
return;
diff -Nru a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h
--- a/include/asm-ia64/sal.h Tue May 13 16:18:17 2003
+++ b/include/asm-ia64/sal.h Tue May 13 16:18:17 2003
@@ -711,14 +711,16 @@
* Allow the OS to specify the interrupt number to be used by SAL to interrupt OS during
* the machine check rendezvous sequence as well as the mechanism to wake up the
* non-monarch processor at the end of machine check processing.
+ * Returns the complete ia64_sal_retval because some calls return more than just a status
+ * value.
*/
-static inline s64
+static inline struct ia64_sal_retval
ia64_sal_mc_set_params (u64 param_type, u64 i_or_m, u64 i_or_m_val, u64 timeout, u64 rz_always)
{
struct ia64_sal_retval isrv;
SAL_CALL(isrv, SAL_MC_SET_PARAMS, param_type, i_or_m, i_or_m_val,
timeout, rz_always, 0, 0);
- return isrv.status;
+ return isrv;
}
/* Read from PCI configuration space */
prev parent reply other threads:[~2003-05-13 22:48 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-06 5:02 [Linux-ia64] [patch] 2.4.21-rc1 SAL MCA timeout Keith Owens
2003-05-13 22:48 ` Bjorn Helgaas [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=marc-linux-ia64-105590723705765@msgid-missing \
--to=bjorn_helgaas@hp.com \
--cc=linux-ia64@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.