From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Jiangfeng Xiao <xiaojiangfeng@huawei.com>,
"David S . Miller" <davem@davemloft.net>,
Sasha Levin <sashal@kernel.org>,
netdev@vger.kernel.org
Subject: [PATCH AUTOSEL 4.9 28/33] net: hisilicon: Fix dma_map_single failed on arm64
Date: Tue, 13 Aug 2019 22:23:18 -0400 [thread overview]
Message-ID: <20190814022323.17111-28-sashal@kernel.org> (raw)
In-Reply-To: <20190814022323.17111-1-sashal@kernel.org>
From: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
[ Upstream commit 96a50c0d907ac8f5c3d6b051031a19eb8a2b53e3 ]
On the arm64 platform, executing "ifconfig eth0 up" will fail,
returning "ifconfig: SIOCSIFFLAGS: Input/output error."
ndev->dev is not initialized, dma_map_single->get_dma_ops->
dummy_dma_ops->__dummy_map_page will return DMA_ERROR_CODE
directly, so when we use dma_map_single, the first parameter
is to use the device of platform_device.
Signed-off-by: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/hisilicon/hip04_eth.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/hisilicon/hip04_eth.c b/drivers/net/ethernet/hisilicon/hip04_eth.c
index c7e0b246cfdca..f7882c1fde16d 100644
--- a/drivers/net/ethernet/hisilicon/hip04_eth.c
+++ b/drivers/net/ethernet/hisilicon/hip04_eth.c
@@ -157,6 +157,7 @@ struct hip04_priv {
unsigned int reg_inten;
struct napi_struct napi;
+ struct device *dev;
struct net_device *ndev;
struct tx_desc *tx_desc;
@@ -387,7 +388,7 @@ static int hip04_tx_reclaim(struct net_device *ndev, bool force)
}
if (priv->tx_phys[tx_tail]) {
- dma_unmap_single(&ndev->dev, priv->tx_phys[tx_tail],
+ dma_unmap_single(priv->dev, priv->tx_phys[tx_tail],
priv->tx_skb[tx_tail]->len,
DMA_TO_DEVICE);
priv->tx_phys[tx_tail] = 0;
@@ -437,8 +438,8 @@ static int hip04_mac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
return NETDEV_TX_BUSY;
}
- phys = dma_map_single(&ndev->dev, skb->data, skb->len, DMA_TO_DEVICE);
- if (dma_mapping_error(&ndev->dev, phys)) {
+ phys = dma_map_single(priv->dev, skb->data, skb->len, DMA_TO_DEVICE);
+ if (dma_mapping_error(priv->dev, phys)) {
dev_kfree_skb(skb);
return NETDEV_TX_OK;
}
@@ -508,7 +509,7 @@ static int hip04_rx_poll(struct napi_struct *napi, int budget)
goto refill;
}
- dma_unmap_single(&ndev->dev, priv->rx_phys[priv->rx_head],
+ dma_unmap_single(priv->dev, priv->rx_phys[priv->rx_head],
RX_BUF_SIZE, DMA_FROM_DEVICE);
priv->rx_phys[priv->rx_head] = 0;
@@ -537,9 +538,9 @@ static int hip04_rx_poll(struct napi_struct *napi, int budget)
buf = netdev_alloc_frag(priv->rx_buf_size);
if (!buf)
goto done;
- phys = dma_map_single(&ndev->dev, buf,
+ phys = dma_map_single(priv->dev, buf,
RX_BUF_SIZE, DMA_FROM_DEVICE);
- if (dma_mapping_error(&ndev->dev, phys))
+ if (dma_mapping_error(priv->dev, phys))
goto done;
priv->rx_buf[priv->rx_head] = buf;
priv->rx_phys[priv->rx_head] = phys;
@@ -642,9 +643,9 @@ static int hip04_mac_open(struct net_device *ndev)
for (i = 0; i < RX_DESC_NUM; i++) {
dma_addr_t phys;
- phys = dma_map_single(&ndev->dev, priv->rx_buf[i],
+ phys = dma_map_single(priv->dev, priv->rx_buf[i],
RX_BUF_SIZE, DMA_FROM_DEVICE);
- if (dma_mapping_error(&ndev->dev, phys))
+ if (dma_mapping_error(priv->dev, phys))
return -EIO;
priv->rx_phys[i] = phys;
@@ -678,7 +679,7 @@ static int hip04_mac_stop(struct net_device *ndev)
for (i = 0; i < RX_DESC_NUM; i++) {
if (priv->rx_phys[i]) {
- dma_unmap_single(&ndev->dev, priv->rx_phys[i],
+ dma_unmap_single(priv->dev, priv->rx_phys[i],
RX_BUF_SIZE, DMA_FROM_DEVICE);
priv->rx_phys[i] = 0;
}
@@ -829,6 +830,7 @@ static int hip04_mac_probe(struct platform_device *pdev)
return -ENOMEM;
priv = netdev_priv(ndev);
+ priv->dev = d;
priv->ndev = ndev;
platform_set_drvdata(pdev, ndev);
--
2.20.1
next prev parent reply other threads:[~2019-08-14 2:24 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-14 2:22 [PATCH AUTOSEL 4.9 01/33] HID: Add 044f:b320 ThrustMaster, Inc. 2 in 1 DT Sasha Levin
2019-08-14 2:22 ` [PATCH AUTOSEL 4.9 02/33] MIPS: kernel: only use i8253 clocksource with periodic clockevent Sasha Levin
2019-08-14 2:22 ` [PATCH AUTOSEL 4.9 03/33] netfilter: ebtables: fix a memory leak bug in compat Sasha Levin
2019-08-14 2:22 ` [PATCH AUTOSEL 4.9 04/33] ASoC: dapm: Fix handling of custom_stop_condition on DAPM graph walks Sasha Levin
2019-08-14 2:22 ` [PATCH AUTOSEL 4.9 05/33] bonding: Force slave speed check after link state recovery for 802.3ad Sasha Levin
2019-08-14 2:22 ` [PATCH AUTOSEL 4.9 06/33] can: dev: call netif_carrier_off() in register_candev() Sasha Levin
2019-08-14 2:22 ` [PATCH AUTOSEL 4.9 07/33] ASoC: Fail card instantiation if DAI format setup fails Sasha Levin
2019-08-14 2:22 ` [PATCH AUTOSEL 4.9 08/33] st21nfca_connectivity_event_received: null check the allocation Sasha Levin
2019-08-14 2:22 ` [PATCH AUTOSEL 4.9 09/33] st_nci_hci_connectivity_event_received: " Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 10/33] ASoC: ti: davinci-mcasp: Correct slot_width posed constraint Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 11/33] net: usb: qmi_wwan: Add the BroadMobi BM818 card Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 12/33] isdn: mISDN: hfcsusb: Fix possible null-pointer dereferences in start_isoc_chain() Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 13/33] isdn: hfcsusb: Fix mISDN driver crash caused by transfer buffer on the stack Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 14/33] perf bench numa: Fix cpu0 binding Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 15/33] Input: kbtab - sanity check for endpoint type Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 16/33] net: usb: pegasus: fix improper read if get_registers() fail Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 17/33] can: sja1000: force the string buffer NULL-terminated Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 18/33] can: peak_usb: " Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 19/33] NFSv4: Fix a potential sleep while atomic in nfs4_do_reclaim() Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 20/33] HID: holtek: test for sanity of intfdata Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 21/33] HID: input: fix a4tech horizontal wheel custom usage Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 22/33] HID: hiddev: avoid opening a disconnected device Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 23/33] HID: hiddev: do cleanup in failure of opening a device Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 24/33] Input: iforce - add sanity checks Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 25/33] net: cxgb3_main: Fix a resource leak in a error path in 'init_one()' Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 26/33] net: hisilicon: make hip04_tx_reclaim non-reentrant Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 27/33] net: hisilicon: fix hip04-xmit never return TX_BUSY Sasha Levin
2019-08-14 2:23 ` Sasha Levin [this message]
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 29/33] libata: add SG safety checks in SFF pio transfers Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 30/33] x86/lib/cpu: Address missing prototypes warning Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 31/33] drm/vmwgfx: fix memory leak when too many retries have occurred Sasha Levin
2019-08-14 2:23 ` Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 32/33] perf pmu-events: Fix missing "cpu_clk_unhalted.core" event Sasha Levin
2019-08-14 2:23 ` [PATCH AUTOSEL 4.9 33/33] selftests: kvm: Adding config fragments Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190814022323.17111-28-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=xiaojiangfeng@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.