RE: MCA/INIT: need to wire CURRENT_STACK?

From: Luck, Tony <tony.luck_at_intel.com>
Date: 2005-09-22 03:47:59
>I put this comment in arch/ia64/kernel/mca_asm.S, where we switch to
>the MCA/INIT stack.  The code runs fine without wiring
>IA64_KR_CURRENT_STACK and IA64_TR_CURRENT_STACK.  Is that coincidence
>or do the extra registers really need to be updated?  The MCA/INIT
>stacks are initialized early in boot, they are in region 7.

Those registers keep track of which address we have pinned with
DTR[2] so that context switch code (ia64_switch_to) can figure
out whether it needs to reload DTR[2] to map the stack of the
new process.  Since you aren't going to context switch from your
MCA code (I hope!) this should't be an issue.

BUT ... it raises the question of whether you will do anything
in your MCA handler that will run into problems because the stack
is perhaps[1] not pinned ... just mapped by a DTC entry.  I forget
what the exact issue is that led to pinning the stack with DTR[2],
but there is a correctness issue involved.  David: memory jog time??

-Tony

[1] It might be pinned if it is allocated from the same granule
as the stack of the most recently running process on this cpu,
since DTR[2] just maps a whole granule at a time.  You might also
have a DTC mapping active, so skip lightly past the problem in
simple tests.
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Thu Sep 22 03:50:12 2005

This archive was generated by hypermail 2.1.8 : 2005-09-22 03:50:22 EST