|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8a 1/6] xen/arm: move and rename is_vcpu_running function to sched.h
Hi Vijay,
On 07/03/2014 09:34 AM, vijay.kilari@xxxxxxxxx wrote:
> From: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx>
>
> is_vcpu_running function in vgic driver is generic. So move
> this to sched.h and rename it as is_vcpu_online
>
> Signed-off-by: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx>
> CC: jbeulich@xxxxxxxx
> CC: keir@xxxxxxx
> CC: george.dunlap@xxxxxxxxxx
> ---
> v8a:is_vcpu_online() is modified to take only vcpu as
> parameter and validity checks on vcpu is done in
> caller
>
> v7a:Changed vcpuid parameter from int to unsigned int
> Removed check for test_bit. Return !test_bit()
> ---
> xen/arch/arm/vgic.c | 22 ++++------------------
> xen/include/xen/sched.h | 5 +++++
> 2 files changed, 9 insertions(+), 18 deletions(-)
>
> diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
> index 96bd7c1..4abc682 100644
> --- a/xen/arch/arm/vgic.c
> +++ b/xen/arch/arm/vgic.c
> @@ -405,22 +405,6 @@ static void vgic_enable_irqs(struct vcpu *v, uint32_t r,
> int n)
> }
> }
>
> -static inline int is_vcpu_running(struct domain *d, int vcpuid)
> -{
> - struct vcpu *v;
> -
> - if ( vcpuid >= d->max_vcpus )
> - return 0;
> -
> - v = d->vcpu[vcpuid];
> - if ( v == NULL )
> - return 0;
> - if (test_bit(_VPF_down, &v->pause_flags) )
> - return 0;
> -
> - return 1;
> -}
> -
> static int vgic_to_sgi(struct vcpu *v, register_t sgir)
> {
> struct domain *d = v->domain;
> @@ -444,7 +428,8 @@ static int vgic_to_sgi(struct vcpu *v, register_t sgir)
> case GICD_SGI_TARGET_OTHERS:
> for ( i = 0; i < d->max_vcpus; i++ )
> {
> - if ( i != current->vcpu_id && is_vcpu_running(d, i) )
> + if ( i != current->vcpu_id && d->vcpu != NULL &&
d->vcpu can't be NULL at this point. Otherwise you won't be able to run
VCPU0 of the domain :).
Although, I may have miss something during the previous version, why
don't you check that the VCPU is NULL in is_vcpu_online?
> + d->vcpu[i] != NULL && is_vcpu_online(d->vcpu[i]) )
> set_bit(i, &vcpu_mask);
> }
> break;
> @@ -459,7 +444,8 @@ static int vgic_to_sgi(struct vcpu *v, register_t sgir)
>
> for_each_set_bit( vcpuid, &vcpu_mask, d->max_vcpus )
> {
> - if ( !is_vcpu_running(d, vcpuid) )
> + if ( d->vcpu != NULL && d->vcpu[vcpuid] != NULL &&
Same here.
> + !is_vcpu_online(d->vcpu[vcpuid]) )
> {
> gdprintk(XENLOG_WARNING, "vGICD: GICD_SGIR write
> r=%"PRIregister" vcpu_mask=%lx, wrong CPUTargetList\n",
> sgir, vcpu_mask);
Regards,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |