[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] XEN 4.1.3-rc1 bug, spinlock acquired twice
On Mon, 30 Jan 2012, Paulian Bogdan Marinca wrote: > On 30 January 2012 11:32, Stefano Stabellini > <stefano.stabellini@xxxxxxxxxxxxx> wrote: > > On Sat, 28 Jan 2012, Keir Fraser wrote: > >> On 27/01/2012 23:20, "Paulian Bogdan Marinca" <paulian@xxxxxxxxxxx> wrote: > >> > >> > I have a testing intel machine with 4 physical cpus running 64 bit Xen > >> > 4.1.3-rc1. > >> > > >> > I have a particular linux VM for which at its kernel boot time ( as > >> > domU ) it makes the XEN and Dom0 unresponsive (even the XEN serial > >> > console freezes indefinitely). The domU linux kernel is 3.2.1 and has > [...] > > > > That's right, this scenario should not be possible because whenever > > XENFEAT_hvm_pirqs is available, XENFEAT_hvm_callback_vector should also > > be available. > > In any case I'll submit a patch to Linux to make sure this doesn't > > happen, explicitly checking for xen_have_vector_callback. > > What is your Linux kernel version? Could you please post your kernel > > config as well? > > Yes, you are right, this does not happen normally in a booting kernel. > What happens is that I needed to test my own PV drivers in all > possible scenarios, > so I hacked the domU linux kernel to "believe" that XEN does not have > XENFEAT_hvm_callback_vector, basically I forced a > > xen_have_vector_callback = 0; > > in enlighten.c in domU kernel. This is probably why it triggered this > unusual situation. > > I attach my kernel config (btw is actually a 3.0.6 kernel not 3.2.1) > > I will try to apply your patch against XEN. In that case it is a matter of protecting Xen against misbehaving guests, so I would rather have the patch below than try to handle the case correctly. > > diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c > > index df92cc7..7d89ed6 100644 > > --- a/xen/arch/x86/physdev.c > > +++ b/xen/arch/x86/physdev.c > > @@ -93,6 +93,11 @@ int physdev_map_pirq(domid_t domid, int type, int > > *index, int *pirq_p, > > > > Â Â if ( domid == DOMID_SELF && is_hvm_domain(d) ) > > Â Â { > > + Â Â Â Â if ( !is_hvm_pv_evtchn_domain(d) ) > > + Â Â Â Â { > > + Â Â Â Â Â Â ret = -EINVAL; > > + Â Â Â Â Â Â goto free_domain; > > + Â Â Â Â } > > Â Â Â Â ret = physdev_hvm_map_pirq(d, type, index, pirq_p); > > Â Â Â Â goto free_domain; > > Â Â } > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |