Re: [RFC: DMA_PMD 02/22] iommu/dma: add DMA_PMD pool lifecycle and page recycle hook

From: kernel test robot

Date: Fri Oct 09 2026 - 22:59:46 EST



Hello,

kernel test robot noticed "WARNING:at_kernel/workqueue.c:#alloc_workqueue_va" on:

commit: 3311715530328ddf9249e312fa817c89b767fde9 ("[RFC: DMA_PMD 02/22] iommu/dma: add DMA_PMD pool lifecycle and page recycle hook")
url: https://github.com/intel-lab-lkp/linux/commits/Luigi-Rizzo/iommu-dma-introduce-CONFIG_DMA_PMD-and-metadata-table/20261003-212220
base: https://git.kernel.org/cgit/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/all/20261003212241.3432303-3-lrizzo@xxxxxxxxxx/
patch subject: [RFC: DMA_PMD 02/22] iommu/dma: add DMA_PMD pool lifecycle and page recycle hook

in testcase: boot

config: x86_64-rhel-9.4-rust
compiler: clang-22
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 4 -m 16G

(please refer to attached dmesg/kmsg for entire log/backtrace)

If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <yi1.lai@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-lkp/202610101013.706708d0-lkp@xxxxxxxxx


[ 0.966875][ T1] ------------[ cut here ]------------
[ 0.972831][ T1] workqueue: dma_pmd is using neither WQ_PERCPU or WQ_UNBOUND. Setting WQ_PERCPU.
[ 0.978823][ T1] WARNING: kernel/workqueue.c:5939 at alloc_workqueue_va+0x75a/0x7c0, CPU#3: swapper/0/1
[ 0.983827][ T1] Modules linked in:
[ 0.985221][ T1] CPU: 3 UID: 0 PID: 1 Comm: swapper/0 Not tainted 7.3.0-rc5+ #1 PREEMPT(lazy)
[ 0.988734][ T1] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[ 0.991819][ T1] RIP: 0010:alloc_workqueue_va (workqueue.c:5938)
[ 0.993522][ T1] Code: 00 08 00 00 e8 40 08 f0 ff e9 cb f9 ff ff 0f 0b e9 cd fe ff ff 0f 0b e9 c6 fe ff ff 48 8d 3d 66 07 18 02 49 8d b6 b8 00 00 00 <67> 48 0f b9 3a 41 81 cc 00 01 00 00 e9 75 f9 ff ff 48 8d 3d 57 07
All code
========
0: 00 08 add %cl,(%rax)
2: 00 00 add %al,(%rax)
4: e8 40 08 f0 ff call 0xfffffffffff00849
9: e9 cb f9 ff ff jmp 0xfffffffffffff9d9
e: 0f 0b ud2
10: e9 cd fe ff ff jmp 0xfffffffffffffee2
15: 0f 0b ud2
17: e9 c6 fe ff ff jmp 0xfffffffffffffee2
1c: 48 8d 3d 66 07 18 02 lea 0x2180766(%rip),%rdi # 0x2180789
23: 49 8d b6 b8 00 00 00 lea 0xb8(%r14),%rsi
2a:* 67 48 0f b9 3a ud1 (%edx),%rdi <-- trapping instruction
2f: 41 81 cc 00 01 00 00 or $0x100,%r12d
36: e9 75 f9 ff ff jmp 0xfffffffffffff9b0
3b: 48 rex.W
3c: 8d .byte 0x8d
3d: 3d .byte 0x3d
3e: 57 push %rdi
3f: 07 (bad)

Code starting with the faulting instruction ===========================================
0: 67 48 0f b9 3a ud1 (%edx),%rdi
5: 41 81 cc 00 01 00 00 or $0x100,%r12d
c: e9 75 f9 ff ff jmp 0xfffffffffffff986
11: 48 rex.W
12: 8d .byte 0x8d
13: 3d .byte 0x3d
14: 57 push %rdi
15: 07 (bad)
[ 0.999820][ T1] RSP: 0000:ffffcb9d00013a90 EFLAGS: 00010246
[ 1.001542][ T1] RAX: 0000000000000000 RBX: ffff8b7380b46400 RCX: 33ebeeb162fc7d00
[ 1.004550][ T1] RDX: 0000000000000007 RSI: ffff8b7380b464b8 RDI: ffffffff8e484980
[ 1.006818][ T1] RBP: 0000000000000000 R08: 00000000646d705f R09: 000000000000000f
[ 1.008790][ T1] R10: ffff8b7381cec680 R11: ffffffff8ea6ca80 R12: 0000000000000008
[ 1.011630][ T1] R13: ffffffff8da42c29 R14: ffff8b7380b46400 R15: ffffcb9d00013b10
[ 1.013818][ T1] FS: 0000000000000000(0000) GS:ffff8b7721089000(0000) knlGS:0000000000000000
[ 1.016639][ T1] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1.018818][ T1] CR2: 0000000000000000 CR3: 00000003e4e20000 CR4: 00000000000406f0
[ 1.021819][ T1] Call Trace:
[ 1.022829][ T1] <TASK>
[ 1.023829][ T1] ? iommu_dma_forcedac_setup (dma-iommu.c:?)
[ 1.025515][ T1] alloc_workqueue_noprof (workqueue.c:6049)
[ 1.026818][ T1] ? blake2s_update (crypto/blake2s.c:131)
[ 1.028234][ T1] ? intel_cleanup_irq_remapping (irq_remapping.c:?)
[ 1.029818][ T1] dma_pmd_init (iommu/dma-pmd-pool.c:373)
[ 1.031195][ T1] do_one_initcall (main.c:1358)
[ 1.032833][ T1] ? get_random_u32 (char/random.c:396 char/random.c:541)
[ 1.033826][ T1] ? __get_random_u32_below (char/random.c:555)
[ 1.036270][ T1] ? alloc_from_new_slab (linux/spinlock.h:425 slub.c:4519)
[ 1.037829][ T1] ? refill_objects (slub.c:7424)
[ 1.038818][ T1] ? irqentry_exit (linux/irq-entry-common.h:539)
[ 1.040264][ T1] ? asm_sysvec_apic_timer_interrupt (x86/include/asm/idtentry.h:674)
[ 1.045448][ T1] ? parameq (params.c:91 params.c:99)
[ 1.046722][ T1] ? parameq (linux/fortify-string.h:218 params.c:99)
[ 1.051786][ T1] ? do_initcall_level (linux/srcutree.h:?)
[ 1.054571][ T1] ? parse_args (params.c:153)
[ 1.056827][ T1] do_initcall_level (main.c:1420)
[ 1.058834][ T1] do_initcalls (main.c:1436)
[ 1.060827][ T1] kernel_init_freeable (main.c:1671)
[ 1.063560][ T1] ? rest_init (main.c:?)
[ 1.065827][ T1] kernel_init (main.c:1561)
[ 1.067786][ T1] ret_from_fork (x86/kernel/process.c:158)
[ 1.069828][ T1] ? rest_init (main.c:?)
[ 1.072821][ T1] ret_from_fork_asm (x86/entry/entry_64.S:245)
[ 1.074826][ T1] </TASK>
[ 1.076251][ T1] ---[ end trace 0000000000000000 ]---


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20261010/202610101013.706708d0-lkp@xxxxxxxxx


--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki