]> xenbits.xensource.com Git - seabios.git/commitdiff
Fix AHCI Disk Detection when using EDK2 CSM master
authorChristopher Lentocha <christopherericlentocha@gmail.com>
Tue, 21 Jan 2025 16:59:14 +0000 (11:59 -0500)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 29 Jan 2025 09:49:08 +0000 (10:49 +0100)
For whatever reason, when you compile SeaBIOS in Csm16 mode, and use it
under EDK2's OvmfPkg, the ATA_CMD_IDENTIFY_PACKET_DEVICE command
doesn't work properly, therefore, SeaBIOS detects the "SATA HARDDISK"
as a "SATA CDROM" device, in QEMU. Despite the Tianocore developers
seem to have removed support for Csm16 some time ago, if we decide to
remove Csm16 mode in SeaBIOS in favor of that, at least we have the
last commit of Csm16 working properly and not half-broken. In order to
fix this bug, I decided to add another command, that command being
ATA_CMD_DEVICE_RESET, right before the ATA_CMD_IDENTIFY_PACKET_DEVICE
command is called.

Signed-off-by: Christopher Lentocha <christopherericlentocha@gmail.com>
Message-ID: <eabe9bd2-a7c4-84dd-9a18-7e2e5e1f1247@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
src/hw/ahci.c

index 4f0f640a1c64f1e858d3c891453003b528374021..e0864faa855849452e891f016d83de8e23d4009f 100644 (file)
@@ -484,7 +484,8 @@ static int ahci_port_setup(struct ahci_port_s *port)
     /* start device */
     cmd |= PORT_CMD_START;
     ahci_port_writel(ctrl, pnr, PORT_CMD, cmd);
-
+    sata_prep_simple(&port->cmd->fis, ATA_CMD_DEVICE_RESET);
+    ahci_command(port, 0, 0, buffer, sizeof(buffer));
     sata_prep_simple(&port->cmd->fis, ATA_CMD_IDENTIFY_PACKET_DEVICE);
     rc = ahci_command(port, 0, 0, buffer, sizeof(buffer));
     if (rc == 0) {