Patch "ice: Correctly deal with PFs that do not support RDMA" has been added to the 5.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ice: Correctly deal with PFs that do not support RDMA

to the 5.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ice-correctly-deal-with-pfs-that-do-not-support-rdma.patch
and it can be found in the queue-5.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 9330c24ee2fb3e6d3fb068cf074a55eac847225a
Author: Dave Ertman <david.m.ertman@xxxxxxxxx>
Date:   Thu Sep 9 08:12:23 2021 -0700

    ice: Correctly deal with PFs that do not support RDMA
    
    [ Upstream commit bfe84435090a6c85271b02a42b1d83fef9ff7cc7 ]
    
    There are two cases where the current PF does not support RDMA
    functionality.  The first is if the NVM loaded on the device is set
    to not support RDMA (common_caps.rdma is false).  The second is if
    the kernel bonding driver has included the current PF in an active
    link aggregate.
    
    When the driver has determined that this PF does not support RDMA, then
    auxiliary devices should not be created on the auxiliary bus.  Without
    a device on the auxiliary bus, even if the irdma driver is present, there
    will be no RDMA activity attempted on this PF.
    
    Currently, in the reset flow, an attempt to create auxiliary devices is
    performed without regard to the ability of the PF.  There needs to be a
    check in ice_aux_plug_dev (as the central point that creates auxiliary
    devices) to see if the PF is in a state to support the functionality.
    
    When disabling and re-enabling RDMA due to the inclusion/removal of the PF
    in a link aggregate, we also need to set/clear the bit which controls
    auxiliary device creation so that a reset recovery in a link aggregate
    situation doesn't try to create auxiliary devices when it shouldn't.
    
    Fixes: f9f5301e7e2d ("ice: Register auxiliary device to provide RDMA")
    Reported-by: Yongxin Liu <yongxin.liu@xxxxxxxxxxxxx>
    Signed-off-by: Dave Ertman <david.m.ertman@xxxxxxxxx>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index eadcb9958346..3c4f08d20414 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -695,6 +695,7 @@ static inline void ice_set_rdma_cap(struct ice_pf *pf)
 {
 	if (pf->hw.func_caps.common_cap.rdma && pf->num_rdma_msix) {
 		set_bit(ICE_FLAG_RDMA_ENA, pf->flags);
+		set_bit(ICE_FLAG_AUX_ENA, pf->flags);
 		ice_plug_aux_dev(pf);
 	}
 }
@@ -707,5 +708,6 @@ static inline void ice_clear_rdma_cap(struct ice_pf *pf)
 {
 	ice_unplug_aux_dev(pf);
 	clear_bit(ICE_FLAG_RDMA_ENA, pf->flags);
+	clear_bit(ICE_FLAG_AUX_ENA, pf->flags);
 }
 #endif /* _ICE_H_ */
diff --git a/drivers/net/ethernet/intel/ice/ice_idc.c b/drivers/net/ethernet/intel/ice/ice_idc.c
index 1f2afdf6cd48..adcc9a251595 100644
--- a/drivers/net/ethernet/intel/ice/ice_idc.c
+++ b/drivers/net/ethernet/intel/ice/ice_idc.c
@@ -271,6 +271,12 @@ int ice_plug_aux_dev(struct ice_pf *pf)
 	struct auxiliary_device *adev;
 	int ret;
 
+	/* if this PF doesn't support a technology that requires auxiliary
+	 * devices, then gracefully exit
+	 */
+	if (!ice_is_aux_ena(pf))
+		return 0;
+
 	iadev = kzalloc(sizeof(*iadev), GFP_KERNEL);
 	if (!iadev)
 		return -ENOMEM;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux