From: Matthew Brost <matthew.brost@intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>,
<intel-xe@lists.freedesktop.org>, <vinay.belgaumkar@intel.com>,
<michal.winiarski@intel.com>
Subject: Re: [PATCH 1/5] drm/xe: Drop __engine_mask
Date: Tue, 30 Apr 2024 15:56:11 +0000 [thread overview]
Message-ID: <ZjEUm9LD8irh+eKh@DUT025-TGLU.fm.intel.com> (raw)
In-Reply-To: <2nxudidnseyqjxa7fsug2nnrudaysoqysl5vp2ftr4ikt6u4cw@ufsbnqheyovt>
On Mon, Apr 29, 2024 at 04:03:25PM -0500, Lucas De Marchi wrote:
> On Mon, Apr 29, 2024 at 08:36:04PM GMT, Matthew Brost wrote:
> > On Mon, Apr 29, 2024 at 04:29:34PM -0400, Rodrigo Vivi wrote:
> > > On Thu, Apr 25, 2024 at 11:24:06AM -0700, Lucas De Marchi wrote:
> > > > Not really used, it's just a copy of engine_mask, which already reads
> > > > the fuses to mark engines as available/not-available.
> > >
> > > I got confused trying to understand why this ever existed.
> > > It indeed doesn't make much sense on today's code.
> > >
> >
> > That was my doing with the intent that we never use the engine mask
> > until after hwconfig load as the engine mask would be read from that. Or
> > alternatively in SRIOV via CTB (or MMIO) relays.
> >
> > i.e. it was fake way to enforce correct load ordering.
>
> but we never used it from hwconfig (instead we kept the fake copy here)
> and we never will as it doesn't have the info we need.
>
> Instead we just went out of our way and started using __engine_mask
> instead where needed. See e.g. drivers/gpu/drm/xe/xe_migrate.c. I fail to
> see how exactly this enforces the correct load ordering. At most it
> would return the wrong value and we would silently ignore it (e.g. if we
> had a call like xe_hw_engine_mask_per_class() before that point since it
> uses gt->info.engine_mask).
>
> For SR-IOV, nothing overrides engine_mask anywhere. Not even if I look
> at the wip branch for VF. So, I'd say that if VF needs it, then please
> add the prep together with patches making use of that because the way it
> is is now it's too fragile.
>
They should read the fuses via a GuC relay.
> >
> > Assuming fuses are read after this removed LoC, the load ordering is
> > correct.
>
> fuses are read much much earlier than that, in xe_pci.c. Why would it be
> wrong?
>
I was thinking the fuse read required hwconfig step (also brings up
CTBs) but now that I think about this, I believe the fuses can be read
via a MMIO relay so the current location probably works. Double check
with Michal Winarski on that.
Anyways don't let anything I say hold this up.
Matt
> Lucas De Marchi
>
> >
> > Matt
> >
> > > >
> > > > While at it, use XE_HW_ENGINE_BCS_MASK to span all copy engines.
> > > >
> > > > Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> > >
> > >
> > > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > >
> > >
> > > > ---
> > > > drivers/gpu/drm/xe/xe_gt.c | 3 ---
> > > > drivers/gpu/drm/xe/xe_gt_types.h | 6 ------
> > > > drivers/gpu/drm/xe/xe_migrate.c | 3 +--
> > > > drivers/gpu/drm/xe/xe_pci.c | 6 +++---
> > > > 4 files changed, 4 insertions(+), 14 deletions(-)
> > > >
> > > > diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> > > > index e922e77f5010..00a22cf2f5b5 100644
> > > > --- a/drivers/gpu/drm/xe/xe_gt.c
> > > > +++ b/drivers/gpu/drm/xe/xe_gt.c
> > > > @@ -515,9 +515,6 @@ int xe_gt_init_hwconfig(struct xe_gt *gt)
> > > > if (err)
> > > > goto out_fw;
> > > >
> > > > - /* XXX: Fake that we pull the engine mask from hwconfig blob */
> > > > - gt->info.engine_mask = gt->info.__engine_mask;
> > > > -
> > > > out_fw:
> > > > xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
> > > > out:
> > > > diff --git a/drivers/gpu/drm/xe/xe_gt_types.h b/drivers/gpu/drm/xe/xe_gt_types.h
> > > > index cfdc761ff7f4..72568414fb7d 100644
> > > > --- a/drivers/gpu/drm/xe/xe_gt_types.h
> > > > +++ b/drivers/gpu/drm/xe/xe_gt_types.h
> > > > @@ -116,12 +116,6 @@ struct xe_gt {
> > > > u32 reference_clock;
> > > > /** @info.engine_mask: mask of engines present on GT */
> > > > u64 engine_mask;
> > > > - /**
> > > > - * @info.__engine_mask: mask of engines present on GT read from
> > > > - * xe_pci.c, used to fake reading the engine_mask from the
> > > > - * hwconfig blob.
> > > > - */
> > > > - u64 __engine_mask;
> > > > /** @info.gmdid: raw GMD_ID value from hardware */
> > > > u32 gmdid;
> > > > } info;
> > > > diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
> > > > index 9f6e9b7f11c8..59a3f24d31e6 100644
> > > > --- a/drivers/gpu/drm/xe/xe_migrate.c
> > > > +++ b/drivers/gpu/drm/xe/xe_migrate.c
> > > > @@ -936,8 +936,7 @@ static bool has_service_copy_support(struct xe_gt *gt)
> > > > * all of the actual service copy engines (BCS1-BCS8) have been fused
> > > > * off.
> > > > */
> > > > - return gt->info.__engine_mask & GENMASK(XE_HW_ENGINE_BCS8,
> > > > - XE_HW_ENGINE_BCS1);
> > > > + return gt->info.engine_mask & XE_HW_ENGINE_BCS_MASK;
> > > > }
> > > >
> > > > static u32 emit_clear_cmd_len(struct xe_gt *gt)
> > > > diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> > > > index a0cf5dd803c2..6b2086ea24ab 100644
> > > > --- a/drivers/gpu/drm/xe/xe_pci.c
> > > > +++ b/drivers/gpu/drm/xe/xe_pci.c
> > > > @@ -656,9 +656,9 @@ static int xe_info_init(struct xe_device *xe,
> > > > gt = tile->primary_gt;
> > > > gt->info.id = xe->info.gt_count++;
> > > > gt->info.type = XE_GT_TYPE_MAIN;
> > > > - gt->info.__engine_mask = graphics_desc->hw_engine_mask;
> > > > + gt->info.engine_mask = graphics_desc->hw_engine_mask;
> > > > if (MEDIA_VER(xe) < 13 && media_desc)
> > > > - gt->info.__engine_mask |= media_desc->hw_engine_mask;
> > > > + gt->info.engine_mask |= media_desc->hw_engine_mask;
> > > >
> > > > if (MEDIA_VER(xe) < 13 || !media_desc)
> > > > continue;
> > > > @@ -673,7 +673,7 @@ static int xe_info_init(struct xe_device *xe,
> > > >
> > > > gt = tile->media_gt;
> > > > gt->info.type = XE_GT_TYPE_MEDIA;
> > > > - gt->info.__engine_mask = media_desc->hw_engine_mask;
> > > > + gt->info.engine_mask = media_desc->hw_engine_mask;
> > > > gt->mmio.adj_offset = MEDIA_GT_GSI_OFFSET;
> > > > gt->mmio.adj_limit = MEDIA_GT_GSI_LENGTH;
> > > >
> > > > --
> > > > 2.43.0
> > > >
next prev parent reply other threads:[~2024-04-30 15:56 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-25 18:24 [PATCH 0/5] drm/xe: Fix early probe order Lucas De Marchi
2024-04-25 18:24 ` [PATCH 1/5] drm/xe: Drop __engine_mask Lucas De Marchi
2024-04-29 20:29 ` Rodrigo Vivi
2024-04-29 20:36 ` Matthew Brost
2024-04-29 21:03 ` Lucas De Marchi
2024-04-30 15:56 ` Matthew Brost [this message]
2024-05-02 11:54 ` Michal Wajdeczko
2024-05-02 12:55 ` Lucas De Marchi
2024-05-02 14:12 ` Michal Wajdeczko
2024-05-02 17:26 ` Lucas De Marchi
2024-05-02 20:36 ` Michal Wajdeczko
2024-05-09 0:02 ` Michał Winiarski
2024-05-13 21:35 ` Lucas De Marchi
2024-04-25 18:24 ` [PATCH 2/5] drm/xe: Drop useless forcewake get/put Lucas De Marchi
2024-04-26 5:19 ` Matthew Brost
2024-04-26 14:45 ` Dong, Zhanjun
2024-05-09 0:03 ` Michał Winiarski
2024-04-25 18:24 ` [PATCH 3/5] drm/xe: Move xe_gt_init_early() where it belongs Lucas De Marchi
2024-04-26 15:52 ` Belgaumkar, Vinay
2024-05-09 0:03 ` Michał Winiarski
2024-04-25 18:24 ` [PATCH 4/5] drm/xe: Move xe_force_wake_init_gt() inside gt initialization Lucas De Marchi
2024-04-29 20:25 ` Rodrigo Vivi
2024-05-09 0:04 ` Michał Winiarski
2024-04-25 18:24 ` [PATCH 5/5] drm/xe: Move sw-only pcode initialization Lucas De Marchi
2024-04-29 20:24 ` Rodrigo Vivi
2024-05-09 0:04 ` Michał Winiarski
2024-04-25 19:16 ` ✓ CI.Patch_applied: success for drm/xe: Fix early probe order Patchwork
2024-04-25 19:16 ` ✓ CI.checkpatch: " Patchwork
2024-04-25 19:17 ` ✓ CI.KUnit: " Patchwork
2024-04-25 19:29 ` ✓ CI.Build: " Patchwork
2024-04-25 19:31 ` ✗ CI.Hooks: failure " Patchwork
2024-04-25 19:37 ` ✗ CI.checksparse: warning " Patchwork
2024-04-25 20:36 ` ✗ CI.BAT: failure " Patchwork
2024-04-26 14:38 ` ✓ CI.Patch_applied: success for drm/xe: Fix early probe order (rev2) Patchwork
2024-04-26 14:39 ` ✓ CI.checkpatch: " Patchwork
2024-04-26 14:40 ` ✓ CI.KUnit: " Patchwork
2024-04-26 14:52 ` ✓ CI.Build: " Patchwork
2024-04-26 14:55 ` ✓ CI.Hooks: " Patchwork
2024-04-26 14:56 ` ✓ CI.checksparse: " Patchwork
2024-04-26 15:23 ` ✗ CI.BAT: failure " Patchwork
2024-04-26 19:50 ` ✗ CI.FULL: " Patchwork
2024-04-30 14:59 ` [PATCH 0/5] drm/xe: Fix early probe order Rodrigo Vivi
2024-05-09 3:54 ` ✗ CI.Patch_applied: failure for drm/xe: Fix early probe order (rev3) 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=ZjEUm9LD8irh+eKh@DUT025-TGLU.fm.intel.com \
--to=matthew.brost@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=lucas.demarchi@intel.com \
--cc=michal.winiarski@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=vinay.belgaumkar@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