[PATCH 1/2] drm/i915/lrc: Clarify the format of the context image

Michel Thierry michel.thierry at intel.com
Wed Jul 12 21:27:26 UTC 2017


On 7/12/2017 12:45 PM, Chris Wilson wrote:
> Quoting Michel Thierry (2017-07-12 20:30:31)
>> Not only the context image consist of two parts (the PPHWSP, and the
>> logical context state), but we also allocate a header at the start of
>> for sharing data with GuC. Thus every lrc looks like this:
>>
>>    | [guc]          | [hwsp] [logical state] |
>>    |<- our header ->|<- context image      ->|
>>
>> So far, we have oversimplified whenever we use each of these parts of the
>> context, just because the GuC header happens to be in page 0, and the
>> (PP)HWSP is in page 1. But this had led to using the same define for more
>> than one meaning (as a page index in the lrc and as 1 page).
>>
>> This patch adds defines for the GuC shared page, the PPHWSP page and the
>> start of the logical state. It also updated the places where the old
>> define was being used. Since we are not changing the size (or format) of
>> the context, there are no functional changes.
>>
>> Suggested-by: Chris Wilson <chris at chris-wilson.co.uk>
>> Signed-off-by: Michel Thierry <michel.thierry at intel.com>
>> Cc: Chris Wilson <chris at chris-wilson.co.uk>
>> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
>> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
>> Cc: Oscar Mateo <oscar.mateo at intel.com>
>> Cc: intel-gvt-dev at lists.freedesktop.org
>> ---
>>   drivers/gpu/drm/i915/gvt/scheduler.c       |  4 ++--
>>   drivers/gpu/drm/i915/i915_guc_submission.c |  4 ++--
>>   drivers/gpu/drm/i915/intel_lrc.c           | 11 +++++++----
>>   drivers/gpu/drm/i915/intel_lrc.h           | 25 ++++++++++++++++++++++---
>>   4 files changed, 33 insertions(+), 11 deletions(-)
>>
...
>> @@ -1695,7 +1695,7 @@ logical_ring_default_irqs(struct intel_engine_cs *engine)
>>   static int
>>   lrc_setup_hws(struct intel_engine_cs *engine, struct i915_vma *vma)
>>   {
>> -       const int hws_offset = LRC_PPHWSP_PN * PAGE_SIZE;
>> +       const int hws_offset = LRC_HEADER_PAGES * PAGE_SIZE;
> 
> This should be PPHWSP_PN since we explicitly want the pointer tot he
> pphwsp.
>Oh right, this was the only place where it was really correct.

I was about to resend it with this change, but then realised it just 
means the lrc_setup_hws chunk of the patch disappears... let me know if 
I should still resend it.

Thanks,

>>          void *hws;
>>   
>>          /* The HWSP is part of the default context object in LRC mode. */
>> @@ -2015,8 +2015,11 @@ static int execlists_context_deferred_alloc(struct i915_gem_context *ctx,
>>   
>>          context_size = round_up(engine->context_size, I915_GTT_PAGE_SIZE);
>>   
>> -       /* One extra page as the sharing data between driver and GuC */
>> -       context_size += PAGE_SIZE * LRC_PPHWSP_PN;
>> +       /*
>> +        * Before the actual start of the context image, we insert a few pages
>> +        * for our own use and for sharing with the GuC.
>> +        */
>> +       context_size += LRC_HEADER_PAGES * PAGE_SIZE;
> 
> Good riddance, that LRC_PPHWSP_PN has left me quite confused for some
> time.
> 
> With the change to lrc_setup_hws,
> Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
> -Chris
> 


More information about the intel-gvt-dev mailing list