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

Re: [Xen-devel] [PATCH] xen/arm: gic: Remove pointless assertion against enum gic_sgi



On Sat, 18 Jan 2020, Julien Grall wrote:
> The Arm Compiler will complain that the assertions ASSERT(sgi < 16) is
> always true. This is because sgi is a item of the enum gic_sgi and
> should always contain less than 16 SGIs.
> 
> Rather than using ASSERTs, introduce a new item in the num that could be
                                                         ^ enum

> checked against a build time.
> 
> Take the opportunity to remove the specific assigned values for each
> items. This is fine because enum always starts at zero and values will
> be assigned by increment of one. None of our code also rely on hardcoded
> value.
> 
> Signed-off-by: Julien Grall <julien@xxxxxxx>
> CC: Andrii Anisov <andrii_anisov@xxxxxxxx>

Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


> ---
>  xen/arch/arm/gic.c        | 12 ++++++------
>  xen/include/asm-arm/gic.h |  7 ++++---
>  2 files changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
> index 113655a789..d623c57cb9 100644
> --- a/xen/arch/arm/gic.c
> +++ b/xen/arch/arm/gic.c
> @@ -44,6 +44,12 @@ DEFINE_PER_CPU(uint64_t, lr_mask);
>  
>  const struct gic_hw_operations *gic_hw_ops;
>  
> +static void __init __maybe_unused build_assertions(void)
> +{
> +    /* Check our enum gic_sgi only covers SGIs */
> +    BUILD_BUG_ON(GIC_SGI_MAX > NR_GIC_SGI);
> +}
> +
>  void register_gic_ops(const struct gic_hw_operations *ops)
>  {
>      gic_hw_ops = ops;
> @@ -294,8 +300,6 @@ void __init gic_init(void)
>  
>  void send_SGI_mask(const cpumask_t *cpumask, enum gic_sgi sgi)
>  {
> -    ASSERT(sgi < 16); /* There are only 16 SGIs */
> -
>      gic_hw_ops->send_SGI(sgi, SGI_TARGET_LIST, cpumask);
>  }
>  
> @@ -306,15 +310,11 @@ void send_SGI_one(unsigned int cpu, enum gic_sgi sgi)
>  
>  void send_SGI_self(enum gic_sgi sgi)
>  {
> -    ASSERT(sgi < 16); /* There are only 16 SGIs */
> -
>      gic_hw_ops->send_SGI(sgi, SGI_TARGET_SELF, NULL);
>  }
>  
>  void send_SGI_allbutself(enum gic_sgi sgi)
>  {
> -   ASSERT(sgi < 16); /* There are only 16 SGIs */
> -
>     gic_hw_ops->send_SGI(sgi, SGI_TARGET_OTHERS, NULL);
>  }
>  
> diff --git a/xen/include/asm-arm/gic.h b/xen/include/asm-arm/gic.h
> index 793d324b33..ba870523bb 100644
> --- a/xen/include/asm-arm/gic.h
> +++ b/xen/include/asm-arm/gic.h
> @@ -277,9 +277,10 @@ extern void gic_restore_state(struct vcpu *v);
>  
>  /* SGI (AKA IPIs) */
>  enum gic_sgi {
> -    GIC_SGI_EVENT_CHECK = 0,
> -    GIC_SGI_DUMP_STATE  = 1,
> -    GIC_SGI_CALL_FUNCTION = 2,
> +    GIC_SGI_EVENT_CHECK,
> +    GIC_SGI_DUMP_STATE,
> +    GIC_SGI_CALL_FUNCTION,
> +    GIC_SGI_MAX,
>  };
>  
>  /* SGI irq mode types */
> -- 
> 2.17.1
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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