hypervisor: 0.925 graphic: 0.899 peripherals: 0.879 risc-v: 0.875 register: 0.873 permissions: 0.870 virtual: 0.870 debug: 0.859 mistranslation: 0.856 user-level: 0.854 assembly: 0.846 TCG: 0.845 semantic: 0.844 vnc: 0.837 device: 0.835 KVM: 0.831 ppc: 0.831 architecture: 0.828 performance: 0.826 VMM: 0.818 boot: 0.816 arm: 0.811 PID: 0.787 network: 0.769 kernel: 0.755 socket: 0.750 x86: 0.744 files: 0.691 i386: 0.633 qemu-system-sparc stucked while booting using ss20_v2.25_rom I cannot boot up OBP using the current (5.1) version of qemu with ss20_v2.25_rom. It just stuck at "Power-ON reset" and hanged. However using the previous version from 2015 I can successfully both up the OBP. qemu-system-sparc -M SS-20 -m 256 -bios ss20_v2.25.rom -nographic Power-ON Reset (*hang) regards Yap KV I have just compiled a few version from source code: 4.1.1 worked: able to boot up with -bios ss20_v2.25.rom 5.0.0 worked: able to boot up with -bios ss20_v2.25.rom 5.1.0 not working. Stuck after "Power-On Reset" SS5.bin worked for 5.1.0 Per the "NCR89C105 Chip Specification" referenced in the header: Chip-level Address Map ------------------------------------------------------------------ | 1D0 0000 -> | Counter/Timers | W,D | | 1DF FFFF | | | ... The address map indicated the allowed accesses at each address. [...] W indicates a word access, and D indicates a double-word access. The SLAVIO timer controller is implemented expecting 32-bit accesses. Commit a3d12d073e1 restricted the memory accesses to 32-bit, while the device allows 64-bit accesses. This was not an issue until commit 5d971f9e67 which reverted ("memory: accept mismatching sizes in memory_region_access_valid"). Fix by renaming .valid MemoryRegionOps as .impl, and add the valid access range (W -> 4, D -> 8). Since commit 21786c7e598 ("memory: Log invalid memory accesses") this class of bug can be quickly debugged displaying 'guest_errors' accesses, as: $ qemu-system-sparc -M SS-20 -m 256 -bios ss20_v2.25_rom -serial stdio -d guest_errors Power-ON Reset Invalid access at addr 0x0, size 8, region 'timer-1', reason: invalid size (min:4 max:4) $ qemu-system-sparc -M SS-20 -m 256 -bios ss20_v2.25_rom -monitor stdio -S (qemu) info mtree address-space: memory 0000000000000000-ffffffffffffffff (prio 0, i/o): system ... 0000000ff1300000-0000000ff130000f (prio 0, i/o): timer-1 ^^^^^^^^^ ^^^^^^^ \ memory region base address and name / (qemu) info qtree bus: main-system-bus dev: slavio_timer, id "" <-- device type name gpio-out "sysbus-irq" 17 num_cpus = 1 (0x1) mmio 0000000ff1310000/0000000000000014 mmio 0000000ff1300000/0000000000000010 <--- base address mmio 0000000ff1301000/0000000000000010 mmio 0000000ff1302000/0000000000000010 ... Reported-by: Yap KV