Hi all,
I've been having a look at handling SBUS probes within qemu-system-sparc when I
came across a very simple crash bug with git master trying to access unassigned
physical addresses:
(qemu) info mtree
memory
0000000000000000-7ffffffffffffffe (prio 0, RW): system
0000000000000000-0000000007ffffff (prio 0, RW): sun4m.ram
0000000008000000-000000000fffffff (prio 0, RW): empty-slot
0000000010000000-0000000010003fff (prio 0, RW): iommu
0000000010004000-000000001fffefff (prio 0, RW): empty-slot
0000000050200000-000000005020000f (prio 0, RW): tcx.dac
...
...
AFAICT the devices are mapped to physical addresses (uandsing sysbus_mmio_map)
so the xp monitor command should be able to at least read these regions:
(qemu) xp 0x50200000
0000000050200000: 0x00000000
(qemu) xp 0x501ffff0
Segmentation fault
There is definitely a QEMU bug here in that an incorrect physical memory access
shouldn't segfault QEMU. However some off-list discussions with Blue suggested
that it may be possible to defer this behaviour to the memory API (rather than
in exec.c) by allowing boards to register a simple device to handle unassigned
memory accesses, e.g. like the empty_slot device used to trap certain memory
accesses within SPARC.