Blob Blame History Raw
commit 9b989ae8a30f5a430fabbf911e0643bca96c3fd1
Author: Matthew Garrett <mjg@redhat.com>
Date:   Thu Apr 26 17:35:58 2012 -0400

    efifb: Skip DMI checks if the bootloader knows what it's doing
    
    The majority of the DMI checks in efifb are for cases where the bootloader
    has provided invalid information. However, on some machines the overrides
    may do more harm than good due to configuration differences between machines
    with the same machine identifier. It turns out that it's possible for the
    bootloader to get the correct information on GOP-based systems, but we
    can't guarantee that the kernel's being booted with one that's been updated
    to do so. Add support for a capabilities flag that can be set by the
    bootloader, and skip the DMI checks in that case.
    
    Signed-off-by: Matthew Garrett <mjg@redhat.com>

diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c
index b4a632a..932abaa 100644
--- a/drivers/video/efifb.c
+++ b/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/include/linux/screen_info.h b/include/linux/screen_info.h
index 899fbb4..fb3c5a8 100644
--- a/include/linux/screen_info.h
+++ b/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;