* [PATCH 0/5] More WOPCM fixes
@ 2019-08-15 17:12 Michal Wajdeczko
2019-08-15 17:12 ` [PATCH 1/5] drm/i915/uc: Move FW size sanity check back to fetch Michal Wajdeczko
` (7 more replies)
0 siblings, 8 replies; 15+ messages in thread
From: Michal Wajdeczko @ 2019-08-15 17:12 UTC (permalink / raw)
To: intel-gfx
More WOPCM fixes
Michal Wajdeczko (4):
drm/i915/wopcm: Check WOPCM layout separately from calculations
drm/i915/wopcm: Try to use already locked WOPCM layout
drm/i915/wopcm: Update error messages
drm/i915/wopmc: Fix SPDX tag location
Michał Winiarski (1):
drm/i915/uc: Move FW size sanity check back to fetch
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 11 ++
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h | 7 +-
drivers/gpu/drm/i915/intel_wopcm.c | 191 +++++++++++++++--------
3 files changed, 143 insertions(+), 66 deletions(-)
--
2.19.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread* [PATCH 1/5] drm/i915/uc: Move FW size sanity check back to fetch 2019-08-15 17:12 [PATCH 0/5] More WOPCM fixes Michal Wajdeczko @ 2019-08-15 17:12 ` Michal Wajdeczko 2019-08-15 17:12 ` [PATCH 2/5] drm/i915/wopcm: Check WOPCM layout separately from calculations Michal Wajdeczko ` (6 subsequent siblings) 7 siblings, 0 replies; 15+ messages in thread From: Michal Wajdeczko @ 2019-08-15 17:12 UTC (permalink / raw) To: intel-gfx From: Michał Winiarski <michal.winiarski@intel.com> While we need to know WOPCM size to do this sanity check, it has more to do with FW than with WOPCM. Let's move the check to fetch phase, it's not like WOPCM is going to grow in the meantime. v2: rebased v3: use __intel_uc_fw_get_upload_size (Daniele) Signed-off-by: Michał Winiarski <michal.winiarski@intel.com> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Jackie Li <yaodong.li@intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> --- drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 11 +++++++++++ drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h | 7 ++++++- drivers/gpu/drm/i915/intel_wopcm.c | 14 ++------------ 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c index d056e1f4bd6d..f4a34ea579fd 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c @@ -265,6 +265,7 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw, struct drm_i915_private *i915) size_t size; int err; + GEM_BUG_ON(!i915->wopcm.size); GEM_BUG_ON(!intel_uc_fw_supported(uc_fw)); err = i915_inject_load_error(i915, -ENXIO); @@ -324,6 +325,16 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw, struct drm_i915_private *i915) goto fail; } + /* Sanity check whether this fw is not larger than whole WOPCM memory */ + size = __intel_uc_fw_get_upload_size(uc_fw); + if (unlikely(size >= i915->wopcm.size)) { + dev_warn(dev, "%s firmware %s: invalid size: %zu > %zu\n", + intel_uc_fw_type_repr(uc_fw->type), uc_fw->path, + size, (size_t)i915->wopcm.size); + err = -E2BIG; + goto fail; + } + /* Get version numbers from the CSS header */ switch (uc_fw->type) { case INTEL_UC_FW_TYPE_GUC: diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h index ce8e83128a95..6fa50273c2ce 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h @@ -173,6 +173,11 @@ static inline void intel_uc_fw_sanitize(struct intel_uc_fw *uc_fw) intel_uc_fw_change_status(uc_fw, INTEL_UC_FIRMWARE_AVAILABLE); } +static inline u32 __intel_uc_fw_get_upload_size(struct intel_uc_fw *uc_fw) +{ + return sizeof(struct uc_css_header) + uc_fw->ucode_size; +} + /** * intel_uc_fw_get_upload_size() - Get size of firmware needed to be uploaded. * @uc_fw: uC firmware. @@ -186,7 +191,7 @@ static inline u32 intel_uc_fw_get_upload_size(struct intel_uc_fw *uc_fw) if (!intel_uc_fw_is_available(uc_fw)) return 0; - return sizeof(struct uc_css_header) + uc_fw->ucode_size; + return __intel_uc_fw_get_upload_size(uc_fw); } void intel_uc_fw_init_early(struct intel_uc_fw *uc_fw, diff --git a/drivers/gpu/drm/i915/intel_wopcm.c b/drivers/gpu/drm/i915/intel_wopcm.c index 2bda24200498..2975e00f57f5 100644 --- a/drivers/gpu/drm/i915/intel_wopcm.c +++ b/drivers/gpu/drm/i915/intel_wopcm.c @@ -181,22 +181,12 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) GEM_BUG_ON(!wopcm->size); GEM_BUG_ON(wopcm->guc.base); GEM_BUG_ON(wopcm->guc.size); + GEM_BUG_ON(guc_fw_size >= wopcm->size); + GEM_BUG_ON(huc_fw_size >= wopcm->size); if (i915_inject_probe_failure(i915)) return; - if (guc_fw_size >= wopcm->size) { - DRM_ERROR("GuC FW (%uKiB) is too big to fit in WOPCM.", - guc_fw_size / 1024); - return; - } - - if (huc_fw_size >= wopcm->size) { - DRM_ERROR("HuC FW (%uKiB) is too big to fit in WOPCM.", - huc_fw_size / 1024); - return; - } - guc_wopcm_base = ALIGN(huc_fw_size + WOPCM_RESERVED_SIZE, GUC_WOPCM_OFFSET_ALIGNMENT); if ((guc_wopcm_base + ctx_rsvd) >= wopcm->size) { -- 2.19.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 2/5] drm/i915/wopcm: Check WOPCM layout separately from calculations 2019-08-15 17:12 [PATCH 0/5] More WOPCM fixes Michal Wajdeczko 2019-08-15 17:12 ` [PATCH 1/5] drm/i915/uc: Move FW size sanity check back to fetch Michal Wajdeczko @ 2019-08-15 17:12 ` Michal Wajdeczko 2019-08-15 21:48 ` Michal Wajdeczko 2019-08-15 17:12 ` [PATCH 3/5] drm/i915/wopcm: Try to use already locked WOPCM layout Michal Wajdeczko ` (5 subsequent siblings) 7 siblings, 1 reply; 15+ messages in thread From: Michal Wajdeczko @ 2019-08-15 17:12 UTC (permalink / raw) To: intel-gfx We can do WOPCM partitioning using rough estimates and limits and perform detailed check as separate step. Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/intel_wopcm.c | 105 ++++++++++++++++++++--------- 1 file changed, 74 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_wopcm.c b/drivers/gpu/drm/i915/intel_wopcm.c index 2975e00f57f5..3ac05055bb08 100644 --- a/drivers/gpu/drm/i915/intel_wopcm.c +++ b/drivers/gpu/drm/i915/intel_wopcm.c @@ -87,7 +87,8 @@ void intel_wopcm_init_early(struct intel_wopcm *wopcm) else wopcm->size = GEN9_WOPCM_SIZE; - DRM_DEBUG_DRIVER("WOPCM size: %uKiB\n", wopcm->size / 1024); + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, "WOPCM: size %uKiB\n", + wopcm->size / SZ_1K); } static inline u32 context_reserved_size(struct drm_i915_private *i915) @@ -138,9 +139,9 @@ static inline int gen9_check_huc_fw_fits(u32 guc_wopcm_size, u32 huc_fw_size) return 0; } -static inline int check_hw_restriction(struct drm_i915_private *i915, - u32 guc_wopcm_base, u32 guc_wopcm_size, - u32 huc_fw_size) +static inline bool check_hw_restrictions(struct drm_i915_private *i915, + u32 guc_wopcm_base, u32 guc_wopcm_size, + u32 huc_fw_size) { int err = 0; @@ -151,7 +152,64 @@ static inline int check_hw_restriction(struct drm_i915_private *i915, (IS_GEN(i915, 9) || IS_CNL_REVID(i915, CNL_REVID_A0, CNL_REVID_A0))) err = gen9_check_huc_fw_fits(guc_wopcm_size, huc_fw_size); - return err; + return !err; +} + +static inline bool __check_layout(struct drm_i915_private *i915, u32 wopcm_size, + u32 guc_wopcm_base, u32 guc_wopcm_size, + u32 guc_fw_size, u32 huc_fw_size) +{ + const u32 ctx_rsvd = context_reserved_size(i915); + u32 size; + + if (unlikely(guc_wopcm_base > wopcm_size)) { + dev_err(i915->drm.dev, + "WOPCM: invalid GuC region base: %uK > %uK\n", + guc_wopcm_base / SZ_1K, wopcm_size / SZ_1K); + return false; + } + + size = wopcm_size - ctx_rsvd; + if (unlikely(guc_wopcm_base > size)) { + dev_err(i915->drm.dev, + "WOPCM: invalid GuC region base: %uK > %uK\n", + guc_wopcm_base / SZ_1K, size / SZ_1K); + return false; + } + + if (unlikely(guc_wopcm_size > wopcm_size)) { + dev_err(i915->drm.dev, + "WOPCM: invalid GuC region size: %uK > %uK\n", + guc_wopcm_size / SZ_1K, wopcm_size / SZ_1K); + return false; + } + + size = wopcm_size - guc_wopcm_base - ctx_rsvd; + if (unlikely(guc_wopcm_size > size)) { + dev_err(i915->drm.dev, + "WOPCM: invalid GuC region size: %uK > %uK\n", + guc_wopcm_size / SZ_1K, size / SZ_1K); + return false; + } + + size = guc_fw_size + GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; + if (unlikely(guc_wopcm_size < size)) { + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_GUC), + guc_wopcm_size / SZ_1K, size / SZ_1K); + return false; + } + + size = huc_fw_size + WOPCM_RESERVED_SIZE; + if (unlikely(guc_wopcm_base < size)) { + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), + guc_wopcm_base / SZ_1K, size / SZ_1K); + return false; + } + + return check_hw_restrictions(i915, guc_wopcm_base, guc_wopcm_size, + huc_fw_size); } /** @@ -172,8 +230,6 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) u32 ctx_rsvd = context_reserved_size(i915); u32 guc_wopcm_base; u32 guc_wopcm_size; - u32 guc_wopcm_rsvd; - int err; if (!guc_fw_size) return; @@ -183,39 +239,26 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) GEM_BUG_ON(wopcm->guc.size); GEM_BUG_ON(guc_fw_size >= wopcm->size); GEM_BUG_ON(huc_fw_size >= wopcm->size); + GEM_BUG_ON(ctx_rsvd + WOPCM_RESERVED_SIZE >= wopcm->size); if (i915_inject_probe_failure(i915)) return; guc_wopcm_base = ALIGN(huc_fw_size + WOPCM_RESERVED_SIZE, GUC_WOPCM_OFFSET_ALIGNMENT); - if ((guc_wopcm_base + ctx_rsvd) >= wopcm->size) { - DRM_ERROR("GuC WOPCM base (%uKiB) is too big.\n", - guc_wopcm_base / 1024); - return; - } - + guc_wopcm_base = max(wopcm->size - ctx_rsvd, guc_wopcm_base); guc_wopcm_size = wopcm->size - guc_wopcm_base - ctx_rsvd; guc_wopcm_size &= GUC_WOPCM_SIZE_MASK; - DRM_DEBUG_DRIVER("Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", - guc_wopcm_base / 1024, guc_wopcm_size / 1024); + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, + "Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", + guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K); - guc_wopcm_rsvd = GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; - if ((guc_fw_size + guc_wopcm_rsvd) > guc_wopcm_size) { - DRM_ERROR("Need %uKiB WOPCM for GuC, %uKiB available.\n", - (guc_fw_size + guc_wopcm_rsvd) / 1024, - guc_wopcm_size / 1024); - return; + if (__check_layout(i915, wopcm->size, guc_wopcm_base, guc_wopcm_size, + guc_fw_size, huc_fw_size)) { + wopcm->guc.base = guc_wopcm_base; + wopcm->guc.size = guc_wopcm_size; + GEM_BUG_ON(!wopcm->guc.base); + GEM_BUG_ON(!wopcm->guc.size); } - - err = check_hw_restriction(i915, guc_wopcm_base, guc_wopcm_size, - huc_fw_size); - if (err) - return; - - wopcm->guc.base = guc_wopcm_base; - wopcm->guc.size = guc_wopcm_size; - GEM_BUG_ON(!wopcm->guc.base); - GEM_BUG_ON(!wopcm->guc.size); } -- 2.19.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 2/5] drm/i915/wopcm: Check WOPCM layout separately from calculations 2019-08-15 17:12 ` [PATCH 2/5] drm/i915/wopcm: Check WOPCM layout separately from calculations Michal Wajdeczko @ 2019-08-15 21:48 ` Michal Wajdeczko 2019-08-16 0:10 ` Daniele Ceraolo Spurio 0 siblings, 1 reply; 15+ messages in thread From: Michal Wajdeczko @ 2019-08-15 21:48 UTC (permalink / raw) To: intel-gfx We can do WOPCM partitioning using rough estimates and limits and perform detailed check as separate step. v2: oops! s/max/min Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/intel_wopcm.c | 105 ++++++++++++++++++++--------- 1 file changed, 74 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_wopcm.c b/drivers/gpu/drm/i915/intel_wopcm.c index 2975e00f57f5..39f2764ca3a8 100644 --- a/drivers/gpu/drm/i915/intel_wopcm.c +++ b/drivers/gpu/drm/i915/intel_wopcm.c @@ -87,7 +87,8 @@ void intel_wopcm_init_early(struct intel_wopcm *wopcm) else wopcm->size = GEN9_WOPCM_SIZE; - DRM_DEBUG_DRIVER("WOPCM size: %uKiB\n", wopcm->size / 1024); + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, "WOPCM: size %uKiB\n", + wopcm->size / SZ_1K); } static inline u32 context_reserved_size(struct drm_i915_private *i915) @@ -138,9 +139,9 @@ static inline int gen9_check_huc_fw_fits(u32 guc_wopcm_size, u32 huc_fw_size) return 0; } -static inline int check_hw_restriction(struct drm_i915_private *i915, - u32 guc_wopcm_base, u32 guc_wopcm_size, - u32 huc_fw_size) +static inline bool check_hw_restrictions(struct drm_i915_private *i915, + u32 guc_wopcm_base, u32 guc_wopcm_size, + u32 huc_fw_size) { int err = 0; @@ -151,7 +152,64 @@ static inline int check_hw_restriction(struct drm_i915_private *i915, (IS_GEN(i915, 9) || IS_CNL_REVID(i915, CNL_REVID_A0, CNL_REVID_A0))) err = gen9_check_huc_fw_fits(guc_wopcm_size, huc_fw_size); - return err; + return !err; +} + +static inline bool __check_layout(struct drm_i915_private *i915, u32 wopcm_size, + u32 guc_wopcm_base, u32 guc_wopcm_size, + u32 guc_fw_size, u32 huc_fw_size) +{ + const u32 ctx_rsvd = context_reserved_size(i915); + u32 size; + + if (unlikely(guc_wopcm_base > wopcm_size)) { + dev_err(i915->drm.dev, + "WOPCM: invalid GuC region base: %uK > %uK\n", + guc_wopcm_base / SZ_1K, wopcm_size / SZ_1K); + return false; + } + + size = wopcm_size - ctx_rsvd; + if (unlikely(guc_wopcm_base > size)) { + dev_err(i915->drm.dev, + "WOPCM: invalid GuC region base: %uK > %uK\n", + guc_wopcm_base / SZ_1K, size / SZ_1K); + return false; + } + + if (unlikely(guc_wopcm_size > wopcm_size)) { + dev_err(i915->drm.dev, + "WOPCM: invalid GuC region size: %uK > %uK\n", + guc_wopcm_size / SZ_1K, wopcm_size / SZ_1K); + return false; + } + + size = wopcm_size - guc_wopcm_base - ctx_rsvd; + if (unlikely(guc_wopcm_size > size)) { + dev_err(i915->drm.dev, + "WOPCM: invalid GuC region size: %uK > %uK\n", + guc_wopcm_size / SZ_1K, size / SZ_1K); + return false; + } + + size = guc_fw_size + GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; + if (unlikely(guc_wopcm_size < size)) { + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_GUC), + guc_wopcm_size / SZ_1K, size / SZ_1K); + return false; + } + + size = huc_fw_size + WOPCM_RESERVED_SIZE; + if (unlikely(guc_wopcm_base < size)) { + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), + guc_wopcm_base / SZ_1K, size / SZ_1K); + return false; + } + + return check_hw_restrictions(i915, guc_wopcm_base, guc_wopcm_size, + huc_fw_size); } /** @@ -172,8 +230,6 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) u32 ctx_rsvd = context_reserved_size(i915); u32 guc_wopcm_base; u32 guc_wopcm_size; - u32 guc_wopcm_rsvd; - int err; if (!guc_fw_size) return; @@ -183,39 +239,26 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) GEM_BUG_ON(wopcm->guc.size); GEM_BUG_ON(guc_fw_size >= wopcm->size); GEM_BUG_ON(huc_fw_size >= wopcm->size); + GEM_BUG_ON(ctx_rsvd + WOPCM_RESERVED_SIZE >= wopcm->size); if (i915_inject_probe_failure(i915)) return; guc_wopcm_base = ALIGN(huc_fw_size + WOPCM_RESERVED_SIZE, GUC_WOPCM_OFFSET_ALIGNMENT); - if ((guc_wopcm_base + ctx_rsvd) >= wopcm->size) { - DRM_ERROR("GuC WOPCM base (%uKiB) is too big.\n", - guc_wopcm_base / 1024); - return; - } - + guc_wopcm_base = min(wopcm->size - ctx_rsvd, guc_wopcm_base); guc_wopcm_size = wopcm->size - guc_wopcm_base - ctx_rsvd; guc_wopcm_size &= GUC_WOPCM_SIZE_MASK; - DRM_DEBUG_DRIVER("Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", - guc_wopcm_base / 1024, guc_wopcm_size / 1024); + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, + "Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", + guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K); - guc_wopcm_rsvd = GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; - if ((guc_fw_size + guc_wopcm_rsvd) > guc_wopcm_size) { - DRM_ERROR("Need %uKiB WOPCM for GuC, %uKiB available.\n", - (guc_fw_size + guc_wopcm_rsvd) / 1024, - guc_wopcm_size / 1024); - return; + if (__check_layout(i915, wopcm->size, guc_wopcm_base, guc_wopcm_size, + guc_fw_size, huc_fw_size)) { + wopcm->guc.base = guc_wopcm_base; + wopcm->guc.size = guc_wopcm_size; + GEM_BUG_ON(!wopcm->guc.base); + GEM_BUG_ON(!wopcm->guc.size); } - - err = check_hw_restriction(i915, guc_wopcm_base, guc_wopcm_size, - huc_fw_size); - if (err) - return; - - wopcm->guc.base = guc_wopcm_base; - wopcm->guc.size = guc_wopcm_size; - GEM_BUG_ON(!wopcm->guc.base); - GEM_BUG_ON(!wopcm->guc.size); } -- 2.19.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 2/5] drm/i915/wopcm: Check WOPCM layout separately from calculations 2019-08-15 21:48 ` Michal Wajdeczko @ 2019-08-16 0:10 ` Daniele Ceraolo Spurio 2019-08-16 0:21 ` Michal Wajdeczko 0 siblings, 1 reply; 15+ messages in thread From: Daniele Ceraolo Spurio @ 2019-08-16 0:10 UTC (permalink / raw) To: Michal Wajdeczko, intel-gfx On 8/15/19 2:48 PM, Michal Wajdeczko wrote: > We can do WOPCM partitioning using rough estimates and limits > and perform detailed check as separate step. > > v2: oops! s/max/min > > Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> > Cc: Chris Wilson <chris@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/intel_wopcm.c | 105 ++++++++++++++++++++--------- > 1 file changed, 74 insertions(+), 31 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_wopcm.c b/drivers/gpu/drm/i915/intel_wopcm.c > index 2975e00f57f5..39f2764ca3a8 100644 > --- a/drivers/gpu/drm/i915/intel_wopcm.c > +++ b/drivers/gpu/drm/i915/intel_wopcm.c > @@ -87,7 +87,8 @@ void intel_wopcm_init_early(struct intel_wopcm *wopcm) > else > wopcm->size = GEN9_WOPCM_SIZE; > > - DRM_DEBUG_DRIVER("WOPCM size: %uKiB\n", wopcm->size / 1024); > + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, "WOPCM: size %uKiB\n", > + wopcm->size / SZ_1K); > } > > static inline u32 context_reserved_size(struct drm_i915_private *i915) > @@ -138,9 +139,9 @@ static inline int gen9_check_huc_fw_fits(u32 guc_wopcm_size, u32 huc_fw_size) > return 0; > } > > -static inline int check_hw_restriction(struct drm_i915_private *i915, > - u32 guc_wopcm_base, u32 guc_wopcm_size, > - u32 huc_fw_size) > +static inline bool check_hw_restrictions(struct drm_i915_private *i915, > + u32 guc_wopcm_base, u32 guc_wopcm_size, > + u32 huc_fw_size) > { > int err = 0; > > @@ -151,7 +152,64 @@ static inline int check_hw_restriction(struct drm_i915_private *i915, > (IS_GEN(i915, 9) || IS_CNL_REVID(i915, CNL_REVID_A0, CNL_REVID_A0))) > err = gen9_check_huc_fw_fits(guc_wopcm_size, huc_fw_size); > > - return err; > + return !err; > +} > + > +static inline bool __check_layout(struct drm_i915_private *i915, u32 wopcm_size, > + u32 guc_wopcm_base, u32 guc_wopcm_size, > + u32 guc_fw_size, u32 huc_fw_size) > +{ > + const u32 ctx_rsvd = context_reserved_size(i915); > + u32 size; > + > + if (unlikely(guc_wopcm_base > wopcm_size)) { > + dev_err(i915->drm.dev, > + "WOPCM: invalid GuC region base: %uK > %uK\n", > + guc_wopcm_base / SZ_1K, wopcm_size / SZ_1K); > + return false; > + } > + > + size = wopcm_size - ctx_rsvd; > + if (unlikely(guc_wopcm_base > size)) { > + dev_err(i915->drm.dev, > + "WOPCM: invalid GuC region base: %uK > %uK\n", > + guc_wopcm_base / SZ_1K, size / SZ_1K); > + return false; > + } > + > + if (unlikely(guc_wopcm_size > wopcm_size)) { > + dev_err(i915->drm.dev, > + "WOPCM: invalid GuC region size: %uK > %uK\n", > + guc_wopcm_size / SZ_1K, wopcm_size / SZ_1K); > + return false; > + } > + > + size = wopcm_size - guc_wopcm_base - ctx_rsvd; > + if (unlikely(guc_wopcm_size > size)) { > + dev_err(i915->drm.dev, > + "WOPCM: invalid GuC region size: %uK > %uK\n", > + guc_wopcm_size / SZ_1K, size / SZ_1K); > + return false; > + } I think we can consolidate all the checks above in just: wopcm_guc_max = wopcm_size - ctx_rsvd; if (range_overflows(guc_wopcm_base, guc_wopcm_size, wopcm_guc_max) return false; > + > + size = guc_fw_size + GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; > + if (unlikely(guc_wopcm_size < size)) { > + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", > + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_GUC), > + guc_wopcm_size / SZ_1K, size / SZ_1K); > + return false; > + } > + > + size = huc_fw_size + WOPCM_RESERVED_SIZE; > + if (unlikely(guc_wopcm_base < size)) { > + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", > + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), > + guc_wopcm_base / SZ_1K, size / SZ_1K); > + return false; > + } > + > + return check_hw_restrictions(i915, guc_wopcm_base, guc_wopcm_size, > + huc_fw_size); > } > > /** > @@ -172,8 +230,6 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) > u32 ctx_rsvd = context_reserved_size(i915); > u32 guc_wopcm_base; > u32 guc_wopcm_size; > - u32 guc_wopcm_rsvd; > - int err; > > if (!guc_fw_size) > return; > @@ -183,39 +239,26 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) > GEM_BUG_ON(wopcm->guc.size); > GEM_BUG_ON(guc_fw_size >= wopcm->size); > GEM_BUG_ON(huc_fw_size >= wopcm->size); > + GEM_BUG_ON(ctx_rsvd + WOPCM_RESERVED_SIZE >= wopcm->size); > > if (i915_inject_probe_failure(i915)) > return; > > guc_wopcm_base = ALIGN(huc_fw_size + WOPCM_RESERVED_SIZE, > GUC_WOPCM_OFFSET_ALIGNMENT); > - if ((guc_wopcm_base + ctx_rsvd) >= wopcm->size) { > - DRM_ERROR("GuC WOPCM base (%uKiB) is too big.\n", > - guc_wopcm_base / 1024); > - return; > - } > - > + guc_wopcm_base = min(wopcm->size - ctx_rsvd, guc_wopcm_base); This line confused me quite a bit until we chatted on IM about it. maybe add a comment, e.g.: /* * we want to keep all the checks in the same place to be able to re-use * them when we find locked values in WOPCM so we don't validate * guc_wopcm_base here, but we still need to clamp it to make sure the * following math is sane. */ Also, with my suggestion for consolidation above, for the checks we always care about wopcm->size - ctx_rsvd, so maybe store that in a local var to use it here and below and pass that into __check_layout(). Daniele > guc_wopcm_size = wopcm->size - guc_wopcm_base - ctx_rsvd; > guc_wopcm_size &= GUC_WOPCM_SIZE_MASK; > > - DRM_DEBUG_DRIVER("Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", > - guc_wopcm_base / 1024, guc_wopcm_size / 1024); > + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, > + "Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", > + guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K); > > - guc_wopcm_rsvd = GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; > - if ((guc_fw_size + guc_wopcm_rsvd) > guc_wopcm_size) { > - DRM_ERROR("Need %uKiB WOPCM for GuC, %uKiB available.\n", > - (guc_fw_size + guc_wopcm_rsvd) / 1024, > - guc_wopcm_size / 1024); > - return; > + if (__check_layout(i915, wopcm->size, guc_wopcm_base, guc_wopcm_size, > + guc_fw_size, huc_fw_size)) { > + wopcm->guc.base = guc_wopcm_base; > + wopcm->guc.size = guc_wopcm_size; > + GEM_BUG_ON(!wopcm->guc.base); > + GEM_BUG_ON(!wopcm->guc.size); > } > - > - err = check_hw_restriction(i915, guc_wopcm_base, guc_wopcm_size, > - huc_fw_size); > - if (err) > - return; > - > - wopcm->guc.base = guc_wopcm_base; > - wopcm->guc.size = guc_wopcm_size; > - GEM_BUG_ON(!wopcm->guc.base); > - GEM_BUG_ON(!wopcm->guc.size); > } > _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/5] drm/i915/wopcm: Check WOPCM layout separately from calculations 2019-08-16 0:10 ` Daniele Ceraolo Spurio @ 2019-08-16 0:21 ` Michal Wajdeczko 2019-08-16 0:28 ` Daniele Ceraolo Spurio 0 siblings, 1 reply; 15+ messages in thread From: Michal Wajdeczko @ 2019-08-16 0:21 UTC (permalink / raw) To: intel-gfx, Daniele Ceraolo Spurio On Fri, 16 Aug 2019 02:10:26 +0200, Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> wrote: > > > On 8/15/19 2:48 PM, Michal Wajdeczko wrote: >> We can do WOPCM partitioning using rough estimates and limits >> and perform detailed check as separate step. >> v2: oops! s/max/min >> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> >> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> >> Cc: Chris Wilson <chris@chris-wilson.co.uk> >> --- >> drivers/gpu/drm/i915/intel_wopcm.c | 105 ++++++++++++++++++++--------- >> 1 file changed, 74 insertions(+), 31 deletions(-) >> diff --git a/drivers/gpu/drm/i915/intel_wopcm.c >> b/drivers/gpu/drm/i915/intel_wopcm.c >> index 2975e00f57f5..39f2764ca3a8 100644 >> --- a/drivers/gpu/drm/i915/intel_wopcm.c >> +++ b/drivers/gpu/drm/i915/intel_wopcm.c >> @@ -87,7 +87,8 @@ void intel_wopcm_init_early(struct intel_wopcm *wopcm) >> else >> wopcm->size = GEN9_WOPCM_SIZE; >> - DRM_DEBUG_DRIVER("WOPCM size: %uKiB\n", wopcm->size / 1024); >> + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, "WOPCM: size %uKiB\n", >> + wopcm->size / SZ_1K); >> } >> static inline u32 context_reserved_size(struct drm_i915_private >> *i915) >> @@ -138,9 +139,9 @@ static inline int gen9_check_huc_fw_fits(u32 >> guc_wopcm_size, u32 huc_fw_size) >> return 0; >> } >> -static inline int check_hw_restriction(struct drm_i915_private *i915, >> - u32 guc_wopcm_base, u32 guc_wopcm_size, >> - u32 huc_fw_size) >> +static inline bool check_hw_restrictions(struct drm_i915_private *i915, >> + u32 guc_wopcm_base, u32 guc_wopcm_size, >> + u32 huc_fw_size) >> { >> int err = 0; >> @@ -151,7 +152,64 @@ static inline int check_hw_restriction(struct >> drm_i915_private *i915, >> (IS_GEN(i915, 9) || IS_CNL_REVID(i915, CNL_REVID_A0, >> CNL_REVID_A0))) >> err = gen9_check_huc_fw_fits(guc_wopcm_size, huc_fw_size); >> - return err; >> + return !err; >> +} >> + >> +static inline bool __check_layout(struct drm_i915_private *i915, u32 >> wopcm_size, >> + u32 guc_wopcm_base, u32 guc_wopcm_size, >> + u32 guc_fw_size, u32 huc_fw_size) >> +{ >> + const u32 ctx_rsvd = context_reserved_size(i915); >> + u32 size; >> + >> + if (unlikely(guc_wopcm_base > wopcm_size)) { >> + dev_err(i915->drm.dev, >> + "WOPCM: invalid GuC region base: %uK > %uK\n", >> + guc_wopcm_base / SZ_1K, wopcm_size / SZ_1K); >> + return false; >> + } >> + >> + size = wopcm_size - ctx_rsvd; >> + if (unlikely(guc_wopcm_base > size)) { >> + dev_err(i915->drm.dev, >> + "WOPCM: invalid GuC region base: %uK > %uK\n", >> + guc_wopcm_base / SZ_1K, size / SZ_1K); >> + return false; >> + } >> + >> + if (unlikely(guc_wopcm_size > wopcm_size)) { >> + dev_err(i915->drm.dev, >> + "WOPCM: invalid GuC region size: %uK > %uK\n", >> + guc_wopcm_size / SZ_1K, wopcm_size / SZ_1K); >> + return false; >> + } >> + >> + size = wopcm_size - guc_wopcm_base - ctx_rsvd; >> + if (unlikely(guc_wopcm_size > size)) { >> + dev_err(i915->drm.dev, >> + "WOPCM: invalid GuC region size: %uK > %uK\n", >> + guc_wopcm_size / SZ_1K, size / SZ_1K); >> + return false; >> + } > > > I think we can consolidate all the checks above in just: > > wopcm_guc_max = wopcm_size - ctx_rsvd; > if (range_overflows(guc_wopcm_base, guc_wopcm_size, wopcm_guc_max) > return false; if we consolidate, then it will be hard to tell what went wrong. with separate logs we can find which check failed (they all are unlikely, but still possible) > > >> + >> + size = guc_fw_size + GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; >> + if (unlikely(guc_wopcm_size < size)) { >> + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", >> + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_GUC), >> + guc_wopcm_size / SZ_1K, size / SZ_1K); >> + return false; >> + } >> + >> + size = huc_fw_size + WOPCM_RESERVED_SIZE; >> + if (unlikely(guc_wopcm_base < size)) { >> + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", >> + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), >> + guc_wopcm_base / SZ_1K, size / SZ_1K); >> + return false; >> + } >> + >> + return check_hw_restrictions(i915, guc_wopcm_base, guc_wopcm_size, >> + huc_fw_size); >> } >> /** >> @@ -172,8 +230,6 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) >> u32 ctx_rsvd = context_reserved_size(i915); >> u32 guc_wopcm_base; >> u32 guc_wopcm_size; >> - u32 guc_wopcm_rsvd; >> - int err; >> if (!guc_fw_size) >> return; >> @@ -183,39 +239,26 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) >> GEM_BUG_ON(wopcm->guc.size); >> GEM_BUG_ON(guc_fw_size >= wopcm->size); >> GEM_BUG_ON(huc_fw_size >= wopcm->size); >> + GEM_BUG_ON(ctx_rsvd + WOPCM_RESERVED_SIZE >= wopcm->size); >> if (i915_inject_probe_failure(i915)) >> return; >> guc_wopcm_base = ALIGN(huc_fw_size + WOPCM_RESERVED_SIZE, >> GUC_WOPCM_OFFSET_ALIGNMENT); >> - if ((guc_wopcm_base + ctx_rsvd) >= wopcm->size) { >> - DRM_ERROR("GuC WOPCM base (%uKiB) is too big.\n", >> - guc_wopcm_base / 1024); >> - return; >> - } >> - >> + guc_wopcm_base = min(wopcm->size - ctx_rsvd, guc_wopcm_base); > > This line confused me quite a bit until we chatted on IM about it. maybe > add a comment, e.g.: > > /* > * we want to keep all the checks in the same place to be able to re-use > * them when we find locked values in WOPCM so we don't validate > * guc_wopcm_base here, but we still need to clamp it to make sure the > * following math is sane. > */ ok > > Also, with my suggestion for consolidation above, for the checks we > always care about wopcm->size - ctx_rsvd, so maybe store that in a local > var to use it here and below and pass that into __check_layout(). all math tries to use sizes from the diagram above, introducing one sub-size helper might be over engineering ;) > > Daniele > >> guc_wopcm_size = wopcm->size - guc_wopcm_base - ctx_rsvd; >> guc_wopcm_size &= GUC_WOPCM_SIZE_MASK; >> - DRM_DEBUG_DRIVER("Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", >> - guc_wopcm_base / 1024, guc_wopcm_size / 1024); >> + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, >> + "Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", >> + guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K); >> - guc_wopcm_rsvd = GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; >> - if ((guc_fw_size + guc_wopcm_rsvd) > guc_wopcm_size) { >> - DRM_ERROR("Need %uKiB WOPCM for GuC, %uKiB available.\n", >> - (guc_fw_size + guc_wopcm_rsvd) / 1024, >> - guc_wopcm_size / 1024); >> - return; >> + if (__check_layout(i915, wopcm->size, guc_wopcm_base, guc_wopcm_size, >> + guc_fw_size, huc_fw_size)) { >> + wopcm->guc.base = guc_wopcm_base; >> + wopcm->guc.size = guc_wopcm_size; >> + GEM_BUG_ON(!wopcm->guc.base); >> + GEM_BUG_ON(!wopcm->guc.size); >> } >> - >> - err = check_hw_restriction(i915, guc_wopcm_base, guc_wopcm_size, >> - huc_fw_size); >> - if (err) >> - return; >> - >> - wopcm->guc.base = guc_wopcm_base; >> - wopcm->guc.size = guc_wopcm_size; >> - GEM_BUG_ON(!wopcm->guc.base); >> - GEM_BUG_ON(!wopcm->guc.size); >> } _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/5] drm/i915/wopcm: Check WOPCM layout separately from calculations 2019-08-16 0:21 ` Michal Wajdeczko @ 2019-08-16 0:28 ` Daniele Ceraolo Spurio 0 siblings, 0 replies; 15+ messages in thread From: Daniele Ceraolo Spurio @ 2019-08-16 0:28 UTC (permalink / raw) To: Michal Wajdeczko, intel-gfx On 8/15/19 5:21 PM, Michal Wajdeczko wrote: > On Fri, 16 Aug 2019 02:10:26 +0200, Daniele Ceraolo Spurio > <daniele.ceraolospurio@intel.com> wrote: > >> >> >> On 8/15/19 2:48 PM, Michal Wajdeczko wrote: >>> We can do WOPCM partitioning using rough estimates and limits >>> and perform detailed check as separate step. >>> v2: oops! s/max/min >>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> >>> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> >>> Cc: Chris Wilson <chris@chris-wilson.co.uk> >>> --- >>> drivers/gpu/drm/i915/intel_wopcm.c | 105 ++++++++++++++++++++--------- >>> 1 file changed, 74 insertions(+), 31 deletions(-) >>> diff --git a/drivers/gpu/drm/i915/intel_wopcm.c >>> b/drivers/gpu/drm/i915/intel_wopcm.c >>> index 2975e00f57f5..39f2764ca3a8 100644 >>> --- a/drivers/gpu/drm/i915/intel_wopcm.c >>> +++ b/drivers/gpu/drm/i915/intel_wopcm.c >>> @@ -87,7 +87,8 @@ void intel_wopcm_init_early(struct intel_wopcm *wopcm) >>> else >>> wopcm->size = GEN9_WOPCM_SIZE; >>> - DRM_DEBUG_DRIVER("WOPCM size: %uKiB\n", wopcm->size / 1024); >>> + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, "WOPCM: size %uKiB\n", >>> + wopcm->size / SZ_1K); >>> } >>> static inline u32 context_reserved_size(struct drm_i915_private >>> *i915) >>> @@ -138,9 +139,9 @@ static inline int gen9_check_huc_fw_fits(u32 >>> guc_wopcm_size, u32 huc_fw_size) >>> return 0; >>> } >>> -static inline int check_hw_restriction(struct drm_i915_private *i915, >>> - u32 guc_wopcm_base, u32 guc_wopcm_size, >>> - u32 huc_fw_size) >>> +static inline bool check_hw_restrictions(struct drm_i915_private *i915, >>> + u32 guc_wopcm_base, u32 guc_wopcm_size, >>> + u32 huc_fw_size) >>> { >>> int err = 0; >>> @@ -151,7 +152,64 @@ static inline int check_hw_restriction(struct >>> drm_i915_private *i915, >>> (IS_GEN(i915, 9) || IS_CNL_REVID(i915, CNL_REVID_A0, >>> CNL_REVID_A0))) >>> err = gen9_check_huc_fw_fits(guc_wopcm_size, huc_fw_size); >>> - return err; >>> + return !err; >>> +} >>> + >>> +static inline bool __check_layout(struct drm_i915_private *i915, u32 >>> wopcm_size, >>> + u32 guc_wopcm_base, u32 guc_wopcm_size, >>> + u32 guc_fw_size, u32 huc_fw_size) >>> +{ >>> + const u32 ctx_rsvd = context_reserved_size(i915); >>> + u32 size; >>> + >>> + if (unlikely(guc_wopcm_base > wopcm_size)) { >>> + dev_err(i915->drm.dev, >>> + "WOPCM: invalid GuC region base: %uK > %uK\n", >>> + guc_wopcm_base / SZ_1K, wopcm_size / SZ_1K); >>> + return false; >>> + } >>> + >>> + size = wopcm_size - ctx_rsvd; >>> + if (unlikely(guc_wopcm_base > size)) { >>> + dev_err(i915->drm.dev, >>> + "WOPCM: invalid GuC region base: %uK > %uK\n", >>> + guc_wopcm_base / SZ_1K, size / SZ_1K); >>> + return false; >>> + } >>> + >>> + if (unlikely(guc_wopcm_size > wopcm_size)) { >>> + dev_err(i915->drm.dev, >>> + "WOPCM: invalid GuC region size: %uK > %uK\n", >>> + guc_wopcm_size / SZ_1K, wopcm_size / SZ_1K); >>> + return false; >>> + } >>> + >>> + size = wopcm_size - guc_wopcm_base - ctx_rsvd; >>> + if (unlikely(guc_wopcm_size > size)) { >>> + dev_err(i915->drm.dev, >>> + "WOPCM: invalid GuC region size: %uK > %uK\n", >>> + guc_wopcm_size / SZ_1K, size / SZ_1K); >>> + return false; >>> + } >> >> >> I think we can consolidate all the checks above in just: >> >> wopcm_guc_max = wopcm_size - ctx_rsvd; >> if (range_overflows(guc_wopcm_base, guc_wopcm_size, wopcm_guc_max) >> return false; > > if we consolidate, then it will be hard to tell what went wrong. > with separate logs we can find which check failed (they all are > unlikely, but still possible) > As long as we print guc_wopcm_base, guc_wopcm_size and wopcm_guc_max on error we should be able to easily see what's going wrong, it's easy to see if guc_wopcm_base or guc_wopcm_size are greater than wopcm_guc_max, which covers 3 of the 4 checks above. >> >> >>> + >>> + size = guc_fw_size + GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; >>> + if (unlikely(guc_wopcm_size < size)) { >>> + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", >>> + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_GUC), >>> + guc_wopcm_size / SZ_1K, size / SZ_1K); >>> + return false; >>> + } >>> + >>> + size = huc_fw_size + WOPCM_RESERVED_SIZE; >>> + if (unlikely(guc_wopcm_base < size)) { >>> + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", >>> + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), >>> + guc_wopcm_base / SZ_1K, size / SZ_1K); >>> + return false; >>> + } >>> + >>> + return check_hw_restrictions(i915, guc_wopcm_base, guc_wopcm_size, >>> + huc_fw_size); >>> } >>> /** >>> @@ -172,8 +230,6 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) >>> u32 ctx_rsvd = context_reserved_size(i915); >>> u32 guc_wopcm_base; >>> u32 guc_wopcm_size; >>> - u32 guc_wopcm_rsvd; >>> - int err; >>> if (!guc_fw_size) >>> return; >>> @@ -183,39 +239,26 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) >>> GEM_BUG_ON(wopcm->guc.size); >>> GEM_BUG_ON(guc_fw_size >= wopcm->size); >>> GEM_BUG_ON(huc_fw_size >= wopcm->size); >>> + GEM_BUG_ON(ctx_rsvd + WOPCM_RESERVED_SIZE >= wopcm->size); >>> if (i915_inject_probe_failure(i915)) >>> return; >>> guc_wopcm_base = ALIGN(huc_fw_size + WOPCM_RESERVED_SIZE, >>> GUC_WOPCM_OFFSET_ALIGNMENT); >>> - if ((guc_wopcm_base + ctx_rsvd) >= wopcm->size) { >>> - DRM_ERROR("GuC WOPCM base (%uKiB) is too big.\n", >>> - guc_wopcm_base / 1024); >>> - return; >>> - } >>> - >>> + guc_wopcm_base = min(wopcm->size - ctx_rsvd, guc_wopcm_base); >> >> This line confused me quite a bit until we chatted on IM about it. >> maybe add a comment, e.g.: >> >> /* >> * we want to keep all the checks in the same place to be able to re-use >> * them when we find locked values in WOPCM so we don't validate >> * guc_wopcm_base here, but we still need to clamp it to make sure the >> * following math is sane. >> */ > > ok > >> >> Also, with my suggestion for consolidation above, for the checks we >> always care about wopcm->size - ctx_rsvd, so maybe store that in a >> local var to use it here and below and pass that into __check_layout(). > > all math tries to use sizes from the diagram above, introducing one > sub-size helper might be over engineering ;) > It just made the code slightly easier to follow IMO by avoiding doing the subtraction in multiple places, but it was just a preference and I'm ok if you prefer to keep it as-is. Daniele >> >> Daniele >> >>> guc_wopcm_size = wopcm->size - guc_wopcm_base - ctx_rsvd; >>> guc_wopcm_size &= GUC_WOPCM_SIZE_MASK; >>> - DRM_DEBUG_DRIVER("Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", >>> - guc_wopcm_base / 1024, guc_wopcm_size / 1024); >>> + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, >>> + "Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", >>> + guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K); >>> - guc_wopcm_rsvd = GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED; >>> - if ((guc_fw_size + guc_wopcm_rsvd) > guc_wopcm_size) { >>> - DRM_ERROR("Need %uKiB WOPCM for GuC, %uKiB available.\n", >>> - (guc_fw_size + guc_wopcm_rsvd) / 1024, >>> - guc_wopcm_size / 1024); >>> - return; >>> + if (__check_layout(i915, wopcm->size, guc_wopcm_base, >>> guc_wopcm_size, >>> + guc_fw_size, huc_fw_size)) { >>> + wopcm->guc.base = guc_wopcm_base; >>> + wopcm->guc.size = guc_wopcm_size; >>> + GEM_BUG_ON(!wopcm->guc.base); >>> + GEM_BUG_ON(!wopcm->guc.size); >>> } >>> - >>> - err = check_hw_restriction(i915, guc_wopcm_base, guc_wopcm_size, >>> - huc_fw_size); >>> - if (err) >>> - return; >>> - >>> - wopcm->guc.base = guc_wopcm_base; >>> - wopcm->guc.size = guc_wopcm_size; >>> - GEM_BUG_ON(!wopcm->guc.base); >>> - GEM_BUG_ON(!wopcm->guc.size); >>> } _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 3/5] drm/i915/wopcm: Try to use already locked WOPCM layout 2019-08-15 17:12 [PATCH 0/5] More WOPCM fixes Michal Wajdeczko 2019-08-15 17:12 ` [PATCH 1/5] drm/i915/uc: Move FW size sanity check back to fetch Michal Wajdeczko 2019-08-15 17:12 ` [PATCH 2/5] drm/i915/wopcm: Check WOPCM layout separately from calculations Michal Wajdeczko @ 2019-08-15 17:12 ` Michal Wajdeczko 2019-08-16 0:14 ` Daniele Ceraolo Spurio 2019-08-15 17:12 ` [PATCH 4/5] drm/i915/wopcm: Update error messages Michal Wajdeczko ` (4 subsequent siblings) 7 siblings, 1 reply; 15+ messages in thread From: Michal Wajdeczko @ 2019-08-15 17:12 UTC (permalink / raw) To: intel-gfx If WOPCM layout is already locked in HW we shouldn't continue with our own partitioning as it could be likely different and we will be unable to enforce it and fail. Instead we should try to reuse what is already programmed, maybe there will be a fit. This should enable us to reload driver with slightly different HuC firmware (or even without HuC) without need to reboot. v2: reordered/rebased Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Michal Winiarski <michal.winiarski@intel.com> --- drivers/gpu/drm/i915/intel_wopcm.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_wopcm.c b/drivers/gpu/drm/i915/intel_wopcm.c index 3ac05055bb08..ea02efb653a7 100644 --- a/drivers/gpu/drm/i915/intel_wopcm.c +++ b/drivers/gpu/drm/i915/intel_wopcm.c @@ -212,6 +212,21 @@ static inline bool __check_layout(struct drm_i915_private *i915, u32 wopcm_size, huc_fw_size); } +static bool __wopcm_regs_locked(struct intel_uncore *uncore, + u32 *guc_wopcm_base, u32 *guc_wopcm_size) +{ + u32 reg_base = intel_uncore_read(uncore, DMA_GUC_WOPCM_OFFSET); + u32 reg_size = intel_uncore_read(uncore, GUC_WOPCM_SIZE); + + if (!(reg_size & GUC_WOPCM_SIZE_LOCKED) || + !(reg_base & GUC_WOPCM_OFFSET_VALID)) + return false; + + *guc_wopcm_base = reg_base & GUC_WOPCM_OFFSET_MASK; + *guc_wopcm_size = reg_size & GUC_WOPCM_SIZE_MASK; + return true; +} + /** * intel_wopcm_init() - Initialize the WOPCM structure. * @wopcm: pointer to intel_wopcm. @@ -225,8 +240,9 @@ static inline bool __check_layout(struct drm_i915_private *i915, u32 wopcm_size, void intel_wopcm_init(struct intel_wopcm *wopcm) { struct drm_i915_private *i915 = wopcm_to_i915(wopcm); - u32 guc_fw_size = intel_uc_fw_get_upload_size(&i915->gt.uc.guc.fw); - u32 huc_fw_size = intel_uc_fw_get_upload_size(&i915->gt.uc.huc.fw); + struct intel_gt *gt = &i915->gt; + u32 guc_fw_size = intel_uc_fw_get_upload_size(>->uc.guc.fw); + u32 huc_fw_size = intel_uc_fw_get_upload_size(>->uc.huc.fw); u32 ctx_rsvd = context_reserved_size(i915); u32 guc_wopcm_base; u32 guc_wopcm_size; @@ -244,6 +260,14 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) if (i915_inject_probe_failure(i915)) return; + if (__wopcm_regs_locked(gt->uncore, &guc_wopcm_base, &guc_wopcm_size)) { + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, + "GuC WOPCM is already locked [%uK, %uK)\n", + guc_wopcm_base / SZ_1K, + guc_wopcm_size / SZ_1K); + goto check; + } + guc_wopcm_base = ALIGN(huc_fw_size + WOPCM_RESERVED_SIZE, GUC_WOPCM_OFFSET_ALIGNMENT); guc_wopcm_base = max(wopcm->size - ctx_rsvd, guc_wopcm_base); @@ -254,6 +278,7 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) "Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K); +check: if (__check_layout(i915, wopcm->size, guc_wopcm_base, guc_wopcm_size, guc_fw_size, huc_fw_size)) { wopcm->guc.base = guc_wopcm_base; -- 2.19.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 3/5] drm/i915/wopcm: Try to use already locked WOPCM layout 2019-08-15 17:12 ` [PATCH 3/5] drm/i915/wopcm: Try to use already locked WOPCM layout Michal Wajdeczko @ 2019-08-16 0:14 ` Daniele Ceraolo Spurio 0 siblings, 0 replies; 15+ messages in thread From: Daniele Ceraolo Spurio @ 2019-08-16 0:14 UTC (permalink / raw) To: Michal Wajdeczko, intel-gfx On 8/15/19 10:12 AM, Michal Wajdeczko wrote: > If WOPCM layout is already locked in HW we shouldn't continue > with our own partitioning as it could be likely different and > we will be unable to enforce it and fail. Instead we should try > to reuse what is already programmed, maybe there will be a fit. > > This should enable us to reload driver with slightly different > HuC firmware (or even without HuC) without need to reboot. > > v2: reordered/rebased > > Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Michal Winiarski <michal.winiarski@intel.com> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Daniele > --- > drivers/gpu/drm/i915/intel_wopcm.c | 29 +++++++++++++++++++++++++++-- > 1 file changed, 27 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_wopcm.c b/drivers/gpu/drm/i915/intel_wopcm.c > index 3ac05055bb08..ea02efb653a7 100644 > --- a/drivers/gpu/drm/i915/intel_wopcm.c > +++ b/drivers/gpu/drm/i915/intel_wopcm.c > @@ -212,6 +212,21 @@ static inline bool __check_layout(struct drm_i915_private *i915, u32 wopcm_size, > huc_fw_size); > } > > +static bool __wopcm_regs_locked(struct intel_uncore *uncore, > + u32 *guc_wopcm_base, u32 *guc_wopcm_size) > +{ > + u32 reg_base = intel_uncore_read(uncore, DMA_GUC_WOPCM_OFFSET); > + u32 reg_size = intel_uncore_read(uncore, GUC_WOPCM_SIZE); > + > + if (!(reg_size & GUC_WOPCM_SIZE_LOCKED) || > + !(reg_base & GUC_WOPCM_OFFSET_VALID)) > + return false; > + > + *guc_wopcm_base = reg_base & GUC_WOPCM_OFFSET_MASK; > + *guc_wopcm_size = reg_size & GUC_WOPCM_SIZE_MASK; > + return true; > +} > + > /** > * intel_wopcm_init() - Initialize the WOPCM structure. > * @wopcm: pointer to intel_wopcm. > @@ -225,8 +240,9 @@ static inline bool __check_layout(struct drm_i915_private *i915, u32 wopcm_size, > void intel_wopcm_init(struct intel_wopcm *wopcm) > { > struct drm_i915_private *i915 = wopcm_to_i915(wopcm); > - u32 guc_fw_size = intel_uc_fw_get_upload_size(&i915->gt.uc.guc.fw); > - u32 huc_fw_size = intel_uc_fw_get_upload_size(&i915->gt.uc.huc.fw); > + struct intel_gt *gt = &i915->gt; > + u32 guc_fw_size = intel_uc_fw_get_upload_size(>->uc.guc.fw); > + u32 huc_fw_size = intel_uc_fw_get_upload_size(>->uc.huc.fw); > u32 ctx_rsvd = context_reserved_size(i915); > u32 guc_wopcm_base; > u32 guc_wopcm_size; > @@ -244,6 +260,14 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) > if (i915_inject_probe_failure(i915)) > return; > > + if (__wopcm_regs_locked(gt->uncore, &guc_wopcm_base, &guc_wopcm_size)) { > + DRM_DEV_DEBUG_DRIVER(i915->drm.dev, > + "GuC WOPCM is already locked [%uK, %uK)\n", > + guc_wopcm_base / SZ_1K, > + guc_wopcm_size / SZ_1K); > + goto check; > + } > + > guc_wopcm_base = ALIGN(huc_fw_size + WOPCM_RESERVED_SIZE, > GUC_WOPCM_OFFSET_ALIGNMENT); > guc_wopcm_base = max(wopcm->size - ctx_rsvd, guc_wopcm_base); > @@ -254,6 +278,7 @@ void intel_wopcm_init(struct intel_wopcm *wopcm) > "Calculated GuC WOPCM Region: [%uKiB, %uKiB)\n", > guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K); > > +check: > if (__check_layout(i915, wopcm->size, guc_wopcm_base, guc_wopcm_size, > guc_fw_size, huc_fw_size)) { > wopcm->guc.base = guc_wopcm_base; > _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 4/5] drm/i915/wopcm: Update error messages 2019-08-15 17:12 [PATCH 0/5] More WOPCM fixes Michal Wajdeczko ` (2 preceding siblings ...) 2019-08-15 17:12 ` [PATCH 3/5] drm/i915/wopcm: Try to use already locked WOPCM layout Michal Wajdeczko @ 2019-08-15 17:12 ` Michal Wajdeczko 2019-08-15 17:12 ` [PATCH 5/5] drm/i915/wopmc: Fix SPDX tag location Michal Wajdeczko ` (3 subsequent siblings) 7 siblings, 0 replies; 15+ messages in thread From: Michal Wajdeczko @ 2019-08-15 17:12 UTC (permalink / raw) To: intel-gfx All WOPCM error messages are device specific, so use device specific error functions. Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/intel_wopcm.c | 44 ++++++++++++++++-------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_wopcm.c b/drivers/gpu/drm/i915/intel_wopcm.c index ea02efb653a7..3b14dd5562ff 100644 --- a/drivers/gpu/drm/i915/intel_wopcm.c +++ b/drivers/gpu/drm/i915/intel_wopcm.c @@ -101,7 +101,8 @@ static inline u32 context_reserved_size(struct drm_i915_private *i915) return 0; } -static inline int gen9_check_dword_gap(u32 guc_wopcm_base, u32 guc_wopcm_size) +static inline bool gen9_check_dword_gap(struct drm_i915_private *i915, + u32 guc_wopcm_base, u32 guc_wopcm_size) { u32 offset; @@ -113,16 +114,18 @@ static inline int gen9_check_dword_gap(u32 guc_wopcm_base, u32 guc_wopcm_size) offset = guc_wopcm_base + GEN9_GUC_WOPCM_OFFSET; if (offset > guc_wopcm_size || (guc_wopcm_size - offset) < sizeof(u32)) { - DRM_ERROR("GuC WOPCM size %uKiB is too small. %uKiB needed.\n", - guc_wopcm_size / 1024, - (u32)(offset + sizeof(u32)) / 1024); - return -E2BIG; + dev_err(i915->drm.dev, + "WOPCM: invalid GuC region size: %uK < %uK\n", + guc_wopcm_size / SZ_1K, + (u32)(offset + sizeof(u32)) / SZ_1K); + return false; } - return 0; + return true; } -static inline int gen9_check_huc_fw_fits(u32 guc_wopcm_size, u32 huc_fw_size) +static inline bool gen9_check_huc_fw_fits(struct drm_i915_private *i915, + u32 guc_wopcm_size, u32 huc_fw_size) { /* * On Gen9 & CNL A0, hardware requires the total available GuC WOPCM @@ -130,29 +133,30 @@ static inline int gen9_check_huc_fw_fits(u32 guc_wopcm_size, u32 huc_fw_size) * firmware uploading would fail. */ if (huc_fw_size > guc_wopcm_size - GUC_WOPCM_RESERVED) { - DRM_ERROR("HuC FW (%uKiB) won't fit in GuC WOPCM (%uKiB).\n", - huc_fw_size / 1024, - (guc_wopcm_size - GUC_WOPCM_RESERVED) / 1024); - return -E2BIG; + dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n", + intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC), + (guc_wopcm_size - GUC_WOPCM_RESERVED) / SZ_1K, + huc_fw_size / 1024); + return false; } - return 0; + return true; } static inline bool check_hw_restrictions(struct drm_i915_private *i915, u32 guc_wopcm_base, u32 guc_wopcm_size, u32 huc_fw_size) { - int err = 0; - - if (IS_GEN(i915, 9)) - err = gen9_check_dword_gap(guc_wopcm_base, guc_wopcm_size); + if (IS_GEN(i915, 9) && !gen9_check_dword_gap(i915, guc_wopcm_base, + guc_wopcm_size)) + return false; - if (!err && - (IS_GEN(i915, 9) || IS_CNL_REVID(i915, CNL_REVID_A0, CNL_REVID_A0))) - err = gen9_check_huc_fw_fits(guc_wopcm_size, huc_fw_size); + if ((IS_GEN(i915, 9) || + IS_CNL_REVID(i915, CNL_REVID_A0, CNL_REVID_A0)) && + !gen9_check_huc_fw_fits(i915, guc_wopcm_size, huc_fw_size)) + return false; - return !err; + return true; } static inline bool __check_layout(struct drm_i915_private *i915, u32 wopcm_size, -- 2.19.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 5/5] drm/i915/wopmc: Fix SPDX tag location 2019-08-15 17:12 [PATCH 0/5] More WOPCM fixes Michal Wajdeczko ` (3 preceding siblings ...) 2019-08-15 17:12 ` [PATCH 4/5] drm/i915/wopcm: Update error messages Michal Wajdeczko @ 2019-08-15 17:12 ` Michal Wajdeczko 2019-08-15 17:52 ` ✗ Fi.CI.BAT: failure for More WOPCM fixes Patchwork ` (2 subsequent siblings) 7 siblings, 0 replies; 15+ messages in thread From: Michal Wajdeczko @ 2019-08-15 17:12 UTC (permalink / raw) To: intel-gfx Move SPDX tag to first line, and update year to 2019. Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/intel_wopcm.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_wopcm.c b/drivers/gpu/drm/i915/intel_wopcm.c index 3b14dd5562ff..53fe1003fba7 100644 --- a/drivers/gpu/drm/i915/intel_wopcm.c +++ b/drivers/gpu/drm/i915/intel_wopcm.c @@ -1,7 +1,6 @@ +// SPDX-License-Identifier: MIT /* - * SPDX-License-Identifier: MIT - * - * Copyright © 2017-2018 Intel Corporation + * Copyright © 2017-2019 Intel Corporation */ #include "intel_wopcm.h" -- 2.19.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 15+ messages in thread
* ✗ Fi.CI.BAT: failure for More WOPCM fixes 2019-08-15 17:12 [PATCH 0/5] More WOPCM fixes Michal Wajdeczko ` (4 preceding siblings ...) 2019-08-15 17:12 ` [PATCH 5/5] drm/i915/wopmc: Fix SPDX tag location Michal Wajdeczko @ 2019-08-15 17:52 ` Patchwork 2019-08-15 21:40 ` Michal Wajdeczko 2019-08-15 23:25 ` ✓ Fi.CI.BAT: success for More WOPCM fixes (rev2) Patchwork 2019-08-16 15:56 ` ✓ Fi.CI.IGT: " Patchwork 7 siblings, 1 reply; 15+ messages in thread From: Patchwork @ 2019-08-15 17:52 UTC (permalink / raw) To: Michal Wajdeczko; +Cc: intel-gfx == Series Details == Series: More WOPCM fixes URL : https://patchwork.freedesktop.org/series/65263/ State : failure == Summary == CI Bug Log - changes from CI_DRM_6712 -> Patchwork_14032 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_14032 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_14032, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/ Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_14032: ### IGT changes ### #### Possible regressions #### * igt@i915_pm_rpm@basic-pci-d3-state: - fi-cfl-guc: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-cfl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-cfl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html - fi-skl-guc: [PASS][3] -> [FAIL][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-skl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-skl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html - fi-apl-guc: [PASS][5] -> [FAIL][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-apl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-apl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html #### Warnings #### * igt@i915_pm_rpm@basic-pci-d3-state: - fi-kbl-guc: [SKIP][7] ([fdo#109271]) -> [FAIL][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-kbl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-kbl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html * igt@runner@aborted: - fi-cfl-guc: [FAIL][9] ([fdo#110755]) -> [FAIL][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-cfl-guc/igt@runner@aborted.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-cfl-guc/igt@runner@aborted.html - fi-apl-guc: [FAIL][11] ([fdo#110755]) -> [FAIL][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-apl-guc/igt@runner@aborted.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-apl-guc/igt@runner@aborted.html #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * igt@gem_busy@busy-all: - {fi-icl-guc}: [PASS][13] -> [SKIP][14] +10 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-icl-guc/igt@gem_busy@busy-all.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-icl-guc/igt@gem_busy@busy-all.html * igt@gem_ctx_switch@rcs0: - {fi-icl-guc}: [INCOMPLETE][15] ([fdo#107713]) -> [SKIP][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-icl-guc/igt@gem_ctx_switch@rcs0.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-icl-guc/igt@gem_ctx_switch@rcs0.html * igt@i915_pm_rpm@basic-pci-d3-state: - {fi-icl-guc}: NOTRUN -> [FAIL][17] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-icl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html * igt@kms_busy@basic-flip-b: - {fi-icl-guc}: NOTRUN -> [SKIP][18] +67 similar issues [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-icl-guc/igt@kms_busy@basic-flip-b.html * igt@kms_chamelium@hdmi-hpd-fast: - {fi-icl-u4}: [FAIL][19] ([fdo#111045]) -> [FAIL][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-icl-u4/igt@kms_chamelium@hdmi-hpd-fast.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-icl-u4/igt@kms_chamelium@hdmi-hpd-fast.html Known issues ------------ Here are the changes found in Patchwork_14032 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_switch@legacy-render: - fi-apl-guc: [PASS][21] -> [SKIP][22] ([fdo#109271]) +77 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-apl-guc/igt@gem_ctx_switch@legacy-render.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-apl-guc/igt@gem_ctx_switch@legacy-render.html * igt@gem_ctx_switch@rcs0: - fi-skl-guc: [PASS][23] -> [SKIP][24] ([fdo#109271]) +77 similar issues [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-skl-guc/igt@gem_ctx_switch@rcs0.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-skl-guc/igt@gem_ctx_switch@rcs0.html * igt@gem_exec_basic@basic-all: - fi-cfl-guc: [PASS][25] -> [SKIP][26] ([fdo#109271]) +77 similar issues [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-cfl-guc/igt@gem_exec_basic@basic-all.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-cfl-guc/igt@gem_exec_basic@basic-all.html * igt@i915_hangman@error-state-basic: - fi-kbl-guc: [PASS][27] -> [SKIP][28] ([fdo#109271]) +70 similar issues [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-kbl-guc/igt@i915_hangman@error-state-basic.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-kbl-guc/igt@i915_hangman@error-state-basic.html #### Possible fixes #### * igt@kms_busy@basic-flip-a: - fi-kbl-7567u: [SKIP][29] ([fdo#109271] / [fdo#109278]) -> [PASS][30] +2 similar issues [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-kbl-7567u/igt@kms_busy@basic-flip-a.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-kbl-7567u/igt@kms_busy@basic-flip-a.html * igt@kms_chamelium@hdmi-edid-read: - {fi-icl-u4}: [FAIL][31] ([fdo#111045]) -> [PASS][32] [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-icl-u4/igt@kms_chamelium@hdmi-edid-read.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-icl-u4/igt@kms_chamelium@hdmi-edid-read.html #### Warnings #### * igt@kms_busy@basic-flip-b: - fi-kbl-guc: [SKIP][33] ([fdo#109271] / [fdo#109278]) -> [SKIP][34] ([fdo#109271]) +2 similar issues [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-kbl-guc/igt@kms_busy@basic-flip-b.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-kbl-guc/igt@kms_busy@basic-flip-b.html * igt@runner@aborted: - fi-skl-guc: [FAIL][35] ([fdo#104108] / [fdo#110755]) -> [FAIL][36] ([fdo#104108]) [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-skl-guc/igt@runner@aborted.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-skl-guc/igt@runner@aborted.html - fi-kbl-guc: [FAIL][37] ([fdo#110755]) -> [FAIL][38] ([fdo#103841]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-kbl-guc/igt@runner@aborted.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-kbl-guc/igt@runner@aborted.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103841]: https://bugs.freedesktop.org/show_bug.cgi?id=103841 [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108 [fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309 [fdo#110755]: https://bugs.freedesktop.org/show_bug.cgi?id=110755 [fdo#111045]: https://bugs.freedesktop.org/show_bug.cgi?id=111045 [fdo#111049]: https://bugs.freedesktop.org/show_bug.cgi?id=111049 Participating hosts (53 -> 46) ------------------------------ Additional (1): fi-gdg-551 Missing (8): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus Build changes ------------- * CI: CI-20190529 -> None * Linux: CI_DRM_6712 -> Patchwork_14032 CI-20190529: 20190529 CI_DRM_6712: cd7b3a5a9d3b20684a62b8c1a33707c162ee3629 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5138: b9abe0bf6c478c4f6cac56bff286d6926ad8c0ab @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_14032: 88a7db05650958f81928148e26612fcbbfbb2a56 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 88a7db056509 drm/i915/wopmc: Fix SPDX tag location ecdba0ca5e10 drm/i915/wopcm: Update error messages ec0eb6665ba7 drm/i915/wopcm: Try to use already locked WOPCM layout e2e620eee0e4 drm/i915/wopcm: Check WOPCM layout separately from calculations 833a7ad1b18b drm/i915/uc: Move FW size sanity check back to fetch == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: ✗ Fi.CI.BAT: failure for More WOPCM fixes 2019-08-15 17:52 ` ✗ Fi.CI.BAT: failure for More WOPCM fixes Patchwork @ 2019-08-15 21:40 ` Michal Wajdeczko 0 siblings, 0 replies; 15+ messages in thread From: Michal Wajdeczko @ 2019-08-15 21:40 UTC (permalink / raw) To: Patchwork, intel-gfx On Thu, 15 Aug 2019 19:52:44 +0200, Patchwork <patchwork@emeril.freedesktop.org> wrote: > == Series Details == > > Series: More WOPCM fixes > URL : https://patchwork.freedesktop.org/series/65263/ > State : failure > > == Summary == > > CI Bug Log - changes from CI_DRM_6712 -> Patchwork_14032 > ==================================================== > > Summary > ------- > > **FAILURE** > > Serious unknown changes coming with Patchwork_14032 absolutely need to > be > verified manually. > If you think the reported changes have nothing to do with the changes > introduced in Patchwork_14032, please notify your bug team to allow > them > to document this new failure mode, which will reduce false positives > in CI. > > External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/ > > Possible new issues > ------------------- > > Here are the unknown changes that may have been introduced in > Patchwork_14032: > > ### IGT changes ### > > #### Possible regressions #### > > * igt@i915_pm_rpm@basic-pci-d3-state: > - fi-cfl-guc: [PASS][1] -> [FAIL][2] > [1]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-cfl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html > [2]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-cfl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html > - fi-skl-guc: [PASS][3] -> [FAIL][4] > [3]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-skl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html > [4]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-skl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html > - fi-apl-guc: [PASS][5] -> [FAIL][6] > [5]: > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6712/fi-apl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html > [6]: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14032/fi-apl-guc/igt@i915_pm_rpm@basic-pci-d3-state.html > <7>[ 12.007665] i915 0000:00:02.0: [drm:intel_wopcm_init [i915]] Calculated GuC WOPCM Region: [2012KiB, 0KiB) <3>[ 12.007668] i915 0000:00:02.0: WOPCM: no space for GuC: 0K < 400K due to trivia min/max mistake _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 15+ messages in thread
* ✓ Fi.CI.BAT: success for More WOPCM fixes (rev2) 2019-08-15 17:12 [PATCH 0/5] More WOPCM fixes Michal Wajdeczko ` (5 preceding siblings ...) 2019-08-15 17:52 ` ✗ Fi.CI.BAT: failure for More WOPCM fixes Patchwork @ 2019-08-15 23:25 ` Patchwork 2019-08-16 15:56 ` ✓ Fi.CI.IGT: " Patchwork 7 siblings, 0 replies; 15+ messages in thread From: Patchwork @ 2019-08-15 23:25 UTC (permalink / raw) To: Michal Wajdeczko; +Cc: intel-gfx == Series Details == Series: More WOPCM fixes (rev2) URL : https://patchwork.freedesktop.org/series/65263/ State : success == Summary == CI Bug Log - changes from CI_DRM_6714 -> Patchwork_14039 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/ Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_14039: ### IGT changes ### #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * igt@kms_chamelium@dp-hpd-fast: - {fi-icl-u4}: [FAIL][1] ([fdo#111045]) -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/fi-icl-u4/igt@kms_chamelium@dp-hpd-fast.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/fi-icl-u4/igt@kms_chamelium@dp-hpd-fast.html Known issues ------------ Here are the changes found in Patchwork_14039 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_exec_suspend@basic-s3: - fi-blb-e6850: [PASS][3] -> [INCOMPLETE][4] ([fdo#107718]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/fi-blb-e6850/igt@gem_exec_suspend@basic-s3.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/fi-blb-e6850/igt@gem_exec_suspend@basic-s3.html * igt@gem_mmap_gtt@basic-write-no-prefault: - fi-icl-u3: [PASS][5] -> [DMESG-WARN][6] ([fdo#107724]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/fi-icl-u3/igt@gem_mmap_gtt@basic-write-no-prefault.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/fi-icl-u3/igt@gem_mmap_gtt@basic-write-no-prefault.html * igt@i915_selftest@live_reset: - fi-icl-u3: [PASS][7] -> [INCOMPLETE][8] ([fdo#107713]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/fi-icl-u3/igt@i915_selftest@live_reset.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/fi-icl-u3/igt@i915_selftest@live_reset.html #### Possible fixes #### * igt@gem_mmap_gtt@basic-small-bo-tiledx: - fi-icl-u3: [DMESG-WARN][9] ([fdo#107724]) -> [PASS][10] +1 similar issue [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/fi-icl-u3/igt@gem_mmap_gtt@basic-small-bo-tiledx.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/fi-icl-u3/igt@gem_mmap_gtt@basic-small-bo-tiledx.html * igt@kms_frontbuffer_tracking@basic: - fi-icl-u2: [FAIL][11] ([fdo#103167]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718 [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724 [fdo#111045]: https://bugs.freedesktop.org/show_bug.cgi?id=111045 Participating hosts (52 -> 45) ------------------------------ Missing (7): fi-kbl-soraka fi-bsw-n3050 fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus Build changes ------------- * CI: CI-20190529 -> None * Linux: CI_DRM_6714 -> Patchwork_14039 CI-20190529: 20190529 CI_DRM_6714: 9198974f9fa309c4c74197365844971e0940b227 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5138: b9abe0bf6c478c4f6cac56bff286d6926ad8c0ab @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_14039: d727532eb785fa217ac6eb741c7c3b89e0020bfd @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == d727532eb785 drm/i915/wopmc: Fix SPDX tag location e6fc80efe0f1 drm/i915/wopcm: Update error messages fd23026c80a2 drm/i915/wopcm: Try to use already locked WOPCM layout 46c8a54fc7c0 drm/i915/wopcm: Check WOPCM layout separately from calculations 577566a6c0cf drm/i915/uc: Move FW size sanity check back to fetch == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 15+ messages in thread
* ✓ Fi.CI.IGT: success for More WOPCM fixes (rev2) 2019-08-15 17:12 [PATCH 0/5] More WOPCM fixes Michal Wajdeczko ` (6 preceding siblings ...) 2019-08-15 23:25 ` ✓ Fi.CI.BAT: success for More WOPCM fixes (rev2) Patchwork @ 2019-08-16 15:56 ` Patchwork 7 siblings, 0 replies; 15+ messages in thread From: Patchwork @ 2019-08-16 15:56 UTC (permalink / raw) To: Michal Wajdeczko; +Cc: intel-gfx == Series Details == Series: More WOPCM fixes (rev2) URL : https://patchwork.freedesktop.org/series/65263/ State : success == Summary == CI Bug Log - changes from CI_DRM_6714_full -> Patchwork_14039_full ==================================================== Summary ------- **SUCCESS** No regressions found. Known issues ------------ Here are the changes found in Patchwork_14039_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_shared@exec-single-timeline-bsd: - shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#110841]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb6/igt@gem_ctx_shared@exec-single-timeline-bsd.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb1/igt@gem_ctx_shared@exec-single-timeline-bsd.html * igt@gem_exec_schedule@deep-bsd: - shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#111325]) +4 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb5/igt@gem_exec_schedule@deep-bsd.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb2/igt@gem_exec_schedule@deep-bsd.html * igt@gem_exec_schedule@preempt-queue-bsd1: - shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#109276]) +15 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb2/igt@gem_exec_schedule@preempt-queue-bsd1.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb8/igt@gem_exec_schedule@preempt-queue-bsd1.html * igt@gem_softpin@noreloc-s3: - shard-iclb: [PASS][7] -> [INCOMPLETE][8] ([fdo#107713] / [fdo#109100]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb8/igt@gem_softpin@noreloc-s3.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb7/igt@gem_softpin@noreloc-s3.html * igt@i915_pm_rc6_residency@rc6-accuracy: - shard-snb: [PASS][9] -> [SKIP][10] ([fdo#109271]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-snb5/igt@i915_pm_rc6_residency@rc6-accuracy.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-snb2/igt@i915_pm_rc6_residency@rc6-accuracy.html * igt@i915_pm_rpm@system-suspend: - shard-skl: [PASS][11] -> [INCOMPLETE][12] ([fdo#104108] / [fdo#107807]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-skl9/igt@i915_pm_rpm@system-suspend.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-skl3/igt@i915_pm_rpm@system-suspend.html * igt@kms_cursor_crc@pipe-c-cursor-128x128-random: - shard-skl: [PASS][13] -> [FAIL][14] ([fdo#103232]) +1 similar issue [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-skl7/igt@kms_cursor_crc@pipe-c-cursor-128x128-random.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-skl7/igt@kms_cursor_crc@pipe-c-cursor-128x128-random.html * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy: - shard-glk: [PASS][15] -> [FAIL][16] ([fdo#104873]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-glk5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-glk6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html * igt@kms_flip@flip-vs-expired-vblank: - shard-glk: [PASS][17] -> [FAIL][18] ([fdo#105363]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-glk9/igt@kms_flip@flip-vs-expired-vblank.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-glk4/igt@kms_flip@flip-vs-expired-vblank.html * igt@kms_flip@flip-vs-expired-vblank-interruptible: - shard-kbl: [PASS][19] -> [FAIL][20] ([fdo#105363]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-kbl4/igt@kms_flip@flip-vs-expired-vblank-interruptible.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-kbl1/igt@kms_flip@flip-vs-expired-vblank-interruptible.html * igt@kms_flip_tiling@flip-to-y-tiled: - shard-iclb: [PASS][21] -> [INCOMPLETE][22] ([fdo#107713]) +1 similar issue [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb3/igt@kms_flip_tiling@flip-to-y-tiled.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb1/igt@kms_flip_tiling@flip-to-y-tiled.html * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw: - shard-iclb: [PASS][23] -> [FAIL][24] ([fdo#103167]) +2 similar issues [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb1/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb4/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html * igt@kms_frontbuffer_tracking@fbc-suspend: - shard-apl: [PASS][25] -> [DMESG-WARN][26] ([fdo#108566]) +3 similar issues [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-apl1/igt@kms_frontbuffer_tracking@fbc-suspend.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-apl6/igt@kms_frontbuffer_tracking@fbc-suspend.html * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min: - shard-skl: [PASS][27] -> [FAIL][28] ([fdo#108145]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-skl7/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-skl7/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc: - shard-skl: [PASS][29] -> [FAIL][30] ([fdo#108145] / [fdo#110403]) [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-skl7/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-skl7/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html * igt@kms_plane_lowres@pipe-a-tiling-y: - shard-iclb: [PASS][31] -> [FAIL][32] ([fdo#103166]) [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb6/igt@kms_plane_lowres@pipe-a-tiling-y.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb1/igt@kms_plane_lowres@pipe-a-tiling-y.html * igt@kms_psr2_su@frontbuffer: - shard-iclb: [PASS][33] -> [SKIP][34] ([fdo#109642] / [fdo#111068]) +1 similar issue [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb2/igt@kms_psr2_su@frontbuffer.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb8/igt@kms_psr2_su@frontbuffer.html * igt@kms_psr@psr2_sprite_plane_move: - shard-iclb: [PASS][35] -> [SKIP][36] ([fdo#109441]) +2 similar issues [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb8/igt@kms_psr@psr2_sprite_plane_move.html * igt@prime_busy@wait-hang-vebox: - shard-iclb: [PASS][37] -> [INCOMPLETE][38] ([fdo#107713] / [fdo#110428 ]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb8/igt@prime_busy@wait-hang-vebox.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb7/igt@prime_busy@wait-hang-vebox.html #### Possible fixes #### * igt@gem_exec_balancer@smoke: - shard-iclb: [SKIP][39] ([fdo#110854]) -> [PASS][40] [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb7/igt@gem_exec_balancer@smoke.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb2/igt@gem_exec_balancer@smoke.html * igt@gem_exec_schedule@in-order-bsd: - shard-iclb: [SKIP][41] ([fdo#111325]) -> [PASS][42] +4 similar issues [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb4/igt@gem_exec_schedule@in-order-bsd.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb8/igt@gem_exec_schedule@in-order-bsd.html * igt@gem_exec_schedule@promotion-bsd1: - shard-iclb: [SKIP][43] ([fdo#109276]) -> [PASS][44] +21 similar issues [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb5/igt@gem_exec_schedule@promotion-bsd1.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb1/igt@gem_exec_schedule@promotion-bsd1.html * igt@i915_pm_rpm@system-suspend-execbuf: - shard-kbl: [DMESG-WARN][45] ([fdo#103313] / [fdo#103558] / [fdo#105079] / [fdo#105602]) -> [PASS][46] [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-kbl1/igt@i915_pm_rpm@system-suspend-execbuf.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-kbl1/igt@i915_pm_rpm@system-suspend-execbuf.html * igt@i915_suspend@fence-restore-tiled2untiled: - shard-apl: [DMESG-WARN][47] ([fdo#108566]) -> [PASS][48] +3 similar issues [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-apl4/igt@i915_suspend@fence-restore-tiled2untiled.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-apl4/igt@i915_suspend@fence-restore-tiled2untiled.html * igt@kms_cursor_crc@pipe-a-cursor-suspend: - shard-apl: [INCOMPLETE][49] ([fdo#103927]) -> [PASS][50] [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-apl4/igt@kms_cursor_crc@pipe-a-cursor-suspend.html [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-apl4/igt@kms_cursor_crc@pipe-a-cursor-suspend.html * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy: - shard-hsw: [FAIL][51] ([fdo#105767]) -> [PASS][52] [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-hsw6/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-hsw4/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html * igt@kms_cursor_legacy@flip-vs-cursor-legacy: - shard-skl: [FAIL][53] ([fdo#102670]) -> [PASS][54] [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-skl2/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-skl4/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html * igt@kms_flip@bo-too-big: - shard-kbl: [DMESG-WARN][55] ([fdo#103313] / [fdo#103558] / [fdo#105602]) -> [PASS][56] +2 similar issues [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-kbl1/igt@kms_flip@bo-too-big.html [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-kbl1/igt@kms_flip@bo-too-big.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render: - shard-iclb: [FAIL][57] ([fdo#103167]) -> [PASS][58] +5 similar issues [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render.html * igt@kms_frontbuffer_tracking@psr-suspend: - shard-skl: [INCOMPLETE][59] ([fdo#104108] / [fdo#106978]) -> [PASS][60] [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-skl1/igt@kms_frontbuffer_tracking@psr-suspend.html [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-skl3/igt@kms_frontbuffer_tracking@psr-suspend.html * igt@kms_lease@master-vs-lease: - shard-kbl: [DMESG-WARN][61] ([fdo#103558] / [fdo#105602]) -> [PASS][62] [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-kbl1/igt@kms_lease@master-vs-lease.html [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-kbl1/igt@kms_lease@master-vs-lease.html * igt@kms_psr@psr2_sprite_mmap_gtt: - shard-iclb: [SKIP][63] ([fdo#109441]) -> [PASS][64] +3 similar issues [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb3/igt@kms_psr@psr2_sprite_mmap_gtt.html [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_gtt.html * igt@kms_vblank@pipe-a-wait-forked-busy-hang: - shard-skl: [INCOMPLETE][65] -> [PASS][66] [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-skl3/igt@kms_vblank@pipe-a-wait-forked-busy-hang.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-skl7/igt@kms_vblank@pipe-a-wait-forked-busy-hang.html * igt@kms_vblank@pipe-b-ts-continuation-suspend: - shard-kbl: [INCOMPLETE][67] ([fdo#103665]) -> [PASS][68] [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-kbl2/igt@kms_vblank@pipe-b-ts-continuation-suspend.html [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-kbl7/igt@kms_vblank@pipe-b-ts-continuation-suspend.html #### Warnings #### * igt@gem_mocs_settings@mocs-reset-bsd2: - shard-iclb: [FAIL][69] ([fdo#111330]) -> [SKIP][70] ([fdo#109276]) +1 similar issue [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb2/igt@gem_mocs_settings@mocs-reset-bsd2.html [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb5/igt@gem_mocs_settings@mocs-reset-bsd2.html * igt@kms_dp_dsc@basic-dsc-enable-edp: - shard-iclb: [SKIP][71] ([fdo#109349]) -> [DMESG-WARN][72] ([fdo#107724]) [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-iclb5/igt@kms_dp_dsc@basic-dsc-enable-edp.html [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu: - shard-kbl: [SKIP][73] ([fdo#105602] / [fdo#109271]) -> [SKIP][74] ([fdo#109271]) +2 similar issues [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-kbl1/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu.html [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-kbl1/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu.html * igt@kms_plane_alpha_blend@pipe-b-alpha-transparant-fb: - shard-kbl: [DMESG-FAIL][75] ([fdo#103313] / [fdo#103558] / [fdo#105602] / [fdo#108145]) -> [FAIL][76] ([fdo#108145]) [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6714/shard-kbl1/igt@kms_plane_alpha_blend@pipe-b-alpha-transparant-fb.html [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/shard-kbl1/igt@kms_plane_alpha_blend@pipe-b-alpha-transparant-fb.html [fdo#102670]: https://bugs.freedesktop.org/show_bug.cgi?id=102670 [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232 [fdo#103313]: https://bugs.freedesktop.org/show_bug.cgi?id=103313 [fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108 [fdo#104873]: https://bugs.freedesktop.org/show_bug.cgi?id=104873 [fdo#105079]: https://bugs.freedesktop.org/show_bug.cgi?id=105079 [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363 [fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602 [fdo#105767]: https://bugs.freedesktop.org/show_bug.cgi?id=105767 [fdo#106978]: https://bugs.freedesktop.org/show_bug.cgi?id=106978 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724 [fdo#107807]: https://bugs.freedesktop.org/show_bug.cgi?id=107807 [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276 [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#110403]: https://bugs.freedesktop.org/show_bug.cgi?id=110403 [fdo#110428 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110428 [fdo#110841]: https://bugs.freedesktop.org/show_bug.cgi?id=110841 [fdo#110854]: https://bugs.freedesktop.org/show_bug.cgi?id=110854 [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068 [fdo#111325]: https://bugs.freedesktop.org/show_bug.cgi?id=111325 [fdo#111330]: https://bugs.freedesktop.org/show_bug.cgi?id=111330 Participating hosts (10 -> 10) ------------------------------ No changes in participating hosts Build changes ------------- * CI: CI-20190529 -> None * Linux: CI_DRM_6714 -> Patchwork_14039 CI-20190529: 20190529 CI_DRM_6714: 9198974f9fa309c4c74197365844971e0940b227 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5138: b9abe0bf6c478c4f6cac56bff286d6926ad8c0ab @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_14039: d727532eb785fa217ac6eb741c7c3b89e0020bfd @ git://anongit.freedesktop.org/gfx-ci/linux piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14039/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2019-08-16 15:56 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-08-15 17:12 [PATCH 0/5] More WOPCM fixes Michal Wajdeczko 2019-08-15 17:12 ` [PATCH 1/5] drm/i915/uc: Move FW size sanity check back to fetch Michal Wajdeczko 2019-08-15 17:12 ` [PATCH 2/5] drm/i915/wopcm: Check WOPCM layout separately from calculations Michal Wajdeczko 2019-08-15 21:48 ` Michal Wajdeczko 2019-08-16 0:10 ` Daniele Ceraolo Spurio 2019-08-16 0:21 ` Michal Wajdeczko 2019-08-16 0:28 ` Daniele Ceraolo Spurio 2019-08-15 17:12 ` [PATCH 3/5] drm/i915/wopcm: Try to use already locked WOPCM layout Michal Wajdeczko 2019-08-16 0:14 ` Daniele Ceraolo Spurio 2019-08-15 17:12 ` [PATCH 4/5] drm/i915/wopcm: Update error messages Michal Wajdeczko 2019-08-15 17:12 ` [PATCH 5/5] drm/i915/wopmc: Fix SPDX tag location Michal Wajdeczko 2019-08-15 17:52 ` ✗ Fi.CI.BAT: failure for More WOPCM fixes Patchwork 2019-08-15 21:40 ` Michal Wajdeczko 2019-08-15 23:25 ` ✓ Fi.CI.BAT: success for More WOPCM fixes (rev2) Patchwork 2019-08-16 15:56 ` ✓ Fi.CI.IGT: " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox