Intel® SoC FPGA Embedded Development Suite
Support for SoC FPGA Software Development, SoC FPGA HPS Architecture, HPS SoC Boot and Configuration, Operating Systems
567 Discussions

Cache coherency on Agilex 5 when booting secondary cores without ATF

SarahTr
Beginner
168 Views

Hello,

 

My goal is to boot the secondary cores on an Agilex 5 by directly writing to the cpurstrelease register of the reset manager instead of using the PSCI CPU_ON call.

I used the ARM Trusted Firmware implementation as a reference and have successfully brought up a secondary core. However, the caches of the primary and secondary core are not coherent.

I compared the contents of the CCU registers but did not observe any differences in the configuration. When following the ATF execution of CPU_ON, I also could not find any specific CCU or MMU setup performed by the secondary core so far.

Does the CCU require specific initialization for the caches to be coherent? Or are there other steps that I am missing?

 

Thanks,

Sarah

0 Kudos
2 Replies
ProFromDover_Altera
63 Views

I have used the the PSCI_CPU_ON infrastructure provided by the ATF bl31 environment quite a bit to start secondary cores and I find that they are always coherent within the CPU cluster with no additional effort. I typically boot though the u-boot-spl bootloader into u-boot proper through the ATF flow so bl31 is left behind in DRAM as the secure monitor which handles the PSCI_CPU_ON requests. If you could follow a flow like this, I believe this would be much simpler flow to get working the way that you wish.

If you must do this is a purely bare metal fashion, I suspect that the configuration you are missing is not in the CCU section of the HPS but more likely in the DSU and the snoop filter that manages choerency within the quad core cluster and L3 cache system. Unfortunately I don't have any examples that demonstrate that raw flow, and I don't know if the configurations that you would be missing are in the u-boot-spl or bl31 parts of the boot loader flow that I typically use.

0 Kudos
SarahTr
Beginner
25 Views

Thanks for your response.

The reason I was trying to bring up the secondary cores without using PSCI_CPU_ON was to allow execution at Exception level 3. We depend on being able to configure interrupts that are always signaled as FIQ. As someone new to this, my current understanding is that this requires the interrupts to be Group 0 in the GIC and configured from EL 3.

Is it possible to use PSCI_CPU_ON and still configure a Group 0 interrupt?

I’d be happy to do the necessary configurations in the ATF, but I haven’t yet figured out how to set up the vector table so these interrupts are not handled by ATF itself. I’d really appreciate any help or suggestions.

0 Kudos
Reply