]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: mpi3mr: Prevent duplicate SAS/SATA device entries in channel 1
authorSuganath Prabu S <suganath-prabu.subramani@broadcom.com>
Thu, 20 Nov 2025 07:19:55 +0000 (12:49 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 29 Nov 2025 20:08:41 +0000 (15:08 -0500)
Avoid scanning SAS/SATA devices in channel 1 when SAS transport is
enabled, as the SAS/SATA devices are exposed through channel 0.

Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
Link: https://lore.kernel.org/stable/20251120071955.463475-1-suganath-prabu.subramani%40broadcom.com
Link: https://patch.msgid.link/20251120071955.463475-1-suganath-prabu.subramani@broadcom.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/mpi3mr/mpi3mr.h
drivers/scsi/mpi3mr/mpi3mr_os.c

index 6742684e2990a76004c411cc9e8f53650eae219f..31d68c151b2076aa817014ffa5ea64e6e2d4cc34 100644 (file)
@@ -56,8 +56,8 @@ extern struct list_head mrioc_list;
 extern int prot_mask;
 extern atomic64_t event_counter;
 
-#define MPI3MR_DRIVER_VERSION  "8.15.0.5.50"
-#define MPI3MR_DRIVER_RELDATE  "12-August-2025"
+#define MPI3MR_DRIVER_VERSION  "8.15.0.5.51"
+#define MPI3MR_DRIVER_RELDATE  "18-November-2025"
 
 #define MPI3MR_DRIVER_NAME     "mpi3mr"
 #define MPI3MR_DRIVER_LICENSE  "GPL"
index b88633e1efe27503f3690e6de9a93eeb9ea2642e..d4ca878d08869795f4ad2361005c83f969b5f044 100644 (file)
@@ -1184,6 +1184,8 @@ static void mpi3mr_update_tgtdev(struct mpi3mr_ioc *mrioc,
        if (is_added == true)
                tgtdev->io_throttle_enabled =
                    (flags & MPI3_DEVICE0_FLAGS_IO_THROTTLING_REQUIRED) ? 1 : 0;
+       if (!mrioc->sas_transport_enabled)
+               tgtdev->non_stl = 1;
 
        switch (flags & MPI3_DEVICE0_FLAGS_MAX_WRITE_SAME_MASK) {
        case MPI3_DEVICE0_FLAGS_MAX_WRITE_SAME_256_LB:
@@ -4844,7 +4846,7 @@ static int mpi3mr_target_alloc(struct scsi_target *starget)
        spin_lock_irqsave(&mrioc->tgtdev_lock, flags);
        if (starget->channel == mrioc->scsi_device_channel) {
                tgt_dev = __mpi3mr_get_tgtdev_by_perst_id(mrioc, starget->id);
-               if (tgt_dev && !tgt_dev->is_hidden) {
+               if (tgt_dev && !tgt_dev->is_hidden && tgt_dev->non_stl) {
                        scsi_tgt_priv_data->starget = starget;
                        scsi_tgt_priv_data->dev_handle = tgt_dev->dev_handle;
                        scsi_tgt_priv_data->perst_id = tgt_dev->perst_id;