From: Matt Roper <matthew.d.roper@intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: <igt-dev@lists.freedesktop.org>
Subject: Re: [PATCH i-g-t 6/6] tools/intel_reg: Add forcewake support to xe
Date: Fri, 20 Sep 2024 11:01:35 -0700 [thread overview]
Message-ID: <20240920180135.GR5774@mdroper-desk1.amr.corp.intel.com> (raw)
In-Reply-To: <20240918163629.1186314-7-lucas.demarchi@intel.com>
On Wed, Sep 18, 2024 at 09:36:29AM -0700, Lucas De Marchi wrote:
> Now that the igt lib is prepared, start passing the open driver fd so
> the correct forcewake is taken.
>
> Before:
> $ sudo ./build/tools/intel_reg read 0x2358
> (0x00002358): 0xffffffff
Hmm, this example makes me wonder if we actually should have called this
top-level "forcewake_all" debugfs node something else. This example
shows that we're not relying on this interface solely for forcewake
purposes, but as a wider "wake everything up and make sure it's
accessible" interface. At the hardware level, forcewake deals only with
the GT-specific ability to exit+suppress RC6; if we read GT registers
while in RC6, we'll get back 0x0 as a result (which isn't what we see
here).
The failures we had here were because the device itself had gone into
runtime D3 (so register reads come back as ~0); using forcewake
indirectly suppresses runtime D3 as a side effect. But if you'd wanted
to read a non-GT register (sgunit, display, etc.), those register reads
also would have failed before this change due to D3, even though the
registers themselves don't need forcewake. So we're in a situation
where we also rely on the "forcewake" interface for reading/writing
non-GT registers that don't care about forcewake.
If a future platform adds, for example, a new sleep + wakelock system to
part of the sgunit, do we want to make this debugfs automatically wake
the sgunit too in case we want to read its registers? For that matter,
should this device-level "wake up everything so we can read registers"
interface also be grabbing all of our display power wells by default?
Anyway, I'm probably overthinking this; we don't need to worry about it
for this patch series.
>
> After:
> $ sudo ./build/tools/intel_reg read 0x2358
> Opened device: /dev/dri/card0
> (0x00002358): 0x91e59eeb
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
> tools/intel_reg.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/tools/intel_reg.c b/tools/intel_reg.c
> index 906ae9b84..b650c3697 100644
> --- a/tools/intel_reg.c
> +++ b/tools/intel_reg.c
> @@ -802,7 +802,18 @@ static int parse_reg(struct config *config, struct reg *reg, const char *s)
>
> static int register_access_init(struct config *config)
> {
> - return intel_register_access_init(&config->mmio_data, config->pci_dev, 0, -1);
> + int drm_fd = __drm_open_driver(DRIVER_INTEL | DRIVER_XE);
> + int ret;
> +
> + if (drm_fd < 0) {
> + fprintf(stderr, "could not open i915 or xe device\n");
> + return EXIT_FAILURE;
> + }
> +
> + ret = intel_register_access_init(&config->mmio_data, config->pci_dev, 0, drm_fd);
> + close(drm_fd);
> +
> + return ret;
As noted on the previous patch, if we get here, it's always a 'return 0'
since intel_register_access_init() can't fail (and should probably have
just been a void function). But not a blocker.
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Matt
> }
>
> /* XXX: add support for register ranges, maybe REGISTER..REGISTER */
> --
> 2.46.1
>
--
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation
next prev parent reply other threads:[~2024-09-20 18:01 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-18 16:36 [PATCH i-g-t 0/6] Add forcewake support for xe Lucas De Marchi
2024-09-18 16:36 ` [PATCH i-g-t 1/6] lib/igt_gt: Fix forcewake open Lucas De Marchi
2024-09-20 16:58 ` Matt Roper
2024-09-18 16:36 ` [PATCH i-g-t 2/6] lib/igt_gt: Document fd argument in igt_open_forcewake_handle() Lucas De Marchi
2024-09-20 17:15 ` Matt Roper
2024-09-20 20:20 ` Lucas De Marchi
2024-09-18 16:36 ` [PATCH i-g-t 3/6] lib/igt_gt: Make igt_open_forcewake_handle() xe-compatible Lucas De Marchi
2024-09-20 17:17 ` Matt Roper
2024-09-18 16:36 ` [PATCH i-g-t 4/6] lib/igt_gt: Fallback on filenames in igt_open_forcewake_handle() Lucas De Marchi
2024-09-18 19:16 ` [PATCH i-g-t v1.1] " Lucas De Marchi
2024-09-20 17:27 ` Matt Roper
2024-09-18 16:36 ` [PATCH i-g-t 5/6] tools/intel_reg: Add wrapper for reg access init Lucas De Marchi
2024-09-20 17:35 ` Matt Roper
2024-09-18 16:36 ` [PATCH i-g-t 6/6] tools/intel_reg: Add forcewake support to xe Lucas De Marchi
2024-09-20 17:43 ` Ville Syrjälä
2024-09-20 18:01 ` Matt Roper [this message]
2024-09-20 18:04 ` Matt Roper
2024-09-20 18:30 ` Ville Syrjälä
2024-09-20 19:43 ` Lucas De Marchi
2024-09-18 17:47 ` ✓ CI.xeBAT: success for Add forcewake support for xe Patchwork
2024-09-18 17:48 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-09-18 19:42 ` ✓ CI.xeBAT: success for Add forcewake support for xe (rev2) Patchwork
2024-09-18 19:54 ` ✓ Fi.CI.BAT: " Patchwork
2024-09-19 3:57 ` ✗ CI.xeFULL: failure for Add forcewake support for xe Patchwork
2024-09-19 6:06 ` ✗ CI.xeFULL: failure for Add forcewake support for xe (rev2) Patchwork
2024-09-19 7:27 ` ✗ 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=20240920180135.GR5774@mdroper-desk1.amr.corp.intel.com \
--to=matthew.d.roper@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=lucas.demarchi@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