| 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 |
| |
| |
| @@ -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 |
| |
| |
| @@ -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; |
| |