matthieu castet wrote:
Hi Albert,
Albert Lee wrote:
castet.matthieu@xxxxxxx wrote:
Could you please test the current libata-upstream tree and
turn on ATA_DEBUG and ATA_VERBOSE_DEBUG in include/linux/libata.h.
Is there a easy way to get libata-upstream tree ?
Do I need to install git for that or there are some snapshots
somewhere ?
Hi Matthieu,
Tejun has a patch against 2.6.17:
http://home-tj.org/files/libata-tj-stable/libata-tj-2.6.17-20060625-1.tar.bz2
I don't know if I did someting wrong, but it didn't apply cleanly.
So I enable the trace on lastest -mm kernel and I disable the via quirk.
But the printk in the interrupt handler takes some times and hides the
altstatus delay.
I will try to send you a trace, where I move the printk at the end of
the interrupt handler.
After apllying the following patch to -mm, I got
http://castet.matthieu.free.fr/tmp/ata_log
Matthieu
Index: linux-2.6.16/drivers/scsi/libata-core.c
===================================================================
--- linux-2.6.16.orig/drivers/scsi/libata-core.c 2006-07-02 10:32:33.000000000 +0200
+++ linux-2.6.16/drivers/scsi/libata-core.c 2006-07-02 10:38:03.000000000 +0200
@@ -4722,9 +4722,6 @@
{
u8 status, host_stat = 0;
- VPRINTK("ata%u: protocol %d task_state %d\n",
- ap->id, qc->tf.protocol, ap->hsm_task_state);
-
/* Check whether we are expecting interrupt in this state */
switch (ap->hsm_task_state) {
case HSM_ST_FIRST:
@@ -4780,6 +4777,9 @@
ap->ops->irq_clear(ap);
ata_hsm_move(ap, qc, status, 0);
+ VPRINTK("ata%u: protocol %d task_state %d\n",
+ ap->id, qc->tf.protocol, ap->hsm_task_state);
+
return 1; /* irq handled */
idle_irq:
@@ -4792,6 +4792,9 @@
return 1;
}
#endif
+ VPRINTK("ata%u: protocol %d task_state %d\n",
+ ap->id, qc->tf.protocol, ap->hsm_task_state);
+
return 0; /* irq not handled */
}
Index: linux-2.6.16/drivers/scsi/pata_via.c
===================================================================
--- linux-2.6.16.orig/drivers/scsi/pata_via.c 2006-07-01 19:38:41.000000000 +0200
+++ linux-2.6.16/drivers/scsi/pata_via.c 2006-07-01 19:38:54.000000000 +0200
@@ -324,7 +324,7 @@
continue;
if (!(qc->flags & ATA_QCFLAG_ACTIVE))
continue;
- if (qc->tf.command == ATA_CMD_SET_FEATURES &&
+ if (0 && qc->tf.command == ATA_CMD_SET_FEATURES &&
qc->tf.feature == SETFEATURES_XFER) {
/*
* With some ATAPI devices (CDR-6S48, ...), the
Index: linux-2.6.16/include/linux/libata.h
===================================================================
--- linux-2.6.16.orig/include/linux/libata.h 2006-07-01 19:37:51.000000000 +0200
+++ linux-2.6.16/include/linux/libata.h 2006-07-01 19:38:24.000000000 +0200
@@ -43,6 +43,8 @@
#undef ATA_DEBUG /* debugging output */
#undef ATA_VERBOSE_DEBUG /* yet more debugging output */
#undef ATA_IRQ_TRAP /* define to ack screaming irqs */
+#define ATA_DEBUG
+#define ATA_VERBOSE_DEBUG
#undef ATA_NDEBUG /* define to disable quick runtime checks */
#define ATA_ENABLE_PATA /* define to enable PATA support in some
* low-level drivers */