--- Tejun Heo <htejun@xxxxxxxxx> wrote: > The driver is seriously broken regarding LBA48 support. The timeout > goes away if max_sectors is decreased to ATA_MAX_SECTORS - 1, doh. Tejun, I should have commented on this earlier. I still get occasional timeouts regardless of the max_sectors settings. Yes, it's much much lower with some settings vs others, but they're still there. I was just messing around and did this. I still got the occasional timeouts. #define BOBSEGS 64 static int inic_slave_config(struct scsi_device *sdev) { /* This controller is braindamaged. dma_boundary is 0xffff * like others but it will lock up the whole machine HARD if * 65536 byte PRD entry is fed. Reduce maximum segment size. */ struct ata_port *ap = ata_shost_to_port(sdev->host); ata_sas_slave_configure(sdev,ap); blk_queue_max_phys_segments(sdev->request_queue, BOBSEGS); blk_queue_max_hw_segments(sdev->request_queue, BOBSEGS); blk_queue_max_sectors(sdev->request_queue, BOBSEGS); blk_queue_max_segment_size(sdev->request_queue, BOBSEGS*512); return 0; } static struct scsi_host_template inic_sht = { .sg_tablesize = BOBSEGS, ... static void inic_dev_config(struct ata_port *ap, struct ata_device *dev) { /* inic can only handle upto LBA28 max sectors */ dev->max_sectors = BOBSEGS; Sorry this isn't in diff format, but I think you can see what I did, nonetheless. Eventually, maybe I'll learn enough about something to be able to contribute. Bob - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html