Hi, > On 3/22/2023 12:44 PM, John Harrison wrote: > > On 3/20/2023 14:10, Daniele Ceraolo Spurio wrote: > > > Commit 3db9d590557d ("drm/i915/gt: Reset twice") modified the code to > > > always hit the GDRST register twice when doing a reset, with the > > > reported aim to fix invalid post-reset engine state on some platforms > > > (Jasperlake being the only one actually mentioned). > > > > It still concerns me that there are no actual details about this issue > > from a hardware perspective as to what/why it goes wrong, the comment is > > fully of non-definitive language - 'appears to', 'should', 'is still a > > concern that'. And there is no w/a number associated with it. It all > > feels extremely suspect and warrants a great big FIXME tag as a minimum. > > I agree that the whole thing is unclear and we could add a FIXME, but IMO > that is outside the scope of this patch as I'm not adding the code in > question. This should be discussed with the original author/reviewers. Sorry for chiming in a bit late. I'm with Daniele on this one; the patch just takes things back to how they were before Chris's patch, so we should look into the reasoning behind Chris's patch itself. As mentioned in the commit log, in Jasperlake (and only Jasperlake), a second reset attempt is needed to clear the register state. If I remember right, Chris discovered this through experimentation, and I don't think any hardware folks have documented it. Chris can probably give more details on this. In general, I'm on board with Daniele's patch since it's doing what the driver has always done, which is why I gave it a quick review already in V1. On the other hand, the price to pay having something like this: loops = GRAPHICS_VER_FULL(gt->i915) < IP_VER(12, 70) ? 2 : 1; Is the following perhaps a bit more self-explanatory? /* * The big comment with explanation */ if (IS_PLATFORM(i915, INTEL_JASPERLAKE)) /* try again */ ; Andi