Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 305869
b: refs/heads/master
c: cd00608
h: refs/heads/master
i:
  305867: ab15682
v: v3
  • Loading branch information
Andy Whitcroft authored and Jeff Garzik committed May 7, 2012
1 parent 3f79b37 commit c81f8c4
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: db63a4c8115a0bb904496e1cdd3e7488e68b0d06
refs/heads/master: cd006086fa5d91414d8ff9ff2b78fbb593878e3c
36 changes: 36 additions & 0 deletions trunk/drivers/ata/ata_piix.c
Original file line number Diff line number Diff line change
Expand Up @@ -1554,6 +1554,39 @@ static bool piix_broken_system_poweroff(struct pci_dev *pdev)
return false;
}

static int prefer_ms_hyperv = 1;
module_param(prefer_ms_hyperv, int, 0);

static void piix_ignore_devices_quirk(struct ata_host *host)
{
#if IS_ENABLED(CONFIG_HYPERV_STORAGE)
static const struct dmi_system_id ignore_hyperv[] = {
{
/* On Hyper-V hypervisors the disks are exposed on
* both the emulated SATA controller and on the
* paravirtualised drivers. The CD/DVD devices
* are only exposed on the emulated controller.
* Request we ignore ATA devices on this host.
*/
.ident = "Hyper-V Virtual Machine",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"Microsoft Corporation"),
DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"),
},
},
{ } /* terminate list */
};
const struct dmi_system_id *dmi = dmi_first_match(ignore_hyperv);

if (dmi && prefer_ms_hyperv) {
host->flags |= ATA_HOST_IGNORE_ATA;
dev_info(host->dev, "%s detected, ATA device ignore set\n",
dmi->ident);
}
#endif
}

/**
* piix_init_one - Register PIIX ATA PCI device with kernel services
* @pdev: PCI device to register
Expand Down Expand Up @@ -1669,6 +1702,9 @@ static int __devinit piix_init_one(struct pci_dev *pdev,
}
host->flags |= ATA_HOST_PARALLEL_SCAN;

/* Allow hosts to specify device types to ignore when scanning. */
piix_ignore_devices_quirk(host);

pci_set_master(pdev);
return ata_pci_sff_activate_host(host, ata_bmdma_interrupt, sht);
}
Expand Down

0 comments on commit c81f8c4

Please sign in to comment.