* Re: Failed to set xfermode on LITE-ON LTR-40125S
2007-01-25 20:17 Failed to set xfermode on LITE-ON LTR-40125S John Williams
@ 2007-01-26 3:50 ` Albert Lee
2007-01-26 8:15 ` John Williams
2007-01-26 11:33 ` Alan
0 siblings, 2 replies; 4+ messages in thread
From: Albert Lee @ 2007-01-26 3:50 UTC (permalink / raw)
To: John Williams; +Cc: linux-ide
John Williams wrote:
> Hello,
>
> I just tried the libata support for PATA in kernel 2.6.20-rc5 and I got
> this:
>
> scsi1 : pata_sis
> ata2.00: ATAPI, max UDMA/66
> ata2.01: ATAPI, max UDMA/33
> ata2.00: configured for UDMA/33
> ata2.01: qc timeout (cmd 0xef)
> ata2.01: failed to set xfermode (err_mask=0x4)
> ata2.01: limiting speed to UDMA/25
> ata2: failed to recover some devices, retrying in 5 secs
> ata2.00: configured for UDMA/33
> ata2.01: qc timeout (cmd 0xef)
> ata2.01: failed to set xfermode (err_mask=0x4)
> ata2.01: limiting speed to PIO0
> ata2: failed to recover some devices, retrying in 5 secs
> ata2.00: configured for UDMA/33
> ata2.01: qc timeout (cmd 0xef)
> ata2.01: failed to set xfermode (err_mask=0x4)
> ata2.01: disabled
> ata2: failed to recover some devices, retrying in 5 secs
> ata2.00: failed to set xfermode (err_mask=0x40)
> ata2.00: limiting speed to UDMA/25
> ata2: failed to recover some devices, retrying in 5 secs
> ata2.00: configured for UDMA/25
>
> The offending device is a LITE-ON LTR-40125S CDRW attached to SIS 513
> IDE (rev d0)
>
> I found a patch here:
> http://readlist.com/lists/vger.kernel.org/linux-kernel/45/228948.html
> which cures the problem for me. Is this the recommended patch for this
> problem? If not, I would be happy to test alternative solutions.
>
Tejun fixed the problem by ATA_FLAG_SETXFER_POLLING for pata_via.
Maybe the same fix works for pata_sis.
Could you please try the attached patch, thanks.
--
albert
--- linux-2.6.20-rc5-mod/drivers/ata/pata_sis.c~ 2007-01-23 11:47:40.000000000 +0800
+++ linux-2.6.20-rc5-mod/drivers/ata/pata_sis.c 2007-01-26 11:43:54.000000000 +0800
@@ -718,7 +718,7 @@ static const struct ata_port_operations
static struct ata_port_info sis_info = {
.sht = &sis_sht,
- .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
+ .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_SETXFER_POLLING,
.pio_mask = 0x1f, /* pio0-4 */
.mwdma_mask = 0x07,
.udma_mask = 0,
@@ -726,7 +726,7 @@ static struct ata_port_info sis_info = {
};
static struct ata_port_info sis_info33 = {
.sht = &sis_sht,
- .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
+ .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_SETXFER_POLLING,
.pio_mask = 0x1f, /* pio0-4 */
.mwdma_mask = 0x07,
.udma_mask = ATA_UDMA2, /* UDMA 33 */
@@ -734,35 +734,35 @@ static struct ata_port_info sis_info33 =
};
static struct ata_port_info sis_info66 = {
.sht = &sis_sht,
- .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
+ .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_SETXFER_POLLING,
.pio_mask = 0x1f, /* pio0-4 */
.udma_mask = ATA_UDMA4, /* UDMA 66 */
.port_ops = &sis_66_ops,
};
static struct ata_port_info sis_info100 = {
.sht = &sis_sht,
- .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
+ .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_SETXFER_POLLING,
.pio_mask = 0x1f, /* pio0-4 */
.udma_mask = ATA_UDMA5,
.port_ops = &sis_100_ops,
};
static struct ata_port_info sis_info100_early = {
.sht = &sis_sht,
- .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
+ .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_SETXFER_POLLING,
.udma_mask = ATA_UDMA5,
.pio_mask = 0x1f, /* pio0-4 */
.port_ops = &sis_66_ops,
};
static struct ata_port_info sis_info133 = {
.sht = &sis_sht,
- .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
+ .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_SETXFER_POLLING,
.pio_mask = 0x1f, /* pio0-4 */
.udma_mask = ATA_UDMA6,
.port_ops = &sis_133_ops,
};
static struct ata_port_info sis_info133_early = {
.sht = &sis_sht,
- .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
+ .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_SETXFER_POLLING,
.pio_mask = 0x1f, /* pio0-4 */
.udma_mask = ATA_UDMA6,
.port_ops = &sis_133_early_ops,
^ permalink raw reply [flat|nested] 4+ messages in thread