From: Keith Owens <kaos@sgi.com>
To: linux-ia64@vger.kernel.org
Subject: Re: [RFC] SAL_MC_RENDEZ logic
Date: Mon, 12 Sep 2005 07:25:40 +0000 [thread overview]
Message-ID: <10364.1126509940@kao2.melbourne.sgi.com> (raw)
In-Reply-To: <43252738.8030303@jp.fujitsu.com>
On Mon, 12 Sep 2005 15:59:04 +0900,
Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> wrote:
>I'm now testing the MCA codes on brand-new system,
>and bump into a problem that slave processors infinitely
>loop in ia64_mca_wakeup_ipi_wait().
>
>The cause was that the SAL clears the IRR bit just after its
>spin in SAL_MC_RENDEZ procedure, and OS spins again until the
>IRR bit be set in ia64_mca_wakeup_ipi_wait().
>
>According to the SAL spec, it says:
> (SAL_MC_RENDEZ:)
> When this procedure returns, it is the responsibility of the
> operating system to clear the IRR bits for the MC_rendezvous
> interrupt and the wake up interrupt, if any.
The IRR bits are read only. The OS clears them by reading cr.ivr, in
the external interrupt vector. The only reason that mca.c tests IRR
directly is because at that point interrupts are disabled.
>I'm not sure but it seems "if any" means that SAL can clear
>the IRR bits on behalf of OS. So OS shouldn't expect the IRR
>always be set on returning from SAL_MC_RENDEZ, is this right?
The phrase "if any" is quite ambiguous, it is not clear what it means
here.
>I don't know whether there is any old SAL never spins in
>SAL_MC_RENDEZ or not. Or is this the beginning of nightmare,
>having different MCA codes depend on the SAL version?
I hope not. In any case my MCA/INIT rewrite removes the spin in mca.c
waiting for IRR to be set. Instead the slave comes out of SAL due to a
wake up call, waits for the monarch to exit then the slaves all exit.
Once a slave resumes to its normal context and interrupts are enabled
again, then the external interrupt vector clears the wake up bit and
calls ia64_mca_wakeup_int_handler() which is a no-op. The rendezvous
IRR bit is cleared when we read cr.ivr prior to calling
ia64_mca_rendez_int_handler(), i.e. this bit is already clear when we
rendezvous.
In your case I would say that SAL is wrong. I would argue that SAL
should not be reading cr.ivr at all, it should leave that to the OS.
The existing (2.6.13) code will not work with that SAL. My rewrite
(hopefully in 2.6.14-rc1) will work with that SAL.
next prev parent reply other threads:[~2005-09-12 7:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-12 6:59 [RFC] SAL_MC_RENDEZ logic Hidetoshi Seto
2005-09-12 7:25 ` Keith Owens [this message]
2005-09-12 8:27 ` Hidetoshi Seto
2005-09-12 23:36 ` John Ik Lee (WA)
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=10364.1126509940@kao2.melbourne.sgi.com \
--to=kaos@sgi.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox