[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V9 PATCH 7/8] pvh dom0: check for vioapic null ptr in vioapic_range
On Tue, 22 Apr 2014 08:33:29 +0100 "Jan Beulich" <JBeulich@xxxxxxxx> wrote: > >>> On 22.04.14 at 02:59, <mukesh.rathor@xxxxxxxxxx> wrote: > > On Thu, 17 Apr 2014 07:54:55 +0100 > > "Jan Beulich" <JBeulich@xxxxxxxx> wrote: ....... > I think I'm getting the idea, but the code neither refernces > pvh_mmio_handlers[], nor is that array's initialization well done > (should be using .<field> = <value> style instead, omitting the > NULLs). oops, forgot to add the if pvh check. > >> That aside - why is this coming up only now? The emulation path > >> getting reached shouldn't really depend on Dom0 vs Domu? > > > > The io emulation is handled by handle_pvh_io; there shouldn't be > > path for pvh domu leading to this function with all the > > restrictions and limitations it has at present. > > In which case we're back to the initial question: Why is this patch > needed in the first place? If there is a separate emulation path > already, how do we manage to get to the point where you added the > extra check? As described in the patch description: ----- pvh doesn't use apic emulation, as a result vioapic_init is not called and vioapic ptr in struct hvm_domain is not initialized. One path that would access the ptr for pvh is : hvm_hap_nested_page_fault -> handle_mmio -> hvmemul_do_io -> hvm_mmio_intercept -> vioapic_range ----- The only caller of hvm_hap_nested_page_fault is ept_handle_violation. Now, 3 calls to handle_mmio in hvm_hap_nested_page_fault: 1st is for nested vcpu, so doesn't apply to PVH. 2nd has is_hvm check, So it must have been the third one that I had observed the vioapic_range crash in a while ago, and had made note of it. Looking at it: if ( (p2mt == p2m_mmio_dm) || (access_w && (p2mt == p2m_ram_ro)) ) { put_gfn(p2m->domain, gfn); if ( !handle_mmio() ) doesn't seem apply to domu. Unfortunately, I can't reproduce it now so maybe it was an ept violation due to some bug, and a crash in vioapic_range before printing the gfn/mfns etc by ept_handle_violation made me make a note to put a check in it. Hope that makes sense, and I'll assume you are ok with pvh_mmio_handlers[] change. Otherwise, please lmk. thanks mukesh _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |