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-stable-10
mailing list