All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Whitcroft <apw@canonical.com>
To: Jeff Garzik <jgarzik@pobox.com>, linux-ide@vger.kernel.org
Cc: Andy Whitcroft <apw@canonical.com>,
	linux-kernel@vger.kernel.org,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Mike Sterling <Mike.Sterling@microsoft.com>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: [PATCH 2/2] UBUNTU: SAUCE: ata_piix: defer disks to the Hyper-V drivers by default
Date: Mon, 16 Apr 2012 12:20:29 +0100	[thread overview]
Message-ID: <1334575229-7493-3-git-send-email-apw@canonical.com> (raw)
In-Reply-To: <1334575229-7493-1-git-send-email-apw@canonical.com>

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@canonical.com>
---
 drivers/ata/ata_piix.c |   38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 68013f9..05e0ffa 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -1552,6 +1552,41 @@ 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)
+{
+	static const struct dmi_system_id ignore_devices[] = {
+		{
+			/* 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"),
+			},
+			.driver_data = (void *)ATA_HOST_IGNORE_ATA,
+		},
+
+		{ }	/* terminate list */
+	};
+	const struct dmi_system_id *dmi = dmi_first_match(ignore_devices);
+
+	if (dmi) {
+		unsigned long flags = (unsigned long)dmi->driver_data;
+
+		host->flags |= flags;
+		dev_info(host->dev, "%s detected, device ignore set %08lx\n",
+			dmi->ident, flags);
+	}
+}
+
 /**
  *	piix_init_one - Register PIIX ATA PCI device with kernel services
  *	@pdev: PCI device to register
@@ -1667,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.9.5


  parent reply	other threads:[~2012-04-16 11:20 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-29 17:28 [PATCH 1/1] ata_piix: defer disks to the Hyper-V paravirtualised drivers by default Andy Whitcroft
2012-03-30  9:14 ` Victor Miasnikov
2012-03-30  9:14   ` Victor Miasnikov
2012-04-10 16:08 ` KY Srinivasan
2012-04-12 15:55 ` Andy Whitcroft
2012-04-12 20:03 ` Jeff Garzik
2012-04-13  7:37   ` Andy Whitcroft
2012-04-14 15:53   ` [PATCH 0/2] Hyper-V disk support Andy Whitcroft
2012-04-14 15:53     ` [PATCH 1/2] libata: add a host flag to ignore detected ATA devices Andy Whitcroft
2012-04-14 15:53     ` [PATCH 2/2] ata_piix: defer disks to the Hyper-V drivers by default Andy Whitcroft
2012-04-14 16:02       ` Alan Cox
2012-04-15  0:10         ` KY Srinivasan
2012-04-16 11:20         ` [PATCH 0/2] Hyper-V disk support V3 Andy Whitcroft
2012-04-16 11:20           ` [PATCH 1/2] libata: add a host flag to ignore detected ATA devices Andy Whitcroft
2012-04-16 11:20           ` Andy Whitcroft [this message]
2012-04-16 11:28             ` [PATCH 2/2] UBUNTU: SAUCE: ata_piix: defer disks to the Hyper-V drivers by default Sergei Shtylyov
2012-04-16 11:26           ` [PATCH 0/2] Hyper-V disk support V3 Alan Cox
2012-04-16 18:29             ` Andy Whitcroft
2012-04-16 18:41               ` KY Srinivasan
2012-04-18 20:12                 ` Alan Cox
2012-04-18 20:21                   ` KY Srinivasan
2012-04-19  8:15                     ` 1) boot flag to disable the Hyper-V IDE drivers: ata_piix.prefer_ms_hyperv=0 2) PIIX_IGNORE_ATA_ON_HYPERV Re: [PATCH 0/2] Hyper-V disk support V3 RE: use hv_storvsc instead of ata_piix to handle the IDE disks devices ( but not for the CD-ROM) Victor Miasnikov
2012-04-19  8:15                       ` Victor Miasnikov
2012-04-19  7:40                   ` [PATCH 0/2] Hyper-V disk support V3 Andy Whitcroft
2012-04-19 13:17                     ` KY Srinivasan
2012-04-19 14:33                     ` [PATCH 0/2] Hyper-V disk support V4 Andy Whitcroft
2012-04-19 14:33                       ` [PATCH 1/2] libata: add a host flag to ignore detected ATA devices Andy Whitcroft
2012-04-19 14:33                       ` [PATCH 2/2] ata_piix: defer disks to the Hyper-V drivers by default Andy Whitcroft
2012-04-19 15:54                         ` Sergei Shtylyov
2012-05-04 21:15                           ` [PATCH 0/2] Hyper-V disk support V5 Andy Whitcroft
2012-05-04 21:15                             ` [PATCH 1/2] libata: add a host flag to ignore detected ATA devices Andy Whitcroft
2012-05-07 19:43                               ` Jeff Garzik
2012-05-04 21:15                             ` [PATCH 2/2] ata_piix: defer disks to the Hyper-V drivers by default Andy Whitcroft
2012-04-16 15:32           ` [PATCH 0/2] Hyper-V disk support V3 Jeff Garzik
2012-04-16 18:28             ` Andy Whitcroft

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1334575229-7493-3-git-send-email-apw@canonical.com \
    --to=apw@canonical.com \
    --cc=Mike.Sterling@microsoft.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=jgarzik@pobox.com \
    --cc=kys@microsoft.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.