From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: intel-xe@lists.freedesktop.org
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Subject: [PATCH v3 resend 8/8] drm/xe: Split init of xe_gt_init_hwconfig to xe_gt_init and *_early
Date: Tue, 29 Oct 2024 16:00:05 +0100 [thread overview]
Message-ID: <20241029150005.68440-9-maarten.lankhorst@linux.intel.com> (raw)
In-Reply-To: <20241029150005.68440-1-maarten.lankhorst@linux.intel.com>
Now that we added the separate step of initialising GUC in
xe_gt_init_early, it should be ok to initialise the minimum during early
init, and the rest after allocations are allowed.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 6 ----
drivers/gpu/drm/xe/xe_gt.c | 66 +++++++++++++++++-----------------
drivers/gpu/drm/xe/xe_gt.h | 1 -
3 files changed, 32 insertions(+), 41 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 0d662158fc83a..9116e513dc4bc 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -664,12 +664,6 @@ int xe_device_probe(struct xe_device *xe)
return err;
}
- for_each_gt(gt, xe, id) {
- err = xe_gt_init_hwconfig(gt);
- if (err)
- return err;
- }
-
err = xe_devcoredump_init(xe);
if (err)
return err;
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index 59f26ef6e68bc..2ed2a6d643e9c 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -363,6 +363,21 @@ int xe_gt_record_default_lrcs(struct xe_gt *gt)
return err;
}
+static int gt_init_mcr(struct xe_gt *gt)
+{
+ unsigned int fw_ref;
+
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return -ETIMEDOUT;
+
+ xe_gt_mcr_init_early(gt);
+ xe_pat_init(gt);
+
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ return 0;
+}
+
int xe_gt_init_early(struct xe_gt *gt)
{
int err;
@@ -393,7 +408,11 @@ int xe_gt_init_early(struct xe_gt *gt)
*/
xe_gt_mmio_init(gt);
- return xe_uc_init_noalloc(>->uc);
+ err = xe_uc_init_noalloc(>->uc);
+ if (err)
+ return err;
+
+ return gt_init_mcr(gt);
}
static void dump_pat_on_error(struct xe_gt *gt)
@@ -418,6 +437,18 @@ static int gt_fw_domain_init(struct xe_gt *gt)
goto err_hw_fence_irq;
}
+ err = xe_uc_init(>->uc);
+ if (err)
+ goto err_force_wake;
+
+ err = xe_uc_init_hwconfig(>->uc);
+ if (err)
+ goto err_force_wake;
+
+ xe_gt_topology_init(gt);
+ xe_gt_mcr_init(gt);
+ xe_gt_enable_host_l2_vram(gt);
+
if (!xe_gt_is_media_type(gt)) {
err = xe_ggtt_init(gt_to_tile(gt)->mem.ggtt);
if (err)
@@ -549,39 +580,6 @@ static int all_fw_domain_init(struct xe_gt *gt)
return err;
}
-/*
- * Initialize enough GT to be able to load GuC in order to obtain hwconfig and
- * enable CTB communication.
- */
-int xe_gt_init_hwconfig(struct xe_gt *gt)
-{
- unsigned int fw_ref;
- int err;
-
- fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (!fw_ref)
- return -ETIMEDOUT;
-
- xe_gt_mcr_init_early(gt);
- xe_pat_init(gt);
-
- err = xe_uc_init(>->uc);
- if (err)
- goto out_fw;
-
- err = xe_uc_init_hwconfig(>->uc);
- if (err)
- goto out_fw;
-
- xe_gt_topology_init(gt);
- xe_gt_mcr_init(gt);
- xe_gt_enable_host_l2_vram(gt);
-
-out_fw:
- xe_force_wake_put(gt_to_fw(gt), fw_ref);
- return err;
-}
-
int xe_gt_init(struct xe_gt *gt)
{
int err;
diff --git a/drivers/gpu/drm/xe/xe_gt.h b/drivers/gpu/drm/xe/xe_gt.h
index 82b9b7f82fcab..0c026cc91ffe9 100644
--- a/drivers/gpu/drm/xe/xe_gt.h
+++ b/drivers/gpu/drm/xe/xe_gt.h
@@ -28,7 +28,6 @@ static inline bool xe_fault_inject_gt_reset(void)
}
struct xe_gt *xe_gt_alloc(struct xe_tile *tile);
-int xe_gt_init_hwconfig(struct xe_gt *gt);
int xe_gt_init_early(struct xe_gt *gt);
int xe_gt_init(struct xe_gt *gt);
void xe_gt_mmio_init(struct xe_gt *gt);
--
2.45.2
next prev parent reply other threads:[~2024-10-29 15:00 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-29 14:59 [PATCH v3 resend 0/8] (CI) drm/xe: Fix initial framebuffer handover Maarten Lankhorst
2024-10-29 14:59 ` [PATCH v3 resend 1/8] drm/xe: Remove double pageflip Maarten Lankhorst
2024-10-29 14:59 ` [PATCH v3 resend 2/8] drm/i915/display: Use async flip when available for initial plane config Maarten Lankhorst
2024-10-29 19:08 ` Ville Syrjälä
2024-10-29 15:00 ` [PATCH v3 resend 3/8] drm/xe: Move suballocator init to after display init Maarten Lankhorst
2024-10-29 15:00 ` [PATCH v3 resend 4/8] drm/xe: Defer irq init until after xe_display_init_noaccel Maarten Lankhorst
2024-10-29 15:00 ` [PATCH v3 resend 5/8] drm/xe/display: Use a single early init call for display Maarten Lankhorst
2024-10-30 8:45 ` [PATCH v3.1 resend] " Maarten Lankhorst
2024-10-29 15:00 ` [PATCH v3 resend 6/8] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init Maarten Lankhorst
2024-10-29 15:00 ` [PATCH v3 resend 7/8] drm/xe: Simplify GuC early initialisation Maarten Lankhorst
2024-10-30 11:27 ` [PATCH v3.1 resend] " Maarten Lankhorst
2024-10-29 15:00 ` Maarten Lankhorst [this message]
2024-10-29 18:07 ` ✓ CI.Patch_applied: success for (CI) drm/xe: Fix initial framebuffer handover Patchwork
2024-10-29 18:07 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-29 18:08 ` ✗ CI.KUnit: failure " Patchwork
2024-10-30 9:31 ` ✓ CI.Patch_applied: success for (CI) drm/xe: Fix initial framebuffer handover. (rev2) Patchwork
2024-10-30 9:31 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-30 9:32 ` ✗ CI.KUnit: failure " Patchwork
2024-10-30 11:33 ` ✓ CI.Patch_applied: success for (CI) drm/xe: Fix initial framebuffer handover. (rev3) Patchwork
2024-10-30 11:33 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-30 11:34 ` ✓ CI.KUnit: success " Patchwork
2024-10-30 11:46 ` ✓ CI.Build: " Patchwork
2024-10-30 11:48 ` ✓ CI.Hooks: " Patchwork
2024-10-30 11:50 ` ✗ CI.checksparse: warning " Patchwork
2024-10-30 12:16 ` ✗ CI.BAT: failure " Patchwork
2024-10-30 13:41 ` ✗ CI.FULL: " 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=20241029150005.68440-9-maarten.lankhorst@linux.intel.com \
--to=maarten.lankhorst@linux.intel.com \
--cc=intel-xe@lists.freedesktop.org \
/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.