qemu-arm
[Top][All Lists]
Advanced

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

Re: [PATCH 8/8] hw/cpu/arm_mpcore: Remove default values for GIC externa


From: Peter Maydell
Subject: Re: [PATCH 8/8] hw/cpu/arm_mpcore: Remove default values for GIC external IRQs
Date: Tue, 4 Feb 2025 14:13:27 +0000

On Thu, 30 Jan 2025 at 18:27, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>
> Implicit default values are often hard to figure out, better
> be explicit. Now that all boards explicitly set the number of
> GIC external IRQs, remove the default values (displaying an
> error message if it is not set).

> diff --git a/hw/cpu/a15mpcore.c b/hw/cpu/a15mpcore.c
> index 3b0897e54ee..372b615178f 100644
> --- a/hw/cpu/a15mpcore.c
> +++ b/hw/cpu/a15mpcore.c
> @@ -58,6 +58,11 @@ static void a15mp_priv_realize(DeviceState *dev, Error 
> **errp)
>      bool has_el2 = false;
>      Object *cpuobj;
>
> +    if (!s->num_irq) {
> +        error_setg(errp, "Property 'num-irq' not set");
> +        return;
> +    }
> +
>      gicdev = DEVICE(&s->gic);
>      qdev_prop_set_uint32(gicdev, "num-cpu", s->num_cpu);
>      qdev_prop_set_uint32(gicdev, "num-irq", s->num_irq);
> @@ -146,13 +151,7 @@ static void a15mp_priv_realize(DeviceState *dev, Error 
> **errp)
>
>  static const Property a15mp_priv_properties[] = {
>      DEFINE_PROP_UINT32("num-cpu", A15MPPrivState, num_cpu, 1),
> -    /* The Cortex-A15MP may have anything from 0 to 224 external interrupt
> -     * IRQ lines (with another 32 internal). We default to 128+32, which
> -     * is the number provided by the Cortex-A15MP test chip in the
> -     * Versatile Express A15 development board.
> -     * Other boards may differ and should set this property appropriately.
> -     */
> -    DEFINE_PROP_UINT32("num-irq", A15MPPrivState, num_irq, 160),
> +    DEFINE_PROP_UINT32("num-irq", A15MPPrivState, num_irq, 0),

I think it's worth keeping at least some form of comment here
to document the valid range and that the value is internal + external
interrupts. Something like:

    /*
     * The Cortex-A15MP may have anything from 0 to 224 external interrupt
     * lines, plus always 32 internal IRQs. This property sets the total
     * of internal + external, so the valid range is from 32 to 256.
     * The board model must set this to whatever the configuration
     * used for the CPU on that board or SoC is.
     */

?

(I suppose we could also actually check the property really
is between 32 and 256, but a simple "did the board actually set
it?" check like you have here is fine.)

> @@ -160,13 +166,7 @@ static void a9mp_priv_realize(DeviceState *dev, Error 
> **errp)
>
>  static const Property a9mp_priv_properties[] = {
>      DEFINE_PROP_UINT32("num-cpu", A9MPPrivState, num_cpu, 1),
> -    /* The Cortex-A9MP may have anything from 0 to 224 external interrupt
> -     * IRQ lines (with another 32 internal). We default to 64+32, which
> -     * is the number provided by the Cortex-A9MP test chip in the
> -     * Realview PBX-A9 and Versatile Express A9 development boards.
> -     * Other boards may differ and should set this property appropriately.
> -     */

Similarly here.

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]