[kernel] r19045 - in dists/sid/linux-2.6/debian: . patches/features/x86/hyperv patches/series
Ben Hutchings
benh at alioth.debian.org
Wed May 30 12:49:02 UTC 2012
Author: benh
Date: Wed May 30 12:49:00 2012
New Revision: 19045
Log:
[x86] ata_piix: defer disks to the Hyper-V drivers by default
Added:
dists/sid/linux-2.6/debian/patches/features/x86/hyperv/0078-libata-add-a-host-flag-to-ignore-detected-ATA-device.patch
dists/sid/linux-2.6/debian/patches/features/x86/hyperv/0079-ata_piix-defer-disks-to-the-Hyper-V-drivers-by-defau.patch
Modified:
dists/sid/linux-2.6/debian/changelog
dists/sid/linux-2.6/debian/patches/series/base
Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog Wed May 30 12:48:01 2012 (r19044)
+++ dists/sid/linux-2.6/debian/changelog Wed May 30 12:49:00 2012 (r19045)
@@ -6,6 +6,7 @@
- Add support for Skyhawk cards
* net/sched: Add codel and fq_codel from Linux 3.5-rc1
* [x86] udeb: Add hyperv-modules containing Hyper-V paravirtualised drivers
+ * [x86] ata_piix: defer disks to the Hyper-V drivers by default
-- Ben Hutchings <ben at decadent.org.uk> Sun, 27 May 2012 01:12:44 +0100
Added: dists/sid/linux-2.6/debian/patches/features/x86/hyperv/0078-libata-add-a-host-flag-to-ignore-detected-ATA-device.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/features/x86/hyperv/0078-libata-add-a-host-flag-to-ignore-detected-ATA-device.patch Wed May 30 12:49:00 2012 (r19045)
@@ -0,0 +1,49 @@
+From: Andy Whitcroft <apw at canonical.com>
+Date: Fri, 4 May 2012 22:15:10 +0100
+Subject: [PATCH 78/79] libata: add a host flag to ignore detected ATA devices
+
+commit db63a4c8115a0bb904496e1cdd3e7488e68b0d06 upstream.
+
+Where devices are visible via more than one host we sometimes wish to
+indicate that cirtain devices should be ignored on a specific host. Add a
+host flag indicating that this host wishes to ignore ATA specific devices.
+
+Signed-off-by: Andy Whitcroft <apw at canonical.com>
+Signed-off-by: Jeff Garzik <jgarzik at redhat.com>
+---
+ drivers/ata/libata-core.c | 6 ++++++
+ include/linux/libata.h | 1 +
+ 2 files changed, 7 insertions(+)
+
+diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
+index 23763a1..d31ee55 100644
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -1973,6 +1973,12 @@ retry:
+ if (class == ATA_DEV_ATA) {
+ if (!ata_id_is_ata(id) && !ata_id_is_cfa(id))
+ goto err_out;
++ if (ap->host->flags & ATA_HOST_IGNORE_ATA &&
++ ata_id_is_ata(id)) {
++ ata_dev_dbg(dev,
++ "host indicates ignore ATA devices, ignored\n");
++ return -ENOENT;
++ }
+ } else {
+ if (ata_id_is_ata(id))
+ goto err_out;
+diff --git a/include/linux/libata.h b/include/linux/libata.h
+index e926df7..6e887c7 100644
+--- a/include/linux/libata.h
++++ b/include/linux/libata.h
+@@ -247,6 +247,7 @@ enum {
+ ATA_HOST_SIMPLEX = (1 << 0), /* Host is simplex, one DMA channel per host only */
+ ATA_HOST_STARTED = (1 << 1), /* Host started */
+ ATA_HOST_PARALLEL_SCAN = (1 << 2), /* Ports on this host can be scanned in parallel */
++ ATA_HOST_IGNORE_ATA = (1 << 3), /* Ignore ATA devices on this host. */
+
+ /* bits 24:31 of host->flags are reserved for LLD specific flags */
+
+--
+1.7.10
+
Added: dists/sid/linux-2.6/debian/patches/features/x86/hyperv/0079-ata_piix-defer-disks-to-the-Hyper-V-drivers-by-defau.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/features/x86/hyperv/0079-ata_piix-defer-disks-to-the-Hyper-V-drivers-by-defau.patch Wed May 30 12:49:00 2012 (r19045)
@@ -0,0 +1,82 @@
+From: Andy Whitcroft <apw at canonical.com>
+Date: Fri, 4 May 2012 22:15:11 +0100
+Subject: [PATCH 79/79] ata_piix: defer disks to the Hyper-V drivers by
+ default
+
+commit cd006086fa5d91414d8ff9ff2b78fbb593878e3c upstream.
+
+When we are hosted on a Microsoft Hyper-V hypervisor the guest disks
+are exposed both via the Hyper-V paravirtualised drivers and via an
+emulated SATA disk drive. In this case we want to use the paravirtualised
+drivers if we can as they are much more efficient. Note that the Hyper-V
+paravirtualised drivers only expose the virtual hard disk devices, the
+CDROM/DVD devices must still be enumerated.
+
+Mark the host controller ATA_HOST_IGNORE_ATA to prevent enumeration of
+disk devices.
+
+BugLink: http://bugs.launchpad.net/bugs/929545
+BugLink: http://bugs.launchpad.net/bugs/942316
+Signed-off-by: Andy Whitcroft <apw at canonical.com>
+Signed-off-by: Jeff Garzik <jgarzik at redhat.com>
+---
+ drivers/ata/ata_piix.c | 36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
+index 7857e8f..3c809bf 100644
+--- a/drivers/ata/ata_piix.c
++++ b/drivers/ata/ata_piix.c
+@@ -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
+@@ -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);
+ }
+--
+1.7.10
+
Modified: dists/sid/linux-2.6/debian/patches/series/base
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/base Wed May 30 12:48:01 2012 (r19044)
+++ dists/sid/linux-2.6/debian/patches/series/base Wed May 30 12:49:00 2012 (r19045)
@@ -158,6 +158,8 @@
+ features/x86/hyperv/0075-Tools-hv-Support-enumeration-from-all-the-pools.patch
+ 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/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
More information about the Kernel-svn-changes
mailing list