|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |