• Matt Fleming's avatar
    x86/mm/pat: Fix boot crash when 1GB pages are not supported by the CPU · d367cef0
    Matt Fleming authored
    Scott reports that with the new separate EFI page tables he's seeing
    the following error on boot, caused by setting reserved bits in the
    page table structures (fault code is PF_RSVD | PF_PROT),
    
      swapper/0: Corrupted page table at address 17b102020
      PGD 17b0e5063 PUD 1400000e3
      Bad pagetable: 0009 [#1] SMP
    
    On first inspection the PUD is using a 1GB page size (_PAGE_PSE) and
    looks fine but that's only true if support for 1GB PUD pages
    ("pdpe1gb") is present in the CPU.
    
    Scott's Intel Celeron N2820 does not have that feature and so the
    _PAGE_PSE bit is reserved. Fix this issue by making the 1GB mapping
    code in conditional on "cpu_has_gbpages".
    
    This issue didn't come up in the past because the required mapping for
    the faulting address (0x17b102020) will already have been setup by the
    kernel in early boot before we got to efi_map_regions(), but we no
    longer use the standard kernel page tables during EFI calls.
    Reported-by: default avatarScott Ashcroft <scott.ashcroft@talk21.com>
    Tested-by: default avatarScott Ashcroft <scott.ashcroft@talk21.com>
    Signed-off-by: default avatarMatt Fleming <matt@codeblueprint.co.uk>
    Acked-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Matthew Garrett <mjg59@srcf.ucam.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Raphael Hertzog <hertzog@debian.org>
    Cc: Roger Shimizu <rogershimizu@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/1457951581-27353-2-git-send-email-matt@codeblueprint.co.ukSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    d367cef0
pageattr.c 47.5 KB