scsi: mpt3sas: Handle NVMe PCIe device related events generated from firmware.
* The controller firmware sends separate events for NVMe devices and PCIe switches similar to existing SAS events. * NVMe device detection, addition and removal are reported by the firmware through PCIe Topology Change list events. * The PCIe device state change events are sent when the firmware detects any abnormal conditions with a NVMe device or switch. * The enumeration event are sent when the firmware starts PCIe device enumeration and stops. * This patch has the code change to handle the events and add/remove NVMe devices in driver's inventory. Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:

committed by
Martin K. Petersen

parent
3075ac4902
commit
4318c73478
@@ -663,6 +663,26 @@ _base_display_event_data(struct MPT3SAS_ADAPTER *ioc,
|
||||
case MPI2_EVENT_ACTIVE_CABLE_EXCEPTION:
|
||||
desc = "Cable Event";
|
||||
break;
|
||||
case MPI2_EVENT_PCIE_DEVICE_STATUS_CHANGE:
|
||||
desc = "PCIE Device Status Change";
|
||||
break;
|
||||
case MPI2_EVENT_PCIE_ENUMERATION:
|
||||
{
|
||||
Mpi26EventDataPCIeEnumeration_t *event_data =
|
||||
(Mpi26EventDataPCIeEnumeration_t *)mpi_reply->EventData;
|
||||
pr_info(MPT3SAS_FMT "PCIE Enumeration: (%s)", ioc->name,
|
||||
(event_data->ReasonCode ==
|
||||
MPI26_EVENT_PCIE_ENUM_RC_STARTED) ?
|
||||
"start" : "stop");
|
||||
if (event_data->EnumerationStatus)
|
||||
pr_info("enumeration_status(0x%08x)",
|
||||
le32_to_cpu(event_data->EnumerationStatus));
|
||||
pr_info("\n");
|
||||
return;
|
||||
}
|
||||
case MPI2_EVENT_PCIE_TOPOLOGY_CHANGE_LIST:
|
||||
desc = "PCIE Topology Change List";
|
||||
break;
|
||||
}
|
||||
|
||||
if (!desc)
|
||||
@@ -6125,7 +6145,15 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
|
||||
_base_unmask_events(ioc, MPI2_EVENT_LOG_ENTRY_ADDED);
|
||||
_base_unmask_events(ioc, MPI2_EVENT_TEMP_THRESHOLD);
|
||||
_base_unmask_events(ioc, MPI2_EVENT_ACTIVE_CABLE_EXCEPTION);
|
||||
|
||||
if (ioc->hba_mpi_version_belonged == MPI26_VERSION) {
|
||||
if (ioc->is_gen35_ioc) {
|
||||
_base_unmask_events(ioc,
|
||||
MPI2_EVENT_PCIE_DEVICE_STATUS_CHANGE);
|
||||
_base_unmask_events(ioc, MPI2_EVENT_PCIE_ENUMERATION);
|
||||
_base_unmask_events(ioc,
|
||||
MPI2_EVENT_PCIE_TOPOLOGY_CHANGE_LIST);
|
||||
}
|
||||
}
|
||||
r = _base_make_ioc_operational(ioc);
|
||||
if (r)
|
||||
goto out_free_resources;
|
||||
|
Reference in New Issue
Block a user