diff options
Diffstat (limited to 'arch/x86/kernel/sysfb_efi.c')
-rw-r--r-- | arch/x86/kernel/sysfb_efi.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/x86/kernel/sysfb_efi.c b/arch/x86/kernel/sysfb_efi.c index b285d4e8c68e..5da924bbf0a0 100644 --- a/arch/x86/kernel/sysfb_efi.c +++ b/arch/x86/kernel/sysfb_efi.c | |||
@@ -106,14 +106,24 @@ static int __init efifb_set_system(const struct dmi_system_id *id) | |||
106 | continue; | 106 | continue; |
107 | for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { | 107 | for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { |
108 | resource_size_t start, end; | 108 | resource_size_t start, end; |
109 | unsigned long flags; | ||
110 | |||
111 | flags = pci_resource_flags(dev, i); | ||
112 | if (!(flags & IORESOURCE_MEM)) | ||
113 | continue; | ||
114 | |||
115 | if (flags & IORESOURCE_UNSET) | ||
116 | continue; | ||
117 | |||
118 | if (pci_resource_len(dev, i) == 0) | ||
119 | continue; | ||
109 | 120 | ||
110 | start = pci_resource_start(dev, i); | 121 | start = pci_resource_start(dev, i); |
111 | if (start == 0) | ||
112 | break; | ||
113 | end = pci_resource_end(dev, i); | 122 | end = pci_resource_end(dev, i); |
114 | if (screen_info.lfb_base >= start && | 123 | if (screen_info.lfb_base >= start && |
115 | screen_info.lfb_base < end) { | 124 | screen_info.lfb_base < end) { |
116 | found_bar = 1; | 125 | found_bar = 1; |
126 | break; | ||
117 | } | 127 | } |
118 | } | 128 | } |
119 | } | 129 | } |