]> err.no Git - linux-2.6/commit
[PATCH] uml: clean arch_switch usage
authorPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Fri, 31 Mar 2006 10:30:21 +0000 (02:30 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 31 Mar 2006 20:18:52 +0000 (12:18 -0800)
commit972410b0232e97609fcefc8e408fe3037fcd607b
tree2de18ed5d823dc7e24c0171f720f6354a9cd57e4
parentfbdf2161552a2065047e5df2dbf9ebf69d66a0e9
[PATCH] uml: clean arch_switch usage

Call arch_switch also in switch_to_skas, even if it's, for now, a no-op for
that case (and mark this in the comment); this will change soon.

Also, arch_switch for TT mode is actually useless when the PT proxy (a
complicate debugging instrumentation for TT mode) is not enabled.  In fact, it
only calls update_debugregs, which checks debugregs_seq against seq (to check
if the registers are up-to-date - seq here means a "version number" of the
registers).

If the ptrace proxy is not enabled, debugregs_seq always stays 0 and
update_debugregs will be a no-op.  So, optimize this out (the compiler can't
do it).

Also, I've been disappointed by the fact that it would make a lot of sense if,
after calling a successful
update_debugregs(current->thread.arch.debugregs_seq),
current->thread.arch.debugregs_seq were updated with the new debugregs_seq.
But this is not done.  Is this a bug or a feature?  For all purposes, it seems
a bug (otherwise the whole mechanism does not make sense, which is also a
possibility to check), which causes some performance only problems (not
correctness), since we write_debugregs when not needed.

Also, as suggested by Jeff, remove a redundant enabling of SIGVTALRM,
comprised in the subsequent local_irq_enable().  I'm just a bit dubious if
ordering matters there...

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Acked-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/um/include/kern_util.h
arch/um/include/sysdep-i386/ptrace.h
arch/um/kernel/skas/process_kern.c
arch/um/kernel/tt/process_kern.c
arch/um/sys-i386/ptrace.c
arch/um/sys-i386/ptrace_user.c