From: Gustavo Sousa Date: Tue, 10 Mar 2026 00:42:06 +0000 (-0300) Subject: drm/xe: Modify stepping info directly in xe_step_*_get() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7e9de44e2c0f7d4cae734af59593054b127c8f69;p=thirdparty%2Fkernel%2Flinux.git drm/xe: Modify stepping info directly in xe_step_*_get() In an upcoming change, we will add a member to struct xe_step_info to represent the platform-level stepping. As such, we should stop assigning the value returned by functions xe_step_pre_gmdid_get() and xe_step_gmdid_get() directly to xe->info.step. Since there are no other users for those functions, let's simply update them to modify xe->info.step directly. Reviewed-by: Matt Roper Link: https://patch.msgid.link/20260309-extra-nvl-p-enabling-patches-v5-1-be9c902ee34e@intel.com Signed-off-by: Gustavo Sousa --- diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c index 8bd8d5c9171e7..0bb22b6917222 100644 --- a/drivers/gpu/drm/xe/xe_pci.c +++ b/drivers/gpu/drm/xe/xe_pci.c @@ -913,7 +913,7 @@ static int xe_info_init(struct xe_device *xe, if (desc->pre_gmdid_graphics_ip) { graphics_ip = desc->pre_gmdid_graphics_ip; media_ip = desc->pre_gmdid_media_ip; - xe->info.step = xe_step_pre_gmdid_get(xe); + xe_step_pre_gmdid_get(xe); } else { xe_assert(xe, !desc->pre_gmdid_media_ip); ret = handle_gmdid(xe, &graphics_ip, &media_ip, @@ -921,9 +921,7 @@ static int xe_info_init(struct xe_device *xe, if (ret) return ret; - xe->info.step = xe_step_gmdid_get(xe, - graphics_gmdid_revid, - media_gmdid_revid); + xe_step_gmdid_get(xe, graphics_gmdid_revid, media_gmdid_revid); } /* diff --git a/drivers/gpu/drm/xe/xe_step.c b/drivers/gpu/drm/xe/xe_step.c index 2860986f82f78..064b604b5b942 100644 --- a/drivers/gpu/drm/xe/xe_step.c +++ b/drivers/gpu/drm/xe/xe_step.c @@ -115,15 +115,17 @@ __diag_pop(); * Convert the PCI revid into proper IP steppings. This should only be * used on platforms that do not have GMD_ID support. */ -struct xe_step_info xe_step_pre_gmdid_get(struct xe_device *xe) +void xe_step_pre_gmdid_get(struct xe_device *xe) { const struct xe_step_info *revids = NULL; - struct xe_step_info step = {}; u16 revid = xe->info.revid; int size = 0; const int *basedie_info = NULL; int basedie_size = 0; int baseid = 0; + u8 graphics = STEP_NONE; + u8 media = STEP_NONE; + u8 basedie = STEP_NONE; if (xe->info.platform == XE_PVC) { baseid = FIELD_GET(GENMASK(5, 3), xe->info.revid); @@ -166,10 +168,12 @@ struct xe_step_info xe_step_pre_gmdid_get(struct xe_device *xe) /* Not using the stepping scheme for the platform yet. */ if (!revids) - return step; + goto done; if (revid < size && revids[revid].graphics != STEP_NONE) { - step = revids[revid]; + graphics = revids[revid].graphics; + media = revids[revid].media; + basedie = revids[revid].basedie; } else { drm_warn(&xe->drm, "Unknown revid 0x%02x\n", revid); @@ -187,25 +191,30 @@ struct xe_step_info xe_step_pre_gmdid_get(struct xe_device *xe) if (revid < size) { drm_dbg(&xe->drm, "Using steppings for revid 0x%02x\n", revid); - step = revids[revid]; + graphics = revids[revid].graphics; + media = revids[revid].media; + basedie = revids[revid].basedie; } else { drm_dbg(&xe->drm, "Using future steppings\n"); - step.graphics = STEP_FUTURE; + graphics = STEP_FUTURE; } } - drm_WARN_ON(&xe->drm, step.graphics == STEP_NONE); + drm_WARN_ON(&xe->drm, graphics == STEP_NONE); if (basedie_info && basedie_size) { if (baseid < basedie_size && basedie_info[baseid] != STEP_NONE) { - step.basedie = basedie_info[baseid]; + basedie = basedie_info[baseid]; } else { drm_warn(&xe->drm, "Unknown baseid 0x%02x\n", baseid); - step.basedie = STEP_FUTURE; + basedie = STEP_FUTURE; } } - return step; +done: + xe->info.step.graphics = graphics; + xe->info.step.media = media; + xe->info.step.basedie = basedie; } /** @@ -220,28 +229,27 @@ struct xe_step_info xe_step_pre_gmdid_get(struct xe_device *xe) * all platforms: major steppings (A0, B0, etc.) are 4 apart, with minor * steppings (A1, A2, etc.) taking the values in between. */ -struct xe_step_info xe_step_gmdid_get(struct xe_device *xe, - u32 graphics_gmdid_revid, - u32 media_gmdid_revid) +void xe_step_gmdid_get(struct xe_device *xe, + u32 graphics_gmdid_revid, + u32 media_gmdid_revid) { - struct xe_step_info step = { - .graphics = STEP_A0 + graphics_gmdid_revid, - .media = STEP_A0 + media_gmdid_revid, - }; + u8 graphics = STEP_A0 + graphics_gmdid_revid; + u8 media = STEP_A0 + media_gmdid_revid; - if (step.graphics >= STEP_FUTURE) { - step.graphics = STEP_FUTURE; + if (graphics >= STEP_FUTURE) { + graphics = STEP_FUTURE; drm_dbg(&xe->drm, "Graphics GMD_ID revid value %d treated as future stepping\n", graphics_gmdid_revid); } - if (step.media >= STEP_FUTURE) { - step.media = STEP_FUTURE; + if (media >= STEP_FUTURE) { + media = STEP_FUTURE; drm_dbg(&xe->drm, "Media GMD_ID revid value %d treated as future stepping\n", media_gmdid_revid); } - return step; + xe->info.step.graphics = graphics; + xe->info.step.media = media; } #define STEP_NAME_CASE(name) \ diff --git a/drivers/gpu/drm/xe/xe_step.h b/drivers/gpu/drm/xe/xe_step.h index 686cb59200c28..6febb7fac476d 100644 --- a/drivers/gpu/drm/xe/xe_step.h +++ b/drivers/gpu/drm/xe/xe_step.h @@ -12,10 +12,10 @@ struct xe_device; -struct xe_step_info xe_step_pre_gmdid_get(struct xe_device *xe); -struct xe_step_info xe_step_gmdid_get(struct xe_device *xe, - u32 graphics_gmdid_revid, - u32 media_gmdid_revid); +void xe_step_pre_gmdid_get(struct xe_device *xe); +void xe_step_gmdid_get(struct xe_device *xe, + u32 graphics_gmdid_revid, + u32 media_gmdid_revid); static inline u32 xe_step_to_gmdid(enum xe_step step) { return step - STEP_A0; } const char *xe_step_name(enum xe_step step);