[Intel-gfx] [PATCH v2 4/9] drm/i915/perf: Group engines into respective OA groups
Umesh Nerlige Ramappa
umesh.nerlige.ramappa at intel.com
Fri Feb 24 17:30:18 UTC 2023
On Wed, Feb 22, 2023 at 01:52:23PM -0800, Dixit, Ashutosh wrote:
>On Thu, 16 Feb 2023 16:58:45 -0800, Umesh Nerlige Ramappa wrote:
>>
>
>Hi Umesh,
>
>> Now that we may have multiple OA units in a single GT as well as on
>> separate GTs, create an engine group that maps to a single OA unit.
>>
>> v2: (Jani)
>> - Drop warning on ENOMEM
>> - Reorder patch in the series
>>
>> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
>> ---
>> drivers/gpu/drm/i915/gt/intel_engine_types.h | 4 +
>> drivers/gpu/drm/i915/gt/intel_sseu.c | 3 +-
>> drivers/gpu/drm/i915/i915_perf.c | 124 +++++++++++++++++--
>> drivers/gpu/drm/i915/i915_perf_types.h | 51 +++++++-
>> 4 files changed, 169 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h
>> index 4fd54fb8810f..8a8b0dce241b 100644
>> --- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
>> +++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
>> @@ -53,6 +53,8 @@ struct intel_gt;
>> struct intel_ring;
>> struct intel_uncore;
>> struct intel_breadcrumbs;
>> +struct intel_engine_cs;
>> +struct i915_perf_group;
>>
>> typedef u32 intel_engine_mask_t;
>> #define ALL_ENGINES ((intel_engine_mask_t)~0ul)
>> @@ -603,6 +605,8 @@ struct intel_engine_cs {
>> } props, defaults;
>>
>> I915_SELFTEST_DECLARE(struct fault_attr reset_timeout);
>> +
>> + struct i915_perf_group *oa_group;
>
>I think 'struct i915_oa_unit' is a better name (since it suggests a HW
>entity), but since if we change we'll need to change everywhere so leave as
>is with a comment to the effect that:
>
> 1 OA unit <-> 1 OA buffer <-> 1 perf group
>
>> };
>>
>> static inline bool
>> diff --git a/drivers/gpu/drm/i915/gt/intel_sseu.c b/drivers/gpu/drm/i915/gt/intel_sseu.c
>> index 6c6198a257ac..1141f875f5bd 100644
>> --- a/drivers/gpu/drm/i915/gt/intel_sseu.c
>> +++ b/drivers/gpu/drm/i915/gt/intel_sseu.c
>> @@ -6,6 +6,7 @@
>> #include <linux/string_helpers.h>
>>
>> #include "i915_drv.h"
>> +#include "i915_perf_types.h"
>> #include "intel_engine_regs.h"
>> #include "intel_gt_regs.h"
>> #include "intel_sseu.h"
>> @@ -677,7 +678,7 @@ u32 intel_sseu_make_rpcs(struct intel_gt *gt,
>> * If i915/perf is active, we want a stable powergating configuration
>> * on the system. Use the configuration pinned by i915/perf.
>> */
>> - if (gt->perf.exclusive_stream)
>> + if (gt->perf.group && gt->perf.group[PERF_GROUP_OAG].exclusive_stream)
>
>I haven't looked into what this function does, hopefully ok to do this only
>for OAG?
This function builds the value that should be programmed into
PWR_CLK_STATE register which exists only for render.
Will add remaining comments
Thanks,
Umesh
More information about the Intel-gfx
mailing list