drm/xe/oa: MERTOA Wa_14026779378

Do not allow SYS_MEM_LAT_MEASURE_EN bit to be set in SYS_MEM_LAT_MEASURE
register. Doing so can cause memory corruption.

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Link: https://patch.msgid.link/20260430161459.2892545-5-ashutosh.dixit@intel.com
This commit is contained in:
Ashutosh Dixit 2026-04-30 09:14:59 -07:00
parent 8555fb8474
commit 160c1af4fb
3 changed files with 8 additions and 0 deletions

View File

@ -6,6 +6,9 @@
#ifndef __XE_OA_REGS__
#define __XE_OA_REGS__
#define SYS_MEM_LAT_MEASURE XE_REG(0x145194)
#define SYS_MEM_LAT_MEASURE_EN REG_BIT(31)
#define RPM_CONFIG1 XE_REG(0xd04)
#define GT_NOA_ENABLE REG_BIT(9)

View File

@ -6,3 +6,4 @@
14026539277 PLATFORM(NOVALAKE_P), PLATFORM_STEP(A0, B0)
14026633728 PLATFORM(CRESCENTISLAND)
14026746987 PLATFORM(CRESCENTISLAND)
14026779378 PLATFORM(CRESCENTISLAND)

View File

@ -2251,6 +2251,10 @@ static bool xe_oa_is_valid_mux_addr(struct xe_oa *oa, u32 addr)
static bool xe_oa_is_valid_config_reg(struct xe_oa *oa, u32 addr, u32 val)
{
if (XE_DEVICE_WA(oa->xe, 14026779378) &&
addr == SYS_MEM_LAT_MEASURE.addr && val & SYS_MEM_LAT_MEASURE_EN)
return false;
return xe_oa_is_valid_flex_addr(oa, addr) ||
xe_oa_is_valid_b_counter_addr(oa, addr) ||
xe_oa_is_valid_mux_addr(oa, addr);