Re: [PATCH 08/31] nVMX: Fix local_vcpus_link handling

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

 



On Tue, May 17, 2011, Avi Kivity wrote about "Re: [PATCH 08/31] nVMX: Fix local_vcpus_link handling":
> >(local_vcpus_link must be >manipulated with interrupts disabled, BTW).

Thanks, I'll look into that.

> >What about having a per-CPU VMCS list instead of per-CPU vcpu list?
> Perhaps even easier (avoids duplication):
> 
> struct raw_vmcs {
>     u32 revision_id;
>     u32 abort;
>     char data[0];
> };
> 
> struct vmcs {
>     struct raw_vmcs *raw_vmcs;
>     struct list_head local_vmcs_link;
> };
> 
> struct vcpu_vmx {
>     ...
>     struct vmcs *vmcs;  /* often points at l1_vmcs */
>     struct vmcs l1_vmcs;
>     ...
> };
> 
> static DEFINE_PER_CPU(struct list_head, vmcss_on_cpu);

This is an interesting suggestion. My initial plan was to do something similar
to this, and I agree it could have been nicer code, but I had to change it
after bumping into too many obstacles.

For example, currently, vmclear_local_vcpus() not only VMCLEARs the vmcss,
it also sets vmx->vcpu.cpu = -1, xmv->launched=0 for the vcpus holding these
VMCSs.  If we had only a list of VMCSs, how can we mark the vcpus as being not
currently loaded (cpu=-1)?


-- 
Nadav Har'El                        |      Tuesday, May 17 2011, 13 Iyyar 5771
nyh@xxxxxxxxxxxxxxxxxxx             |-----------------------------------------
Phone +972-523-790466, ICQ 13349191 |I'm a peripheral visionary: I see into
http://nadav.harel.org.il           |the future, but mostly off to the sides.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux