--- Tejun Heo <[EMAIL PROTECTED]> 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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to