Notice: We have migrated to GitLab launching 2024-05-01 see here: https://gitlab.rtems.org/

#4737 new defect

rtems_interrupt_is_pending behaviour expected between tc-intr-clear and tc-intr-raise-on

Reported by: Lucian-Raul Silistru Owned by: joel@…
Priority: normal Milestone:
Component: test Version: 6
Severity: normal Keywords:
Cc: Blocked By:
Blocking:

Description

In testsuite tc-validation-intr there's a discrepancy between expected behaviour of rtems_interrupt_is_pending when the vector is disabled in tc-intr-clear and tc-intr-raise-on.

In tc-intr-raise-on CheckRaiseOn? IsPending? is ignored with a comment that not all interrupt controller will signal a pending interrupt when the vector is disabled.

In tc-intr-clear CheckClear? there's a verification under
if ( attr->can_disable )
that fails the test if IsPending? does not return true after an interrupt is raised on a disabled vector.

According to the tc-intr-raise-on comment, the tc-intr-clear check should be relaxed, is that correct?

Change History (3)

comment:1 Changed on 10/07/22 at 05:13:19 by Sebastian Huber

With which interrupt controller do you have the issue?

comment:2 Changed on 10/07/22 at 07:23:18 by Lucian-Raul Silistru

We have a custom external controller (on a sparcv8 based CPU) where rtems_interrupt_is_pending (pending register) will return false if the vector is disabled (and interrupt is raised).

So the check at https://github.com/RTEMS/rtems/blob/46f08961a22ff7ffc6196971c0ff04006689ded1/testsuites/validation/tc-intr-clear.c#L328 will fail.
At the same time there's this unused check and comment https://github.com/RTEMS/rtems/blob/46f08961a22ff7ffc6196971c0ff04006689ded1/testsuites/validation/tc-intr-raise-on.c#L349

We would like to know which version is the valid/correct one.

comment:3 Changed on 10/07/22 at 07:45:44 by Sebastian Huber

We have two options:

  1. We add the pending behaviour to the interrupt attributes so that we can write more thorough validation tests.
  1. We remove some checks in the validation tests.
Note: See TracTickets for help on using tickets.