On Mon, 30 Apr 2007 11:27:46 +0200, Tejun Heo wrote:
>Mikael Pettersson wrote:
>> @@ -647,12 +650,10 @@ static void pdc_error_intr(struct ata_po
>>                         | PDC_PCI_SYS_ERR | PDC1_PCI_PARITY_ERR))
>>              ac_err_mask |= AC_ERR_HOST_BUS;
>>  
>> -    if (sata_scr_valid(ap))
>> -            ehi->serror |= pdc_sata_scr_read(ap, SCR_ERROR);
>> -
>> +    ehi->action |= ATA_EH_SOFTRESET;
>>      qc->err_mask |= ac_err_mask;
>>  
>> -    pdc_reset_port(ap);
>> +    ata_port_freeze(ap);
>>  }
>
>You really don't wanna schedule ATA_EH_SOFTRESET and freeze the port on
>every error.  If you do that, ATAPI devices will be reset after each
>CHECK CONDITION and it probably won't work properly.

Would that be hal polling to see if media has been inserted?

>  FWIW, libata EH
>automatically issues softreset if the port is frozen (as that's the only
>way to thaw the port), so setting EH_SOFTRESET is optional if you freeze
>the port.
>
>Another problem is that EH may issue other commands to while trying to
>recover - e.g. PACKET - REQUEST SENSE or READ LOG PAGE.  This only
>happens if the port is ready for commands, IOW, !frozen.  Before, the
>pdc_reset_port() used to be called on entry to EH if it's not frozen but
>it's not after this patch.  Is this safe?

Oh dear. I assumed EH would only want to inspect the standard
status registers, and that's why I wanted to delay the reset.
If EH wants to talk to the device then it's a very bad idea to
not have issued a pdc_reset_port() first.

Jeff, please toss this patch in the dust bin.

/Mikael
-
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

Reply via email to