tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bus_dmamap_destroy no longer callable from interrupt context?
On Nov 15, 2013, at 6:22 AM, Christoph Badura <bad%bsd.de@localhost> wrote:
> While trying to port BCM586x support I discovered that I get the following
> panic under -current. The same code works fine on -6. What gives?
>
> panic: kernel diagnostic assertion "((!cpu_intr_p() && !cpu_softintr_p()) ||
> (pc->pc_pool.pr_ipl != IPL_NONE || cold || panicstr != NULL)" failed: file
> "../../../../kern/subr_pool.c", line 2209 pool 'vmmpepl' is IPL_NONE, but
> called from interrupt context
>
> backtrace:
> ...
> kern_assert
> pool_cache_get_paddr
> _uvm_mapent_alloc.clone.2
> uvm_map_dup_start
> uvm_unmap_remove
> uvm_unmap1
> _bus_dmamap_destroy_clone.8
> ubsec_callback+0x9d
> ubsec_intr+0x100
> intr_biglock_wrapper
> ...
>
> This is generic ubsec code that is used by our currently supported devices.
> I.e. ubsec(4) should be completely busted.
it's intentional. dmamap create/destroy can't be done from interrupt because
they allocate memory. besides mbufs, memory can't be allocated. I don't agree
with the softintr restriction (where else can drivers allocate).
Home |
Main Index |
Thread Index |
Old Index