Manuel,

On Tue, Jan 07, 2020 at 10:39:33AM +0100, Manuel Bouyer wrote:

> Hello,
> with 2020-01-05 00:40 UTC sources, Xen domUs panics because of what looks like
> locking changes in the pmap code (full log at
> http://www-soc.lip6.fr/~bouyer/NetBSD-tests/xen/HEAD/):
> mlock error: Mutex: mutex_vector_enter,506: assertion failed: !cpu_intr_p(): 
> lock 0xc0b46300 cpu 0 lwp 0xc1aac100
> [  39.3701414] cpu0: Begin traceback...
> [  39.3701414] 
> vpanic(c05b72e8,d7c7c728,d7c7c744,c041c699,c05b72e8,c05b04e0,c05746b4,1fa,c05b0454,c0b46300)
>  at netbsd:vpanic+0x134
> [  39.3701414] 
> panic(c05b72e8,c05b04e0,c05746b4,1fa,c05b0454,c0b46300,0,c1aac100,d7c7c768,c03d2ec9)
>  at netbsd:panic+0x18
> [  39.3701414] 
> lockdebug_abort(c05746b4,1fa,c0b46300,c0b414c8,c05b0454,c0b46240,c0b46300,d7c7c794,c03d3405,c05b0454)
>  at netbsd:lockdebug_abort+0xc9
> [  39.3701414] 
> mutex_abort(c05b0454,0,d39e7004,79339,c0b37340,c1aac100,c0b46240,c0b46300,c1a5e1e8,d7c7c7dc)
>  at netbsd:mutex_abort+0x39
> [  39.3701414] 
> mutex_vector_enter(c0b46300,d7c7c7b8,d7c7c7b4,c03cc135,86908857,d7c7a024,c0b37340,c1aac100,d7c7c7d4,c011924f)
>  at netbsd:mutex_vector_enter+0x355
> [  39.3701414] 
> pmap_extract_ma(c0b46240,d6db3000,d7c7c820,0,c1733508,6,d7e7e000,c1a5e1e0,6,c1a5e008)
>  at netbsd:pmap_extract_ma+0x1a
> [  39.3701414] 
> xbd_diskstart(c189e908,c2672e2c,1c0,d7c7c884,c011d25e,c0b35880,c1a5e018,32b0,c1a5e008,ffffffff)
>  at netbsd:xbd_diskstart+0x234
> [  39.3701414] 
> dk_start(c1a5e008,0,c23fc4dc,23f1000,0,1,c2670558,c1a5e1e0,6,d7e7e000) at 
> netbsd:dk_start+0xea
> [  39.3701414] 
> xbd_handler(c1a5e008,6,d7c7c978,c18a6318,d7c7c924,c011cc99,c18a6318,d7c7c978,d7c7ca3c,c04a1a7d)
>  at netbsd:xbd_handler+0x12e
> [  39.3701414] 
> xen_intr_biglock_wrapper(c18a6318,d7c7c978,d7c7ca3c,c04a1a7d,c1cba008,23f0000,0,d7c7c9ec,d7c7ca10,c0c589b8)
>  at netbsd:xen_intr_biglock_wrapper+0x1f
> [  39.3701414] 
> evtchn_do_event(6,d7c7c978,c0e670fc,c0e62548,c0e68494,0,c0b37340,c0d9a000,c0b37340,0)
>  at netbsd:evtchn_do_event+0xf9
> [  39.3701414] 
> do_hypervisor_callback(d7c7c978,0,11,31,11,c0b40011,0,0,d7c7ca44,bfec0d70) at 
> netbsd:do_hypervisor_callback+0x15f
> [  39.3701414] 
> Xhypervisor_pvhvm_callback(c0b46240,d81ae000,696f3000,1,1ef3000,0,1,21,7ff0,21)
>  at netbsd:Xhypervisor_pvhvm_callback+0x67
> 
> 
> In rev 1.35 of xen/x86/xen_pmap.c the pmap lock is taken unconditionally,
> even in the pmap_kernel() case, which means pmap_extract_ma() can't be
> used from interrrupt context any more. I don't think we can impose such
> restrictions on pmap_kernel(); bus_dma(9) needs it.

This was a mistake on my part.  We should never need to lock pmap_kernel()
for pmap_extract() since it only touches the PTEs.  It should be fixed now
with xen_pmap.c 1.37.

Cheers,
Andrew

Reply via email to