|
@@ -4903,13 +4903,22 @@ _scsih_sas_host_add(struct MPT3SAS_ADAPTER *ioc)
|
|
|
u16 ioc_status;
|
|
|
u16 sz;
|
|
|
u8 device_missing_delay;
|
|
|
+ u8 num_phys;
|
|
|
|
|
|
- mpt3sas_config_get_number_hba_phys(ioc, &ioc->sas_hba.num_phys);
|
|
|
- if (!ioc->sas_hba.num_phys) {
|
|
|
+ mpt3sas_config_get_number_hba_phys(ioc, &num_phys);
|
|
|
+ if (!num_phys) {
|
|
|
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
|
|
|
ioc->name, __FILE__, __LINE__, __func__);
|
|
|
return;
|
|
|
}
|
|
|
+ ioc->sas_hba.phy = kcalloc(num_phys,
|
|
|
+ sizeof(struct _sas_phy), GFP_KERNEL);
|
|
|
+ if (!ioc->sas_hba.phy) {
|
|
|
+ pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
|
|
|
+ ioc->name, __FILE__, __LINE__, __func__);
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+ ioc->sas_hba.num_phys = num_phys;
|
|
|
|
|
|
/* sas_iounit page 0 */
|
|
|
sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys *
|
|
@@ -4969,13 +4978,6 @@ _scsih_sas_host_add(struct MPT3SAS_ADAPTER *ioc)
|
|
|
MPI2_SASIOUNIT1_REPORT_MISSING_TIMEOUT_MASK;
|
|
|
|
|
|
ioc->sas_hba.parent_dev = &ioc->shost->shost_gendev;
|
|
|
- ioc->sas_hba.phy = kcalloc(ioc->sas_hba.num_phys,
|
|
|
- sizeof(struct _sas_phy), GFP_KERNEL);
|
|
|
- if (!ioc->sas_hba.phy) {
|
|
|
- pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n",
|
|
|
- ioc->name, __FILE__, __LINE__, __func__);
|
|
|
- goto out;
|
|
|
- }
|
|
|
for (i = 0; i < ioc->sas_hba.num_phys ; i++) {
|
|
|
if ((mpt3sas_config_get_phy_pg0(ioc, &mpi_reply, &phy_pg0,
|
|
|
i))) {
|