[PATCH] bsps/arm: Improve GICv3 support

Kinsey Moore kinsey.moore at oarcorp.com
Wed Apr 17 13:38:36 UTC 2024


On Wed, Apr 17, 2024 at 12:51 AM Sebastian Huber <
sebastian.huber at embedded-brains.de> wrote:

> On 16.04.24 16:51, Kinsey Moore wrote:
> > This adds warnings for arm_interrupt_enable_interrupts and
> > arm_interrupt_restore_interrupts. I suspect a missing header. They also
> > generate a link error on the a53_lp64_qemu bsp. I also dislike the
> > while(true), but I don't think we officially have anything against it
> > and there are existing examples in the codebase.
>
> Did you test this with the latest master? Actually, I committed a
> similar patch for the GICv2 and then noticed that this broke the GICv3
> support. This is fixed by the current patch.
>
> What would be your alternative to this while (true) loop?
>
> void bsp_interrupt_dispatch(void)
> {
>    while (true) {
>      uint32_t icciar = READ_SR(ICC_IAR1);
>      rtems_vector_number vector = GIC_CPUIF_ICCIAR_ACKINTID_GET(icciar);
>      uint32_t status;
>
>      if (!bsp_interrupt_is_valid_vector(vector)) {
>        break;
>      }
>
>      status = arm_interrupt_enable_interrupts();
>      bsp_interrupt_handler_dispatch_unchecked(vector);
>      arm_interrupt_restore_interrupts(status);
>
>      WRITE_SR(ICC_EOIR1, icciar);
>    }
> }
>

You're right, I was a couple patches behind when I checked this out. That's
my fault. When I tried again just now the patch wouldn't apply because it
was already committed.

As far as the loop, the sequence of calls just doesn't lead to a clean
implementation since it's the above example, adding a loop prologue with
duplicated code, duplicating a check, or stuffing several calls including
an assignment into the conditional.

In any case, I suppose the point is moot since it's already upstream and
there's not a clear answer for "better".

Kinsey
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20240417/9983a831/attachment.htm>


More information about the devel mailing list