]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.19.27/mips-bcm63xx-provide-dma-masks-for-ethernet-devices.patch
Linux 4.19.27
[thirdparty/kernel/stable-queue.git] / releases / 4.19.27 / mips-bcm63xx-provide-dma-masks-for-ethernet-devices.patch
1 From 18836b48ebae20850631ee2916d0cdbb86df813d Mon Sep 17 00:00:00 2001
2 From: Jonas Gorski <jonas.gorski@gmail.com>
3 Date: Thu, 21 Feb 2019 10:56:42 +0100
4 Subject: MIPS: BCM63XX: provide DMA masks for ethernet devices
5
6 From: Jonas Gorski <jonas.gorski@gmail.com>
7
8 commit 18836b48ebae20850631ee2916d0cdbb86df813d upstream.
9
10 The switch to the generic dma ops made dma masks mandatory, breaking
11 devices having them not set. In case of bcm63xx, it broke ethernet with
12 the following warning when trying to up the device:
13
14 [ 2.633123] ------------[ cut here ]------------
15 [ 2.637949] WARNING: CPU: 0 PID: 325 at ./include/linux/dma-mapping.h:516 bcm_enetsw_open+0x160/0xbbc
16 [ 2.647423] Modules linked in: gpio_button_hotplug
17 [ 2.652361] CPU: 0 PID: 325 Comm: ip Not tainted 4.19.16 #0
18 [ 2.658080] Stack : 80520000 804cd3ec 00000000 00000000 804ccc00 87085bdc 87d3f9d4 804f9a17
19 [ 2.666707] 8049cf18 00000145 80a942a0 00000204 80ac0000 10008400 87085b90 eb3d5ab7
20 [ 2.675325] 00000000 00000000 80ac0000 000022b0 00000000 00000000 00000007 00000000
21 [ 2.683954] 0000007a 80500000 0013b381 00000000 80000000 00000000 804a1664 80289878
22 [ 2.692572] 00000009 00000204 80ac0000 00000200 00000002 00000000 00000000 80a90000
23 [ 2.701191] ...
24 [ 2.703701] Call Trace:
25 [ 2.706244] [<8001f3c8>] show_stack+0x58/0x100
26 [ 2.710840] [<800336e4>] __warn+0xe4/0x118
27 [ 2.715049] [<800337d4>] warn_slowpath_null+0x48/0x64
28 [ 2.720237] [<80289878>] bcm_enetsw_open+0x160/0xbbc
29 [ 2.725347] [<802d1d4c>] __dev_open+0xf8/0x16c
30 [ 2.729913] [<802d20cc>] __dev_change_flags+0x100/0x1c4
31 [ 2.735290] [<802d21b8>] dev_change_flags+0x28/0x70
32 [ 2.740326] [<803539e0>] devinet_ioctl+0x310/0x7b0
33 [ 2.745250] [<80355fd8>] inet_ioctl+0x1f8/0x224
34 [ 2.749939] [<802af290>] sock_ioctl+0x30c/0x488
35 [ 2.754632] [<80112b34>] do_vfs_ioctl+0x740/0x7dc
36 [ 2.759459] [<80112c20>] ksys_ioctl+0x50/0x94
37 [ 2.763955] [<800240b8>] syscall_common+0x34/0x58
38 [ 2.768782] ---[ end trace fb1a6b14d74e28b6 ]---
39 [ 2.773544] bcm63xx_enetsw bcm63xx_enetsw.0: cannot allocate rx ring 512
40
41 Fix this by adding appropriate DMA masks for the platform devices.
42
43 Fixes: f8c55dc6e828 ("MIPS: use generic dma noncoherent ops for simple noncoherent platforms")
44 Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
45 Reviewed-by: Christoph Hellwig <hch@lst.de>
46 Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
47 Signed-off-by: Paul Burton <paul.burton@mips.com>
48 Cc: linux-mips@linux-mips.org
49 Cc: linux-kernel@vger.kernel.org
50 Cc: Ralf Baechle <ralf@linux-mips.org>
51 Cc: James Hogan <jhogan@kernel.org>
52 Cc: stable@vger.kernel.org # v4.19+
53 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
54
55 ---
56 arch/mips/bcm63xx/dev-enet.c | 8 ++++++++
57 1 file changed, 8 insertions(+)
58
59 --- a/arch/mips/bcm63xx/dev-enet.c
60 +++ b/arch/mips/bcm63xx/dev-enet.c
61 @@ -70,6 +70,8 @@ static struct platform_device bcm63xx_en
62
63 static int shared_device_registered;
64
65 +static u64 enet_dmamask = DMA_BIT_MASK(32);
66 +
67 static struct resource enet0_res[] = {
68 {
69 .start = -1, /* filled at runtime */
70 @@ -99,6 +101,8 @@ static struct platform_device bcm63xx_en
71 .resource = enet0_res,
72 .dev = {
73 .platform_data = &enet0_pd,
74 + .dma_mask = &enet_dmamask,
75 + .coherent_dma_mask = DMA_BIT_MASK(32),
76 },
77 };
78
79 @@ -131,6 +135,8 @@ static struct platform_device bcm63xx_en
80 .resource = enet1_res,
81 .dev = {
82 .platform_data = &enet1_pd,
83 + .dma_mask = &enet_dmamask,
84 + .coherent_dma_mask = DMA_BIT_MASK(32),
85 },
86 };
87
88 @@ -157,6 +163,8 @@ static struct platform_device bcm63xx_en
89 .resource = enetsw_res,
90 .dev = {
91 .platform_data = &enetsw_pd,
92 + .dma_mask = &enet_dmamask,
93 + .coherent_dma_mask = DMA_BIT_MASK(32),
94 },
95 };
96