[SeaBIOS] [coreboot] [SimNow] PORT_IRQ_STAT register is 0 in ahci_port_setup

WANG Siyuan wangsiyuanbuaa at gmail.com
Fri Mar 8 04:48:57 CET 2013


According to this piece of code in src/ahci.c, seabios fails to set
DMA or PIO on ahci. PORT_IRQ_STAT is 0.

    end = calc_future_tsc(AHCI_REQUEST_TIMEOUT);
    do {
        for (;;) {
            intbits = ahci_port_readl(ctrl, pnr, PORT_IRQ_STAT);
            //dprintf(1, "intbits == 0x%x\n", intbits);
            if (intbits) {
                ahci_port_writel(ctrl, pnr, PORT_IRQ_STAT, intbits);
                if (intbits & 0x02) {
                    status = GET_LOWFLAT(fis->psfis[2]);
                    error  = GET_LOWFLAT(fis->psfis[3]);
                    break;
                }
                if (intbits & 0x01) {
                    status = GET_LOWFLAT(fis->rfis[2]);
                    error  = GET_LOWFLAT(fis->rfis[3]);
                    break;
                }
            }
            if (check_tsc(end)) {
                warn_timeout();
                return -1;
            }
            yield();
        }
        dprintf(8, "AHCI/%d: ... intbits 0x%x, status 0x%x ...\n",
                pnr, intbits, status);
    } while (status & ATA_CB_STAT_BSY);

On Fri, Mar 8, 2013 at 7:34 AM, Kevin O'Connor <kevin at koconnor.net> wrote:
> On Thu, Mar 07, 2013 at 04:59:43PM +0800, WANG Siyuan wrote:
>> Hi,
>> I am trying to boot a hard disk image using coreboot and seabios on
>> SimNow Simulator.
>> The system stops at seabios stage.
>>
>> PORT_CMD_START fails in function ahci_port_setup (seabios/src/ahci.c),
>> Then I traced into function ahci_command (seabios/src/ahci.c), I found
>> the value of register ORT_IRQ_STAT is always 0:
>> intbits = ahci_port_readl(ctrl, pnr, PORT_IRQ_STAT);
>> intbits returns 0 all the time, so system stops here until time out.
>>
>> Any comments would be appreciated.
>
> There is a 32 second timeout in that code (which may be a longer wall
> time if run under a simulator) - are you sure it didn't eventually
> time out.  As to why it is taking so long - could be an error in the
> simulator or in the seabios driver.  You could try disabling the ahci
> code in seabios via kconfig.
>
> -Kevin



--
Yours sincerely,
WANG Siyuan



More information about the SeaBIOS mailing list