Igor Kovalenko wrote:
Atomic quad ldda is indeed implemented by separate
helper_ld_asi as I expected.
With a bit more debugging it turns out that issue happens if MMU
primary context is not zero!
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
pc: 0000000000424d18 npc: 0000000000424d1c
%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.
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
t: +44 870 608 0063
Sirius Labs: http://www.siriusit.co.uk/labs