[libata/sata_sil] Error on startup

From: Alex Gonzalez
Date: Fri Sep 12 2008 - 06:35:01 EST


I am seeing a problem with libata and the sata_sil driver. I didn't
find a libata specific mailing list so please redirect me if the lkml
is not appropriate.

I am running a 2.6.21 SMP mips kernel and on some occasions the kernel
halts on startup. This only happens at boot time, that is, once the
system is running it never exhibits the problem.

The problem occurs when trying to read the partitions from the SATA
drive, on the first call to read_dev_sector(). As I understand it, the
code finishes doing a sync_page() which starts an asynchronous I/O
operation and sleeps until awaken by an interrupt generated by the
SATA device.

I have followed the code through until the call to ata_bmdma_start(),
where it does:

iowrite8(dmactl | ATA_DMA_START, ap->ioaddr.bmdma_addr + ATA_DMA_CMD);

On a working case, the device interrupts and the flow continues. On a
non working case, there is a delay of 5 or 6 seconds, and then a
series of calls to sil_freeze(), ata_bmdma_error_handler() and

I am about to delve into the ATA specs to try to understand this
interaction, but has anybody seen this behavior before? Please CC me
on replies.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/