|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC v1 10/15] vmx: Define two per-cpu variants
> From: Wu, Feng
> Sent: Wednesday, March 25, 2015 8:32 PM
>
> This patch defines two per-cpu variants:
>
> blocked_vcpu_on_cpu:
> A list storing the vCPUs which were blocked on this pCPU.
>
> blocked_vcpu_on_cpu_lock:
> The spinlock to protect blocked_vcpu_on_cpu.
since above two are already per-cpu variants, you don't need
'on_cpu' in the name to duplicate it. How about just call them
"blocked_vcpus" and "blocked_vcpus_lock"? :-)
>
> Signed-off-by: Feng Wu <feng.wu@xxxxxxxxx>
> ---
> xen/arch/x86/hvm/vmx/vmcs.c | 3 +++
> xen/arch/x86/hvm/vmx/vmx.c | 7 +++++++
> xen/include/asm-x86/hvm/vmx/vmx.h | 3 +++
> 3 files changed, 13 insertions(+)
>
> diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
> index 942f4b7..1345e69 100644
> --- a/xen/arch/x86/hvm/vmx/vmcs.c
> +++ b/xen/arch/x86/hvm/vmx/vmcs.c
> @@ -585,6 +585,9 @@ int vmx_cpu_up(void)
> if ( cpu_has_vmx_vpid )
> vpid_sync_all();
>
> + INIT_LIST_HEAD(&per_cpu(blocked_vcpu_on_cpu, cpu));
> + spin_lock_init(&per_cpu(blocked_vcpu_on_cpu_lock, cpu));
> +
> return 0;
> }
>
> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
> index e1c55ce..ff5544d 100644
> --- a/xen/arch/x86/hvm/vmx/vmx.c
> +++ b/xen/arch/x86/hvm/vmx/vmx.c
> @@ -81,6 +81,13 @@ static int vmx_msr_read_intercept(unsigned int msr,
> uint64_t *msr_content);
> static int vmx_msr_write_intercept(unsigned int msr, uint64_t msr_content);
> static void vmx_invlpg_intercept(unsigned long vaddr);
>
> +/*
> + * We maintian a per-CPU linked-list of vCPU, so in PI wakeup handler we
> + * can find which vCPU should be waken up.
> + */
> +DEFINE_PER_CPU(struct list_head, blocked_vcpu_on_cpu);
> +DEFINE_PER_CPU(spinlock_t, blocked_vcpu_on_cpu_lock);
> +
> uint8_t __read_mostly posted_intr_vector;
>
> static int vmx_domain_initialise(struct domain *d)
> diff --git a/xen/include/asm-x86/hvm/vmx/vmx.h
> b/xen/include/asm-x86/hvm/vmx/vmx.h
> index 3cd75eb..e643c3c 100644
> --- a/xen/include/asm-x86/hvm/vmx/vmx.h
> +++ b/xen/include/asm-x86/hvm/vmx/vmx.h
> @@ -30,6 +30,9 @@
> #include <asm/hvm/vmx/vmcs.h>
> #include <asm/apic.h>
>
> +DECLARE_PER_CPU(struct list_head, blocked_vcpu_on_cpu);
> +DECLARE_PER_CPU(spinlock_t, blocked_vcpu_on_cpu_lock);
> +
> extern uint8_t posted_intr_vector;
>
> typedef union {
> --
> 2.1.0
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |