grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AHCI: SATA drive not detected by GRUB payload for coreboot


From: Paul Menzel
Subject: AHCI: SATA drive not detected by GRUB payload for coreboot
Date: Mon, 25 May 2015 14:57:20 +0200

Dear GRUB folks,


as already mentioned, currently using coreboot with the GRUB payload on
the ASRock E350M1, the HDD connected over Serial ATA (SATA) at port 2,
or any other port, is not detected. Using an SSD instead it’s also *not*
detected.

This issue is present since at least last year and probably since the
rewrite of `grub-core/disk/ahci.c`. I was able to reproduce it with
latest master, that means commit 5e74a3e6 (disk/ahci: Use defines
`GRUB_ATA_STATUS_BUSY` and `GRUB_ATA_STATUS_DRQ`).

Doing `rmmod ahci` and `insmod ahci` the connected drive is mostly
detected.

Below are my changes for debugging. I added resetting the host bus
adapter (HBA) and debug statements for port 2.

diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c
index 7f75724..cf2075b 100644
--- a/grub-core/disk/ahci.c
+++ b/grub-core/disk/ahci.c
@@ -173,6 +173,7 @@ grub_ahci_pciinit (grub_pci_device_t dev,
   grub_pci_address_t addr;
   grub_uint32_t class;
   grub_uint32_t bar;
+  grub_uint64_t endtime;
   unsigned i, nports;
   volatile struct grub_ahci_hba *hba;
 
@@ -199,7 +200,7 @@ grub_ahci_pciinit (grub_pci_device_t dev,
 
   hba = grub_pci_device_map_range (dev, bar & GRUB_PCI_ADDR_MEM_MASK,
                                   sizeof (*hba));
-  grub_dprintf ("ahci", "dev: %x:%x.%x\n", dev.bus, dev.device, dev.function);
+  grub_dprintf ("ahci", "dev: %x:%x.%x, (%04x,%04x)\n", dev.bus, dev.device, 
dev.function, class, class);
 
   grub_dprintf ("ahci", "tfd[0]: %x\n",
                hba->ports[0].task_file_data);
@@ -219,16 +220,62 @@ grub_ahci_pciinit (grub_pci_device_t dev,
   grub_dprintf ("ahci", "err[1]: %x\n",
                hba->ports[1].sata_error);
 
-  hba->ports[1].sata_error = hba->ports[1].sata_error;
+  grub_dprintf ("ahci", "tfd[2]: %x\n",
+               hba->ports[2].task_file_data);
+  grub_dprintf ("ahci", "cmd[2]: %x\n",
+               hba->ports[2].command);
+  grub_dprintf ("ahci", "st[2]: %x\n",
+               hba->ports[2].status);
+  grub_dprintf ("ahci", "err[2]: %x\n",
+               hba->ports[2].sata_error);
+
+  /* Reset host bus adapter (HBA).  */
+  grub_dprintf ("ahci", "Reset host bus adapter (HBA).\n");
+  grub_dprintf ("ahci", "GLC:%x, %4" PRIuGRUB_UINT64_T "\n", 
hba->global_control, grub_get_time_ms ());
+  hba->global_control |= GRUB_AHCI_HBA_GLOBAL_CONTROL_RESET;
+  /* Reset has to be finished after 1s. */
+  endtime = grub_get_time_ms () + 1000;
+  while ((hba->global_control & GRUB_AHCI_HBA_GLOBAL_CONTROL_RESET)
+         && grub_get_time_ms () < endtime);
+  if (hba->global_control & GRUB_AHCI_HBA_GLOBAL_CONTROL_RESET)
+    {
+      grub_dprintf ("ahci", "Controller reset didn't finish within 1s.\n");
+    }
+  grub_dprintf ("ahci", "GLC:%x, time: %4" PRIuGRUB_UINT64_T "\n", 
hba->global_control, grub_get_time_ms ());
+
+  grub_dprintf ("ahci", "tfd[0]: %x\n",
+               hba->ports[0].task_file_data);
+  grub_dprintf ("ahci", "cmd[0]: %x\n",
+               hba->ports[0].command);
+  grub_dprintf ("ahci", "st[0]: %x\n",
+               hba->ports[0].status);
+  grub_dprintf ("ahci", "err[0]: %x\n",
+               hba->ports[0].sata_error);
 
+  grub_dprintf ("ahci", "tfd[1]: %x\n",
+               hba->ports[1].task_file_data);
+  grub_dprintf ("ahci", "cmd[1]: %x\n",
+               hba->ports[1].command);
+  grub_dprintf ("ahci", "st[1]: %x\n",
+               hba->ports[1].status);
   grub_dprintf ("ahci", "err[1]: %x\n",
                hba->ports[1].sata_error);
 
+  hba->ports[1].sata_error = hba->ports[1].sata_error;
+
+  grub_dprintf ("ahci", "tfd[2]: %x\n",
+               hba->ports[2].task_file_data);
+  grub_dprintf ("ahci", "cmd[2]: %x\n",
+               hba->ports[2].command);
+  grub_dprintf ("ahci", "st[2]: %x\n",
+               hba->ports[2].status);
+  grub_dprintf ("ahci", "err[2]: %x\n",
+               hba->ports[2].sata_error);
+
   grub_dprintf ("ahci", "BH:%x\n", hba->bios_handoff);
 
   if (! (hba->bios_handoff & GRUB_AHCI_BIOS_HANDOFF_OS_OWNED))
     {
-      grub_uint64_t endtime;
 
       grub_dprintf ("ahci", "Requesting AHCI ownership\n");
       hba->bios_handoff = (hba->bios_handoff & ~GRUB_AHCI_BIOS_HANDOFF_RWC)
@@ -265,7 +312,6 @@ grub_ahci_pciinit (grub_pci_device_t dev,
   grub_dprintf ("ahci", "GLC:%x\n", hba->global_control);
 
   /*  {
-      grub_uint64_t endtime;
       hba->global_control |= 1;
       endtime = grub_get_time_ms () + 1000;
       while (hba->global_control & 1)
@@ -392,7 +438,6 @@ grub_ahci_pciinit (grub_pci_device_t dev,
        adevs[i]->hba->ports[adevs[i]->port].command &= 
~GRUB_AHCI_HBA_PORT_CMD_FRE;
       }
 
-  grub_uint64_t endtime;
   endtime = grub_get_time_ms () + 1000;
 
   while (grub_get_time_ms () < endtime)

With these changes the following debug output is created.

        disk/ahci.c:203: dev: 0:11.0, (1060140,1060140)
        disk/ahci.c:206: tfd[0]: 7f
        disk/ahci.c:208: cmd[0]: 2006
        disk/ahci.c:210: st[0]: 0
        disk/ahci.c:212: err[0]: 0
        disk/ahci.c:215: tfd[1]: 7f
        disk/ahci.c:217: cmd[1]: 2006
        disk/ahci.c:219: st[1]: 0
        disk/ahci.c:221: err[1]: 0
        disk/ahci.c:224: tfd[2]: 80
        disk/ahci.c:226: cmd[2]: 2006
        disk/ahci.c:228: st[2]: 123
        disk/ahci.c:230: err[2]: 0
        disk/ahci.c:233: Reset host bus adapter (HBA).
        disk/ahci.c:234: GLC:0, 1095
        disk/ahci.c:244: GLC:0, time: 1095
        disk/ahci.c:247: tfd[0]: 7f
        disk/ahci.c:249: cmd[0]: 2006
        disk/ahci.c:251: st[0]: 0
        disk/ahci.c:253: err[0]: 0
        disk/ahci.c:256: tfd[1]: 7f
        disk/ahci.c:258: cmd[1]: 2006
        disk/ahci.c:260: st[1]: 0
        disk/ahci.c:262: err[1]: 0
        disk/ahci.c:267: tfd[2]: 80
        disk/ahci.c:269: cmd[2]: 2006
        disk/ahci.c:271: st[2]: 123
        disk/ahci.c:273: err[2]: 40d0000
        disk/ahci.c:275: BH:0
        disk/ahci.c:280: Requesting AHCI ownership
        disk/ahci.c:283: Waiting for BIOS to give up ownership
        disk/ahci.c:294: AHCI ownership obtained
        disk/ahci.c:299: GLC:0
        disk/ahci.c:302: err[1]: 0
        disk/ahci.c:305: AHCI is in compat mode. Switching
        disk/ahci.c:310: err[1]: 0
        disk/ahci.c:312: GLC:0
        disk/ahci.c:325: GLC:0
        disk/ahci.c:328: err[1]: 0
        disk/ahci.c:343: GLC:80000000
        disk/ahci.c:346: err[1]: 0
        disk/ahci.c:349: err[1]: 0
        disk/ahci.c:351: GLC:80000000
        disk/ahci.c:367: err[1]: 0
        disk/ahci.c:369: GLC:80000000
        disk/ahci.c:374: 32 AHCI ports, PI = 0x3f
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci0 (port 0), command_table = 
0xc7e42400,
        command_list = 0xc7e42c00
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci1 (port 1), command_table = 
0xc7e41400,
        command_list = 0xc7e41c00
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci2 (port 2), command_table = 
0xc7e40400,
        command_list = 0xc7e40c00
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci3 (port 3), command_table = 
0xc7df7000,
        command_list = 0xc7e3fc00
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci4 (port 4), command_table = 
0xc7df6000,
        command_list = 0xc7df6800
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci5 (port 5), command_table = 
0xc7df5000,
        command_list = 0xc7df5800
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:555: couldn't detect device on port 0
        disk/ahci.c:555: couldn't detect device on port 1
        disk/ahci.c:555: couldn't detect device on port 3
        disk/ahci.c:555: couldn't detect device on port 4
        disk/ahci.c:555: couldn't detect device on port 5
        disk/ahci.c:564: err: 0
        disk/ahci.c:570: err: 0
        disk/ahci.c:574: err: 0
        disk/ahci.c:580: offset: 220, tfd:80, CMD: 6016
        disk/ahci.c:583: err: 0
        disk/ahci.c:594: offset: 220, tfd:80, CMD: 6016
        disk/ahci.c:597: err: 0
        disk/ahci.c:622: port 2 is busy
        disk/ahci.c:650: cleaning up failed devs
        No RSDPv1
        RSDPv2 signature:RSD PTR  chksum:04 (valid), OEM-ID: CORE   rev=2
        RSDT=c7fb8030
        len=36 chksum=ba (valid) XSDT=00000000c7fb80e0
        XSDT   92B rev=1 chksum=0x11 (valid) OEM=CORE   COREBOOT 
OEMrev=00000000 CORE 
        00000000
        FACP  244B rev=4 chksum=0xd0 (valid) OEM=CORE   COREBOOT 
OEMrev=00000000 CORE 
        00000000
        SSDT   69B rev=2 chksum=0xa1 (valid) OEM=CORE   COREBOOT 
OEMrev=0000002a CORE 
        0000002a
        APIC   92B rev=1 chksum=0x9c (valid) OEM=CORE   COREBOOT 
OEMrev=00000000 CORE 
        00000000
        Local APIC=fee00000  Flags=00000001
          LAPIC ACPI_ID=00 APIC_ID=00 Flags=00000001
          LAPIC ACPI_ID=01 APIC_ID=01 Flags=00000001
          IOAPIC ID=02 address=fec00000 GSI=00000000
          Int Override bus=0 src=0 GSI=00000002 Flags=0000
          Int Override bus=0 src=9 GSI=00000009 Flags=000f
        HEST   40B rev=1 chksum=0xb4 (valid) OEM=CORE   COREBOOT 
OEMrev=00000000 CORE 
        00000000
        SSDT 5774B rev=2 chksum=0x6e (valid) OEM=AMD    ALIB     
OEMrev=00000001 MSFT 
        04000000
        SSDT  990B rev=1 chksum=0xca (valid) OEM=AMD    POWERNOW 
OEMrev=00000001 AMD  
        00000001
        HPET   56B rev=1 chksum=0x71 (valid) OEM=CORE   COREBOOT 
OEMrev=00000000 CORE 
        00000000

        00:00.0 1022:1510 [0600] Host Bridge
        00:01.0 1002:9802 [0300] VGA Controller
        00:01.1 1002:1314 [0403] Multimedia device
        00:11.0 1002:4391 [0106] SATA Controller [PI 01]
        00:12.0 1002:4397 [0c03] USB Controller [PI 10]
        00:12.2 1002:4396 [0c03] USB Controller [PI 20]
        00:13.0 1002:4397 [0c03] USB Controller [PI 10]
        00:13.2 1002:4396 [0c03] USB Controller [PI 20]
        00:14.0 1002:4385 [0c05] Serial Bus Controller
        00:14.2 1002:4383 [0403] Multimedia device
        00:14.3 1002:439d [0601] ISA Bridge
        00:14.4 1002:4384 [0604] PCI-PCI Bridge [PI 01]
        00:14.5 1002:4399 [0c03] USB Controller [PI 10]
        00:15.0 1002:43a0 [0604] PCI-PCI Bridge
        00:15.1 1002:43a1 [0604] PCI-PCI Bridge
        00:18.0 1022:1700 [0600] Host Bridge
        00:18.1 1022:1701 [0600] Host Bridge
        00:18.2 1022:1702 [0600] Host Bridge
        00:18.3 1022:1703 [0600] Host Bridge
        00:18.4 1022:1704 [0600] Host Bridge
        00:18.5 1022:1718 [0600] Host Bridge
        00:18.6 1022:1716 [0600] Host Bridge
        00:18.7 1022:1719 [0600] Host Bridge
        03:00.0 10ec:8168 [0200] Ethernet Controller
        GNU GRUB  version 2.02~beta2
        […]
        grub> ls
        (memdisk) (cbfsdisk) 
        grub> rmmod ahci
        grub> insmod ahci
        disk/ahci.c:203: dev: 0:11.0, (1060140,1060140)
        disk/ahci.c:206: tfd[0]: 7f
        disk/ahci.c:208: cmd[0]: 2006
        disk/ahci.c:210: st[0]: 0
        disk/ahci.c:212: err[0]: 0
        disk/ahci.c:215: tfd[1]: 7f
        disk/ahci.c:217: cmd[1]: 2006
        disk/ahci.c:219: st[1]: 0
        disk/ahci.c:221: err[1]: 0
        disk/ahci.c:224: tfd[2]: 80
        disk/ahci.c:226: cmd[2]: 2006
        disk/ahci.c:228: st[2]: 123
        disk/ahci.c:230: err[2]: 0
        disk/ahci.c:233: Reset host bus adapter (HBA).
        disk/ahci.c:234: GLC:80000000, 134260
        disk/ahci.c:244: GLC:0, time: 134263
        disk/ahci.c:247: tfd[0]: 7f
        disk/ahci.c:249: cmd[0]: 2006
        disk/ahci.c:251: st[0]: 0
        disk/ahci.c:253: err[0]: 0
        disk/ahci.c:256: tfd[1]: 7f
        disk/ahci.c:258: cmd[1]: 2006
        disk/ahci.c:260: st[1]: 0
        disk/ahci.c:262: err[1]: 0
        disk/ahci.c:267: tfd[2]: 150
        disk/ahci.c:269: cmd[2]: 2006
        disk/ahci.c:271: st[2]: 123
        disk/ahci.c:273: err[2]: 40d0000
        disk/ahci.c:275: BH:0
        disk/ahci.c:280: Requesting AHCI ownership
        disk/ahci.c:283: Waiting for BIOS to give up ownership
        disk/ahci.c:294: AHCI ownership obtained
        disk/ahci.c:299: GLC:0
        disk/ahci.c:302: err[1]: 0
        disk/ahci.c:305: AHCI is in compat mode. Switching
        disk/ahci.c:310: err[1]: 0
        disk/ahci.c:312: GLC:0
        disk/ahci.c:325: GLC:0
        disk/ahci.c:328: err[1]: 0
        disk/ahci.c:343: GLC:80000000
        disk/ahci.c:346: err[1]: 0
        disk/ahci.c:349: err[1]: 0
        disk/ahci.c:351: GLC:80000000
        disk/ahci.c:367: err[1]: 0
        disk/ahci.c:369: GLC:80000000
        disk/ahci.c:374: 32 AHCI ports, PI = 0x3f
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci0 (port 0), command_table = 
0xc7e97000,
        command_list = 0xc7e97800
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci1 (port 1), command_table = 
0xc7e89c00,
        command_list = 0xc7e96800
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci2 (port 2), command_table = 
0xc7e88c00,
        command_list = 0xc7e89400
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci3 (port 3), command_table = 
0xc7e87c00,
        command_list = 0xc7e88400
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci4 (port 4), command_table = 
0xc7e86c00,
        command_list = 0xc7e87400
        disk/ahci.c:405: err: 0
        disk/ahci.c:436: found device ahci5 (port 5), command_table = 
0xc7e60c00,
        command_list = 0xc7e61400
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:489: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:529: err: 0
        disk/ahci.c:537: err: 0
        disk/ahci.c:555: couldn't detect device on port 0
        disk/ahci.c:555: couldn't detect device on port 1
        disk/ahci.c:555: couldn't detect device on port 3
        disk/ahci.c:555: couldn't detect device on port 4
        disk/ahci.c:555: couldn't detect device on port 5
        disk/ahci.c:564: err: 0
        disk/ahci.c:570: err: 0
        disk/ahci.c:574: err: 0
        disk/ahci.c:580: offset: 220, tfd:150, CMD: 6016
        disk/ahci.c:583: err: 0
        disk/ahci.c:594: offset: 220, tfd:150, CMD: 6016
        disk/ahci.c:597: err: 0
        disk/ahci.c:650: cleaning up failed devs
        grub> ls
        disk/ahci.c:1145: opening AHCI dev `ahci2'
        disk/ahci.c:956: AHCI tfd = 150
        disk/ahci.c:962: AHCI tfd = 150
        disk/ahci.c:966: AHCI tfd = 150
        disk/ahci.c:972: grub_ahci_read (size=512, cmdsize = 0)
        disk/ahci.c:987: AHCI tfd = 150, CL=0xc7e89400
        disk/ahci.c:998: AHCI tfd = 150
        disk/ahci.c:1010: AHCI tfd = 150
        disk/ahci.c:1017: AHCI tfd = 150
        disk/ahci.c:1028: cfis: 27 80 ec 00 00 00 00 e0
        disk/ahci.c:1033: cfis: 00 00 00 00 00 00 00 00
        disk/ahci.c:1045: PRDT = c7e9e000, 0, 1ff (128)
        disk/ahci.c:1050: AHCI command schedulded
        disk/ahci.c:1052: AHCI tfd = 150
        disk/ahci.c:1054: AHCI inten = 0
        disk/ahci.c:1056: AHCI intstatus = 0
        disk/ahci.c:1061: AHCI inten = fdc000ff
        disk/ahci.c:1063: AHCI tfd = 150
        disk/ahci.c:1066: AHCI sig = 101
        disk/ahci.c:1068: AHCI tfd = 1d0
        disk/ahci.c:1093: AHCI command completed <0 2 50 200 0, 0 0>
        disk/ahci.c:1103: last PIO FIS 0058605f e0000000 00000000 500000ff 
00000200
        00000000 00000000 00000000
        disk/ahci.c:1113: last REG FIS 00000000 00000000 00000000 00000000 
00000000
        00000000 00000000 00000000
        disk/ata.c:48: Serial:      WD-WCAZA4234015
        disk/ata.c:50: Firmware: 51.0AB51
        disk/ata.c:52: Model: WDC WD20EARS-60MVWB0                    
        disk/ata.c:56: Addressing: 2
        disk/ata.c:57: Sectors: 3907029168
        disk/ata.c:58: Sector size: 512
        (ahci2) disk/ahci.c:1145: opening AHCI dev `ahci2'
        disk/ahci.c:956: AHCI tfd = 50
        disk/ahci.c:962: AHCI tfd = 50
        disk/ahci.c:966: AHCI tfd = 50
        disk/ahci.c:972: grub_ahci_read (size=512, cmdsize = 0)
        disk/ahci.c:987: AHCI tfd = 50, CL=0xc7e89400
        disk/ahci.c:998: AHCI tfd = 50
        disk/ahci.c:1010: AHCI tfd = 50
        disk/ahci.c:1017: AHCI tfd = 50
        disk/ahci.c:1028: cfis: 27 80 ec 00 00 00 00 e0
        disk/ahci.c:1033: cfis: 00 00 00 00 00 00 00 00
        disk/ahci.c:1045: PRDT = c7e9e000, 0, 1ff (128)
        disk/ahci.c:1050: AHCI command schedulded
        disk/ahci.c:1052: AHCI tfd = 50
        disk/ahci.c:1054: AHCI inten = fdc000ff
        disk/ahci.c:1056: AHCI intstatus = 2
        disk/ahci.c:1061: AHCI inten = fdc000ff
        disk/ahci.c:1063: AHCI tfd = 50
        disk/ahci.c:1066: AHCI sig = 101
        disk/ahci.c:1068: AHCI tfd = d0
        disk/ahci.c:1093: AHCI command completed <0 2 50 200 0, 0 0>
        disk/ahci.c:1103: last PIO FIS 0058605f e0000000 00000000 500000ff 
00000200
        00000000 00000000 00000000
        disk/ahci.c:1113: last REG FIS 00000000 00000000 00000000 00000000 
00000000
        00000000 00000000 00000000
        disk/ata.c:48: Serial:      WD-WCAZA4234015
        disk/ata.c:50: Firmware: 51.0AB51
        disk/ata.c:52: Model: WDC WD20EARS-60MVWB0                    
        disk/ata.c:56: Addressing: 2
        disk/ata.c:57: Sectors: 3907029168
        disk/ata.c:58: Sector size: 512
        disk/ata.c:293: grub_ata_readwrite (size=64, rw=0)
        disk/ata.c:337: rw=0, sector=0, batch=64
        disk/ahci.c:956: AHCI tfd = 50
        disk/ahci.c:962: AHCI tfd = 50
        disk/ahci.c:966: AHCI tfd = 50
        disk/ahci.c:972: grub_ahci_read (size=32768, cmdsize = 0)
        disk/ahci.c:987: AHCI tfd = 50, CL=0xc7e89400
        disk/ahci.c:998: AHCI tfd = 50
        disk/ahci.c:1010: AHCI tfd = 50
        disk/ahci.c:1017: AHCI tfd = 50
        disk/ahci.c:1028: cfis: 27 80 c8 00 00 00 00 e0
        disk/ahci.c:1033: cfis: 00 00 00 00 40 00 00 00
        disk/ahci.c:1045: PRDT = c7e4f000, 0, 7fff (128)
        disk/ahci.c:1050: AHCI command schedulded
        disk/ahci.c:1052: AHCI tfd = 50
        disk/ahci.c:1054: AHCI inten = fdc000ff
        disk/ahci.c:1056: AHCI intstatus = 2
        disk/ahci.c:1061: AHCI inten = fdc000ff
        disk/ahci.c:1063: AHCI tfd = 50
        disk/ahci.c:1066: AHCI sig = 101
        disk/ahci.c:1068: AHCI tfd = d0
        disk/ahci.c:1093: AHCI command completed <0 1 50 8000 0, 0 0>
        disk/ahci.c:1103: last PIO FIS 0058605f e0000000 00000000 500000ff 
00000200
        00000000 00000000 00000000
        disk/ahci.c:1113: last REG FIS 00504034 e000003f 00000000 00000000 
00000000
        00000000 00000000 00000000
        (ahci2,msdos2) (ahci2,msdos1) disk/ahci.c:1145: opening AHCI dev `ahci2'
        disk/ahci.c:956: AHCI tfd = 50
        disk/ahci.c:962: AHCI tfd = 50
        disk/ahci.c:966: AHCI tfd = 50
        disk/ahci.c:972: grub_ahci_read (size=512, cmdsize = 0)
        disk/ahci.c:987: AHCI tfd = 50, CL=0xc7e89400
        disk/ahci.c:998: AHCI tfd = 50
        disk/ahci.c:1010: AHCI tfd = 50
        disk/ahci.c:1017: AHCI tfd = 50
        disk/ahci.c:1028: cfis: 27 80 ec 00 00 00 00 e0
        disk/ahci.c:1033: cfis: 00 00 00 00 00 00 00 00
        disk/ahci.c:1045: PRDT = c7e88400, 0, 1ff (128)
        disk/ahci.c:1050: AHCI command schedulded
        disk/ahci.c:1052: AHCI tfd = 50
        disk/ahci.c:1054: AHCI inten = fdc000ff
        disk/ahci.c:1056: AHCI intstatus = 1
        disk/ahci.c:1061: AHCI inten = fdc000ff
        disk/ahci.c:1063: AHCI tfd = 50
        disk/ahci.c:1066: AHCI sig = 101
        disk/ahci.c:1068: AHCI tfd = d0
        disk/ahci.c:1093: AHCI command completed <0 2 50 200 0, 0 0>
        disk/ahci.c:1103: last PIO FIS 0058605f e0000000 00000000 500000ff 
00000200
        00000000 00000000 00000000
        disk/ahci.c:1113: last REG FIS 00504034 e000003f 00000000 00000000 
00000000
        00000000 00000000 00000000
        disk/ata.c:48: Serial:      WD-WCAZA4234015
        disk/ata.c:50: Firmware: 51.0AB51
        disk/ata.c:52: Model: WDC WD20EARS-60MVWB0                    
        disk/ata.c:56: Addressing: 2
        disk/ata.c:57: Sectors: 3907029168
        disk/ata.c:58: Sector size: 512
        (memdisk) (cbfsdisk) 
        grub> set debug=

Judging from the following register values

        disk/ahci.c:267: tfd[2]: 80
        disk/ahci.c:269: cmd[2]: 2006
        disk/ahci.c:271: st[2]: 123
        disk/ahci.c:273: err[2]: 40d0000

I’d say a port reset is missing. The ASRock E350M1 uses AMD’s AGESA code
which, I think, also does some SATA initialization. That might be the
reason, that coreboot/GRUB payload users do not experience this with
Intel hardware.


Thanks,

Paul

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]