Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ebaa67f authored by Raghava Aditya Renukunta's avatar Raghava Aditya Renukunta Committed by Martin K. Petersen
Browse files

scsi: aacraid: Use hotplug handling function in place of scsi_scan_host



Driver uses scsi_scan_host to add new devices in the driver init path,
which adds all the fw exposed devices. The drivers resorts to queue
command checks to block out commands to _hidden_ devices.

Use the hotplug handler code to add new devices during driver init and
other areas, this is only for safw. For ARC scsi_scan_host will still
apply.

Signed-off-by: default avatarRaghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 3395614e
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -2150,10 +2150,6 @@ int aac_get_adapter_info(struct aac_dev* dev)
		dev->maximum_num_channels = le32_to_cpu(bus_info->BusCount);
	}

	if (!dev->sync_mode && dev->sa_firmware &&
		dev->supplement_adapter_info.virt_device_bus != 0xffff)
		rcode = aac_setup_safw_adapter(dev, AAC_INIT);

	if (!dev->in_reset) {
		char buffer[16];
		tmp = le32_to_cpu(dev->adapter_info.kernelrev);
+1 −0
Original line number Diff line number Diff line
@@ -2719,6 +2719,7 @@ static inline int aac_supports_2T(struct aac_dev *dev)
	return (dev->adapter_info.options & AAC_OPT_NEW_COMM_64);
}

int aac_scan_host(struct aac_dev *dev, int rescan);
char * get_container_type(unsigned type);
extern int numacb;
extern char aac_driver_version[];
+15 −3
Original line number Diff line number Diff line
@@ -1964,6 +1964,19 @@ static int aac_update_safw_host_devices(struct aac_dev *dev, int rescan)
	return rcode;
}

int aac_scan_host(struct aac_dev *dev, int rescan)
{
	int rcode = 0;

	mutex_lock(&dev->scan_mutex);
	if (dev->sa_firmware)
		rcode = aac_update_safw_host_devices(dev, rescan);
	else
		scsi_scan_host(dev->scsi_host_ptr);
	mutex_unlock(&dev->scan_mutex);
	return rcode;
}

/**
 *	aac_handle_sa_aif	Handle a message from the firmware
 *	@dev: Which adapter this fib is from
@@ -1997,9 +2010,8 @@ static void aac_handle_sa_aif(struct aac_dev *dev, struct fib *fibptr)
	case SA_AIF_LDEV_CHANGE:
	case SA_AIF_BPCFG_CHANGE:

		mutex_lock(&dev->scan_mutex);
		aac_update_safw_host_devices(dev, AAC_RESCAN);
		mutex_unlock(&dev->scan_mutex);
		aac_scan_host(dev, AAC_RESCAN);

		break;

	case SA_AIF_BPSTAT_CHANGE:
+3 −2
Original line number Diff line number Diff line
@@ -1787,7 +1787,8 @@ static int aac_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
	error = scsi_add_host(shost, &pdev->dev);
	if (error)
		goto out_deinit;
	scsi_scan_host(shost);

	aac_scan_host(aac, AAC_INIT);

	pci_enable_pcie_error_reporting(pdev);
	pci_save_state(pdev);
@@ -2071,7 +2072,7 @@ static void aac_pci_resume(struct pci_dev *pdev)
		if (sdev->sdev_state == SDEV_OFFLINE)
			sdev->sdev_state = SDEV_RUNNING;
	scsi_unblock_requests(aac->scsi_host_ptr);
	scsi_scan_host(aac->scsi_host_ptr);
	aac_scan_host(aac, AAC_RESCAN);
	pci_save_state(pdev);

	dev_err(&pdev->dev, "aacraid: PCI error - resume\n");