All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>,
	Mika Kuoppala <mika.kuoppala@linux.intel.com>,
	intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 2/6] drm/i915/icl: Correctly initialize the Gen11 engines
Date: Wed, 7 Mar 2018 08:02:56 +0000	[thread overview]
Message-ID: <bbb82f01-e04e-045e-d5f4-0398bfea7cf4@linux.intel.com> (raw)
In-Reply-To: <2641ca98-3866-af7e-c34b-94d514e2f98d@intel.com>


On 06/03/2018 22:07, Daniele Ceraolo Spurio wrote:
> On 02/03/18 08:14, Mika Kuoppala wrote:
>> From: Oscar Mateo <oscar.mateo@intel.com>
>>
>> Gen11 has up to 4 VCS and up to 2 VECS engines, this patch adds mmio
>> base definitions for all of them.
>>
>> Bspec: 20944
>> Bspec: 7021
>>
>> v2: Set the correct mmio_base in intel_engines_init_mmio; updating the
>> base mmio values any later would cause incorrect reads in
>> i915_gem_sanitize (Michel).
>>
>> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>> Cc: Ceraolo Spurio, Daniele <daniele.ceraolospurio@intel.com>
>> Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
>> Signed-off-by: Michel Thierry <michel.thierry@intel.com>
>> ---
>>   drivers/gpu/drm/i915/i915_reg.h        |  6 +++++
>>   drivers/gpu/drm/i915/intel_engine_cs.c | 44 
>> +++++++++++++++++++++++++++++++++-
>>   2 files changed, 49 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h 
>> b/drivers/gpu/drm/i915/i915_reg.h
>> index 258e86eb37d5..45ae05d0fe78 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -2345,7 +2345,13 @@ enum i915_power_well_id {
>>   #define BSD_RING_BASE        0x04000
>>   #define GEN6_BSD_RING_BASE    0x12000
>>   #define GEN8_BSD2_RING_BASE    0x1c000
>> +#define GEN11_BSD_RING_BASE    0x1c0000
>> +#define GEN11_BSD2_RING_BASE    0x1c4000
>> +#define GEN11_BSD3_RING_BASE    0x1d0000
>> +#define GEN11_BSD4_RING_BASE    0x1d4000
>>   #define VEBOX_RING_BASE        0x1a000
>> +#define GEN11_VEBOX_RING_BASE        0x1c8000
>> +#define GEN11_VEBOX2_RING_BASE        0x1d8000
>>   #define BLT_RING_BASE        0x22000
>>   #define RING_TAIL(base)        _MMIO((base)+0x30)
>>   #define RING_HEAD(base)        _MMIO((base)+0x34)
>> diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c 
>> b/drivers/gpu/drm/i915/intel_engine_cs.c
>> index 3e1107ecb6ee..911fc08658c5 100644
>> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
>> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
>> @@ -123,6 +123,22 @@ static const struct engine_info intel_engines[] = {
>>           .mmio_base = GEN8_BSD2_RING_BASE,
>>           .irq_shift = GEN8_VCS2_IRQ_SHIFT,
>>       },
>> +    [VCS3] = {
>> +        .hw_id = VCS3_HW,
>> +        .uabi_id = I915_EXEC_BSD,
>> +        .class = VIDEO_DECODE_CLASS,
>> +        .instance = 2,
>> +        .mmio_base = GEN11_BSD3_RING_BASE,
>> +        .irq_shift = 0, /* not used */
>> +    },
>> +    [VCS4] = {
>> +        .hw_id = VCS4_HW,
>> +        .uabi_id = I915_EXEC_BSD,
>> +        .class = VIDEO_DECODE_CLASS,
>> +        .instance = 3,
>> +        .mmio_base = GEN11_BSD4_RING_BASE,
>> +        .irq_shift = 0, /* not used */
>> +    },
>>       [VECS] = {
>>           .hw_id = VECS_HW,
>>           .uabi_id = I915_EXEC_VEBOX,
>> @@ -131,6 +147,14 @@ static const struct engine_info intel_engines[] = {
>>           .mmio_base = VEBOX_RING_BASE,
>>           .irq_shift = GEN8_VECS_IRQ_SHIFT,
>>       },
>> +    [VECS2] = {
>> +        .hw_id = VECS2_HW,
>> +        .uabi_id = I915_EXEC_VEBOX,
>> +        .class = VIDEO_ENHANCEMENT_CLASS,
>> +        .instance = 1,
>> +        .mmio_base = GEN11_VEBOX2_RING_BASE,
>> +        .irq_shift = 0, /* not used */
>> +    },
>>   };
>>   /**
>> @@ -230,7 +254,25 @@ intel_engine_setup(struct drm_i915_private 
>> *dev_priv,
>>                class_info->name, info->instance) >=
>>           sizeof(engine->name));
>>       engine->hw_id = engine->guc_id = info->hw_id;
>> -    engine->mmio_base = info->mmio_base;
>> +    if (INTEL_GEN(dev_priv) >= 11) {
>> +        switch (engine->id) {
>> +        case VCS:
>> +            engine->mmio_base = GEN11_BSD_RING_BASE;
>> +            break;
>> +        case VCS2:
>> +            engine->mmio_base = GEN11_BSD2_RING_BASE;
>> +            break;
>> +        case VECS:
>> +            engine->mmio_base = GEN11_VEBOX_RING_BASE;
>> +            break;
>> +        default:
>> +            /* take the original value for all other engines  */
>> +            engine->mmio_base = info->mmio_base;
>> +            break;
>> +        }
> 
> I'm slightly unconvinced by the fact that we have a static table with 
> some values and then we use other values here. Maybe we could instead 
> use and array of [starting_gen, mmio_base] pairs in the table and derive 
> the correct value here? Anyway, since this is not the only place where 
> we don't use the mmio_base value from the table (same happens for 
> pre-gen6 BSD in intel_init_bsd_ring_buffer) I don't consider this a 
> blocking issue. All the values match the specs, so:
> 
> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> 
> I'll probably check how using the table I mentioned above looks like 
> after this is merged and I'll send an RFC if it seems nice.

