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

Re: [Xen-devel] [PATCH] vmx, apicv: fix save/restore issue with apicv



>>> On 14.10.14 at 15:10, <yang.z.zhang@xxxxxxxxx> wrote:
> Jan Beulich wrote on 2014-10-14:
>> >>> On 14.10.14 at 07:43, <yang.z.zhang@xxxxxxxxx> wrote:
>> > Jan Beulich wrote on 2014-10-13:
>> >> >>> On 11.10.14 at 09:54, <yang.z.zhang@xxxxxxxxx> wrote:
>> >> > @@ -1597,6 +1599,29 @@ static void vmx_process_isr(int isr, struct
>> >> > vcpu
>> >> *v)
>> >> >          status |= isr << VMX_GUEST_INTR_STATUS_SVI_OFFSET;
>> >> >          __vmwrite(GUEST_INTR_STATUS, status);
>> >> >      }
>> >> > +
>> >> > +    eoi_exit_bitmap = (unsigned int
>> >> > + *)v->arch.hvm_vmx.eoi_exit_bitmap;
>> >>
>> >> No casts like this please. This is a bitmap and would hence
>> >> preferably be treated that way consistently. The code here isn't
>> performance critical.
>> >
>> > Yes, it's performance critical from the live migration's point and
>> > that's why I use the cast here and
>> 
>> Compared to everything else involved in migration, a few extra cycles here
> 
> Xen is far behind KVM on live migration. If we want to remain the 
> competitive, I'd suggest doing a cleanup on current migration logic to make 
> it more effective.

But that surely needs to be done elsewhere, where more than a
couple of nanoseconds are to be gained.

>> >> > +    {
>> >> > +        val = vlapic_get_reg(vlapic, APIC_IRR + i);
>> >> > +        val |= vlapic_get_reg(vlapic, APIC_ISR + i);
>> >>
>> >> The comment above doesn't really make clear why not just IRR.
>> >
>> > Upon acceptance of an interrupt into the IRR, the corresponding TMR
>> > will be changed. This means an interrupt either in IRR or in ISR has
>> > no chance to update the TMR and eoi exit bitmap. So we need to check
>> > IRR + ISR while rebuilding the eoi exit bitmap. It is not enough to check 
>> > only
>> IRR.
>> 
>> But then why not look at TMR right away? It's being kept up to date as long 
>> as
>> the guest is running, and gets migrated over afterwards. Considering what
>> vmx_update_eoi_exit_bitmap()) does, you really want to or TMR into
>> EOI_EXIT_BITMAP (which post-migration could just be an assignment rather
>> than an or).
> 
> No, we cannot use TMR directly. As I said in the comments, the periodic 
> timer interrupt is tricky which is edge-trigger but need an EOI vmexit to let 
> the pending interrupts have the chance to be injected for compensation.

The respective "normal" (non-migration) handling of this being in
vmx_intr_assist(), involving pt_vector? If so, I think I understand
now.

Thanks, Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.