From 2d257e7a26a79bf36e8bacd94f75956727f12afd Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Thu, 26 Sep 2024 13:45:02 -0400 Subject: [PATCH 1/2] Revert "scsi: mpi3mr: Use proper format specifier in mpi3mr_sas_port_add()" This reverts commit 155d9c9ed1292b5957d9b71a041957d63ea25ebc. --- drivers/scsi/mpi3mr/mpi3mr_transport.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/mpi3mr/mpi3mr_transport.c b/drivers/scsi/mpi3mr/mpi3mr_transport.c index 0072bbdb265b..91c2f667a4c0 100644 --- a/drivers/scsi/mpi3mr/mpi3mr_transport.c +++ b/drivers/scsi/mpi3mr/mpi3mr_transport.c @@ -1366,7 +1366,7 @@ static struct mpi3mr_sas_port *mpi3mr_sas_port_add(struct mpi3mr_ioc *mrioc, continue; if (i > sizeof(mr_sas_port->phy_mask) * 8) { - ioc_warn(mrioc, "skipping port %u, max allowed value is %zu\n", + ioc_warn(mrioc, "skipping port %u, max allowed value is %lu\n", i, sizeof(mr_sas_port->phy_mask) * 8); goto out_fail; } From 4eb9b8c6854a3dcc6fddadb184dd63491ee63fc7 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Thu, 26 Sep 2024 13:45:14 -0400 Subject: [PATCH 2/2] Revert "scsi: mpi3mr: Sanitise num_phys" This reverts commit 586b41060113ae43032ec6c4a16d518cef5da6e0. It seems to cause probe failures on 9600-16e HBAs with ES60G2/G3 JBODs at least due to PHY numbers not only above 32, but actually even above 64, as bumped in Linux master. --- drivers/scsi/mpi3mr/mpi3mr_transport.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/drivers/scsi/mpi3mr/mpi3mr_transport.c b/drivers/scsi/mpi3mr/mpi3mr_transport.c index 91c2f667a4c0..82b55e955730 100644 --- a/drivers/scsi/mpi3mr/mpi3mr_transport.c +++ b/drivers/scsi/mpi3mr/mpi3mr_transport.c @@ -1355,21 +1355,11 @@ static struct mpi3mr_sas_port *mpi3mr_sas_port_add(struct mpi3mr_ioc *mrioc, mpi3mr_sas_port_sanity_check(mrioc, mr_sas_node, mr_sas_port->remote_identify.sas_address, hba_port); - if (mr_sas_node->num_phys > sizeof(mr_sas_port->phy_mask) * 8) - ioc_info(mrioc, "max port count %u could be too high\n", - mr_sas_node->num_phys); - for (i = 0; i < mr_sas_node->num_phys; i++) { if ((mr_sas_node->phy[i].remote_identify.sas_address != mr_sas_port->remote_identify.sas_address) || (mr_sas_node->phy[i].hba_port != hba_port)) continue; - - if (i > sizeof(mr_sas_port->phy_mask) * 8) { - ioc_warn(mrioc, "skipping port %u, max allowed value is %lu\n", - i, sizeof(mr_sas_port->phy_mask) * 8); - goto out_fail; - } list_add_tail(&mr_sas_node->phy[i].port_siblings, &mr_sas_port->phy_list); mr_sas_port->num_phys++;