| From 97f757c2e85f29bfc94dc887ef8672caaf5226e6 Mon Sep 17 00:00:00 2001 |
| From: Ard Biesheuvel <ard.biesheuvel@linaro.org> |
| Date: Thu, 28 Mar 2019 20:34:26 +0100 |
| Subject: efifb: Omit memory map check on legacy boot |
| |
| [ Upstream commit c2999c281ea2d2ebbdfce96cecc7b52e2ae7c406 ] |
| |
| Since the following commit: |
| |
| 38ac0287b7f4 ("fbdev/efifb: Honour UEFI memory map attributes when mapping the FB") |
| |
| efifb_probe() checks its memory range via efi_mem_desc_lookup(), |
| and this leads to a spurious error message: |
| |
| EFI_MEMMAP is not enabled |
| |
| at every boot on KVM. This is quite annoying since the error message |
| appears even if you set "quiet" boot option. |
| |
| Since this happens on legacy boot, which strangely enough exposes |
| a EFI framebuffer via screen_info, let's double check that we are |
| doing an EFI boot before attempting to access the EFI memory map. |
| |
| Reported-by: Takashi Iwai <tiwai@suse.de> |
| Tested-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> |
| 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: linux-efi@vger.kernel.org |
| Link: http://lkml.kernel.org/r/20190328193429.21373-3-ard.biesheuvel@linaro.org |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/video/fbdev/efifb.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c |
| index fd02e8a4841d6..9f39f0c360e0c 100644 |
| --- a/drivers/video/fbdev/efifb.c |
| +++ b/drivers/video/fbdev/efifb.c |
| @@ -464,7 +464,8 @@ static int efifb_probe(struct platform_device *dev) |
| info->apertures->ranges[0].base = efifb_fix.smem_start; |
| info->apertures->ranges[0].size = size_remap; |
| |
| - if (!efi_mem_desc_lookup(efifb_fix.smem_start, &md)) { |
| + if (efi_enabled(EFI_BOOT) && |
| + !efi_mem_desc_lookup(efifb_fix.smem_start, &md)) { |
| if ((efifb_fix.smem_start + efifb_fix.smem_len) > |
| (md.phys_addr + (md.num_pages << EFI_PAGE_SHIFT))) { |
| pr_err("efifb: video memory @ 0x%lx spans multiple EFI memory regions\n", |
| -- |
| 2.20.1 |
| |