NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/56235: ti driver creates DMA maps in interrupt context

>Number:         56235
>Category:       kern
>Synopsis:       ti driver creates DMA maps in interrupt context
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Jun 05 14:40:00 +0000 2021
>Originator:     Jason Thorpe
>Release:        NetBSD 9.99.83
RISCy Business
NetBSD  9.99.83 NetBSD 9.99.83 (GENERIC) #1: Sat Jun  5 07:08:09 PDT 2021  thorpej@the-ripe-vessel:/space/src/sys/arch/cobalt/compile/GENERIC cobalt
The ti driver creates DMA maps from interrupt context.  This is not safe to do; it needs to create them from thread context so that they're available in interrupt context.

cobalt# ifconfig ti0 up
[  87.3500146] panic: kernel diagnostic assertion "(!cpu_intr_p() && !cpu_softintr_p())" failed: file "../../../../kern/subr_kmem.c", line 322 kmem(9) should not be used from the interrupt context
[  87.3681102] cpu0: Begin traceback...
[  87.3718216] pid -1886929592 not found
[  87.3718216] cpu0: End traceback...
[  87.3718216] kernel: breakpoint trap
Stopped in pid 631.631 (mdnsd) at       netbsd:cpu_Debugger+0x4:        jr      
                bdslot: nop
db> trace
0x8f87bd70: cpu_Debugger+0x4 (0x3,0x8000,0xc,0x805f2d00) ra 0x80353384 sz 0
0x8f87bd70: vpanic+0x144 (0x3,0x8000,0xc,0x805f2d00) ra 0x804744d8 sz 48
0x8f87bda0: kern_assert+0x38 (0x3,0x805104b8,0x80561b3c,0x80561a4c) ra 0x8034743
c sz 32
0x8f87bdc0: kmem_zalloc+0x4c (0x3,0x805104b8,0x80561b3c,0x80561a4c) ra 0x8000ea9
4 sz 48
0x8f87bdf0: _bus_dmamap_create+0x54 (0x3,0x805104b8,0x80561b3c,0x80561a4c) ra 0x
8004ef3c sz 72
0x8f87be38: ti_newbuf_std+0x12c (0x3,0x805104b8,0x80561b3c,0) ra 0x800528dc sz 5
0x8f87be70: ti_intr+0x45c (0x3,0x805104b8,0x80561b3c,0) ra 0x8000bb80 sz 96
0x8f87bed0: icu_intr+0xfc (0x3,0x805104b8,0x80561b3c,0) ra 0x8000c55c sz 64
0x8f87bf10: cpu_intr+0x180 (0x3,0x805104b8,0x80561b3c,0) ra 0x80011a24 sz 56
0x8f87bf48: mips3_user_intr+0xe4 (0x3,0x805104b8,0x80561b3c,0) ra 0 sz 0
User-level: pid 631.631
See above.

Home | Main Index | Thread Index | Old Index