Agreed it is inelegant to diverge. Your idea sounds potentially OK. Or 
even just duplicate the whole table for < gen6 and >= gen11 - they are 
not too big.

Regards,

Tvrtko

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2018-03-07  8:02 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-02 16:14 [PATCH 1/6] drm/i915/icl: Ringbuffer interrupt handling Mika Kuoppala
2018-03-02 16:14 ` [PATCH 2/6] drm/i915/icl: Correctly initialize the Gen11 engines Mika Kuoppala
2018-03-06 22:07   ` Daniele Ceraolo Spurio
2018-03-07  8:02     ` Tvrtko Ursulin [this message]
2018-03-02 16:14 ` [PATCH 3/6] drm/i915/icl: new context descriptor support Mika Kuoppala
2018-03-06 22:27   ` Oscar Mateo
2018-03-02 16:14 ` [PATCH 4/6] drm/i915/icl: Enhanced execution list support Mika Kuoppala
2018-03-07 12:45   ` Chris Wilson
2018-03-02 16:15 ` [PATCH 5/6] drm/i915/icl: Add Indirect Context Offset for Gen11 Mika Kuoppala
2018-03-02 16:15 ` [PATCH 6/6] drm/i915/icl: Gen11 forcewake support Mika Kuoppala
2018-03-02 16:43 ` ✓ Fi.CI.BAT: success for series starting with [1/6] drm/i915/icl: Ringbuffer interrupt handling Patchwork
2018-03-02 19:57 ` ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bbb82f01-e04e-045e-d5f4-0398bfea7cf4@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=daniele.ceraolospurio@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=mika.kuoppala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.