Current-Users archive

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

Re: pmap lock changes: Xen panic



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


Home | Main Index | Thread Index | Old Index