[Intel-xe] [PATCH 4/4] drm/xe: Sort xe_regs.h

Lucas De Marchi lucas.demarchi at intel.com
Wed Jul 26 14:46:09 UTC 2023


On Tue, Jul 25, 2023 at 03:55:15PM -0700, Matt Roper wrote:
>On Tue, Jul 25, 2023 at 01:28:36PM -0700, Lucas De Marchi wrote:
>> Sort it by register address, but  keeping a few exceptions when a
>> register for a platform changed the address, but has the same
>> functionality as an already existing register.
>>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>> ---
>>  drivers/gpu/drm/xe/regs/xe_regs.h | 56 +++++++++++++++----------------
>>  1 file changed, 28 insertions(+), 28 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/regs/xe_regs.h b/drivers/gpu/drm/xe/regs/xe_regs.h
>> index 3f7052fec6cc..0b3607e0ba1c 100644
>> --- a/drivers/gpu/drm/xe/regs/xe_regs.h
>> +++ b/drivers/gpu/drm/xe/regs/xe_regs.h
>> @@ -7,9 +7,6 @@
>>
>>  #include "regs/xe_reg_defs.h"
>>
>> -#define GU_CNTL					XE_REG(0x101010)
>> -#define   LMEM_INIT				REG_BIT(7)
>> -
>>  #define RENDER_RING_BASE			0x02000
>>  #define BSD_RING_BASE				0x1c0000
>>  #define BSD2_RING_BASE				0x1c4000
>> @@ -45,36 +42,15 @@
>>  #define FF_THREAD_MODE				XE_REG(0x20a0)
>
>Looks like there are some registers that don't really belong in this
>file.  We'll need to move at least this one to the engine register
>header at some point.  Actually we should probably move the *_RING_BASE
>registers as well.  But that can all happen in a future patch.
>
>>  #define   FF_TESSELATION_DOP_GATE_DISABLE	BIT(19)
>>
>> -#define PVC_RP_STATE_CAP			XE_REG(0x281014)
>> -#define MTL_RP_STATE_CAP			XE_REG(0x138000)
>> -
>> -#define MTL_MEDIAP_STATE_CAP			XE_REG(0x138020)
>> -#define   MTL_RP0_CAP_MASK			REG_GENMASK(8, 0)
>> -#define   MTL_RPN_CAP_MASK			REG_GENMASK(24, 16)
>> -
>> -#define MTL_GT_RPE_FREQUENCY			XE_REG(0x13800c)
>> -#define MTL_MPE_FREQUENCY			XE_REG(0x13802c)
>> -#define   MTL_RPE_MASK				REG_GENMASK(8, 0)
>> -
>> -#define SOFTWARE_FLAGS_SPR33			XE_REG(0x4f084)
>> +#define TIMESTAMP_OVERRIDE					XE_REG(0x44074)
>> +#define   TIMESTAMP_OVERRIDE_US_COUNTER_DENOMINATOR_MASK	REG_GENMASK(15, 12)
>> +#define   TIMESTAMP_OVERRIDE_US_COUNTER_DIVIDER_MASK		REG_GENMASK(9, 0)
>>
>>  #define PCU_IRQ_OFFSET				0x444e0
>>  #define GU_MISC_IRQ_OFFSET			0x444f0
>>  #define   GU_MISC_GSE				REG_BIT(27)
>>
>> -#define GFX_MSTR_IRQ				XE_REG(0x190010)
>> -#define   MASTER_IRQ				REG_BIT(31)
>> -#define   GU_MISC_IRQ				REG_BIT(29)
>> -#define   DISPLAY_IRQ				REG_BIT(16)
>> -#define   GT_DW_IRQ(x)				REG_BIT(x)
>> -
>> -#define DG1_MSTR_TILE_INTR			XE_REG(0x190008)
>> -#define   DG1_MSTR_IRQ				REG_BIT(31)
>> -#define   DG1_MSTR_TILE(t)			REG_BIT(t)
>> -
>> -#define TIMESTAMP_OVERRIDE					XE_REG(0x44074)
>> -#define   TIMESTAMP_OVERRIDE_US_COUNTER_DENOMINATOR_MASK	REG_GENMASK(15, 12)
>> -#define   TIMESTAMP_OVERRIDE_US_COUNTER_DIVIDER_MASK		REG_GENMASK(9, 0)
>> +#define SOFTWARE_FLAGS_SPR33			XE_REG(0x4f084)
>>
>>  #define GGC					XE_REG(0x108040)
>>  #define   GMS_MASK				REG_GENMASK(15, 8)
>> @@ -87,4 +63,28 @@
>>  #define STOLEN_RESERVED				XE_REG(0x1082C0)
>
>We should also make sure we're writing hex in lowercase consistently
>too.  Again, that can be done in a future patch.

yeah, I mistakenly added this is uppercase in the previous patch since I
copied the value from the other register that is also uppercase.

>
>>  #define   WOPCM_SIZE_MASK			REG_GENMASK64(8, 7)
>>
>> +#define GU_CNTL					XE_REG(0x101010)
>> +#define   LMEM_INIT				REG_BIT(7)
>> +
>> +#define MTL_RP_STATE_CAP			XE_REG(0x138000)
>> +#define PVC_RP_STATE_CAP			XE_REG(0x281014)
>
>I think it's better to keep consistent sorting rather than trying to
>keep registers that moved between platforms in the same place.  Too many
>exceptions like this ultimately leads to chaos when people aren't sure
>how far they can stretch the exceptions.

Agreed, but we probably should write down the rules. It would be good to
have some rules that will allow use to eventually convert this to an
autogenerated file. However we have the following situations:

1) Regardless of moving the engine bases,

#define RENDER_RING_BASE		0x02000
#define BSD_RING_BASE			0x1c0000

would we leave them spreadout through the file?

2) When the register keeps the same definition and just changes the
offset for a new platform, what to do with the bitfield definition?

Lucas De Marchi

>
>> +
>> +#define MTL_MEDIAP_STATE_CAP			XE_REG(0x138020)
>> +#define   MTL_RPN_CAP_MASK			REG_GENMASK(24, 16)
>> +#define   MTL_RP0_CAP_MASK			REG_GENMASK(8, 0)
>> +
>> +#define MTL_GT_RPE_FREQUENCY			XE_REG(0x13800c)
>
>It looks like this one should be slightly earlier (0x13800c < 0x138020).
>
>
>Matt
>
>> +#define MTL_MPE_FREQUENCY			XE_REG(0x13802c)
>> +#define   MTL_RPE_MASK				REG_GENMASK(8, 0)
>> +
>> +#define DG1_MSTR_TILE_INTR			XE_REG(0x190008)
>> +#define   DG1_MSTR_IRQ				REG_BIT(31)
>> +#define   DG1_MSTR_TILE(t)			REG_BIT(t)
>> +
>> +#define GFX_MSTR_IRQ				XE_REG(0x190010)
>> +#define   MASTER_IRQ				REG_BIT(31)
>> +#define   GU_MISC_IRQ				REG_BIT(29)
>> +#define   DISPLAY_IRQ				REG_BIT(16)
>> +#define   GT_DW_IRQ(x)				REG_BIT(x)
>> +
>>  #endif
>> --
>> 2.40.1
>>
>
>-- 
>Matt Roper
>Graphics Software Engineer
>Linux GPU Platform Enablement
>Intel Corporation


More information about the Intel-xe mailing list