2010/12/2 Tejun Heo <htejun@xxxxxxxxx>: > Hello, > > On 12/02/2010 11:23 AM, Lin Mac wrote: >>> One thing which could be possible is that the controller stashes the >>> result code for the PMP aware SRST according to the PMP number instead >>> of the usual place, so the driver can't see it. In that case, the >>> driver can be modified to check both places I suppose but if the >>> hardware can be fixed, that would be great. >> the usual place, I presume you mean PxTFD+PxSIG. >> I've check RFIS of received FIS structure after softreset failed and >> nothing there. (UFIS neither) >> Is there any other suspect to check? > Have you checked all PxTFDs? It could be that the controller is > saving it in the wrong slot. No, they are not there. >> My situation is that device is sending D2H Reg FIS, but controller is >> not reflecting it on PxTFD, PxSIG, or RFIS of received FIS >> structure.With the patch I sent, it seems the controller receives D2H >> Reg FIS of the same PMP setting of the previous sent H2D Reg FIS, and >> drop the different one. > > If the controller is dropping the D2H Reg FIS altogether, it'll > probably need more intricate workaround. :-( > >> The AHCI controller I used is AHCI v1.1 compatible, command-based switching. >> >> In SATA spec (rev2.6) 16.7.1, it says: >> >> A host controller may support command-based switching by implementing >> the Port Multiplier Port (PMP) field in the SControl register as >> detailed in section 14.1.3.In order to use this mechanism, host >> software would set the PMP field appropriately before issuing a >> command to a device conected to the Port Multiplier. (...) Note that >> the PMP field shall be set to the control port when host software >> issues commands to the Port Multiplier itself. >> -- >> >> In AHCI spec, the PMP field of PxSCTL "is not used by AHCI".Does it >> implies AHCI would set it and software doesn't need to do anything? >> >> 13.13.4.1 Port Multiplier Discovery >> If a device is present, the host issues a software reset with the PM >> Port field set to the control port. The host checks the signature >> value returned and if.... >> -- >> >> SATA spec didn't says what to do IF it received a data with PMP >> setting doesn't match it's current setting (did it?). While 13.13.4.1 >> only implies the host should receive the signature successfully, even >> if it is of different PMP setting. > > The probing sequence is described somewhere in the ahci spec and I'm > fairly sure the dropping behavior you're describing is out of spec. > You'll need to find a way to reliably distinguish a PMP device and > then probably implement the workaround in custom hardreset or > softreset method for the specific controller. I have resent the patch which retry ahci_do_softreset again with pmp=0 if pmp=15 failed. Thanks a lot for the help. Best Regards, Mac Lin -- 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