#3149 new defect

SP 37 Test failure on Beaglebone Black

Reported by: Chris Johns Owned by: joel.sherrill@…
Priority: normal Milestone: Indefinite
Component: score Version: 5
Severity: normal Keywords: Beaglebone
Cc: Blocked By:


Running rtems-test with a recent u-boot and a current master this failure is reported:

] RTEMS Beagleboard: am335x-based
] *** BEGIN OF TEST SP 37 ***
] clock_tick from task level
] Blocking task... suspending self
] clock_tick from task level with preempt -- OK
] interrupt is in progress (use body)
] interrupt disable (use inline)
] interrupt flash (use inline)
] interrupt enable (use inline)
] interrupt level mode (use inline)
] test case working..
] interrupt disable (use body)

then a reset.

Change History (1)

comment:1 Changed on Sep 21, 2017 at 3:35:44 PM by Joel Sherrill

Works on erc32 and psim
Fails on jmr3904 and xilinx_zynq_a9_qemu

The two failures are difference. On the MIPS, the issue is that _ISR_Get_level() is not returning the value that was set immediately above. I am guessing that the _ISR_Set_level() for the mips and arm ports translates the requested level into a register setting and then doesn't reverse the translation on the _ISR_Get_level().

The code in question is around line 130 with a printf() added to show the value:

ISR_Level current = 0;
ISR_Level last_proper_level;

_ISR_Set_level( current );
printf( "_ISR_Get_Level()=0x%08x current=0x%08x\n",

_ISR_Get_level(), current );

rtems_test_assert( _ISR_Get_level() == current );

jmr3904 output

_ISR_Get_Level()=0x0000007f current=0x00000000
../../../../../../../rtems/c/src/../../testsuites/sptests/sp37/init.c: 133 _ISR_Get_level() == current

On the ARM, it is failing calling the body version of rtems_interrupt_disable() in rtems/src/intr.c. No obvious failure looking at the code.

Note: See TracTickets for help on using tickets.