We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
What you are doing seems broadly correct. Can you give any details about the aborts (contents of IFAR, IFSR, DFAR, DFSR could be useful)?It smells like the L2 is returning bad data, so how are are you that you are correctly invalidating all of it? Can you explain how you are performing the invalidate?
You mention this is an SMP system, you are not trying to enable the cache twice in parallel from multiples cores by and chance are you? It is obviously a shared resource, so you will usually need to bootstrap CPU0, init the L2, and then start up the other cores.My only other thought is to check you have barriers in all of the appropriate places to ensure you are not getting memory accesses leaking across critical instructions.