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,