Re: [patch] Resched skip_rbs_switch to run 4 cycles faster on McKinley-type cores.

From: Keith Owens <kaos_at_sgi.com>
Date: 2005-01-20 09:25:35
Damn, I was in the middle of developing a patch against this area :(.

David, since you are redoing some of this code, I probably need to
discuss my changes.  My aim is to allow the kernel unwinder to work on
the per-cpu MCA and INIT stacks that Russ Anderson (rja) recently
added.  This has never been an issue before because we only had one
stack and could not handle INIT over MCA.

The problem with unwinding from the MCA or INIT stacks is handling the
change of rbs.  The current code assumes that all kernel work is done
on the same rbs, which is not true for the MCA and INIT stacks.  I plan
to change the meaning of pt_regs ar_bspstore and ar_rnat.  Instead of
being garbage when the interrupted code was in the kernel, ar_bspstore
and ar_rnat are set to zero.  The test for "do I skip_rbs_switch"
changes from pUStk to "is saved ar_bspstore non-zero".

Interrupts in kernel context save a zero ar_bspstore and skip the rbs
swicth on return from interrupt.  Interrupts in user context save a
valid ar_bspstore and switch rbs on exit.  MCA and INIT events will
synthesize and save struct pt_regs on the MCA/INIT stack, this pt_regs
will contain non-zero ar_bspstore pointing back to the previous bsp,
which could be in a kernel or user space stack.

Comments?

-
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 Wed Jan 19 17:32:06 2005

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:34 EST