From: Ross Lagerwall Date: Wed, 14 Dec 2016 11:12:01 +0000 (+0000) Subject: x86: Use ACPI reboot method for Dell OptiPlex 9020 X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~3144 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6a6bbedd39e39f6c45001ce468c5e53a3a2b3ba6;p=xen.git x86: Use ACPI reboot method for Dell OptiPlex 9020 When EFI booting the Dell OptiPlex 9020, it sometimes GP faults in the EFI runtime instead of rebooting. Quirk this hardware to use the ACPI reboot method instead. dmidecode info: BIOS Information Vendor: Dell Inc. Version: A15 Release Date: 11/08/2015 System Information Manufacturer: Dell Inc. Product Name: OptiPlex 9020 Version: 00 Signed-off-by: Ross Lagerwall Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c index 55f68403f4..3d669d17d1 100644 --- a/xen/arch/x86/shutdown.c +++ b/xen/arch/x86/shutdown.c @@ -128,11 +128,15 @@ static int __init override_reboot(struct dmi_system_id *d) { enum reboot_type type = (long)d->driver_data; + if ( type == BOOT_ACPI && acpi_disabled ) + type = BOOT_KBD; + if ( reboot_type != type ) { static const char *__initdata msg[] = { [BOOT_KBD] = "keyboard controller", + [BOOT_ACPI] = "ACPI", [BOOT_CF9] = "PCI", }; @@ -438,6 +442,15 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 390"), }, }, + { /* Handle problems with rebooting on Dell OptiPlex 9020. */ + .callback = override_reboot, + .driver_data = (void *)(long)BOOT_ACPI, + .ident = "Dell OptiPlex 9020", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 9020"), + }, + }, { /* Handle problems with rebooting on the Latitude E6320. */ .callback = override_reboot, .driver_data = (void *)(long)BOOT_CF9,