• Greg Pearson's avatar
    pcdp: use early_ioremap/early_iounmap to access pcdp table · ffb709e6
    Greg Pearson authored
    commit 6c4088ac upstream.
    
    efi_setup_pcdp_console() is called during boot to parse the HCDP/PCDP
    EFI system table and setup an early console for printk output.  The
    routine uses ioremap/iounmap to setup access to the HCDP/PCDP table
    information.
    
    The call to ioremap is happening early in the boot process which leads
    to a panic on x86_64 systems:
    
        panic+0x01ca
        do_exit+0x043c
        oops_end+0x00a7
        no_context+0x0119
        __bad_area_nosemaphore+0x0138
        bad_area_nosemaphore+0x000e
        do_page_fault+0x0321
        page_fault+0x0020
        reserve_memtype+0x02a1
        __ioremap_caller+0x0123
        ioremap_nocache+0x0012
        efi_setup_pcdp_console+0x002b
        setup_arch+0x03a9
        start_kernel+0x00d4
        x86_64_start_reservations+0x012c
        x86_64_start_kernel+0x00fe
    
    This replaces the calls to ioremap/iounmap in efi_setup_pcdp_console()
    with calls to early_ioremap/early_iounmap which can be called during
    early boot.
    
    This patch was tested on an x86_64 prototype system which uses the
    HCDP/PCDP table for early console setup.
    Signed-off-by: default avatarGreg Pearson <greg.pearson@hp.com>
    Acked-by: default avatarKhalid Aziz <khalid.aziz@hp.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    ffb709e6
pcdp.c 3.3 KB