Re: [RFC] Scheduler hooks to support separate ia64 MCA/INIT stacks

From: Keith Owens
Date: Sat Sep 10 2005 - 05:57:13 EST


On Fri, 9 Sep 2005 00:17:44 -0700 (PDT),
Zwane Mwaikambo <zwane@xxxxxxxxxxxxxxxx> wrote:
>On Fri, 9 Sep 2005, Keith Owens wrote:
>
>> The new ia64 MCA/INIT handlers[1] (think of them as super NMI) run on
>> separate stacks. 99% of the changes for these new handlers is ia64
>> only code, however they need a couple of scheduler hooks to support
>> these extra stacks. The complete patch set will be coming through the
>> ia64 tree, this RFC covers just the scheduler changes, so they do not
>> come as a surprise when the ia64 tree is rolled up.
>>
>> [1] http://marc.theaimsgroup.com/?l=linux-ia64&m=112537827113545&w=2
>> and the following patches.
>
>Thanks that gave a lot of background.
>
>> This patch adds two small hooks that can be safely called from MCA/INIT
>> context. If other architectures want to support NMI on separate stacks
>> then they can also use these functions.
>
>Well x86_64 already does this with NMI being setup as ISTs, the difference
>is that there we use a register to access current (via PDA/%gs). I might
>have missed this in the URL you posted, but how come IA64 can't do this
>via r13?

Because of this possible event sequence: user space -> kernel -> SAL ->
PAL -> physical mode -> MCA/INIT. When MCA/INIT is delivered in
physical mode, the contents of all registers are undefined. PAL can
use r13 for its own work, as long as r13 is restored before returning
to the kernel. MCA/INIT breaks the assumption that r13 is always valid.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/