|
@@ -8,6 +8,7 @@
|
|
#include <linux/memblock.h>
|
|
#include <linux/memblock.h>
|
|
#include <linux/bootmem.h>
|
|
#include <linux/bootmem.h>
|
|
#include <linux/acpi.h>
|
|
#include <linux/acpi.h>
|
|
|
|
+#include <linux/dmi.h>
|
|
#include <asm/efi.h>
|
|
#include <asm/efi.h>
|
|
#include <asm/uv/uv.h>
|
|
#include <asm/uv/uv.h>
|
|
|
|
|
|
@@ -248,6 +249,16 @@ out:
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static const struct dmi_system_id sgi_uv1_dmi[] = {
|
|
|
|
+ { NULL, "SGI UV1",
|
|
|
|
+ { DMI_MATCH(DMI_PRODUCT_NAME, "Stoutland Platform"),
|
|
|
|
+ DMI_MATCH(DMI_PRODUCT_VERSION, "1.0"),
|
|
|
|
+ DMI_MATCH(DMI_BIOS_VENDOR, "SGI.COM"),
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ { } /* NULL entry stops DMI scanning */
|
|
|
|
+};
|
|
|
|
+
|
|
void __init efi_apply_memmap_quirks(void)
|
|
void __init efi_apply_memmap_quirks(void)
|
|
{
|
|
{
|
|
/*
|
|
/*
|
|
@@ -260,10 +271,8 @@ void __init efi_apply_memmap_quirks(void)
|
|
efi_unmap_memmap();
|
|
efi_unmap_memmap();
|
|
}
|
|
}
|
|
|
|
|
|
- /*
|
|
|
|
- * UV doesn't support the new EFI pagetable mapping yet.
|
|
|
|
- */
|
|
|
|
- if (is_uv_system())
|
|
|
|
|
|
+ /* UV2+ BIOS has a fix for this issue. UV1 still needs the quirk. */
|
|
|
|
+ if (dmi_check_system(sgi_uv1_dmi))
|
|
set_bit(EFI_OLD_MEMMAP, &efi.flags);
|
|
set_bit(EFI_OLD_MEMMAP, &efi.flags);
|
|
}
|
|
}
|
|
|
|
|