diff mbox series

[net] bnxt_en: Fix double DMA unmapping for XDP_REDIRECT

Message ID 20240820203415.168178-1-michael.chan@broadcom.com (mailing list archive)
State Accepted
Commit 8baeef7616d5194045c5a6b97fd1246b87c55b13
Delegated to: Netdev Maintainers
Headers show
Series [net] bnxt_en: Fix double DMA unmapping for XDP_REDIRECT | expand

Checks

Context Check Description
netdev/series_format success Single patches do not need cover letters
netdev/tree_selection success Clearly marked for net
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag present in non-next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 16 this patch: 16
netdev/build_tools success No tools touched, skip
netdev/cc_maintainers success CCed 9 of 9 maintainers
netdev/build_clang success Errors and warnings before: 16 this patch: 16
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 16 this patch: 16
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 11 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-08-21--06-00 (tests: 711)

Commit Message

Michael Chan Aug. 20, 2024, 8:34 p.m. UTC
From: Somnath Kotur <somnath.kotur@broadcom.com>

Remove the dma_unmap_page_attrs() call in the driver's XDP_REDIRECT
code path.  This should have been removed when we let the page pool
handle the DMA mapping.  This bug causes the warning:

WARNING: CPU: 7 PID: 59 at drivers/iommu/dma-iommu.c:1198 iommu_dma_unmap_page+0xd5/0x100
CPU: 7 PID: 59 Comm: ksoftirqd/7 Tainted: G        W          6.8.0-1010-gcp #11-Ubuntu
Hardware name: Dell Inc. PowerEdge R7525/0PYVT1, BIOS 2.15.2 04/02/2024
RIP: 0010:iommu_dma_unmap_page+0xd5/0x100
Code: 89 ee 48 89 df e8 cb f2 69 ff 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d 31 c0 31 d2 31 c9 31 f6 31 ff 45 31 c0 e9 ab 17 71 00 <0f> 0b 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d 31 c0 31 d2 31 c9
RSP: 0018:ffffab1fc0597a48 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff99ff838280c8 RCX: 0000000000000000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
RBP: ffffab1fc0597a78 R08: 0000000000000002 R09: ffffab1fc0597c1c
R10: ffffab1fc0597cd3 R11: ffff99ffe375acd8 R12: 00000000e65b9000
R13: 0000000000000050 R14: 0000000000001000 R15: 0000000000000002
FS:  0000000000000000(0000) GS:ffff9a06efb80000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000565c34c37210 CR3: 00000005c7e3e000 CR4: 0000000000350ef0
? show_regs+0x6d/0x80
? __warn+0x89/0x150
? iommu_dma_unmap_page+0xd5/0x100
? report_bug+0x16a/0x190
? handle_bug+0x51/0xa0
? exc_invalid_op+0x18/0x80
? iommu_dma_unmap_page+0xd5/0x100
? iommu_dma_unmap_page+0x35/0x100
dma_unmap_page_attrs+0x55/0x220
? bpf_prog_4d7e87c0d30db711_xdp_dispatcher+0x64/0x9f
bnxt_rx_xdp+0x237/0x520 [bnxt_en]
bnxt_rx_pkt+0x640/0xdd0 [bnxt_en]
__bnxt_poll_work+0x1a1/0x3d0 [bnxt_en]
bnxt_poll+0xaa/0x1e0 [bnxt_en]
__napi_poll+0x33/0x1e0
net_rx_action+0x18a/0x2f0

Fixes: 578fcfd26e2a ("bnxt_en: Let the page pool manage the DMA mapping")
Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 5 -----
 1 file changed, 5 deletions(-)

Comments

Jacob Keller Aug. 20, 2024, 9:47 p.m. UTC | #1
On 8/20/2024 1:34 PM, Michael Chan wrote:
> From: Somnath Kotur <somnath.kotur@broadcom.com>
> 
> Remove the dma_unmap_page_attrs() call in the driver's XDP_REDIRECT
> code path.  This should have been removed when we let the page pool
> handle the DMA mapping.  This bug causes the warning:
> 
> WARNING: CPU: 7 PID: 59 at drivers/iommu/dma-iommu.c:1198 iommu_dma_unmap_page+0xd5/0x100
> CPU: 7 PID: 59 Comm: ksoftirqd/7 Tainted: G        W          6.8.0-1010-gcp #11-Ubuntu
> Hardware name: Dell Inc. PowerEdge R7525/0PYVT1, BIOS 2.15.2 04/02/2024
> RIP: 0010:iommu_dma_unmap_page+0xd5/0x100
> Code: 89 ee 48 89 df e8 cb f2 69 ff 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d 31 c0 31 d2 31 c9 31 f6 31 ff 45 31 c0 e9 ab 17 71 00 <0f> 0b 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d 31 c0 31 d2 31 c9
> RSP: 0018:ffffab1fc0597a48 EFLAGS: 00010246
> RAX: 0000000000000000 RBX: ffff99ff838280c8 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
> RBP: ffffab1fc0597a78 R08: 0000000000000002 R09: ffffab1fc0597c1c
> R10: ffffab1fc0597cd3 R11: ffff99ffe375acd8 R12: 00000000e65b9000
> R13: 0000000000000050 R14: 0000000000001000 R15: 0000000000000002
> FS:  0000000000000000(0000) GS:ffff9a06efb80000(0000) knlGS:0000000000000000
> CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000565c34c37210 CR3: 00000005c7e3e000 CR4: 0000000000350ef0
> ? show_regs+0x6d/0x80
> ? __warn+0x89/0x150
> ? iommu_dma_unmap_page+0xd5/0x100
> ? report_bug+0x16a/0x190
> ? handle_bug+0x51/0xa0
> ? exc_invalid_op+0x18/0x80
> ? iommu_dma_unmap_page+0xd5/0x100
> ? iommu_dma_unmap_page+0x35/0x100
> dma_unmap_page_attrs+0x55/0x220
> ? bpf_prog_4d7e87c0d30db711_xdp_dispatcher+0x64/0x9f
> bnxt_rx_xdp+0x237/0x520 [bnxt_en]
> bnxt_rx_pkt+0x640/0xdd0 [bnxt_en]
> __bnxt_poll_work+0x1a1/0x3d0 [bnxt_en]
> bnxt_poll+0xaa/0x1e0 [bnxt_en]
> __napi_poll+0x33/0x1e0
> net_rx_action+0x18a/0x2f0
> 
> Fixes: 578fcfd26e2a ("bnxt_en: Let the page pool manage the DMA mapping")
> Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
> Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
> Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
> Signed-off-by: Michael Chan <michael.chan@broadcom.com>
> ---

Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
patchwork-bot+netdevbpf@kernel.org Aug. 22, 2024, 12:40 a.m. UTC | #2
Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue, 20 Aug 2024 13:34:15 -0700 you wrote:
> From: Somnath Kotur <somnath.kotur@broadcom.com>
> 
> Remove the dma_unmap_page_attrs() call in the driver's XDP_REDIRECT
> code path.  This should have been removed when we let the page pool
> handle the DMA mapping.  This bug causes the warning:
> 
> WARNING: CPU: 7 PID: 59 at drivers/iommu/dma-iommu.c:1198 iommu_dma_unmap_page+0xd5/0x100
> CPU: 7 PID: 59 Comm: ksoftirqd/7 Tainted: G        W          6.8.0-1010-gcp #11-Ubuntu
> Hardware name: Dell Inc. PowerEdge R7525/0PYVT1, BIOS 2.15.2 04/02/2024
> RIP: 0010:iommu_dma_unmap_page+0xd5/0x100
> Code: 89 ee 48 89 df e8 cb f2 69 ff 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d 31 c0 31 d2 31 c9 31 f6 31 ff 45 31 c0 e9 ab 17 71 00 <0f> 0b 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d 31 c0 31 d2 31 c9
> RSP: 0018:ffffab1fc0597a48 EFLAGS: 00010246
> RAX: 0000000000000000 RBX: ffff99ff838280c8 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
> RBP: ffffab1fc0597a78 R08: 0000000000000002 R09: ffffab1fc0597c1c
> R10: ffffab1fc0597cd3 R11: ffff99ffe375acd8 R12: 00000000e65b9000
> R13: 0000000000000050 R14: 0000000000001000 R15: 0000000000000002
> FS:  0000000000000000(0000) GS:ffff9a06efb80000(0000) knlGS:0000000000000000
> CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000565c34c37210 CR3: 00000005c7e3e000 CR4: 0000000000350ef0
> ? show_regs+0x6d/0x80
> ? __warn+0x89/0x150
> ? iommu_dma_unmap_page+0xd5/0x100
> ? report_bug+0x16a/0x190
> ? handle_bug+0x51/0xa0
> ? exc_invalid_op+0x18/0x80
> ? iommu_dma_unmap_page+0xd5/0x100
> ? iommu_dma_unmap_page+0x35/0x100
> dma_unmap_page_attrs+0x55/0x220
> ? bpf_prog_4d7e87c0d30db711_xdp_dispatcher+0x64/0x9f
> bnxt_rx_xdp+0x237/0x520 [bnxt_en]
> bnxt_rx_pkt+0x640/0xdd0 [bnxt_en]
> __bnxt_poll_work+0x1a1/0x3d0 [bnxt_en]
> bnxt_poll+0xaa/0x1e0 [bnxt_en]
> __napi_poll+0x33/0x1e0
> net_rx_action+0x18a/0x2f0
> 
> [...]

Here is the summary with links:
  - [net] bnxt_en: Fix double DMA unmapping for XDP_REDIRECT
    https://git.kernel.org/netdev/net/c/8baeef7616d5

You are awesome, thank you!
diff mbox series

Patch

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
index 345681d5007e..f88b641533fc 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
@@ -297,11 +297,6 @@  bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons,
 		 * redirect is coming from a frame received by the
 		 * bnxt_en driver.
 		 */
-		rx_buf = &rxr->rx_buf_ring[cons];
-		mapping = rx_buf->mapping - bp->rx_dma_offset;
-		dma_unmap_page_attrs(&pdev->dev, mapping,
-				     BNXT_RX_PAGE_SIZE, bp->rx_dir,
-				     DMA_ATTR_WEAK_ORDERING);
 
 		/* if we are unable to allocate a new buffer, abort and reuse */
 		if (bnxt_alloc_rx_data(bp, rxr, rxr->rx_prod, GFP_ATOMIC)) {