I work on SBSA Reference Platform (sbsa-ref) at Linaro. And yesterday I wanted to check how non-Linux operating systems work on sbsa-ref machine.
One of them was FreeBSD 13.2 - the latest one. Fetched bootonly ISO image [1] and booted system. 1. https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/13.2/FreeBSD-13.2-RELEASE-arm64-aarch64-bootonly.iso QEMU command line arguments: -drive if=ide,file=disks/FreeBSD-13.2-RELEASE-arm64-aarch64-bootonly.iso,media=cdrom -machine sbsa-ref -m 4096 -smp 2 -cpu neoverse-n1 -drive file=fat:rw:/home/marcin/devel/linaro/sbsa-qemu/sbsa-ref-status/disks/virtual/,format=raw -drive format=raw,file=/home/marcin/devel/linaro/sbsa-qemu/sbsa-ref-status/disks/full-debian.hddimg -watchdog-action none -no-reboot -monitor telnet::45454,server,nowait -serial stdio -device igb -nographic -drive if=pflash,file=SBSA_FLASH0.fd,format=raw -drive if=pflash,file=SBSA_FLASH1.fd,format=raw Firmware loaded FreeBSD loader, kernel booted but it does not see any AHCI devices: ahci0: <AHCI SATA controller> iomem 0x60100000-0x6010ffff irq 1 on acpi0 ahci0: AHCI v1.00 with 6 1.5Gbps ports, Port Multiplier not supported ahci0: Caps: 64bit NCQ 1.5Gbps 32cmd 6ports ahcich0: <AHCI channel> at channel 0 on ahci0 ahcich0: Caps: [..] ahcich0: AHCI reset... ahcich0: SATA connect time=0us status=00000113 ahcich0: AHCI reset: device found ahcich0: AHCI reset: device ready after 0ms ahcich1: AHCI reset... ahcich1: SATA connect time=0us status=00000113 ahcich1: AHCI reset: device found ahcich1: AHCI reset: device ready after 0ms ahcich2: AHCI reset... ahcich2: SATA connect time=0us status=00000113 ahcich2: AHCI reset: device found ahcich2: AHCI reset: device ready after 0ms [..] Trying to mount root from cd9660:/dev/iso9660/13_2_RELEASE_AARCH64_BO [ro]... Root mount waiting for: CAM [..] Root mount waiting for: CAM ahcich0: Poll timeout on slot 1 port 0 ahcich0: is 00000000 cs 00000002 ss 00000000 rs 00000002 tfd 170 serr 00000000 cmd 0000c017 And finally it gives up. v8.1.1 was bad, v8.0.5 was bad so I did git bisecting. Which gave me this commit: commit 7bcd32128b227cee1fb39ff242d486ed9fff7648 Author: Niklas Cassel <niklas.cas...@wdc.com> Date: Fri Jun 9 16:08:40 2023 +0200 hw/ide/ahci: simplify and document PxCI handling The AHCI spec states that: For NCQ, PxCI is cleared on command queued successfully. I built x86_64-softmmu target and checked both "pc" and "q35" machines. ./build/x86_64-softmmu/qemu-system-x86_64 -cdrom FreeBSD-13.2-RELEASE-amd64-bootonly.iso -m 2048 -serial stdio -monitor telnet::45454,server,nowait PC target ("-M pc") booted fine. But Q35 ("-M q35") failed similar way as aarch64/sbsa-ref did: ahci0: <Intel ICH9 AHCI SATA controller> port 0xc060-0xc07f mem 0xfebd5000-0xfebd5fff irq 16 at device 31.2 on pci0 ahci0: attempting to allocate 1 MSI vectors (1 supported) msi: routing MSI IRQ 26 to local APIC 0 vector 52 ahci0: using IRQ 26 for MSI ahci0: AHCI v1.00 with 6 1.5Gbps ports, Port Multiplier not supported ahci0: Caps: 64bit NCQ 1.5Gbps 32cmd 6ports ahcich0: <AHCI channel> at channel 0 on ahci0 ahcich0: Caps: ahcich1: <AHCI channel> at channel 1 on ahci0 ahcich1: Caps: ahcich2: <AHCI channel> at channel 2 on ahci0 ahcich2: Caps: [..] ahcich2: AHCI reset... ahcich2: SATA connect time=0us status=00000113 ahcich2: AHCI reset: device found ahcich2: AHCI reset: device ready after 0ms [..] Trying to mount root from cd9660:/dev/iso9660/13_2_RELEASE_AMD64_BO [ro]... ahcich2: Poll timeout on slot 1 port 0 ahcich2: is 00000000 cs 00000002 ss 00000000 rs 00000002 tfd 170 serr 00000000 cmd 0000c017 (aprobe2:ahcich2:0:0:0): SOFT_RESET. ACB: 00 00 00 00 00 00 00 00 00 00 00 00 (aprobe2:ahcich2:0:0:0): CAM status: Command timeout (aprobe2:ahcich2:0:0:0): Error 5, Retries exhausted ahcich2: Poll timeout on slot 2 port 0 ahcich2: is 00000000 cs 00000006 ss 00000000 rs 00000004 tfd 170 serr 00000000 cmd 0000c017 (aprobe2:ahcich2:0:0:0): SOFT_RESET. ACB: 00 00 00 00 00 00 00 00 00 00 00 00 (aprobe2:ahcich2:0:0:0): CAM status: Command timeout (aprobe2:ahcich2:0:0:0): Error 5, Retries exhausted mountroot: waiting for device /dev/iso9660/13_2_RELEASE_AMD64_BO... Mounting from cd9660:/dev/iso9660/13_2_RELEASE_AMD64_BO failed with error 19. Same thing happens with current qemu HEAD: commit 494a6a2cf7f775d2c20fd6df9601e30606cc2014 Merge: 29578f5757 b821109583 Author: Stefan Hajnoczi <stefa...@redhat.com> Date: Mon Sep 25 10:10:30 2023 -0400 Merge tag 'pull-request-2023-09-25' of https://gitlab.com/thuth/qemu into staging Any ideas?