Hi. Using a USB pendrive can lead to kernel panic because of the issue mentioned in the subject. Trying sleep, but thread marked as sleeping prohibited KDB: stack backtrace: kdb_backtrace(c0602d36,1,c0602cb2,112,2) at kdb_backtrace+0x2e sleepq_add(d7e13af0,c064c0e8,c060f7fd,0,0) at sleepq_add+0xba msleep(d7e13af0,c064c0e8,44,c060f7fd,0) at msleep+0x209 bwait(d7e13af0,44,c060f7fd,50a,0) at bwait+0x60 swap_pager_putpages(c701ed98,e3c3ba44,1,1,e3c3ba00) at swap_pager_putpages+0x497 vm_pageout_flush(e3c3ba44,1,1,61,3db) at vm_pageout_flush+0x172 vm_contig_launder_page(c1ccbdb8,0,0,1ff,ffffffff) at vm_contig_launder_page+0x29b vm_page_alloc_contig(4,0,0,ffffffff,1) at vm_page_alloc_contig+0x398 contigmalloc(4000,c0627840,1,0,ffffffff) at contigmalloc+0xb5 bus_dmamem_alloc(c455b280,c6531048,5,c6531044,ffffffff) at bus_dmamem_alloc+0xde usb_block_allocmem(1,c51a913c,c479969c,c51a9100,c51a9100) at usb_block_allocmem+0x11a usb_allocmem(c455f000,4000,0,c51a913c,e3c3bbc4) at usb_allocmem+0x11c ehci_allocm(c455f000,c51a913c,4000,0,e3c3bbf0) at ehci_allocm+0x25 usbd_transfer(c51a9100,c4816400,c503ac00,d9cc1000,4000) at usbd_transfer+0xec umass_setup_transfer(d9cc1000,4000,4,c51a9100,e3c3bc1c) at umass_setup_transfer+0x49 umass_bbb_state(c51b8c00,c503ac00,0,1f,0) at umass_bbb_state+0xd6 usb_transfer_complete(c51b8c00,c51b8c70,adc,e3c3bcb0,0) at usb_transfer_complete+0x1e7 ehci_softintr(c455f000,c05fd1d2,e3c3bcb0,c0499a28,e6047000) at ehci_softintr+0x17d ehci_intr1(c455f000,0,c05fd1d2,295,1) at ehci_intr1+0x276 ithread_execute_handlers(c45da8d0,c4510800,c05fd1d2,2f9,c45db1b0) at ithread_execute_handlers+0x128 ithread_loop(c460c2f0,e3c3bd38,c05fcfab,32b,0) at ithread_loop+0x83 fork_exit(c048b2e0,c460c2f0,e3c3bd38) at fork_exit+0xc3 fork_trampoline() at fork_trampoline+0x8 --- trap 0x1, eip = 0, esp = 0xe3c3bd6c, ebp = 0 --- Umass tries to allocate memory using bus_dmamem_alloc() with BUS_DMA_NOWAIT flag, but contigmalloc() ignores the flag and simply can sleep waiting for some memory to be reclaimed. We don't allow to sleep in interrupt context, so the kernel panics. PS. I replaced the assertion on my laptop with a printf, because it was triggered way too often. -- Pawel Jakub Dawidek http://www.wheel.pl pjd_at_FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am!
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:55 UTC