diff options
Diffstat (limited to 'arch/x86/platform/efi/quirks.c')
-rw-r--r-- | arch/x86/platform/efi/quirks.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c index 1c7380da65ff..2d66db8f80f9 100644 --- a/arch/x86/platform/efi/quirks.c +++ b/arch/x86/platform/efi/quirks.c | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <linux/memblock.h> | 8 | #include <linux/memblock.h> |
9 | #include <linux/bootmem.h> | 9 | #include <linux/bootmem.h> |
10 | #include <linux/acpi.h> | 10 | #include <linux/acpi.h> |
11 | #include <linux/dmi.h> | ||
11 | #include <asm/efi.h> | 12 | #include <asm/efi.h> |
12 | #include <asm/uv/uv.h> | 13 | #include <asm/uv/uv.h> |
13 | 14 | ||
@@ -248,6 +249,16 @@ out: | |||
248 | return ret; | 249 | return ret; |
249 | } | 250 | } |
250 | 251 | ||
252 | static const struct dmi_system_id sgi_uv1_dmi[] = { | ||
253 | { NULL, "SGI UV1", | ||
254 | { DMI_MATCH(DMI_PRODUCT_NAME, "Stoutland Platform"), | ||
255 | DMI_MATCH(DMI_PRODUCT_VERSION, "1.0"), | ||
256 | DMI_MATCH(DMI_BIOS_VENDOR, "SGI.COM"), | ||
257 | } | ||
258 | }, | ||
259 | { } /* NULL entry stops DMI scanning */ | ||
260 | }; | ||
261 | |||
251 | void __init efi_apply_memmap_quirks(void) | 262 | void __init efi_apply_memmap_quirks(void) |
252 | { | 263 | { |
253 | /* | 264 | /* |
@@ -260,10 +271,8 @@ void __init efi_apply_memmap_quirks(void) | |||
260 | efi_unmap_memmap(); | 271 | efi_unmap_memmap(); |
261 | } | 272 | } |
262 | 273 | ||
263 | /* | 274 | /* UV2+ BIOS has a fix for this issue. UV1 still needs the quirk. */ |
264 | * UV doesn't support the new EFI pagetable mapping yet. | 275 | if (dmi_check_system(sgi_uv1_dmi)) |
265 | */ | ||
266 | if (is_uv_system()) | ||
267 | set_bit(EFI_OLD_MEMMAP, &efi.flags); | 276 | set_bit(EFI_OLD_MEMMAP, &efi.flags); |
268 | } | 277 | } |
269 | 278 | ||