[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 22.04.14 at 02:59, <mukesh.rathor@xxxxxxxxxx> wrote: > On Thu, 17 Apr 2014 07:54:55 +0100 > "Jan Beulich" <JBeulich@xxxxxxxx> wrote: >> From a conceptual pov I still think the separation of emulation paths >> should happen earlier and/or be more explicit, not the least because >> iirc PVH guests are expected to not have a qemu associated. > > Correct. I've following for next version: > > diff --git a/xen/arch/x86/hvm/intercept.c b/xen/arch/x86/hvm/intercept.c > index 7cc13b5..f89be28 100644 > --- a/xen/arch/x86/hvm/intercept.c > +++ b/xen/arch/x86/hvm/intercept.c > @@ -42,6 +42,16 @@ hvm_mmio_handlers[HVM_MMIO_HANDLER_NR] = > &iommu_mmio_handler > }; > > +static const struct hvm_mmio_handler *const > +pvh_mmio_handlers[HVM_MMIO_HANDLER_NR] = > +{ > + &hpet_mmio_handler, > + NULL, > + NULL, > + &msixtbl_mmio_handler, > + NULL, > +}; > + > static int hvm_mmio_access(struct vcpu *v, > ioreq_t *p, > hvm_mmio_read_t read_handler, > @@ -169,11 +179,13 @@ int hvm_mmio_intercept(ioreq_t *p) > int i; > > for ( i = 0; i < HVM_MMIO_HANDLER_NR; i++ ) > - if ( hvm_mmio_handlers[i]->check_handler(v, p->addr) ) > - return hvm_mmio_access( > - v, p, > - hvm_mmio_handlers[i]->read_handler, > - hvm_mmio_handlers[i]->write_handler); > + { > + const struct hvm_mmio_handler *mmio_handler = hvm_mmio_handlers[i]; > + > + if ( mmio_handler && mmio_handler->check_handler(v, p->addr) ) > + return hvm_mmio_access(v, p, mmio_handler->read_handler, > + mmio_handler->write_handler); > + } > > return X86EMUL_UNHANDLEABLE; > } 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). >> 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? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |