Message ID | 1347983281-15422-1-git-send-email-olaf@aepfle.de |
---|---|
State | Not Applicable |
Delegated to: | David Miller |
Headers | show |
On 09/18/2012 11:48 AM, Olaf Hering wrote: > 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 <olaf@aepfle.de> applied. Apologies for missing this one. It was accidentally shifting into the low-priority pile. -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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 }
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 <olaf@aepfle.de>