From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH 2/7] drm/i915: Use the gt in HAS_ENGINE
Date: Fri, 26 Jun 2020 15:20:23 +0100 [thread overview]
Message-ID: <93448b2b-0384-c839-d545-11fd1a2f6ec8@linux.intel.com> (raw)
In-Reply-To: <20200625234212.22811-3-daniele.ceraolospurio@intel.com>
On 26/06/2020 00:42, Daniele Ceraolo Spurio wrote:
> A follow up patch will move the engine mask under the gt structure,
> so get ready for that.
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> Cc: Andi Shyti <andi.shyti@intel.com>
> ---
> drivers/gpu/drm/i915/gt/intel_engine_cs.c | 2 +-
> drivers/gpu/drm/i915/gt/intel_gt_irq.c | 2 +-
> drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c | 7 ++++---
> drivers/gpu/drm/i915/gvt/handlers.c | 2 +-
> drivers/gpu/drm/i915/gvt/interrupt.c | 2 +-
> drivers/gpu/drm/i915/gvt/mmio_context.c | 2 +-
> drivers/gpu/drm/i915/i915_drv.c | 2 +-
> drivers/gpu/drm/i915/i915_drv.h | 15 ++++++++-------
> drivers/gpu/drm/i915/intel_device_info.c | 13 +++++++------
> drivers/gpu/drm/i915/intel_pm.c | 2 +-
> drivers/gpu/drm/i915/intel_uncore.c | 16 +++++++++-------
> drivers/gpu/drm/i915/intel_uncore.h | 4 +++-
> 12 files changed, 38 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> index 7bf2f76212f0..be92d1ef9aa9 100644
> --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> @@ -473,7 +473,7 @@ int intel_engines_init_mmio(struct intel_gt *gt)
> return -ENODEV;
>
> for (i = 0; i < ARRAY_SIZE(intel_engines); i++) {
> - if (!HAS_ENGINE(i915, i))
> + if (!HAS_ENGINE(gt, i))
> continue;
>
> err = intel_engine_setup(gt, i);
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> index 0cc7dd54f4f9..e1964cf40fd6 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> @@ -457,7 +457,7 @@ void gen5_gt_irq_postinstall(struct intel_gt *gt)
> * RPS interrupts will get enabled/disabled on demand when RPS
> * itself is enabled/disabled.
> */
> - if (HAS_ENGINE(gt->i915, VECS0)) {
> + if (HAS_ENGINE(gt, VECS0)) {
> pm_irqs |= PM_VEBOX_USER_INTERRUPT;
> gt->pm_ier |= PM_VEBOX_USER_INTERRUPT;
> }
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c
> index 101728006ae9..fbdd6b0677db 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c
> @@ -67,7 +67,8 @@ struct __guc_ads_blob {
>
> static void __guc_ads_init(struct intel_guc *guc)
> {
> - struct drm_i915_private *dev_priv = guc_to_gt(guc)->i915;
> + struct intel_gt *gt = guc_to_gt(guc);
> + struct drm_i915_private *dev_priv = gt->i915;
> struct __guc_ads_blob *blob = guc->ads_blob;
> const u32 skipped_size = LRC_PPHWSP_SZ * PAGE_SIZE + LR_HW_CONTEXT_SIZE;
> u32 base;
> @@ -103,8 +104,8 @@ static void __guc_ads_init(struct intel_guc *guc)
> blob->system_info.rcs_enabled = 1;
> blob->system_info.bcs_enabled = 1;
>
> - blob->system_info.vdbox_enable_mask = VDBOX_MASK(dev_priv);
> - blob->system_info.vebox_enable_mask = VEBOX_MASK(dev_priv);
> + blob->system_info.vdbox_enable_mask = VDBOX_MASK(gt);
> + blob->system_info.vebox_enable_mask = VEBOX_MASK(gt);
> blob->system_info.vdbox_sfc_support_mask = RUNTIME_INFO(dev_priv)->vdbox_sfc_access;
>
> base = intel_guc_ggtt_offset(guc, guc->ads_vma);
> diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c
> index 26cae4846c82..ddefc52f6e09 100644
> --- a/drivers/gpu/drm/i915/gvt/handlers.c
> +++ b/drivers/gpu/drm/i915/gvt/handlers.c
> @@ -1867,7 +1867,7 @@ static int csfe_chicken1_mmio_write(struct intel_vgpu *vgpu,
> MMIO_F(prefix(BLT_RING_BASE), s, f, am, rm, d, r, w); \
> MMIO_F(prefix(GEN6_BSD_RING_BASE), s, f, am, rm, d, r, w); \
> MMIO_F(prefix(VEBOX_RING_BASE), s, f, am, rm, d, r, w); \
> - if (HAS_ENGINE(dev_priv, VCS1)) \
> + if (HAS_ENGINE(&dev_priv->gt, VCS1)) \
> MMIO_F(prefix(GEN8_BSD2_RING_BASE), s, f, am, rm, d, r, w); \
> } while (0)
>
> diff --git a/drivers/gpu/drm/i915/gvt/interrupt.c b/drivers/gpu/drm/i915/gvt/interrupt.c
> index 540017fed908..7498878e6289 100644
> --- a/drivers/gpu/drm/i915/gvt/interrupt.c
> +++ b/drivers/gpu/drm/i915/gvt/interrupt.c
> @@ -540,7 +540,7 @@ static void gen8_init_irq(
> SET_BIT_INFO(irq, 4, VCS_MI_FLUSH_DW, INTEL_GVT_IRQ_INFO_GT1);
> SET_BIT_INFO(irq, 8, VCS_AS_CONTEXT_SWITCH, INTEL_GVT_IRQ_INFO_GT1);
>
> - if (HAS_ENGINE(gvt->gt->i915, VCS1)) {
> + if (HAS_ENGINE(gvt->gt, VCS1)) {
> SET_BIT_INFO(irq, 16, VCS2_MI_USER_INTERRUPT,
> INTEL_GVT_IRQ_INFO_GT1);
> SET_BIT_INFO(irq, 20, VCS2_MI_FLUSH_DW,
> diff --git a/drivers/gpu/drm/i915/gvt/mmio_context.c b/drivers/gpu/drm/i915/gvt/mmio_context.c
> index 2ccaf78f96e8..86a60bdf0818 100644
> --- a/drivers/gpu/drm/i915/gvt/mmio_context.c
> +++ b/drivers/gpu/drm/i915/gvt/mmio_context.c
> @@ -171,7 +171,7 @@ static void load_render_mocs(const struct intel_engine_cs *engine)
> return;
>
> for (ring_id = 0; ring_id < cnt; ring_id++) {
> - if (!HAS_ENGINE(engine->i915, ring_id))
> + if (!HAS_ENGINE(engine->gt, ring_id))
> continue;
>
> offset.reg = regs[ring_id];
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 67102dc26fce..1f9c40cf10ae 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -533,7 +533,7 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
>
> intel_device_info_init_mmio(dev_priv);
>
> - intel_uncore_prune_mmio_domains(&dev_priv->uncore);
> + intel_uncore_prune_engine_fw_domains(&dev_priv->uncore, &dev_priv->gt);
>
> intel_uc_init_mmio(&dev_priv->gt.uc);
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 9aad3ec979bd..17cad4e2cb9c 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1560,18 +1560,19 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
> #define IS_GEN9_LP(dev_priv) (IS_GEN(dev_priv, 9) && IS_LP(dev_priv))
> #define IS_GEN9_BC(dev_priv) (IS_GEN(dev_priv, 9) && !IS_LP(dev_priv))
>
> -#define HAS_ENGINE(dev_priv, id) (INTEL_INFO(dev_priv)->engine_mask & BIT(id))
> +#define __HAS_ENGINE(engine_mask, id) ((engine_mask) & BIT(id))
> +#define HAS_ENGINE(gt, id) __HAS_ENGINE(INTEL_INFO((gt)->i915)->engine_mask, id)
>
> -#define ENGINE_INSTANCES_MASK(dev_priv, first, count) ({ \
> +#define ENGINE_INSTANCES_MASK(gt, first, count) ({ \
> unsigned int first__ = (first); \
> unsigned int count__ = (count); \
> - (INTEL_INFO(dev_priv)->engine_mask & \
> + (INTEL_INFO((gt)->i915)->engine_mask & \
> GENMASK(first__ + count__ - 1, first__)) >> first__; \
> })
> -#define VDBOX_MASK(dev_priv) \
> - ENGINE_INSTANCES_MASK(dev_priv, VCS0, I915_MAX_VCS)
> -#define VEBOX_MASK(dev_priv) \
> - ENGINE_INSTANCES_MASK(dev_priv, VECS0, I915_MAX_VECS)
> +#define VDBOX_MASK(gt) \
> + ENGINE_INSTANCES_MASK(gt, VCS0, I915_MAX_VCS)
> +#define VEBOX_MASK(gt) \
> + ENGINE_INSTANCES_MASK(gt, VECS0, I915_MAX_VECS)
>
> /*
> * The Gen7 cmdparser copies the scanned buffer to the ggtt for execution
> diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
> index c27a56aff5de..c0443afa12b9 100644
> --- a/drivers/gpu/drm/i915/intel_device_info.c
> +++ b/drivers/gpu/drm/i915/intel_device_info.c
> @@ -1100,6 +1100,7 @@ void intel_device_info_init_mmio(struct drm_i915_private *dev_priv)
> {
> struct intel_device_info *info = mkwrite_device_info(dev_priv);
> struct intel_uncore *uncore = &dev_priv->uncore;
> + struct intel_gt *gt = &dev_priv->gt;
> unsigned int logical_vdbox = 0;
> unsigned int i;
> u32 media_fuse;
> @@ -1116,7 +1117,7 @@ void intel_device_info_init_mmio(struct drm_i915_private *dev_priv)
> GEN11_GT_VEBOX_DISABLE_SHIFT;
>
> for (i = 0; i < I915_MAX_VCS; i++) {
> - if (!HAS_ENGINE(dev_priv, _VCS(i))) {
> + if (!HAS_ENGINE(gt, _VCS(i))) {
> vdbox_mask &= ~BIT(i);
> continue;
> }
> @@ -1136,11 +1137,11 @@ void intel_device_info_init_mmio(struct drm_i915_private *dev_priv)
> RUNTIME_INFO(dev_priv)->vdbox_sfc_access |= BIT(i);
> }
> drm_dbg(&dev_priv->drm, "vdbox enable: %04x, instances: %04lx\n",
> - vdbox_mask, VDBOX_MASK(dev_priv));
> - GEM_BUG_ON(vdbox_mask != VDBOX_MASK(dev_priv));
> + vdbox_mask, VDBOX_MASK(gt));
> + GEM_BUG_ON(vdbox_mask != VDBOX_MASK(gt));
>
> for (i = 0; i < I915_MAX_VECS; i++) {
> - if (!HAS_ENGINE(dev_priv, _VECS(i))) {
> + if (!HAS_ENGINE(gt, _VECS(i))) {
> vebox_mask &= ~BIT(i);
> continue;
> }
> @@ -1151,6 +1152,6 @@ void intel_device_info_init_mmio(struct drm_i915_private *dev_priv)
> }
> }
> drm_dbg(&dev_priv->drm, "vebox enable: %04x, instances: %04lx\n",
> - vebox_mask, VEBOX_MASK(dev_priv));
> - GEM_BUG_ON(vebox_mask != VEBOX_MASK(dev_priv));
> + vebox_mask, VEBOX_MASK(gt));
> + GEM_BUG_ON(vebox_mask != VEBOX_MASK(gt));
> }
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 2a32d6230795..40f6fe69b70a 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -7105,7 +7105,7 @@ static void tgl_init_clock_gating(struct drm_i915_private *dev_priv)
>
> /* This is not a WA. Enable VD HCP & MFX_ENC powergate */
> for (i = 0; i < I915_MAX_VCS; i++) {
> - if (HAS_ENGINE(dev_priv, _VCS(i)))
> + if (HAS_ENGINE(&dev_priv->gt, _VCS(i)))
> vd_pg_enable |= VDN_HCP_POWERGATE_ENABLE(i) |
> VDN_MFX_POWERGATE_ENABLE(i);
> }
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 592364aed2da..bd4b45191f7b 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -1529,6 +1529,8 @@ static int intel_uncore_fw_domains_init(struct intel_uncore *uncore)
> (ret ?: (ret = __fw_domain_init((uncore__), (id__), (set__), (ack__))))
>
> if (INTEL_GEN(i915) >= 11) {
> + /* we'll prune the domains of missing engines later */
> + intel_engine_mask_t emask = INTEL_INFO(i915)->engine_mask;
> int i;
>
> uncore->funcs.force_wake_get = fw_domains_get_with_fallback;
> @@ -1541,7 +1543,7 @@ static int intel_uncore_fw_domains_init(struct intel_uncore *uncore)
> FORCEWAKE_ACK_BLITTER_GEN9);
>
> for (i = 0; i < I915_MAX_VCS; i++) {
> - if (!HAS_ENGINE(i915, _VCS(i)))
> + if (!__HAS_ENGINE(emask, _VCS(i)))
> continue;
>
> fw_domain_init(uncore, FW_DOMAIN_ID_MEDIA_VDBOX0 + i,
> @@ -1549,7 +1551,7 @@ static int intel_uncore_fw_domains_init(struct intel_uncore *uncore)
> FORCEWAKE_ACK_MEDIA_VDBOX_GEN11(i));
> }
> for (i = 0; i < I915_MAX_VECS; i++) {
> - if (!HAS_ENGINE(i915, _VECS(i)))
> + if (!__HAS_ENGINE(emask, _VECS(i)))
> continue;
>
> fw_domain_init(uncore, FW_DOMAIN_ID_MEDIA_VEBOX0 + i,
> @@ -1844,20 +1846,20 @@ int intel_uncore_init_mmio(struct intel_uncore *uncore)
> * the forcewake domains. Prune them, to make sure they only reference existing
> * engines.
> */
> -void intel_uncore_prune_mmio_domains(struct intel_uncore *uncore)
> +void intel_uncore_prune_engine_fw_domains(struct intel_uncore *uncore,
> + struct intel_gt *gt)
> {
> - struct drm_i915_private *i915 = uncore->i915;
> enum forcewake_domains fw_domains = uncore->fw_domains;
> enum forcewake_domain_id domain_id;
> int i;
>
> - if (!intel_uncore_has_forcewake(uncore) || INTEL_GEN(i915) < 11)
> + if (!intel_uncore_has_forcewake(uncore) || INTEL_GEN(uncore->i915) < 11)
> return;
>
> for (i = 0; i < I915_MAX_VCS; i++) {
> domain_id = FW_DOMAIN_ID_MEDIA_VDBOX0 + i;
>
> - if (HAS_ENGINE(i915, _VCS(i)))
> + if (HAS_ENGINE(gt, _VCS(i)))
> continue;
>
> if (fw_domains & BIT(domain_id))
> @@ -1867,7 +1869,7 @@ void intel_uncore_prune_mmio_domains(struct intel_uncore *uncore)
> for (i = 0; i < I915_MAX_VECS; i++) {
> domain_id = FW_DOMAIN_ID_MEDIA_VEBOX0 + i;
>
> - if (HAS_ENGINE(i915, _VECS(i)))
> + if (HAS_ENGINE(gt, _VECS(i)))
> continue;
>
> if (fw_domains & BIT(domain_id))
> diff --git a/drivers/gpu/drm/i915/intel_uncore.h b/drivers/gpu/drm/i915/intel_uncore.h
> index 8d3aa8b9acf9..c4b22d9d0b45 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.h
> +++ b/drivers/gpu/drm/i915/intel_uncore.h
> @@ -35,6 +35,7 @@
> struct drm_i915_private;
> struct intel_runtime_pm;
> struct intel_uncore;
> +struct intel_gt;
>
> struct intel_uncore_mmio_debug {
> spinlock_t lock; /** lock is also taken in irq contexts. */
> @@ -186,7 +187,8 @@ intel_uncore_mmio_debug_init_early(struct intel_uncore_mmio_debug *mmio_debug);
> void intel_uncore_init_early(struct intel_uncore *uncore,
> struct drm_i915_private *i915);
> int intel_uncore_init_mmio(struct intel_uncore *uncore);
> -void intel_uncore_prune_mmio_domains(struct intel_uncore *uncore);
> +void intel_uncore_prune_engine_fw_domains(struct intel_uncore *uncore,
> + struct intel_gt *gt);
> bool intel_uncore_unclaimed_mmio(struct intel_uncore *uncore);
> bool intel_uncore_arm_unclaimed_mmio_detection(struct intel_uncore *uncore);
> void intel_uncore_fini_mmio(struct intel_uncore *uncore);
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2020-06-26 14:20 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-25 23:42 [Intel-gfx] [PATCH 0/7] Move some device capabilities under intel_gt Daniele Ceraolo Spurio
2020-06-25 23:42 ` [Intel-gfx] [PATCH 1/7] drm/i915: Convert device_info to uncore/de_read Daniele Ceraolo Spurio
2020-06-26 14:18 ` Tvrtko Ursulin
2020-06-25 23:42 ` [Intel-gfx] [PATCH 2/7] drm/i915: Use the gt in HAS_ENGINE Daniele Ceraolo Spurio
2020-06-26 14:20 ` Tvrtko Ursulin [this message]
2020-06-26 14:35 ` Chris Wilson
2020-06-26 17:45 ` Daniele Ceraolo Spurio
2020-06-26 18:03 ` Chris Wilson
2020-06-25 23:42 ` [Intel-gfx] [PATCH 3/7] drm/i915: Move engine-related mmio init to engines_init_mmio Daniele Ceraolo Spurio
2020-06-26 14:38 ` Tvrtko Ursulin
2020-06-26 14:38 ` Chris Wilson
2020-06-26 14:46 ` Daniele Ceraolo Spurio
2020-06-26 14:51 ` Chris Wilson
2020-06-25 23:42 ` [Intel-gfx] [PATCH 4/7] drm/i915: Move the engine mask to intel_gt_info Daniele Ceraolo Spurio
2020-06-26 14:45 ` Tvrtko Ursulin
2020-06-26 16:44 ` Daniele Ceraolo Spurio
2020-06-26 16:50 ` Chris Wilson
2020-06-25 23:42 ` [Intel-gfx] [PATCH 5/7] drm/i915: Introduce gt_init_mmio Daniele Ceraolo Spurio
2020-06-26 14:46 ` Tvrtko Ursulin
2020-06-25 23:42 ` [Intel-gfx] [PATCH 6/7] drm/i915/sseu: Move sseu detection and dump to intel_sseu Daniele Ceraolo Spurio
2020-06-26 15:00 ` Tvrtko Ursulin
2020-06-25 23:42 ` [Intel-gfx] [PATCH 7/7] drm/i915/sseu: Move sseu_info under gt_info Daniele Ceraolo Spurio
2020-06-26 15:22 ` Tvrtko Ursulin
2020-06-26 16:49 ` Daniele Ceraolo Spurio
2020-06-27 8:13 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Move some device capabilities under intel_gt Patchwork
2020-06-27 8:38 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " 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=93448b2b-0384-c839-d545-11fd1a2f6ec8@linux.intel.com \
--to=tvrtko.ursulin@linux.intel.com \
--cc=daniele.ceraolospurio@intel.com \
--cc=intel-gfx@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.