Patch "net: fec: fix the unhandled context fault from smmu" has been added to the 6.7-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

    net: fec: fix the unhandled context fault from smmu

to the 6.7-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:
     net-fec-fix-the-unhandled-context-fault-from-smmu.patch
and it can be found in the queue-6.7 subdirectory.

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



commit 673b7bbd4cec69e76f7c6790c24d1041bcf45ca4
Author: Shenwei Wang <shenwei.wang@xxxxxxx>
Date:   Tue Jan 23 10:51:41 2024 -0600

    net: fec: fix the unhandled context fault from smmu
    
    [ Upstream commit 5e344807735023cd3a67c37a1852b849caa42620 ]
    
    When repeatedly changing the interface link speed using the command below:
    
    ethtool -s eth0 speed 100 duplex full
    ethtool -s eth0 speed 1000 duplex full
    
    The following errors may sometimes be reported by the ARM SMMU driver:
    
    [ 5395.035364] fec 5b040000.ethernet eth0: Link is Down
    [ 5395.039255] arm-smmu 51400000.iommu: Unhandled context fault:
    fsr=0x402, iova=0x00000000, fsynr=0x100001, cbfrsynra=0x852, cb=2
    [ 5398.108460] fec 5b040000.ethernet eth0: Link is Up - 100Mbps/Full -
    flow control off
    
    It is identified that the FEC driver does not properly stop the TX queue
    during the link speed transitions, and this results in the invalid virtual
    I/O address translations from the SMMU and causes the context faults.
    
    Fixes: dbc64a8ea231 ("net: fec: move calls to quiesce/resume packet processing out of fec_restart()")
    Signed-off-by: Shenwei Wang <shenwei.wang@xxxxxxx>
    Link: https://lore.kernel.org/r/20240123165141.2008104-1-shenwei.wang@xxxxxxx
    Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index e08c7b572497..c107680985e4 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -2036,6 +2036,7 @@ static void fec_enet_adjust_link(struct net_device *ndev)
 
 		/* if any of the above changed restart the FEC */
 		if (status_change) {
+			netif_stop_queue(ndev);
 			napi_disable(&fep->napi);
 			netif_tx_lock_bh(ndev);
 			fec_restart(ndev);
@@ -2045,6 +2046,7 @@ static void fec_enet_adjust_link(struct net_device *ndev)
 		}
 	} else {
 		if (fep->link) {
+			netif_stop_queue(ndev);
 			napi_disable(&fep->napi);
 			netif_tx_lock_bh(ndev);
 			fec_stop(ndev);




[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