Messages in this thread Patch in this message | | | Date | Thu, 30 Oct 2003 12:49:35 -0500 | From | Jeff Garzik <> | Subject | [PATCH #2] Re: SATA and 2.6.0-test9 |
| |
Patrik Wallstrom wrote: > On Mon, 27 Oct 2003, Jeff Garzik wrote: > > >>>>Jeff Garzik: >>>> o [libata] Merge Serial ATA core, and drivers for >>>> o [libata] Integrate Serial ATA driver into kernel tree >>> >>>I am happy to see these in the kernel now, but I have yet to get them >>>working on my KT6 Delta KT600 motherboard with the VT8237 SATA >>>southbridge controller or even the Promise controller. >> >>Does it improve things, if you change ATA_FLAG_SRST to >>ATA_FLAG_SATA_RESET, in drivers/scsi/sata_via.c ? > > > It doesn't hang any more, but the only result is: > sata_via version 0.11 > ata3: SATA max UDMA/133 cmd 0xD800 ctl 0xD402 bmdma 0xC800 irq 16 > ata4: SATA max UDMA/133 cmd 0xD000 ctl 0xCC02 bmdma 0xC808 irq 16 > ata3: thread exiting > scsi2 : sata_via > ata4: thread exiting > scsi3 : sata_via
Actually, attached is a better patch... ===== drivers/scsi/libata-core.c 1.5 vs edited ===== --- 1.5/drivers/scsi/libata-core.c Wed Oct 22 22:25:32 2003 +++ edited/drivers/scsi/libata-core.c Thu Oct 30 11:18:59 2003 @@ -1086,6 +1086,11 @@ if (ap->flags & ATA_FLAG_PORT_DISABLED) return; + if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) { + ata_port_disable(ap); + return; + } + ata_bus_reset(ap); } @@ -1339,9 +1344,13 @@ outb(ap->ctl, ioaddr->ctl_addr); /* determine if device 0/1 are present */ - dev0 = ata_dev_devchk(ap, 0); - if (slave_possible) - dev1 = ata_dev_devchk(ap, 1); + if (ap->flags & ATA_FLAG_SATA_RESET) + dev0 = 1; + else { + dev0 = ata_dev_devchk(ap, 0); + if (slave_possible) + dev1 = ata_dev_devchk(ap, 1); + } if (dev0) devmask |= (1 << 0); ===== drivers/scsi/sata_promise.c 1.8 vs edited ===== --- 1.8/drivers/scsi/sata_promise.c Tue Oct 28 11:04:25 2003 +++ edited/drivers/scsi/sata_promise.c Thu Oct 30 08:13:44 2003 @@ -176,7 +176,7 @@ { .sht = &pdc_sata_sht, .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | - ATA_FLAG_SRST | ATA_FLAG_MMIO, + ATA_FLAG_SATA_RESET | ATA_FLAG_MMIO, .pio_mask = 0x03, /* pio3-4 */ .udma_mask = 0x7f, /* udma0-6 ; FIXME */ .port_ops = &pdc_sata_ops, @@ -186,7 +186,7 @@ { .sht = &pdc_sata_sht, .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | - ATA_FLAG_SRST | ATA_FLAG_MMIO, + ATA_FLAG_SATA_RESET | ATA_FLAG_MMIO, .pio_mask = 0x03, /* pio3-4 */ .udma_mask = 0x7f, /* udma0-6 ; FIXME */ .port_ops = &pdc_sata_ops, @@ -207,6 +207,8 @@ static struct pci_device_id pdc_sata_pci_tbl[] = { { PCI_VENDOR_ID_PROMISE, 0x3371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_2037x }, + { PCI_VENDOR_ID_PROMISE, 0x3373, PCI_ANY_ID, PCI_ANY_ID, 0, 0, board_2037x }, { PCI_VENDOR_ID_PROMISE, 0x3375, PCI_ANY_ID, PCI_ANY_ID, 0, 0, board_2037x }, ===== drivers/scsi/sata_via.c 1.2 vs edited ===== --- 1.2/drivers/scsi/sata_via.c Tue Oct 21 23:13:54 2003 +++ edited/drivers/scsi/sata_via.c Wed Oct 29 20:27:43 2003 @@ -108,7 +108,7 @@ { .sht = &svia_sht, .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY - | ATA_FLAG_SRST, + | ATA_FLAG_SATA_RESET, .pio_mask = 0x03, /* pio3-4 */ .udma_mask = 0x7f, /* udma0-6 ; FIXME */ .port_ops = &svia_sata_ops, | |