Patch "iavf: do not process adminq tasks when __IAVF_IN_REMOVE_TASK is set" has been added to the 5.15-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

    iavf: do not process adminq tasks when __IAVF_IN_REMOVE_TASK is set

to the 5.15-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:
     iavf-do-not-process-adminq-tasks-when-__iavf_in_remo.patch
and it can be found in the queue-5.15 subdirectory.

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



commit 9a192631dd77235ace468f918cd52c54e1d4132f
Author: Radoslaw Tyl <radoslawx.tyl@xxxxxxxxx>
Date:   Mon Aug 7 14:59:40 2023 +0200

    iavf: do not process adminq tasks when __IAVF_IN_REMOVE_TASK is set
    
    [ Upstream commit c8de44b577eb540e8bfea55afe1d0904bb571b7a ]
    
    Prevent schedule operations for adminq during device remove and when
    __IAVF_IN_REMOVE_TASK flag is set. Currently, the iavf_down function
    adds operations for adminq that shouldn't be processed when the device
    is in the __IAVF_REMOVE state.
    
    Reproduction:
    
    echo 4 > /sys/bus/pci/devices/0000:17:00.0/sriov_numvfs
    ip link set dev ens1f0 vf 0 trust on
    ip link set dev ens1f0 vf 1 trust on
    ip link set dev ens1f0 vf 2 trust on
    ip link set dev ens1f0 vf 3 trust on
    
    ip link set dev ens1f0 vf 0 mac 00:22:33:44:55:66
    ip link set dev ens1f0 vf 1 mac 00:22:33:44:55:67
    ip link set dev ens1f0 vf 2 mac 00:22:33:44:55:68
    ip link set dev ens1f0 vf 3 mac 00:22:33:44:55:69
    
    echo 0000:17:02.0 > /sys/bus/pci/devices/0000\:17\:02.0/driver/unbind
    echo 0000:17:02.1 > /sys/bus/pci/devices/0000\:17\:02.1/driver/unbind
    echo 0000:17:02.2 > /sys/bus/pci/devices/0000\:17\:02.2/driver/unbind
    echo 0000:17:02.3 > /sys/bus/pci/devices/0000\:17\:02.3/driver/unbind
    sleep 10
    echo 0000:17:02.0 > /sys/bus/pci/drivers/iavf/bind
    echo 0000:17:02.1 > /sys/bus/pci/drivers/iavf/bind
    echo 0000:17:02.2 > /sys/bus/pci/drivers/iavf/bind
    echo 0000:17:02.3 > /sys/bus/pci/drivers/iavf/bind
    
    modprobe vfio-pci
    echo 8086 154c > /sys/bus/pci/drivers/vfio-pci/new_id
    
    qemu-system-x86_64 -accel kvm -m 4096 -cpu host \
    -drive file=centos9.qcow2,if=none,id=virtio-disk0 \
    -device virtio-blk-pci,drive=virtio-disk0,bootindex=0 -smp 4 \
    -device vfio-pci,host=17:02.0 -net none \
    -device vfio-pci,host=17:02.1 -net none \
    -device vfio-pci,host=17:02.2 -net none \
    -device vfio-pci,host=17:02.3 -net none \
    -daemonize -vnc :5
    
    Current result:
    There is a probability that the mac of VF in guest is inconsistent with
    it in host
    
    Expected result:
    When passthrough NIC VF to guest, the VF in guest should always get
    the same mac as it in host.
    
    Fixes: 14756b2ae265 ("iavf: Fix __IAVF_RESETTING state usage")
    Signed-off-by: Radoslaw Tyl <radoslawx.tyl@xxxxxxxxx>
    Tested-by: Rafal Romanowski <rafal.romanowski@xxxxxxxxx>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c
index a87f4f1ae6845..41b8ff0d4df5e 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_main.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
@@ -1142,7 +1142,8 @@ void iavf_down(struct iavf_adapter *adapter)
 	iavf_clear_fdir_filters(adapter);
 	iavf_clear_adv_rss_conf(adapter);
 
-	if (!(adapter->flags & IAVF_FLAG_PF_COMMS_FAILED)) {
+	if (!(adapter->flags & IAVF_FLAG_PF_COMMS_FAILED) &&
+	    !(test_bit(__IAVF_IN_REMOVE_TASK, &adapter->crit_section))) {
 		/* cancel any current operation */
 		adapter->current_op = VIRTCHNL_OP_UNKNOWN;
 		/* Schedule operations to close down the HW. Don't wait



[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