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.
I'm not 100% sure it applies to ARM11 MPCore, but on ARMv7A it is not architecturally valid to use clean and invalidate of the whole cache once the CPU is running; you have to do it by set-way or the SCU doesn't necessarily pick up the snoop correctly.
Additionally why do you have the clean and invalidates everywhere? They shouldn't be needed. The SCU hardware should ensure everything syncs.
... and to check the obvious - you have marked these pages as shared in the MMU, and enabled the SCU?
389 (0xc114c000:cpu0): cache_test: WAIT_ITEM va: 0xC0484000 -> pa: 0x20484194390 (0xc114a900:cpu1): intr_event_handle: exec 0xc005b4dc(0xf) for ipi_test391 (0xc114a900:cpu1): ipi_test_handler: WAIT_ITEM va: 0xC0484000 -> pa: 0x20484194392 (0xc114c000:cpu0): 0x00000000 0x00010003 0x17020003 0x00030003 0x16040003393 (0xc114c000:cpu0): 0x00000000 0x00010003 0x17020003 0x00030003 0x17040003
test_arr[2][0][3] += 0x1000000;test_arr[4][0][3] += 0x1000000;
WAIT_ITEM = 1;
896 (0xc125ec00:cpu0): 0x00000000 0x00010003 0xD7020003 0x00030003 0xD6040003897 (0xc125ec00:cpu0): 0x00000000 0x00010003 0xD7020003 0x00030003 0xD7040003898 (0xc125ec00:cpu0): tmp1:0, tmp2:0, tmp3: 1