svn commit: r256326 - in stable/10/sys/dev: ata hyperv/stordisengage

Peter Grehan grehan at FreeBSD.org
Fri Oct 11 18:27:14 UTC 2013


Author: grehan
Date: Fri Oct 11 18:27:12 2013
New Revision: 256326
URL: http://svnweb.freebsd.org/changeset/base/256326

Log:
  MFC r256304
  
    Allow the legacy CDROM device to be accessed in a FreeBSD guest, while
    still using enlightened drivers for other block devices.
  
  Approved by:    re@ (gjb)

Modified:
  stable/10/sys/dev/ata/ata-all.c
  stable/10/sys/dev/ata/ata-card.c
  stable/10/sys/dev/hyperv/stordisengage/hv_ata_pci_disengage.c
Directory Properties:
  stable/10/sys/   (props changed)
  stable/10/sys/dev/hyperv/   (props changed)

Modified: stable/10/sys/dev/ata/ata-all.c
==============================================================================
--- stable/10/sys/dev/ata/ata-all.c	Fri Oct 11 18:21:05 2013	(r256325)
+++ stable/10/sys/dev/ata/ata-all.c	Fri Oct 11 18:27:12 2013	(r256326)
@@ -92,7 +92,7 @@ FEATURE(ata_cam, "ATA devices are access
 int
 ata_probe(device_t dev)
 {
-    return 0;
+    return (BUS_PROBE_DEFAULT);
 }
 
 int

Modified: stable/10/sys/dev/ata/ata-card.c
==============================================================================
--- stable/10/sys/dev/ata/ata-card.c	Fri Oct 11 18:21:05 2013	(r256325)
+++ stable/10/sys/dev/ata/ata-card.c	Fri Oct 11 18:27:12 2013	(r256326)
@@ -140,7 +140,7 @@ ata_pccard_attach(device_t dev)
         ch-> flags |= ATA_NO_SLAVE;
     ata_generic_hw(dev);
     err = ata_probe(dev);
-    if (err)
+    if (err > 0)
 	return (err);
     return (ata_attach(dev));
 }

Modified: stable/10/sys/dev/hyperv/stordisengage/hv_ata_pci_disengage.c
==============================================================================
--- stable/10/sys/dev/hyperv/stordisengage/hv_ata_pci_disengage.c	Fri Oct 11 18:21:05 2013	(r256325)
+++ stable/10/sys/dev/hyperv/stordisengage/hv_ata_pci_disengage.c	Fri Oct 11 18:27:12 2013	(r256326)
@@ -92,6 +92,7 @@ static int hv_check_for_hyper_v(void);
 static int
 hv_ata_pci_probe(device_t dev)
 {
+	device_t parent = device_get_parent(dev);
 	int ata_disk_enable;
 
 	ata_disk_enable = 0;
@@ -102,23 +103,9 @@ hv_ata_pci_probe(device_t dev)
 	if (!hv_check_for_hyper_v())
 		return (ENXIO);
 
-	if (bootverbose)
-		device_printf(dev,
-		    "hv_ata_pci_probe dev_class/subslcass = %d, %d\n",
-			pci_get_class(dev), pci_get_subclass(dev));
-			
-	/* is this a storage class device ? */
-	if (pci_get_class(dev) != PCIC_STORAGE)
+	if (device_get_unit(parent) != 0 || device_get_ivars(dev) != 0)
 		return (ENXIO);
 
-	/* is this an IDE/ATA type device ? */
-	if (pci_get_subclass(dev) != PCIS_STORAGE_IDE)
-		return (ENXIO);
-
-	if(bootverbose)
-		device_printf(dev,
-		    "Hyper-V probe for disabling ATA-PCI, emulated driver\n");
-
 	/*
 	 * On Hyper-V the default is to use the enlightened driver for
 	 * IDE disks. However, if the user wishes to use the native
@@ -126,15 +113,14 @@ hv_ata_pci_probe(device_t dev)
 	 * hw_ata.disk_enable must be explicitly set to 1.
 	 */
 	if (getenv_int("hw.ata.disk_enable", &ata_disk_enable)) {
-		if(bootverbose)
+		if (bootverbose)
 			device_printf(dev,
 			    "hw.ata.disk_enable flag is disabling Hyper-V"
 			    " ATA driver support\n");
 			return (ENXIO);
 	}
 
-	if (bootverbose)
-		device_printf(dev, "Hyper-V ATA storage driver enabled.\n");
+	device_set_desc(dev, "Hyper-V ATA storage disengage driver");
 
 	return (BUS_PROBE_VENDOR);
 }
@@ -193,12 +179,12 @@ static device_method_t hv_ata_pci_method
 devclass_t hv_ata_pci_devclass;
 
 static driver_t hv_ata_pci_disengage_driver = {
-	"pciata-disable",
+	"ata",
 	hv_ata_pci_methods,
-	sizeof(struct ata_pci_controller),
+	0,
 };
 
-DRIVER_MODULE(atapci_dis, pci, hv_ata_pci_disengage_driver,
-		hv_ata_pci_devclass, NULL, NULL);
+DRIVER_MODULE(atapci_dis, atapci, hv_ata_pci_disengage_driver,
+    hv_ata_pci_devclass, NULL, NULL);
 MODULE_VERSION(atapci_dis, 1);
 MODULE_DEPEND(atapci_dis, ata, 1, 1, 1);


More information about the svn-src-all mailing list