Igor Kovalenko wrote:
Atomic quad ldda is indeed implemented by separate helper_ldda_asi not helper_ld_asi as I expected. With a bit more debugging it turns out that issue happens if MMU primary context is not zero!
IN: 0x0000000000424d18: ldda [ %g1 ] #ASI_NUCLEUS_QUAD_LDD, %g4 0x0000000000424d1c: cmp %g4, %g6 0x0000000000424d20: bne,pn %xcc, 0x4076c0 0x0000000000424d24: mov 2, %g3
MMU: get_physical_address DATA tl=5 mmu_idx=2 primary context=1 secondary context=1 address=8000000 MMU: DMISS at 8000000 context 1 --- do_interrupt tl=5 948404: Data Access MMU Miss (v=0068) pc=0000000000424d18 npc=0000000000424d1c SP=00000000ffba1ef0 pc: 0000000000424d18 npc: 0000000000424d1c General Registers: %g0-3: 0000000000000000 0000000008000000 0000000000004000 0000000000000002 %g4-7: 00000000000003fe 0000000000000001 0000000000000020 0000000000004000
So helper_ldda_asi must be changed to do loads from NUCLEUS (0) context. I'll post a patch now but with that applied I see no crash but not that much progress either.
Okay; I've just tried your patch and the crash is gone :)
However, the boot now seems to freeze with "su: Cannot register IRQ 0" which didn't happen before the recent PCI fixes. I think that maybe another bug is being triggered somewhere now that the PCI bus is being handled more correctly.
ATB,
Mark.