[Intel-xe] [PATCH 1/2] drm/xe/guc: Handle regset overflow check for entire GT
Lucas De Marchi
lucas.demarchi at intel.com
Wed Mar 8 01:11:38 UTC 2023
On Tue, Mar 07, 2023 at 04:55:08PM -0800, Matt Roper wrote:
>Checking whether a single engine's register save/restore entries
>overflow the expected/pre-allocated GuC ADS regset area isn't terribly
>useful; we actually want to check whether the combined entries from all
>engines on the GT overflow the regset space.
>
>Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>
Lucas De Marchi
>---
> drivers/gpu/drm/xe/xe_guc_ads.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_guc_ads.c b/drivers/gpu/drm/xe/xe_guc_ads.c
>index 7a892ff7aba3..fd9911ffeae4 100644
>--- a/drivers/gpu/drm/xe/xe_guc_ads.c
>+++ b/drivers/gpu/drm/xe/xe_guc_ads.c
>@@ -482,8 +482,6 @@ static unsigned int guc_mmio_regset_write(struct xe_guc_ads *ads,
> }
> }
>
>- XE_BUG_ON(ads->regset_size < (count * sizeof(struct guc_mmio_reg)));
>-
> return count;
> }
>
>@@ -496,6 +494,7 @@ static void guc_mmio_reg_state_init(struct xe_guc_ads *ads)
> u32 addr = xe_bo_ggtt_addr(ads->bo) + regset_offset;
> struct iosys_map regset_map = IOSYS_MAP_INIT_OFFSET(ads_to_map(ads),
> regset_offset);
>+ unsigned int regset_used = 0;
>
> for_each_hw_engine(hwe, gt, id) {
> unsigned int count;
>@@ -521,7 +520,11 @@ static void guc_mmio_reg_state_init(struct xe_guc_ads *ads)
>
> addr += count * sizeof(struct guc_mmio_reg);
> iosys_map_incr(®set_map, count * sizeof(struct guc_mmio_reg));
>+
>+ regset_used += count * sizeof(struct guc_mmio_reg);
> }
>+
>+ XE_BUG_ON(regset_used > ads->regset_size);
> }
>
> static void guc_um_init_params(struct xe_guc_ads *ads)
>--
>2.39.2
>
More information about the Intel-xe
mailing list