From ee88d5945ab3532231bb4b6b6673f2e13646e9ef Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Fri, 27 Jul 2012 12:58:53 -0400 Subject: [PATCH] --- yaml --- r: 323985 b: refs/heads/master c: f462ed939de67c20528bc08f11d2fc4f2d59c0d5 h: refs/heads/master i: 323983: ebde109fb5d0e028d7910b519399ded8b7417d18 v: v3 --- [refs] | 2 +- trunk/arch/x86/boot/compressed/eboot.c | 2 ++ trunk/drivers/video/efifb.c | 4 +++- trunk/include/linux/screen_info.h | 2 ++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 618763d88f7a..3bc6a4431e36 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d6cf86d8f23253225fe2a763d627ecf7dfee9dae +refs/heads/master: f462ed939de67c20528bc08f11d2fc4f2d59c0d5 diff --git a/trunk/arch/x86/boot/compressed/eboot.c b/trunk/arch/x86/boot/compressed/eboot.c index d5e4044505d3..bbd83b9cb4da 100644 --- a/trunk/arch/x86/boot/compressed/eboot.c +++ b/trunk/arch/x86/boot/compressed/eboot.c @@ -379,6 +379,8 @@ static efi_status_t setup_gop(struct screen_info *si, efi_guid_t *proto, si->rsvd_pos = 0; } + si->capabilities |= VIDEO_CAPABILITY_SKIP_QUIRKS; + free_handle: efi_call_phys1(sys_table->boottime->free_pool, gop_handle); return status; diff --git a/trunk/drivers/video/efifb.c b/trunk/drivers/video/efifb.c index b4a632ada401..932abaa58a89 100644 --- a/trunk/drivers/video/efifb.c +++ b/trunk/drivers/video/efifb.c @@ -553,7 +553,9 @@ static int __init efifb_init(void) int ret; char *option = NULL; - dmi_check_system(dmi_system_table); + if (screen_info.orig_video_isVGA != VIDEO_TYPE_EFI || + !(screen_info.capabilities & VIDEO_CAPABILITY_SKIP_QUIRKS)) + dmi_check_system(dmi_system_table); if (screen_info.orig_video_isVGA != VIDEO_TYPE_EFI) return -ENODEV; diff --git a/trunk/include/linux/screen_info.h b/trunk/include/linux/screen_info.h index 899fbb487c94..fb3c5a8fef3d 100644 --- a/trunk/include/linux/screen_info.h +++ b/trunk/include/linux/screen_info.h @@ -68,6 +68,8 @@ struct screen_info { #define VIDEO_FLAGS_NOCURSOR (1 << 0) /* The video mode has no cursor set */ +#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0) + #ifdef __KERNEL__ extern struct screen_info screen_info;