[Intel-gfx] [PATCH] drm/i915/gt: Sanitize GT first

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Mon Apr 27 10:30:33 UTC 2020


On 27/04/2020 10:55, Chris Wilson wrote:
> Quoting Tvrtko Ursulin (2020-04-27 10:50:01)
>>
>> On 27/04/2020 09:40, Chris Wilson wrote:
>>> We see that if the HW doesn't actually sleep, the HW may eat the poison
>>> we set in its write-only HWSP during sanitize:
>>>
>>>     intel_gt_resume.part.8: 0000:00:02.0
>>>     __gt_unpark: 0000:00:02.0
>>>     gt_sanitize: 0000:00:02.0 force:yes
>>>     process_csb: 0000:00:02.0 vcs0: cs-irq head=5, tail=90
>>>     process_csb: 0000:00:02.0 vcs0: csb[0]: status=0x5a5a5a5a:0x5a5a5a5a
>>>     assert_pending_valid: Nothing pending for promotion!
>>>
>>> The CS TAIL pointer should have been reset by reset_csb_pointers(), so
>>> in this case it is likely that we have read back from the CPU cache and
>>> so we must clflush our control over that page. In doing so, push the
>>> sanitisation to the start of the GT sequence so that our poisoning is
>>> assuredly before we start talking to the HW.
>>>
>>> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
>>> ---
>>>    drivers/gpu/drm/i915/gt/intel_gt_pm.c | 3 ++-
>>>    drivers/gpu/drm/i915/gt/intel_lrc.c   | 3 +++
>>>    2 files changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
>>> index 4c4c74ef4f21..5097786f4375 100644
>>> --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c
>>> +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
>>> @@ -198,11 +198,12 @@ int intel_gt_resume(struct intel_gt *gt)
>>>         * Only the kernel contexts should remain pinned over suspend,
>>>         * allowing us to fixup the user contexts on their first pin.
>>>         */
>>> +     gt_sanitize(gt, true);
>>> +
>>>        intel_gt_pm_get(gt);
>>
>> gt_sanitize declares hw access so I thin it should still be after this
>> pm get.
> 
> We control the rpm/uncore access inside gt_sanitize. And the reset we do
> there avoid interfering with the gt_pm, so I think this is safe. Note
> that the gt_sanitize() we do later is after we release gt_pm. So it
> seems reasonable to say that we do it before/after gt_pm.

On the suspend path? Okay.. I guess that proves it works.

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Regards,

Tvrtko




More information about the Intel-gfx mailing list