[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/hvm: implement save/restore for posted interrupts
> From: Zhang, Yang Z > Sent: Wednesday, July 09, 2014 4:25 AM > > Olaf Hering wrote on 2014-07-03: > > Saving and restoring a PVonHVM guest on a host which has the VMX "Posted > > Interrupt Processing" feature enabled will fail because the xen-platform-pci > > device does not receive interrupts anymore after restore. The reason is that > > the IRQs are not maintained in APIC_IRR, but in a separate PIR array. This > info > > is lost during the save operation. > > > > Syncing the PIR state into IRR during save, and restoring the state later > > will > fix > > 'xm save/restore' of a PVonHVM guest. > > > > Signed-off-by: Olaf Hering <olaf@xxxxxxxxx> > > --- > > > > Jan suggested to use the TMR flag to set 'trig' for vlapic_set_irq. > > We are not sure if thats the correct approach, instead of forcing trig=1. > > Comments are welcome. > > > > > > xen/arch/x86/hvm/vlapic.c | 4 ++++ > > xen/arch/x86/hvm/vmx/vmx.c | 14 ++++++++++++++ > > xen/include/asm-x86/hvm/hvm.h | 1 + > > xen/include/asm-x86/hvm/vlapic.h | 2 ++ > > 4 files changed, 21 insertions(+) > > > > diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index > > cd7e872..7201544 100644 > > --- a/xen/arch/x86/hvm/vlapic.c > > +++ b/xen/arch/x86/hvm/vlapic.c > > @@ -1179,6 +1179,8 @@ static int lapic_save_regs(struct domain *d, > > hvm_domain_context_t *h) > > > > for_each_vcpu ( d, v ) > > { > > + if ( hvm_funcs.sync_pir_to_irr ) > > + hvm_funcs.sync_pir_to_irr(v); > > s = vcpu_vlapic(v); > > if ( (rc = hvm_save_entry(LAPIC_REGS, v->vcpu_id, h, s->regs)) != > 0 ) > > break; > > @@ -1230,6 +1232,8 @@ static int lapic_load_regs(struct domain *d, > > hvm_domain_context_t *h) > > if ( hvm_load_entry(LAPIC_REGS, h, s->regs) != 0 ) > > return -EINVAL; > > > > + if ( hvm_funcs.sync_irr_to_pir ) > > + hvm_funcs.sync_irr_to_pir(v); > > This is redundant. Interrupt pending in irr will be injected to guest > correctly, so > there is no need to sync it to pir. > agree. pending irr has to be injected somewhere after restore, and at that point irr->pir has already been covered. otherwise it'd be a more general issue. could you try whether only adding sync_pir_to_irr is enough? Thanks Kevin _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |