Page MenuHomeFreeBSD

LinuxKPI: exapnd dma_sync_single_for_cpu() in lkpi_dma_unmap()
ClosedPublic

Authored by bz on Fri, Jan 23, 7:21 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Feb 10, 10:41 AM
Unknown Object (File)
Mon, Feb 9, 12:28 PM
Unknown Object (File)
Mon, Feb 2, 2:01 AM
Unknown Object (File)
Tue, Jan 27, 1:24 AM
Unknown Object (File)
Mon, Jan 26, 2:20 AM
Unknown Object (File)
Sat, Jan 24, 9:23 PM
Unknown Object (File)
Sat, Jan 24, 9:16 PM
Unknown Object (File)
Sat, Jan 24, 8:37 PM
Subscribers

Details

Summary

In case lkpi_dma_unmap() would call dma_sync_single_for_cpu() we get
into a lock recursion which will trigger a panic with debug kernels.

It would be hard to provide an internal "locked" version for
dma_sync_single_for_cpu(). In the old days this would not have
been a problem but (long before we added the missing sync calls)
some locks got folded into one in a6619e8d9c1a3.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Observed with: iwlwifi mld

Test Plan
panic: _mtx_lock_sleep: recursed on non-recursive mutex lkpi-priv-dma @ /sys/compat/linuxkpi/common/src/linux_pci.c:1835

cpuid = 15
time = 1769190994
KDB: stack backtrace:
db_trace_self() at db_trace_self
db_trace_self_wrapper() at db_trace_self_wrapper+0x38
vpanic() at vpanic+0x1a0
panic() at panic+0x48
__mtx_lock_sleep() at __mtx_lock_sleep+0x428
__mtx_lock_flags() at __mtx_lock_flags+0x130
lkpi_dma_unmap() at lkpi_dma_unmap+0x18c
iwl_pcie_free_rbs_pool() at iwl_pcie_free_rbs_pool+0x6c
iwl_pcie_gen1_2_op_mode_enter() at iwl_pcie_gen1_2_op_mode_enter+0x14
iwl_op_mode_mvm_start() at iwl_op_mode_mvm_start+0x83c
iwl_opmode_register() at iwl_opmode_register+0x1a8
iwl_mvm_init() at iwl_mvm_init+0x44
linker_load_module() at linker_load_module+0xb20
kern_kldload() at kern_kldload+0x18c
sys_kldload() at sys_kldload+0x6c
do_el0_sync() at do_el0_sync+0x68c
handle_el0_sync() at handle_el0_sync+0x4c

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

bz requested review of this revision.Fri, Jan 23, 7:21 PM

I would love to get this one in before Monday too. It is simple. In case anyone wants to review but currently does not have time, let me know and I'll wait even if not reviewed.

This revision is now accepted and ready to land.Mon, Feb 9, 6:56 PM