ia64/xen-unstable

view patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch @ 11472:3e31c5e160cf

[HVM] Fix an error when read from APIC registers like IRR, ISR and TMR.
From SDM3 spec, for APIC registers, all 32-bit registers should
be accessed using 128-bit aligned 32bit loads or stores.
And wider registers (64-bit or 256-bit) must be accessed using
multiple 32-bit loads or stores.

In old APIC virtualization code, we use IRR, ISR and TMR which are
256-bit registers as contiguous bit maps other than multiple 32-bit.

So guest always fetch error values.

Original patch was:
* Signed-off-by: Xiaohui Xin <xiaohui.xin@intel.com>
* Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
* Signed-off-by: Eddie Dong <eddie.dong@intel.com>

Signed-off-by: Keir Fraser <keir@xensource.com>
author kaf24@firebug.cl.cam.ac.uk
date Wed Sep 13 15:59:14 2006 +0100 (2006-09-13)
parents ad5b833122a8
children
line source
1 diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S
2 --- ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100
3 +++ ./arch/i386/kernel/entry.S 2006-05-04 17:41:44.000000000 +0100
4 @@ -177,7 +177,7 @@ need_resched:
6 # sysenter call handler stub
7 ENTRY(sysenter_entry)
8 - movl TSS_sysenter_esp0(%esp),%esp
9 + movl SYSENTER_stack_esp0(%esp),%esp
10 sysenter_past_esp:
11 sti
12 pushl $(__USER_DS)
13 @@ -492,7 +492,7 @@ device_not_available_emulate:
14 * that sets up the real kernel stack. Check here, since we can't
15 * allow the wrong stack to be used.
16 *
17 - * "TSS_sysenter_esp0+12" is because the NMI/debug handler will have
18 + * "SYSENTER_stack_esp0+12" is because the NMI/debug handler will have
19 * already pushed 3 words if it hits on the sysenter instruction:
20 * eflags, cs and eip.
21 *
22 @@ -504,7 +504,7 @@ device_not_available_emulate:
23 cmpw $__KERNEL_CS,4(%esp); \
24 jne ok; \
25 label: \
26 - movl TSS_sysenter_esp0+offset(%esp),%esp; \
27 + movl SYSENTER_stack_esp0+offset(%esp),%esp; \
28 pushfl; \
29 pushl $__KERNEL_CS; \
30 pushl $sysenter_past_esp