On 16/10/14 10:33, Daniel Thompson wrote:
The blocker on this work right now is the annoying Versatile Express platform, which pretty much means that we currently can't push the code into the GIC to support FIQs. As long as adding FIQ support to the GIC results in the Versatile Express becoming non-bootable, the idea of using FIQs is a total non-starter.
Or we decide that we dump the platform completely (which will upset a number of developers.)
I have patches I'm using for trigger_all_cpu_backtrace() which I'm maintaining privately in my tree until we can get the FIQ situation sorted.
I do hope to gain (remote) access to a vexpress at some point just to pick at this issue a little.
This week with the help of one of my colleagues (thanks Tixy) I have been able to run some tests and figure out what it going on on vexpress-a9.
The summary is that on some GICv1 implementations the bit to enable group 1 interrupts cannot be accessed using secure memory accesses. More specifically the presence/absence of the EnableGrp1 bit in the secure version GICD_CTRL register is implementation defined.
My original patches overlooked this and as a result the existing code will migrate all interrupts to group but then cannot enable delivery of group 1 interrupts.
I'm planning to respin the code so it will automatically disable FIQ support when the EnableGrp1 bit is not implemented. This means vexpress-a9 will not benefit from FIQ support but will also not be harmed by it.