On 2020-07-13 01:10, Avri Altman wrote: > Artificially injecting errors is a very common validation mechanism, > Provided that you are not breaking anything of the upper-layers, > Which I don't think you are doing. Hi Avri, My concern is that the code that is being added in the abort handler sooner or later will evolve into a duplicate of the regular completion path. Wouldn't it be better to poll for completions from the timeout handler by calling ufshcd_transfer_req_compl() instead of duplicating that function? >>> In section 7.2.3 of the UFS specification I found the following about how >>> to process request completions: "Software determines if new TRs have >>> completed since step #2, by repeating one of the two methods described in >>> step #2. If new TRs have completed, software repeats the sequence from >>> step #3." Is such a loop perhaps missing from the Linux UFS driver? > > Could not find that citation. > What version of the spec are you using? That quote comes from the following document: "Universal Flash Storage Host Controller Interface (UFSHCI); Version 2.1; JESD223C; (Revision of JESD223B, September 2013); MARCH 2016". Bart.