diff options
Diffstat (limited to 'drivers/message/fusion/mptsas.c')
-rw-r--r-- | drivers/message/fusion/mptsas.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c index 1caf03ea8557..8963f5c44c23 100644 --- a/drivers/message/fusion/mptsas.c +++ b/drivers/message/fusion/mptsas.c | |||
@@ -2549,6 +2549,7 @@ mptsas_sas_device_pg0(MPT_ADAPTER *ioc, struct mptsas_devinfo *device_info, | |||
2549 | device_info->sas_address = le64_to_cpu(sas_address); | 2549 | device_info->sas_address = le64_to_cpu(sas_address); |
2550 | device_info->device_info = | 2550 | device_info->device_info = |
2551 | le32_to_cpu(buffer->DeviceInfo); | 2551 | le32_to_cpu(buffer->DeviceInfo); |
2552 | device_info->flags = le16_to_cpu(buffer->Flags); | ||
2552 | 2553 | ||
2553 | out_free_consistent: | 2554 | out_free_consistent: |
2554 | pci_free_consistent(ioc->pcidev, hdr.ExtPageLength * 4, | 2555 | pci_free_consistent(ioc->pcidev, hdr.ExtPageLength * 4, |
@@ -3840,6 +3841,13 @@ mptsas_probe_devices(MPT_ADAPTER *ioc) | |||
3840 | MPI_SAS_DEVICE_INFO_SATA_DEVICE)) == 0) | 3841 | MPI_SAS_DEVICE_INFO_SATA_DEVICE)) == 0) |
3841 | continue; | 3842 | continue; |
3842 | 3843 | ||
3844 | /* If there is no FW B_T mapping for this device then continue | ||
3845 | * */ | ||
3846 | if (!(sas_device.flags & MPI_SAS_DEVICE0_FLAGS_DEVICE_PRESENT) | ||
3847 | || !(sas_device.flags & | ||
3848 | MPI_SAS_DEVICE0_FLAGS_DEVICE_MAPPED)) | ||
3849 | continue; | ||
3850 | |||
3843 | phy_info = mptsas_refreshing_device_handles(ioc, &sas_device); | 3851 | phy_info = mptsas_refreshing_device_handles(ioc, &sas_device); |
3844 | if (!phy_info) | 3852 | if (!phy_info) |
3845 | continue; | 3853 | continue; |
@@ -4149,6 +4157,14 @@ mptsas_adding_inactive_raid_components(MPT_ADAPTER *ioc, u8 channel, u8 id) | |||
4149 | phys_disk.PhysDiskID)) | 4157 | phys_disk.PhysDiskID)) |
4150 | continue; | 4158 | continue; |
4151 | 4159 | ||
4160 | /* If there is no FW B_T mapping for this device then continue | ||
4161 | * */ | ||
4162 | if (!(sas_device.flags & MPI_SAS_DEVICE0_FLAGS_DEVICE_PRESENT) | ||
4163 | || !(sas_device.flags & | ||
4164 | MPI_SAS_DEVICE0_FLAGS_DEVICE_MAPPED)) | ||
4165 | continue; | ||
4166 | |||
4167 | |||
4152 | phy_info = mptsas_find_phyinfo_by_sas_address(ioc, | 4168 | phy_info = mptsas_find_phyinfo_by_sas_address(ioc, |
4153 | sas_device.sas_address); | 4169 | sas_device.sas_address); |
4154 | mptsas_add_end_device(ioc, phy_info); | 4170 | mptsas_add_end_device(ioc, phy_info); |
@@ -4199,6 +4215,13 @@ mptsas_hotplug_work(MPT_ADAPTER *ioc, struct fw_event_work *fw_event, | |||
4199 | (hot_plug_info->channel << 8) + | 4215 | (hot_plug_info->channel << 8) + |
4200 | hot_plug_info->id); | 4216 | hot_plug_info->id); |
4201 | 4217 | ||
4218 | /* If there is no FW B_T mapping for this device then break | ||
4219 | * */ | ||
4220 | if (!(sas_device.flags & MPI_SAS_DEVICE0_FLAGS_DEVICE_PRESENT) | ||
4221 | || !(sas_device.flags & | ||
4222 | MPI_SAS_DEVICE0_FLAGS_DEVICE_MAPPED)) | ||
4223 | break; | ||
4224 | |||
4202 | if (!sas_device.handle) | 4225 | if (!sas_device.handle) |
4203 | return; | 4226 | return; |
4204 | 4227 | ||
@@ -4241,6 +4264,13 @@ mptsas_hotplug_work(MPT_ADAPTER *ioc, struct fw_event_work *fw_event, | |||
4241 | break; | 4264 | break; |
4242 | } | 4265 | } |
4243 | 4266 | ||
4267 | /* If there is no FW B_T mapping for this device then break | ||
4268 | * */ | ||
4269 | if (!(sas_device.flags & MPI_SAS_DEVICE0_FLAGS_DEVICE_PRESENT) | ||
4270 | || !(sas_device.flags & | ||
4271 | MPI_SAS_DEVICE0_FLAGS_DEVICE_MAPPED)) | ||
4272 | break; | ||
4273 | |||
4244 | phy_info = mptsas_find_phyinfo_by_sas_address( | 4274 | phy_info = mptsas_find_phyinfo_by_sas_address( |
4245 | ioc, sas_device.sas_address); | 4275 | ioc, sas_device.sas_address); |
4246 | 4276 | ||
@@ -4294,6 +4324,13 @@ mptsas_hotplug_work(MPT_ADAPTER *ioc, struct fw_event_work *fw_event, | |||
4294 | break; | 4324 | break; |
4295 | } | 4325 | } |
4296 | 4326 | ||
4327 | /* If there is no FW B_T mapping for this device then break | ||
4328 | * */ | ||
4329 | if (!(sas_device.flags & MPI_SAS_DEVICE0_FLAGS_DEVICE_PRESENT) | ||
4330 | || !(sas_device.flags & | ||
4331 | MPI_SAS_DEVICE0_FLAGS_DEVICE_MAPPED)) | ||
4332 | break; | ||
4333 | |||
4297 | phy_info = mptsas_find_phyinfo_by_sas_address(ioc, | 4334 | phy_info = mptsas_find_phyinfo_by_sas_address(ioc, |
4298 | sas_device.sas_address); | 4335 | sas_device.sas_address); |
4299 | if (!phy_info) { | 4336 | if (!phy_info) { |