46 lines
1.7 KiB
Diff
46 lines
1.7 KiB
Diff
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;
|
|
|