Patch 1 is the fix. Patch 2 is a comment that would have kept me from chasing down a false lead.
I've tested patch 2 using CPU hotplug and suspend/resume. I haven't tested hibernation or kexec because I don't know how. (If I do systemctl hibernate on my laptop, it happily writes out a hiberation image somewhere and then it equally happily ignores it on the next boot. I don't know how to test kexec.) I haven't tested the 32-bit version. I'll try to get to that tomorrow. Andy Lutomirski (2): x86/mm: Reinitialize TLB state on hotplug and resume x86/mm: Document how CR4.PCIDE restore works arch/x86/include/asm/tlbflush.h | 2 ++ arch/x86/kernel/cpu/common.c | 15 ++++++++++++++ arch/x86/mm/tlb.c | 44 +++++++++++++++++++++++++++++++++++++++++ arch/x86/power/cpu.c | 1 + 4 files changed, 62 insertions(+) -- 2.13.5