* [PATCH] ata_piix: reenable MS Virtual PC guests
@ 2012-09-18 15:48 Olaf Hering
2012-11-28 17:44 ` Jeff Garzik
0 siblings, 1 reply; 2+ messages in thread
From: Olaf Hering @ 2012-09-18 15:48 UTC (permalink / raw)
To: Jeff Garzik, linux-ide, linux-kernel; +Cc: KY Srinivasan, Olaf Hering
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>
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
}
--
1.7.12
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] ata_piix: reenable MS Virtual PC guests
2012-09-18 15:48 [PATCH] ata_piix: reenable MS Virtual PC guests Olaf Hering
@ 2012-11-28 17:44 ` Jeff Garzik
0 siblings, 0 replies; 2+ messages in thread
From: Jeff Garzik @ 2012-11-28 17:44 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, linux-kernel, KY Srinivasan
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.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-11-28 17:44 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-18 15:48 [PATCH] ata_piix: reenable MS Virtual PC guests Olaf Hering
2012-11-28 17:44 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).