From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v2 8/9] drm/i915/perf: Add engine class instance parameters to perf
Date: Tue, 21 Feb 2023 15:53:57 -0800 [thread overview]
Message-ID: <87a616bmne.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <20230217005850.2511422-9-umesh.nerlige.ramappa@intel.com>
On Thu, 16 Feb 2023 16:58:49 -0800, Umesh Nerlige Ramappa wrote:
>
Hi Umesh,
Patch is mostly ok but a few questions below:
> Current implementation of perf defaults to render and configures the
> default OAG unit. Since there are more OA units on newer hardware, allow
> user to pass engine class and instance to program specific OA units.
I think we should more clearly say here that the OA unit is identified by
means of one of the engines (class/instance of that engine) associated with
that OA unit. The engine -> OA unit mapping is a static mapping depending
on the particular platform. Something like that.
>
> UMD specific changes for GPUvis support:
> https://patchwork.freedesktop.org/patch/522827/?series=114023
> https://patchwork.freedesktop.org/patch/522822/?series=114023
> https://patchwork.freedesktop.org/patch/522826/?series=114023
> https://patchwork.freedesktop.org/patch/522828/?series=114023
> https://patchwork.freedesktop.org/patch/522816/?series=114023
> https://patchwork.freedesktop.org/patch/522825/?series=114023
>
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
> ---
> drivers/gpu/drm/i915/i915_perf.c | 49 +++++++++++++++++++-------------
> include/uapi/drm/i915_drm.h | 20 +++++++++++++
> 2 files changed, 49 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index d3a1892c93be..f028df812067 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -4035,40 +4035,29 @@ static int read_properties_unlocked(struct i915_perf *perf,
> struct drm_i915_gem_context_param_sseu user_sseu;
> u64 __user *uprop = uprops;
> bool config_sseu = false;
> + u8 class, instance;
> u32 i;
> int ret;
>
> memset(props, 0, sizeof(struct perf_open_properties));
> props->poll_oa_period = DEFAULT_POLL_PERIOD_NS;
>
> - if (!n_props) {
> - drm_dbg(&perf->i915->drm,
> - "No i915 perf properties given\n");
> - return -EINVAL;
> - }
> -
> - /* At the moment we only support using i915-perf on the RCS. */
> - props->engine = intel_engine_lookup_user(perf->i915,
> - I915_ENGINE_CLASS_RENDER,
> - 0);
> - if (!props->engine) {
> - drm_dbg(&perf->i915->drm,
> - "No RENDER-capable engines\n");
> - return -EINVAL;
> - }
> -
> /* Considering that ID = 0 is reserved and assuming that we don't
> * (currently) expect any configurations to ever specify duplicate
> * values for a particular property ID then the last _PROP_MAX value is
> * one greater than the maximum number of properties we expect to get
> * from userspace.
> */
> - if (n_props >= DRM_I915_PERF_PROP_MAX) {
> + if (!n_props || n_props >= DRM_I915_PERF_PROP_MAX) {
> drm_dbg(&perf->i915->drm,
> - "More i915 perf properties specified than exist\n");
> + "Invalid no. of i915 perf properties given\n");
Invalid number
> return -EINVAL;
> }
>
> + /* Defaults when class:instance is not passed */
> + class = I915_ENGINE_CLASS_RENDER;
> + instance = 0;
> +
> for (i = 0; i < n_props; i++) {
> u64 oa_period, oa_freq_hz;
> u64 id, value;
> @@ -4189,7 +4178,13 @@ static int read_properties_unlocked(struct i915_perf *perf,
> }
> props->poll_oa_period = value;
> break;
> - case DRM_I915_PERF_PROP_MAX:
> + case DRM_I915_PERF_PROP_OA_ENGINE_CLASS:
> + class = (u8)value;
> + break;
> + case DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE:
> + instance = (u8)value;
> + break;
> + default:
> MISSING_CASE(id);
> return -EINVAL;
> }
> @@ -4197,6 +4192,17 @@ static int read_properties_unlocked(struct i915_perf *perf,
> uprop += 2;
> }
>
> + props->engine = intel_engine_lookup_user(perf->i915, class, instance);
> + if (!props->engine) {
> + drm_dbg(&perf->i915->drm,
> + "OA engine class and instance invalid %d:%d\n",
> + class, instance);
> + return -EINVAL;
> + }
> +
> + if (!engine_supports_oa(props->engine))
> + return -EINVAL;
Need drm_dbg here too?
> +
> if (config_sseu) {
> ret = get_sseu_config(&props->sseu, props->engine, &user_sseu);
> if (ret) {
> @@ -5208,8 +5214,11 @@ int i915_perf_ioctl_version(void)
> *
> * 5: Add DRM_I915_PERF_PROP_POLL_OA_PERIOD parameter that controls the
> * interval for the hrtimer used to check for OA data.
> + *
> + * 6: Add DRM_I915_PERF_PROP_OA_ENGINE_CLASS and
> + * DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE
> */
> - return 5;
> + return 6;
Do we need a separate revision for this? Maybe club it with OAM support
since that is where this is getting introduced?
> }
>
> #if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
> diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
> index 8df261c5ab9b..b6922b52d85c 100644
> --- a/include/uapi/drm/i915_drm.h
> +++ b/include/uapi/drm/i915_drm.h
> @@ -2758,6 +2758,26 @@ enum drm_i915_perf_property_id {
> */
> DRM_I915_PERF_PROP_POLL_OA_PERIOD,
>
> + /**
> + * In platforms with multiple OA buffers, the engine class instance must
> + * be passed to open a stream to a OA unit corresponding to the engine.
> + * Multiple engines may be mapped to the same OA unit.
> + *
> + * In addition to the class:instance, if a gem context is also passed, then
> + * 1) the report headers of OA reports from other engines are squashed.
Other engines or you mean other contexts?
> + * 2) OAR is enabled for the class:instance
For render engine?
Maybe the above comments need to be more crisp since they are in i915_drm.h
or is it only I who is confused :)
> + *
> + * This property is available in perf revision 6.
> + */
> + DRM_I915_PERF_PROP_OA_ENGINE_CLASS,
> +
> + /**
> + * This parameter specifies the engine instance.
> + *
> + * This property is available in perf revision 6.
> + */
> + DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE,
> +
> DRM_I915_PERF_PROP_MAX /* non-ABI */
> };
>
> --
> 2.36.1
>
Thanks.
--
Ashutosh
next prev parent reply other threads:[~2023-02-21 23:54 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-17 0:58 [Intel-gfx] [PATCH v2 0/9] Add OAM support for MTL Umesh Nerlige Ramappa
2023-02-17 0:58 ` [Intel-gfx] [PATCH v2 1/9] drm/i915/perf: Drop wakeref on GuC RC error Umesh Nerlige Ramappa
2023-02-17 0:58 ` [Intel-gfx] [PATCH v2 2/9] drm/i915/perf: Add helper to check supported OA engines Umesh Nerlige Ramappa
2023-02-17 0:58 ` [Intel-gfx] [PATCH v2 3/9] drm/i915/perf: Validate OA sseu config outside switch Umesh Nerlige Ramappa
2023-02-17 1:10 ` Dixit, Ashutosh
2023-02-17 0:58 ` [Intel-gfx] [PATCH v2 4/9] drm/i915/perf: Group engines into respective OA groups Umesh Nerlige Ramappa
2023-02-22 21:52 ` Dixit, Ashutosh
2023-02-24 17:30 ` Umesh Nerlige Ramappa
2023-02-17 0:58 ` [Intel-gfx] [PATCH v2 5/9] drm/i915/perf: Fail modprobe if i915_perf_init fails on OOM Umesh Nerlige Ramappa
2023-02-17 2:04 ` Dixit, Ashutosh
2023-02-17 9:55 ` Jani Nikula
2023-02-17 0:58 ` [Intel-gfx] [PATCH v2 6/9] drm/i915/perf: Parse 64bit report header formats correctly Umesh Nerlige Ramappa
2023-02-21 22:14 ` Dixit, Ashutosh
2023-02-17 0:58 ` [Intel-gfx] [PATCH v2 7/9] drm/i915/perf: Handle non-power-of-2 reports Umesh Nerlige Ramappa
2023-02-17 20:58 ` Dixit, Ashutosh
2023-02-18 0:05 ` Umesh Nerlige Ramappa
2023-02-18 1:57 ` Dixit, Ashutosh
2023-02-21 18:51 ` Dixit, Ashutosh
2023-02-24 19:12 ` Umesh Nerlige Ramappa
2023-02-17 0:58 ` [Intel-gfx] [PATCH v2 8/9] drm/i915/perf: Add engine class instance parameters to perf Umesh Nerlige Ramappa
2023-02-17 23:37 ` Umesh Nerlige Ramappa
2023-02-21 23:53 ` Dixit, Ashutosh [this message]
2023-02-22 0:10 ` Dixit, Ashutosh
2023-02-24 19:37 ` Umesh Nerlige Ramappa
2023-02-24 20:48 ` Dixit, Ashutosh
2023-02-17 0:58 ` [Intel-gfx] [PATCH v2 9/9] drm/i915/perf: Add support for OA media units Umesh Nerlige Ramappa
2023-02-17 23:37 ` Umesh Nerlige Ramappa
2023-02-23 20:05 ` Dixit, Ashutosh
2023-02-25 0:58 ` Umesh Nerlige Ramappa
2023-02-25 3:58 ` Dixit, Ashutosh
2023-02-17 1:35 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Add OAM support for MTL (rev2) Patchwork
2023-02-17 1:55 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-02-17 16:09 ` [Intel-gfx] ✓ 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=87a616bmne.wl-ashutosh.dixit@intel.com \
--to=ashutosh.dixit@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=umesh.nerlige.ramappa@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox