Re: DVD drive fails in 2.6.20.2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux