• Thomas Gleixner's avatar
    x86/boot/32: Temporarily map initrd for microcode loading · 4c585af7
    Thomas Gleixner authored
    Early microcode loading on 32-bit runs in physical address mode because
    the initrd is not covered by the initial page tables. That results in
    a horrible mess all over the microcode loader code.
    
    Provide a temporary mapping for the initrd in the initial page tables by
    appending it to the actual initial mapping starting with a new PGD or
    PMD depending on the configured page table levels ([non-]PAE).
    
    The page table entries are located after _brk_end so they are not
    permanently using memory space. The mapping is invalidated right away in
    i386_start_kernel() after the early microcode loader has run.
    
    This prepares for removing the physical address mode oddities from all
    over the microcode loader code, which in turn allows further cleanups.
    
    Provide the map and unmap code and document the place where the
    microcode loader needs to be invoked with a comment.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/20231017211722.292291436@linutronix.de
    4c585af7
head32.c 4.79 KB