|
@@ -5991,6 +5991,23 @@ void ata_port_detach(struct ata_port *ap)
|
|
|
scsi_remove_host(ap->scsi_host);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * ata_host_detach - Detach all ports of an ATA host
|
|
|
+ * @host: Host to detach
|
|
|
+ *
|
|
|
+ * Detach all ports of @host.
|
|
|
+ *
|
|
|
+ * LOCKING:
|
|
|
+ * Kernel thread context (may sleep).
|
|
|
+ */
|
|
|
+void ata_host_detach(struct ata_host *host)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ for (i = 0; i < host->n_ports; i++)
|
|
|
+ ata_port_detach(host->ports[i]);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* ata_host_remove - PCI layer callback for device removal
|
|
|
* @host: ATA host set that was removed
|
|
@@ -6006,8 +6023,7 @@ void ata_host_remove(struct ata_host *host)
|
|
|
{
|
|
|
unsigned int i;
|
|
|
|
|
|
- for (i = 0; i < host->n_ports; i++)
|
|
|
- ata_port_detach(host->ports[i]);
|
|
|
+ ata_host_detach(host);
|
|
|
|
|
|
free_irq(host->irq, host);
|
|
|
if (host->irq2)
|
|
@@ -6382,7 +6398,7 @@ EXPORT_SYMBOL_GPL(ata_std_bios_param);
|
|
|
EXPORT_SYMBOL_GPL(ata_std_ports);
|
|
|
EXPORT_SYMBOL_GPL(ata_host_init);
|
|
|
EXPORT_SYMBOL_GPL(ata_device_add);
|
|
|
-EXPORT_SYMBOL_GPL(ata_port_detach);
|
|
|
+EXPORT_SYMBOL_GPL(ata_host_detach);
|
|
|
EXPORT_SYMBOL_GPL(ata_host_remove);
|
|
|
EXPORT_SYMBOL_GPL(ata_sg_init);
|
|
|
EXPORT_SYMBOL_GPL(ata_sg_init_one);
|