[PATCH] drm/xe/xe2: Add workaround 16020183090

Lucas De Marchi lucas.demarchi at intel.com
Thu Dec 7 18:33:34 UTC 2023


On Thu, Dec 07, 2023 at 10:23:55AM -0800, Matt Roper wrote:
>On Thu, Dec 07, 2023 at 09:51:17AM -0800, Lucas De Marchi wrote:
>> Graphics version 20.04, used in Lunar Lake, needs WA 16020183090 for
>> steppings A*. Set ENABLE_SEMAPHORE_POLL_BIT in INSTPM(RENDER_RING_BASE)
>> and whitelist CSBE_DEBUG_STATUS for userspace to be able to use it
>> and complement the workaround.
>>
>> Cc: Haridhar Kalvala <haridhar.kalvala at intel.com>
>> Cc: Matt Roper <matthew.d.roper at intel.com>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>> ---
>>  drivers/gpu/drm/xe/regs/xe_engine_regs.h | 4 ++++
>>  drivers/gpu/drm/xe/xe_reg_whitelist.c    | 8 ++++++++
>>  drivers/gpu/drm/xe/xe_wa.c               | 5 +++++
>>  3 files changed, 17 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/regs/xe_engine_regs.h b/drivers/gpu/drm/xe/regs/xe_engine_regs.h
>> index 3942db268b01..93d83ceba873 100644
>> --- a/drivers/gpu/drm/xe/regs/xe_engine_regs.h
>> +++ b/drivers/gpu/drm/xe/regs/xe_engine_regs.h
>> @@ -46,6 +46,9 @@
>>  #define RING_EMR(base)				XE_REG((base) + 0xb4)
>>  #define RING_ESR(base)				XE_REG((base) + 0xb8)
>>
>> +#define INSTPM(base)				XE_REG((base) + 0xc0, XE_REG_OPTION_MASKED)
>> +#define   ENABLE_SEMAPHORE_POLL_BIT		REG_BIT(13)
>> +
>>  #define RING_CMD_CCTL(base)			XE_REG((base) + 0xc4, XE_REG_OPTION_MASKED)
>>
>>  #define CSFE_CHICKEN1_REG(base)			XE_REG((base) + 0xd4, XE_REG_OPTION_MASKED)
>> @@ -92,6 +95,7 @@
>>  #define   TAIL_ADDR				0x001FFFF8
>>
>>  #define RING_CTX_TIMESTAMP(base)		XE_REG((base) + 0x3a8)
>> +#define CSBE_DEBUG_STATUS(base)			XE_REG((base) + 0x3fc)
>>
>>  #define RING_FORCE_TO_NONPRIV(base, i)		XE_REG(((base) + 0x4d0) + (i) * 4)
>>  #define   RING_FORCE_TO_NONPRIV_DENY		REG_BIT(30)
>> diff --git a/drivers/gpu/drm/xe/xe_reg_whitelist.c b/drivers/gpu/drm/xe/xe_reg_whitelist.c
>> index e66ae1bdaf9c..3fa2ece7d228 100644
>> --- a/drivers/gpu/drm/xe/xe_reg_whitelist.c
>> +++ b/drivers/gpu/drm/xe/xe_reg_whitelist.c
>> @@ -7,9 +7,11 @@
>>
>>  #include "regs/xe_engine_regs.h"
>>  #include "regs/xe_gt_regs.h"
>> +#include "regs/xe_regs.h"
>>  #include "xe_gt_types.h"
>>  #include "xe_platform_types.h"
>>  #include "xe_rtp.h"
>> +#include "xe_step.h"
>>
>>  #undef XE_REG_MCR
>>  #define XE_REG_MCR(...)     XE_REG(__VA_ARGS__, .mcr = 1)
>> @@ -56,6 +58,12 @@ static const struct xe_rtp_entry_sr register_whitelist[] = {
>>  				   RING_FORCE_TO_NONPRIV_DENY,
>>  				   XE_RTP_ACTION_FLAG(ENGINE_BASE)))
>>  	},
>> +	{ XE_RTP_NAME("16020183090"),
>> +	  XE_RTP_RULES(GRAPHICS_VERSION(2004), GRAPHICS_STEP(A0, B0),
>> +		       ENGINE_CLASS(RENDER)),
>> +	  XE_RTP_ACTIONS(WHITELIST(CSBE_DEBUG_STATUS(RENDER_RING_BASE), 0))
>
>For the userspace steps of this workaround, it sounds like they only
>really need RO access to this register rather than RW.  Should we use
>RING_FORCE_TO_NONPRIV_ACCESS_RD?  I guess it doesn't really matter too
>much since the register itself is RO so even if userspace tries to write
>to it nothing should happen.
>
>Up to you whether it's worth explicitly flagging it RO here or not;
>either way,
>
>Reviewed-by: Matt Roper <matthew.d.roper at intel.com>


eventually this is going away since it's A* stepping only and there's
no harm the way it is as you said, so I think I will leave it like that.


thanks
Lucas De Marchi

>
>> +	},
>> +
>>  	{}
>>  };
>>
>> diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c
>> index 23f1285135b8..f3326825bef5 100644
>> --- a/drivers/gpu/drm/xe/xe_wa.c
>> +++ b/drivers/gpu/drm/xe/xe_wa.c
>> @@ -737,6 +737,11 @@ static const struct xe_rtp_entry_sr lrc_was[] = {
>>  	  XE_RTP_RULES(GRAPHICS_VERSION(2004), ENGINE_CLASS(RENDER)),
>>  	  XE_RTP_ACTIONS(SET(XEHP_PSS_CHICKEN, FLSH_IGNORES_PSD))
>>  	},
>> +	{ XE_RTP_NAME("16020183090"),
>> +	  XE_RTP_RULES(GRAPHICS_VERSION(2004), GRAPHICS_STEP(A0, B0),
>> +		       ENGINE_CLASS(RENDER)),
>> +	  XE_RTP_ACTIONS(SET(INSTPM(RENDER_RING_BASE), ENABLE_SEMAPHORE_POLL_BIT))
>> +	},
>>
>>  	{}
>>  };
>> --
>> 2.40.1
>>
>
>-- 
>Matt Roper
>Graphics Software Engineer
>Linux GPU Platform Enablement
>Intel Corporation


More information about the Intel-xe mailing list