Re: [PATCH] x86: Fix overlap of i386 CPU_ENTRY_AREA with FIX_BTMAP

From: Thomas Gleixner
Date: Tue Jan 30 2018 - 08:10:37 EST


On Tue, 30 Jan 2018, William Grant wrote:

> Since commit 92a0f81d8957 ("x86/cpu_entry_area: Move it out of the
> fixmap"), i386's CPU_ENTRY_AREA has been mapped to the memory area just
> below FIXADDR_START. But already immediately before FIXADDR_START is the
> FIX_BTMAP area, which means that early_ioremap can collide with the
> entry area.
>
> It's especially bad on PAE where FIX_BTMAP_BEGIN gets aligned to exactly
> match CPU_ENTRY_AREA_BASE, so the first early_ioremap slot clobbers the
> IDT and causes interrupts during early boot to reset the system.
>
> The overlap wasn't a problem before the CPU entry area was introduced,
> as the fixmap has classically been preceded by the pkmap or vmalloc
> areas, neither of which is used until early_ioremap is out of the
> picture.
>
> Relocate CPU_ENTRY_AREA to below FIX_BTMAP, not just below the permanent
> fixmap area.

Nice catch. I'm sure I stared at that more than once....

Thanks,

tglx