• Ard Biesheuvel's avatar
    efi/fb: Avoid reconfiguration of BAR that covers the framebuffer · 55d728a4
    Ard Biesheuvel authored
    On UEFI systems, the PCI subsystem is enumerated by the firmware,
    and if a graphical framebuffer is exposed via a PCI device, its base
    address and size are exposed to the OS via the Graphics Output
    Protocol (GOP).
    
    On arm64 PCI systems, the entire PCI hierarchy is reconfigured from
    scratch at boot. This may result in the GOP framebuffer address to
    become stale, if the BAR covering the framebuffer is modified. This
    will cause the framebuffer to become unresponsive, and may in some
    cases result in unpredictable behavior if the range is reassigned to
    another device.
    
    So add a non-x86 quirk to the EFI fb driver to find the BAR associated
    with the GOP base address, and claim the BAR resource so that the PCI
    core will not move it.
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: <stable@vger.kernel.org> # v4.7+
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: leif.lindholm@linaro.org
    Cc: linux-efi@vger.kernel.org
    Cc: lorenzo.pieralisi@arm.com
    Fixes: 9822504c ("efifb: Enable the efi-framebuffer platform driver ...")
    Link: http://lkml.kernel.org/r/20170404152744.26687-3-ard.biesheuvel@linaro.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    55d728a4
efifb.c 11.4 KB