From 36b044307590b5e8d272c77d2f4849eaeee8174e Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sun, 3 Mar 2013 01:41:04 +0000 Subject: [PATCH] [x86] ata_piix: reenable MS Virtual PC guests (fixes regression in 3.2.19-1) svn path=/dists/sid/linux/; revision=19892 --- debian/changelog | 4 + ...a_piix-reenable-ms-virtual-pc-guests.patch | 145 ++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 150 insertions(+) create mode 100644 debian/patches/features/x86/hyperv/0080-ata_piix-reenable-ms-virtual-pc-guests.patch diff --git a/debian/changelog b/debian/changelog index 43e8847b5..fb3ea82bb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,10 @@ linux (3.2.39-3) UNRELEASED; urgency=low * [{mips,mipsel}/{4,5}kc-malta] Enable HW_RANDOM as module so that both flavours have a consistent configuration. + [ Ben Hutchings ] + * [x86] ata_piix: reenable MS Virtual PC guests (fixes regression in + 3.2.19-1) + -- Ben Hutchings Wed, 27 Feb 2013 03:48:30 +0000 linux (3.2.39-2) unstable; urgency=high diff --git a/debian/patches/features/x86/hyperv/0080-ata_piix-reenable-ms-virtual-pc-guests.patch b/debian/patches/features/x86/hyperv/0080-ata_piix-reenable-ms-virtual-pc-guests.patch new file mode 100644 index 000000000..f8cb9a519 --- /dev/null +++ b/debian/patches/features/x86/hyperv/0080-ata_piix-reenable-ms-virtual-pc-guests.patch @@ -0,0 +1,145 @@ +From: Olaf Hering +Date: Tue, 18 Sep 2012 17:48:01 +0200 +Subject: ata_piix: reenable MS Virtual PC guests + +commit d9904344fc4052fbe7e4dc137eba0dcdadf326bd upstream. + +An earlier commit cd006086fa5d91414d8ff9ff2b78fbb593878e3c ("ata_piix: +defer disks to the Hyper-V drivers by default") broke MS Virtual PC +guests. Hyper-V guests and Virtual PC guests have nearly identical DMI +info. As a result the driver does currently ignore the emulated hardware +in Virtual PC guests and defers the handling to hv_blkvsc. Since Virtual +PC does not offer paravirtualized drivers no disks will be found in the +guest. + +One difference in the DMI info is the product version. This patch adds a +match for MS Virtual PC 2007 and "unignores" the emulated hardware. + +This was reported for openSuSE 12.1 in bugzilla: +https://bugzilla.novell.com/show_bug.cgi?id=737532 + +Here is a detailed list of DMI info from example guests: + +hwinfo --bios: + +virtual pc guest: + + System Info: #1 + Manufacturer: "Microsoft Corporation" + Product: "Virtual Machine" + Version: "VS2005R2" + Serial: "3178-9905-1533-4840-9282-0569-59" + UUID: undefined, but settable + Wake-up: 0x06 (Power Switch) + Board Info: #2 + Manufacturer: "Microsoft Corporation" + Product: "Virtual Machine" + Version: "5.0" + Serial: "3178-9905-1533-4840-9282-0569-59" + Chassis Info: #3 + Manufacturer: "Microsoft Corporation" + Version: "5.0" + Serial: "3178-9905-1533-4840-9282-0569-59" + Asset Tag: "7188-3705-6309-9738-9645-0364-00" + Type: 0x03 (Desktop) + Bootup State: 0x03 (Safe) + Power Supply State: 0x03 (Safe) + Thermal State: 0x01 (Other) + Security Status: 0x01 (Other) + +win2k8 guest: + + System Info: #1 + Manufacturer: "Microsoft Corporation" + Product: "Virtual Machine" + Version: "7.0" + Serial: "9106-3420-9819-5495-1514-2075-48" + UUID: undefined, but settable + Wake-up: 0x06 (Power Switch) + Board Info: #2 + Manufacturer: "Microsoft Corporation" + Product: "Virtual Machine" + Version: "7.0" + Serial: "9106-3420-9819-5495-1514-2075-48" + Chassis Info: #3 + Manufacturer: "Microsoft Corporation" + Version: "7.0" + Serial: "9106-3420-9819-5495-1514-2075-48" + Asset Tag: "7076-9522-6699-1042-9501-1785-77" + Type: 0x03 (Desktop) + Bootup State: 0x03 (Safe) + Power Supply State: 0x03 (Safe) + Thermal State: 0x01 (Other) + Security Status: 0x01 (Other) + +win2k12 guest: + + System Info: #1 + Manufacturer: "Microsoft Corporation" + Product: "Virtual Machine" + Version: "7.0" + Serial: "8179-1954-0187-0085-3868-2270-14" + UUID: undefined, but settable + Wake-up: 0x06 (Power Switch) + Board Info: #2 + Manufacturer: "Microsoft Corporation" + Product: "Virtual Machine" + Version: "7.0" + Serial: "8179-1954-0187-0085-3868-2270-14" + Chassis Info: #3 + Manufacturer: "Microsoft Corporation" + Version: "7.0" + Serial: "8179-1954-0187-0085-3868-2270-14" + Asset Tag: "8374-0485-4557-6331-0620-5845-25" + Type: 0x03 (Desktop) + Bootup State: 0x03 (Safe) + Power Supply State: 0x03 (Safe) + Thermal State: 0x01 (Other) + Security Status: 0x01 (Other) + +Signed-off-by: Olaf Hering +Signed-off-by: Jeff Garzik +Signed-off-by: Ben Hutchings +--- + drivers/ata/ata_piix.c | 25 ++++++++++++++++++++++--- + 1 file changed, 22 insertions(+), 3 deletions(-) + +diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c +index ef773e1..bec35f4 100644 +--- a/drivers/ata/ata_piix.c ++++ b/drivers/ata/ata_piix.c +@@ -1585,12 +1585,31 @@ static void piix_ignore_devices_quirk(struct ata_host *host) + }, + { } /* terminate list */ + }; +- const struct dmi_system_id *dmi = dmi_first_match(ignore_hyperv); ++ static const struct dmi_system_id allow_virtual_pc[] = { ++ { ++ /* In MS Virtual PC guests the DMI ident is nearly ++ * identical to a Hyper-V guest. One difference is the ++ * product version which is used here to identify ++ * a Virtual PC guest. This entry allows ata_piix to ++ * drive the emulated hardware. ++ */ ++ .ident = "MS Virtual PC 2007", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, ++ "Microsoft Corporation"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"), ++ DMI_MATCH(DMI_PRODUCT_VERSION, "VS2005R2"), ++ }, ++ }, ++ { } /* terminate list */ ++ }; ++ const struct dmi_system_id *ignore = dmi_first_match(ignore_hyperv); ++ const struct dmi_system_id *allow = dmi_first_match(allow_virtual_pc); + +- if (dmi && prefer_ms_hyperv) { ++ if (ignore && !allow && prefer_ms_hyperv) { + host->flags |= ATA_HOST_IGNORE_ATA; + dev_info(host->dev, "%s detected, ATA device ignore set\n", +- dmi->ident); ++ ignore->ident); + } + #endif + } diff --git a/debian/patches/series b/debian/patches/series index 1b5837377..40e23cd54 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -146,6 +146,7 @@ features/x86/hyperv/0076-net-hyperv-Fix-the-code-handling-tx-busy.patch features/x86/hyperv/0077-hv-remove-the-second-argument-of-k-un-map_atomic.patch features/x86/hyperv/0078-libata-add-a-host-flag-to-ignore-detected-ATA-device.patch features/x86/hyperv/0079-ata_piix-defer-disks-to-the-Hyper-V-drivers-by-defau.patch +features/x86/hyperv/0080-ata_piix-reenable-ms-virtual-pc-guests.patch features/x86/efi-stub/0001-x86-Add-missing-bzImage-fields-to-struct-setup_heade.patch features/x86/efi-stub/0002-x86-Don-t-use-magic-strings-for-EFI-loader-signature.patch