From: Kejian Yan <redacted>
This patch fixes the device being used to DMA map skb->data.
Erroneous device assignment causes the crash when SMMU is enabled.
This happens during TX since buffer gets DMA mapped with device
correspondign to net_device and gets unmapped using the device
related to DSAF.
Signed-off-by: Kejian Yan <redacted>
Reviewed-by: Yisen Zhuang <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-----Original Message-----
From: netdev-owner@vger.kernel.org [mailto:netdev-owner@vger.kernel.org]
On Behalf Of Salil Mehta
Sent: Thursday, February 09, 2017 5:24 PM
To: davem@davemloft.net
Cc: salil.mehta@huawei.com; yisen.zhuang@huawei.com;
mehta.salil.lnk@gmail.com; netdev@vger.kernel.org;
linux-kernel@vger.kernel.org; linuxarm@huawei.com; Kejian Yan
Subject: [PATCH net] net: hns: Fix the device being used for dma mapping during
TX
From: Kejian Yan <redacted>
This patch fixes the device being used to DMA map skb->data.
Erroneous device assignment causes the crash when SMMU is enabled.
This happens during TX since buffer gets DMA mapped with device
correspondign to net_device and gets unmapped using the device
related to DSAF.
Signed-off-by: Kejian Yan <redacted>
Reviewed-by: Yisen Zhuang <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
On Behalf Of Salil Mehta
Sent: Thursday, February 09, 2017 5:24 PM
To: davem@davemloft.net
Cc: salil.mehta@huawei.com; yisen.zhuang@huawei.com;
mehta.salil.lnk@gmail.com; netdev@vger.kernel.org;
linux-kernel@vger.kernel.org; linuxarm@huawei.com; Kejian Yan
Subject: [PATCH net] net: hns: Fix the device being used for dma
mapping during
quoted
TX
From: Kejian Yan <redacted>
This patch fixes the device being used to DMA map skb->data.
Erroneous device assignment causes the crash when SMMU is enabled.
This happens during TX since buffer gets DMA mapped with device
correspondign to net_device and gets unmapped using the device
related to DSAF.
Signed-off-by: Kejian Yan <redacted>
Reviewed-by: Yisen Zhuang <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
On Behalf Of Salil Mehta
Sent: Thursday, February 09, 2017 5:24 PM
To: davem@davemloft.net
Cc: salil.mehta@huawei.com; yisen.zhuang@huawei.com;
mehta.salil.lnk@gmail.com; netdev@vger.kernel.org;
linux-kernel@vger.kernel.org; linuxarm@huawei.com; Kejian Yan
Subject: [PATCH net] net: hns: Fix the device being used for dma
mapping during
quoted
TX
From: Kejian Yan <redacted>
This patch fixes the device being used to DMA map skb->data.
Erroneous device assignment causes the crash when SMMU is enabled.
This happens during TX since buffer gets DMA mapped with device
correspondign to net_device and gets unmapped using the device
related to DSAF.
Signed-off-by: Kejian Yan <redacted>
Reviewed-by: Yisen Zhuang <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Yes, name of the macro is slight misnomer but this gets the dsaf
device.
Hope this answers your question?
I realized this lately, I think you meant below:
struct hnae_ring *ring = ring_data->ring;
struct device *dev = ring_to_dev(ring);
I will correct this and float a patch. Thanks!
Best regards
Salil
From: Kejian Yan <redacted>
This patch fixes the device being used to DMA map skb->data.
Erroneous device assignment causes the crash when SMMU is enabled.
This happens during TX since buffer gets DMA mapped with device
correspondign to net_device and gets unmapped using the device
related to DSAF.
Signed-off-by: Kejian Yan <redacted>
Reviewed-by: Yisen Zhuang <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-----Original Message-----
From: Lino Sanfilippo [mailto:LinoSanfilippo@gmx.de]
Sent: Thursday, February 09, 2017 10:25 AM
To: Salil Mehta
Cc: davem@davemloft.net; Salil Mehta; Zhuangyuzeng (Yisen);
mehta.salil.lnk@gmail.com; netdev@vger.kernel.org; linux-
kernel@vger.kernel.org; Linuxarm; Yankejian (Hackim Yim)
Subject: Re: [PATCH net] net: hns: Fix the device being used for dma
mapping during TX
Hi,
quoted
From: Kejian Yan <redacted>
This patch fixes the device being used to DMA map skb->data.
Erroneous device assignment causes the crash when SMMU is enabled.
This happens during TX since buffer gets DMA mapped with device
correspondign to net_device and gets unmapped using the device
related to DSAF.
Signed-off-by: Kejian Yan <redacted>
Reviewed-by: Yisen Zhuang <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -305,7 +305,7 @@ int hns_nic_net_xmit_hw(struct net_device *ndev,structhns_nic_ring_data*ring_data){structhns_nic_priv*priv=netdev_priv(ndev);-structdevice*dev=priv->dev;+structdevice*dev=ring_to_dev(ring_data->ring);structhnae_ring*ring=ring_data->ring;structnetdev_queue*dev_queue;structskb_frag_struct*frag;--
I would say it should be the other way around: Use priv->dev for
mapping and
unmapping instead of ring_to_dev().
Yes, you got it right. Ideally, it should be per-port and for
legacy reasons we have it this way. In the current design, we have
SMMU node per-dsaf and I guess we will not land in the right
dma-ops if we use per-netdev platform-device/device right now.
Best regards
Salil
Gesendet: Donnerstag, 09. Februar 2017 um 12:30 Uhr
Von: "Salil Mehta" [off-list ref]
An: "Lino Sanfilippo" [off-list ref]
Cc: "davem@davemloft.net" <davem@davemloft.net>, "Zhuangyuzeng (Yisen)" <redacted>, "mehta.salil.lnk@gmail.com" <redacted>, "netdev@vger.kernel.org" <redacted>, "linux-kernel@vger.kernel.org" <redacted>, Linuxarm <redacted>, "Yankejian (Hackim Yim)" <redacted>
Betreff: RE: [PATCH net] net: hns: Fix the device being used for dma mapping during TX
quoted
-----Original Message-----
From: Lino Sanfilippo [mailto:LinoSanfilippo@gmx.de]
Sent: Thursday, February 09, 2017 10:25 AM
To: Salil Mehta
Cc: davem@davemloft.net; Salil Mehta; Zhuangyuzeng (Yisen);
mehta.salil.lnk@gmail.com; netdev@vger.kernel.org; linux-
kernel@vger.kernel.org; Linuxarm; Yankejian (Hackim Yim)
Subject: Re: [PATCH net] net: hns: Fix the device being used for dma
mapping during TX
Hi,
quoted
From: Kejian Yan <redacted>
This patch fixes the device being used to DMA map skb->data.
Erroneous device assignment causes the crash when SMMU is enabled.
This happens during TX since buffer gets DMA mapped with device
correspondign to net_device and gets unmapped using the device
related to DSAF.
Signed-off-by: Kejian Yan <redacted>
Reviewed-by: Yisen Zhuang <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -305,7 +305,7 @@ int hns_nic_net_xmit_hw(struct net_device *ndev,structhns_nic_ring_data*ring_data){structhns_nic_priv*priv=netdev_priv(ndev);-structdevice*dev=priv->dev;+structdevice*dev=ring_to_dev(ring_data->ring);structhnae_ring*ring=ring_data->ring;structnetdev_queue*dev_queue;structskb_frag_struct*frag;--
I would say it should be the other way around: Use priv->dev for
mapping and
unmapping instead of ring_to_dev().
Yes, you got it right. Ideally, it should be per-port and for
legacy reasons we have it this way. In the current design, we have
SMMU node per-dsaf and I guess we will not land in the right
dma-ops if we use per-netdev platform-device/device right now.
Ok, but how can it work if we set the DMA mask of the device object of
the plaform_device (via dma_set_mask_and_coherent in the probe() function)
and do the actual mapping with a different device object? I dont know much about
the low level dma handling but I can imagine that the mask is required to
do the mapping correctly.
Regards,
Lino