You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Cortex-R52 port ships a model test suite that CI never runs
ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/ carries a test runner, test/run_fvp_test.py, and registers every image it builds with CTest as r52-fvp-<image>, plus a check-r52-fvp target for running the set without CTest. The runner launches the Armv8-R AEM Fixed Virtual Platform, captures the console, and judges each image by its self-reported result — treating a missing result line as failure, so a hang cannot pass.
None of it runs in CI. No workflow in this repository references the FVP at all.
What CI does for the R-profile today is compile. ports_arch_check.yml builds the ports, clang_check.yml builds them again with a second toolchain, and ci_cortex_m.yml compiles and links the Cortex-M ports without executing them either. The suites that execute — regression_test.yml and its template — run the kernel and SMP regressions on the host, which is the right place for them and says nothing about a Cortex-R52.
So the R52 port's behaviour is covered by builds and by runs on a contributor's own machine, recorded by hand. Nothing catches a behavioural regression between those runs.
Why this is worth an issue now
Assume #639 is merged. It changes what an execution lane would have to cover, in two ways that matter.
The base image set grows: demo_clz.elf joins R52_IMAGES alongside boot_check, demo_m2, demo_m3, demo_threadx and demo_mpu.
And it adds a module manager example whose tests are gated behind an option that defaults to OFF:
When that option is on, fvp_module.elf and fvp_module_properties.elf are appended to R52_TEST_IMAGES. When it is off — which is the default, and therefore what a naive CI invocation gets — the module manager example is not built and not tested at all.
That is the part worth being explicit about. #639 is a PMSAv8-R Stage-1 isolation port: it isolates User-mode modules from the kernel and from each other. Isolation is behavioural by definition, and its two automated tests are the ones an option flag hides. A CI lane that builds the default configuration would report green over a module port it never compiled.
#639's own validation, for reference: two FVP configurations under CTest, the default at 8/8 and the VFP/FIQ/nesting configuration at 11/11. Those are the numbers an execution lane should be able to reproduce.
The S32Z280 module example is gated the same way, by TX_R52_BUILD_S32Z280_MODULE_EXAMPLE, and needs the board rather than the model — out of scope for a runner, and it stays a logged silicon run.
Why CI cannot run it as things stand
Arm distributes the AEM FVP free of charge, but behind a click-through licence and with no stable unauthenticated download URL, so there is nothing a GitHub-hosted runner can reliably fetch. Publishing a redistribution of Arm's archive is a question for the Foundation rather than a technical one for this repository.
What is being pursued
A Foundation-hosted runner with the model installed. Requested: eclipsefdn/helpdesk#7864. The request covers this repository and ZoneX together, since one runner serves both. A model already present on a persistent runner needs no download URL, which removes the redistribution question from the critical path rather than answering it; a Foundation-hosted mirror to point a URL variable at would serve equally well.
The same gap exists in the ZoneX repository, whose FVP lane builds twenty-four tests and executes none for exactly this reason. One runner would serve both, and the request is being made once rather than twice.
Deliberately not pursued: a runner maintained by the project. GitHub advises against self-hosted runners on public repositories, and every pull request here comes from a fork, so the isolation duty is real and belongs with infrastructure that is somebody's job rather than with whichever contributor owns a development board.
What closing it looks like
An execution lane runs the R52 FVP images and reports each one's self-declared verdict.
It configures with TX_R52_BUILD_FVP_MODULE_EXAMPLE=ON, so the module port is compiled and its two tests are among the ones that run. A lane that takes the default covers the base port only, and should say so if that is the intent.
The Cortex-R52 port ships a model test suite that CI never runs
ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/carries a test runner,test/run_fvp_test.py, and registers every image it builds with CTest asr52-fvp-<image>, plus acheck-r52-fvptarget for running the set without CTest. The runner launches the Armv8-R AEM Fixed Virtual Platform, captures the console, and judges each image by its self-reported result — treating a missing result line as failure, so a hang cannot pass.None of it runs in CI. No workflow in this repository references the FVP at all.
What CI does for the R-profile today is compile.
ports_arch_check.ymlbuilds the ports,clang_check.ymlbuilds them again with a second toolchain, andci_cortex_m.ymlcompiles and links the Cortex-M ports without executing them either. The suites that execute —regression_test.ymland its template — run the kernel and SMP regressions on the host, which is the right place for them and says nothing about a Cortex-R52.So the R52 port's behaviour is covered by builds and by runs on a contributor's own machine, recorded by hand. Nothing catches a behavioural regression between those runs.
Why this is worth an issue now
Assume #639 is merged. It changes what an execution lane would have to cover, in two ways that matter.
The base image set grows:
demo_clz.elfjoinsR52_IMAGESalongsideboot_check,demo_m2,demo_m3,demo_threadxanddemo_mpu.And it adds a module manager example whose tests are gated behind an option that defaults to
OFF:When that option is on,
fvp_module.elfandfvp_module_properties.elfare appended toR52_TEST_IMAGES. When it is off — which is the default, and therefore what a naive CI invocation gets — the module manager example is not built and not tested at all.That is the part worth being explicit about. #639 is a PMSAv8-R Stage-1 isolation port: it isolates User-mode modules from the kernel and from each other. Isolation is behavioural by definition, and its two automated tests are the ones an option flag hides. A CI lane that builds the default configuration would report green over a module port it never compiled.
#639's own validation, for reference: two FVP configurations under CTest, the default at 8/8 and the VFP/FIQ/nesting configuration at 11/11. Those are the numbers an execution lane should be able to reproduce.
The S32Z280 module example is gated the same way, by
TX_R52_BUILD_S32Z280_MODULE_EXAMPLE, and needs the board rather than the model — out of scope for a runner, and it stays a logged silicon run.Why CI cannot run it as things stand
Arm distributes the AEM FVP free of charge, but behind a click-through licence and with no stable unauthenticated download URL, so there is nothing a GitHub-hosted runner can reliably fetch. Publishing a redistribution of Arm's archive is a question for the Foundation rather than a technical one for this repository.
What is being pursued
A Foundation-hosted runner with the model installed. Requested: eclipsefdn/helpdesk#7864. The request covers this repository and ZoneX together, since one runner serves both. A model already present on a persistent runner needs no download URL, which removes the redistribution question from the critical path rather than answering it; a Foundation-hosted mirror to point a URL variable at would serve equally well.
The same gap exists in the ZoneX repository, whose FVP lane builds twenty-four tests and executes none for exactly this reason. One runner would serve both, and the request is being made once rather than twice.
Deliberately not pursued: a runner maintained by the project. GitHub advises against self-hosted runners on public repositories, and every pull request here comes from a fork, so the isolation duty is real and belongs with infrastructure that is somebody's job rather than with whichever contributor owns a development board.
What closing it looks like
TX_R52_BUILD_FVP_MODULE_EXAMPLE=ON, so the module port is compiled and its two tests are among the ones that run. A lane that takes the default covers the base port only, and should say so if that is the intent.pushtodevandmainis sufficient.