From 90d21c072615e035a831c47f857185300c703db4 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Thu, 9 Jun 2005 09:04:11 -0700 Subject: [PATCH] --- yaml --- r: 1929 b: refs/heads/master c: 1834cd9fd27763f4e55184e4138a19ba36620174 h: refs/heads/master i: 1927: e9781fc34d7a17a49c4f901bcb4e82836f7ce508 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/libata-core.c | 4 +--- trunk/drivers/scsi/sata_sil.c | 8 +++++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index e650ec74f97b..9aec4c696265 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4e71e47da3367e8df5994a17fb421ddeaa5025e3 +refs/heads/master: 1834cd9fd27763f4e55184e4138a19ba36620174 diff --git a/trunk/drivers/scsi/libata-core.c b/trunk/drivers/scsi/libata-core.c index 21d194c6ace3..9e58f134f68b 100644 --- a/trunk/drivers/scsi/libata-core.c +++ b/trunk/drivers/scsi/libata-core.c @@ -2577,7 +2577,6 @@ static void __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes) next_sg: sg = &qc->sg[qc->cursg]; -next_page: page = sg->page; offset = sg->offset + qc->cursg_ofs; @@ -2585,6 +2584,7 @@ static void __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes) page = nth_page(page, (offset >> PAGE_SHIFT)); offset %= PAGE_SIZE; + /* don't overrun current sg */ count = min(sg->length - qc->cursg_ofs, bytes); /* don't cross page boundaries */ @@ -2609,8 +2609,6 @@ static void __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes) kunmap(page); if (bytes) { - if (qc->cursg_ofs < sg->length) - goto next_page; goto next_sg; } } diff --git a/trunk/drivers/scsi/sata_sil.c b/trunk/drivers/scsi/sata_sil.c index 238580d244e6..49ed557a4b66 100644 --- a/trunk/drivers/scsi/sata_sil.c +++ b/trunk/drivers/scsi/sata_sil.c @@ -432,7 +432,13 @@ static int sil_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) writeb(cls, mmio_base + SIL_FIFO_R0); writeb(cls, mmio_base + SIL_FIFO_W0); writeb(cls, mmio_base + SIL_FIFO_R1); - writeb(cls, mmio_base + SIL_FIFO_W2); + writeb(cls, mmio_base + SIL_FIFO_W1); + if (ent->driver_data == sil_3114) { + writeb(cls, mmio_base + SIL_FIFO_R2); + writeb(cls, mmio_base + SIL_FIFO_W2); + writeb(cls, mmio_base + SIL_FIFO_R3); + writeb(cls, mmio_base + SIL_FIFO_W3); + } } else printk(KERN_WARNING DRV_NAME "(%s): cache line size not set. Driver may not function\n", pci_name(pdev));