• Andi Kleen's avatar
    x86: fix early_ioremap() on 64-bit · 1a2b4412
    Andi Kleen authored
    Fix early_ioremap() on x86-64
    
    I had ACPI failures on several machines since a few days. Symptom
    was NUMA nodes not getting detected or worse cores not getting detected.
    They all came from ACPI not being able to read various of its tables. I finally
    bisected it down to Jeremy's "put _PAGE_GLOBAL into PAGE_KERNEL" change.
    With that the fix was fairly obvious. The problem was that early_ioremap()
    didn't use a "_all" flush that would affect the global PTEs too. So
    with global bits getting used everywhere now an early_ioremap would
    not actually flush a mapping if something else was mapped previously
    on that slot (which can happen with early_iounmap inbetween)
    
    This patch changes all flushes in init_64.c to be __flush_tlb_all()
    and fixes the problem here.
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    1a2b4412
init_64.c 19.1 KB