ouch... точно!
я правда не понял к какой версии это патч, т.к. замена:
#ifndef CONFIG_X86_NO_TSS
- tss = &per_cpu(init_tss, get_cpu());
+ tss = __get_cpu_tss(get_cpu());
#endif
и в 034 и 035 уже есть.
в результате я закоммитил в 036 вот такой патч:
--- ./arch/i386/kernel/vm86.c.ve2555 2007-06-08 19:38:56.000000000 +0400
+++ ./arch/i386/kernel/vm86.c 2007-06-13 12:26:23.000000000 +0400
@@ -129,9 +129,7 @@ struct pt_regs * fastcall save_v86_state
#endif
current->thread.esp0 = current->thread.saved_esp0;
current->thread.sysenter_cs = __KERNEL_CS;
-#ifndef CONFIG_X86_NO_TSS
load_virtual_esp0(tss, current);
-#endif
current->thread.saved_esp0 = 0;
#ifndef CONFIG_X86_NO_TSS
put_cpu();
@@ -313,8 +311,8 @@ static void do_sys_vm86(struct kernel_vm
if (cpu_has_sep)
tsk->thread.sysenter_cs = 0;
-#ifndef CONFIG_X86_NO_TSS
load_virtual_esp0(tss, tsk);
+#ifndef CONFIG_X86_NO_TSS
put_cpu();
#endif
NOTE: load_virtal_esp0 и load_esp0 это одно и тоже в случае ядра Xen, так что #else не нужны.
Огромное спасибо!
[Updated on: Wed, 13 June 2007 08:30]
Report message to a moderator