x86 fixes
Linus,
Please pull the latest x86-fixes-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git x86-fixes-for-linus
Thanks,
Ingo
------------------>
Boris Ostrovsky (1):
x86, AMD: Fix APIC timer erratum 400 affecting K8 Rev.A-E processors
H. Peter Anvin (1):
x86, reboot: Fix relocations in reboot_32.S
Yinghai Lu (1):
x86, NUMA: Fix empty memblk detection in numa_cleanup_meminfo()
arch/x86/kernel/cpu/amd.c | 2 +- arch/x86/kernel/reboot_32.S | 12 ++++++------ arch/x86/mm/numa_64.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-)
arch/x86/kernel/cpu/amd.c +1 -1
@@ -698,7 +698,7 @@ cpu_dev_register(amd_cpu_dev);*/ const int amd_erratum_400[] = -AMD_OSVW_ERRATUM (1 ,AMD_MODEL_RANGE (0xf ,0x41 ,0x2 ,0xff ,0xf ), +AMD_OSVW_ERRATUM (1 ,AMD_MODEL_RANGE (0x0f ,0x4 ,0x2 ,0xff ,0xf ),AMD_MODEL_RANGE (0x10 ,0x2 ,0x1 ,0xff ,0xf ));EXPORT_SYMBOL_GPL (amd_erratum_400);
arch/x86/kernel/reboot_32.S +6 -6
@@ -21,26 +21,26 @@ r_base = . /* Get our own relocated address */ call 1f 1: popl %ebx - subl $1b, %ebx + subl $(1b - r_base), %ebx /* Compute the equivalent real-mode segment */ movl %ebx, %ecx shrl $4, %ecx /* Patch post-real-mode segment jump */ - movw dispatch_table(%ebx,%eax,2),%ax - movw %ax, 101f(%ebx) - movw %cx, 102f(%ebx) + movw (dispatch_table - r_base)(%ebx,%eax,2),%ax + movw %ax, (101f - r_base)(%ebx) + movw %cx, (102f - r_base)(%ebx) /* Set up the IDT for real mode. */ - lidtl machine_real_restart_idt(%ebx) + lidtl (machine_real_restart_idt - r_base)(%ebx) /* * Set up a GDT from which we can load segment descriptors for real * mode. The GDT is not used in real mode; it is just needed here to * prepare the descriptors. */ - lgdtl machine_real_restart_gdt(%ebx) + lgdtl (machine_real_restart_gdt - r_base)(%ebx) /* * Load the data segment registers with 16-bit compatible values
arch/x86/mm/numa_64.c +1 -1
@@ -306,7 +306,7 @@ int __init numa_cleanup_meminfo(struct numa_meminfo *mi) bi->end =min (bi->end, high);/* and there's no empty block */ -if (bi->start == bi->end) { +if (bi->start >= bi->end) {numa_remove_memblk_from (i--, mi);continue ; }