Vlad Codrea wrote:
> Tejun Heo wrote:
>
>> [cc'ing Albert Lee. Hi!]
>>
>> Vlad Codrea wrote:
>>
>>
>>>> Okay, now that you're on libata driver, it's easier for me to debug.
>>>> Can you apply the attached patch over 2.6.20 and report what the kernel
>>>> says? (the patch will apply with some noise, it's okay)
>>>>
>>>
>>> I've applied your patch and recompiled the kernel, but the new dmesg
>>> (attached as dmesg_2.txt) doesn't seem to have changed much.
>>>
>>
>>
>> Hmmm.. that's weird, can you please try the attached patch?
>>
>> Albert, can you take a look at this one? I'm pretty sure you know much
>> better about this than me. The whole thread can be read at...
>>
>> http://thread.gmane.org/gmane.linux.ide/17052
>>
>> Thanks.
>>
>>
>
>
> I've attached the dmesg after applying this patch. There is now a new
> line reading "ata2.00: ata_eh_analyze_tf, AC_ERR_HSM, 0x58".
>
This device is configured as MWDMA2:
ata2.00: ATAPI, max MWDMA2, CDB intr
ata2.00: configured for MWDMA2
The state machine should start at HSM_ST_FIRST to transfer CDB then
transit to HSM_ST_LAST after DMA is completed.
Device status 0x58 looks good for HSM_ST_FIRST, maybe libata is
seeing 0x58 in the HSM_ST_LAST state?
Hi Vlad,
Could you please also apply the attached HSM debug patch and collect the dmesg,
thanks.
--
albert
--- linux-2.6.20.3/drivers/ata/libata-core.c 2007-03-15 12:13:12.000000000
+0800
+++ linux-2.6.20.3-mod/drivers/ata/libata-core.c 2007-03-15
12:13:55.000000000 +0800
@@ -4371,8 +4371,9 @@ int ata_hsm_move(struct ata_port *ap, st
WARN_ON(in_wq != ata_hsm_ok_in_wq(ap, qc));
fsm_start:
- DPRINTK("ata%u: protocol %d task_state %d (dev_stat 0x%X)\n",
- ap->id, qc->tf.protocol, ap->hsm_task_state, status);
+ if (is_atapi_taskfile(&qc->tf))
+ printk(KERN_ERR "ata%u: protocol %d task_state %d (dev_stat
0x%X)\n",
+ ap->id, qc->tf.protocol, ap->hsm_task_state, status);
switch (ap->hsm_task_state) {
case HSM_ST_FIRST:
@@ -5091,8 +5092,9 @@ inline unsigned int ata_host_intr (struc
struct ata_eh_info *ehi = &ap->eh_info;
u8 status, host_stat = 0;
- VPRINTK("ata%u: protocol %d task_state %d\n",
- ap->id, qc->tf.protocol, ap->hsm_task_state);
+ if (is_atapi_taskfile(&qc->tf))
+ printk(KERN_ERR "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) {
-
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