[PATCH v2] drm/xe: Use FIELD_PREP for lrc descriptor

Lucas De Marchi lucas.demarchi at intel.com
Fri Mar 22 18:58:14 UTC 2024


On Wed, Mar 20, 2024 at 11:34:53PM -0700, Niranjana Vishwanathapura wrote:
>Use FIELD_PREP for setting lrc descriptor fields instead
>of shifting values to fields.
>
>v2: Use ULL macro variants
>
>Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura at intel.com>
>---
> drivers/gpu/drm/xe/xe_lrc.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
>index 95e0f7b1ec3f..9dd706b00b3d 100644
>--- a/drivers/gpu/drm/xe/xe_lrc.c
>+++ b/drivers/gpu/drm/xe/xe_lrc.c
>@@ -26,13 +26,13 @@
> #include "xe_sriov.h"
> #include "xe_vm.h"
>
>-#define LRC_VALID				(1 << 0)
>-#define LRC_PRIVILEGE				(1 << 8)
>-#define LRC_ADDRESSING_MODE_SHIFT		3
>+#define LRC_VALID				BIT_ULL(0)
>+#define LRC_PRIVILEGE				BIT_ULL(8)
>+#define LRC_ADDRESSING_MODE			GENMASK_ULL(4, 3)
> #define LRC_LEGACY_64B_CONTEXT			3
>
>-#define ENGINE_CLASS_SHIFT			61
>-#define ENGINE_INSTANCE_SHIFT			48
>+#define LRC_ENGINE_CLASS			GENMASK_ULL(63, 61)
>+#define LRC_ENGINE_INSTANCE			GENMASK_ULL(53, 48)
>
> struct xe_lrc_snapshot {
> 	struct xe_bo *lrc_bo;
>@@ -797,19 +797,19 @@ int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
> 	if (xe->info.has_asid && vm)
> 		xe_lrc_write_ctx_reg(lrc, PVC_CTX_ASID, vm->usm.asid);
>
>-	lrc->desc = LRC_VALID;
>-	lrc->desc |= LRC_LEGACY_64B_CONTEXT << LRC_ADDRESSING_MODE_SHIFT;
>+	lrc->desc = FIELD_PREP(LRC_VALID, 1);

this

>+	lrc->desc |= FIELD_PREP(LRC_ADDRESSING_MODE, LRC_LEGACY_64B_CONTEXT);
> 	/* TODO: Priority */
>
> 	/* While this appears to have something about privileged batches or
> 	 * some such, it really just means PPGTT mode.
> 	 */
> 	if (vm)
>-		lrc->desc |= LRC_PRIVILEGE;
>+		lrc->desc |= FIELD_PREP(LRC_PRIVILEGE, 1);

and this

could stay as is. We usually don't use GENMASK and FIELD_PREP for 1-bit
values: git grep -e 'FIELD_PREP(.*, 1)' -- drivers/gpu/drm/xe

otherwise this is Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>

Lucas De Marchi

>
> 	if (GRAPHICS_VERx100(xe) < 1250) {
>-		lrc->desc |= (u64)hwe->instance << ENGINE_INSTANCE_SHIFT;
>-		lrc->desc |= (u64)hwe->class << ENGINE_CLASS_SHIFT;
>+		lrc->desc |= FIELD_PREP(LRC_ENGINE_INSTANCE, hwe->instance);
>+		lrc->desc |= FIELD_PREP(LRC_ENGINE_CLASS, hwe->class);
> 	}
>
> 	arb_enable = MI_ARB_ON_OFF | MI_ARB_ENABLE;
>-- 
>2.43.0
>


More information about the Intel-xe mailing list