mirror of https://github.com/torvalds/linux.git
drm/xe: Handle Wa_22010954014 and Wa_14022085890 as device workarounds
When Wa_22010954014 and Wa_14022085890 were first implemented, we didn't have a device workaround infrastructure so we hacked them into the GT workaround list. Now that we have proper device workaround support, move them to the proper place. Note that Wa_14022085890 specifically applies to BMG-G21 platforms, so this requires defining a BMG subplatform to capture the correct subset of device IDs. Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com> Link: https://lore.kernel.org/r/20251013200944.2499947-40-matthew.d.roper@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
This commit is contained in:
parent
4d29240682
commit
78de8f8766
|
|
@ -1,3 +1,5 @@
|
|||
22010954014 PLATFORM(DG2)
|
||||
15015404425 PLATFORM(LUNARLAKE)
|
||||
PLATFORM(PANTHERLAKE)
|
||||
22019338487_display PLATFORM(LUNARLAKE)
|
||||
14022085890 SUBPLATFORM(BATTLEMAGE, G21)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
#include <drm/drm_managed.h>
|
||||
#include <drm/drm_print.h>
|
||||
#include <generated/xe_device_wa_oob.h>
|
||||
#include <generated/xe_wa_oob.h>
|
||||
|
||||
#include "abi/guc_actions_slpc_abi.h"
|
||||
|
|
@ -886,7 +887,7 @@ static int pc_adjust_freq_bounds(struct xe_guc_pc *pc)
|
|||
if (pc_get_min_freq(pc) > pc->rp0_freq)
|
||||
ret = pc_set_min_freq(pc, pc->rp0_freq);
|
||||
|
||||
if (XE_GT_WA(tile->primary_gt, 14022085890))
|
||||
if (XE_DEVICE_WA(tile_to_xe(tile), 14022085890))
|
||||
ret = pc_set_min_freq(pc, max(BMG_MIN_FREQ, pc_get_min_freq(pc)));
|
||||
|
||||
out:
|
||||
|
|
|
|||
|
|
@ -335,6 +335,8 @@ static const struct xe_device_desc lnl_desc = {
|
|||
.vm_max_level = 4,
|
||||
};
|
||||
|
||||
static const u16 bmg_g21_ids[] = { INTEL_BMG_G21_IDS(NOP), 0 };
|
||||
|
||||
static const struct xe_device_desc bmg_desc = {
|
||||
DGFX_FEATURES,
|
||||
PLATFORM(BATTLEMAGE),
|
||||
|
|
@ -349,6 +351,10 @@ static const struct xe_device_desc bmg_desc = {
|
|||
.has_sriov = true,
|
||||
.max_gt_per_tile = 2,
|
||||
.needs_scratch = true,
|
||||
.subplatforms = (const struct xe_subplatform_desc[]) {
|
||||
{ XE_SUBPLATFORM_BATTLEMAGE_G21, "G21", bmg_g21_ids },
|
||||
{ }
|
||||
},
|
||||
.va_bits = 48,
|
||||
.vm_max_level = 4,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ enum xe_subplatform {
|
|||
XE_SUBPLATFORM_DG2_G10,
|
||||
XE_SUBPLATFORM_DG2_G11,
|
||||
XE_SUBPLATFORM_DG2_G12,
|
||||
XE_SUBPLATFORM_BATTLEMAGE_G21,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1138,6 +1138,6 @@ void xe_wa_apply_tile_workarounds(struct xe_tile *tile)
|
|||
if (IS_SRIOV_VF(tile->xe))
|
||||
return;
|
||||
|
||||
if (XE_GT_WA(tile->primary_gt, 22010954014))
|
||||
if (XE_DEVICE_WA(tile->xe, 22010954014))
|
||||
xe_mmio_rmw32(mmio, XEHP_CLOCK_GATE_DIS, 0, SGSI_SIDECLK_DIS);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
14016763929 SUBPLATFORM(DG2, G10)
|
||||
SUBPLATFORM(DG2, G12)
|
||||
16017236439 PLATFORM(PVC)
|
||||
22010954014 PLATFORM(DG2)
|
||||
14019821291 MEDIA_VERSION_RANGE(1300, 2000)
|
||||
14015076503 MEDIA_VERSION(1300)
|
||||
16020292621 GRAPHICS_VERSION(2004), GRAPHICS_STEP(A0, B0)
|
||||
|
|
@ -74,9 +73,5 @@
|
|||
16023683509 MEDIA_VERSION(2000), FUNC(xe_rtp_match_psmi_enabled)
|
||||
MEDIA_VERSION(3000), MEDIA_STEP(A0, B0), FUNC(xe_rtp_match_psmi_enabled)
|
||||
|
||||
# SoC workaround - currently applies to all platforms with the following
|
||||
# primary GT GMDID
|
||||
14022085890 GRAPHICS_VERSION(2001)
|
||||
|
||||
15015404425_disable PLATFORM(PANTHERLAKE), MEDIA_STEP(B0, FOREVER)
|
||||
16026007364 MEDIA_VERSION(3000)
|
||||
|
|
|
|||
|
|
@ -849,7 +849,7 @@
|
|||
MACRO__(0x64B0, ## __VA_ARGS__)
|
||||
|
||||
/* BMG */
|
||||
#define INTEL_BMG_IDS(MACRO__, ...) \
|
||||
#define INTEL_BMG_G21_IDS(MACRO__, ...) \
|
||||
MACRO__(0xE202, ## __VA_ARGS__), \
|
||||
MACRO__(0xE209, ## __VA_ARGS__), \
|
||||
MACRO__(0xE20B, ## __VA_ARGS__), \
|
||||
|
|
@ -858,7 +858,10 @@
|
|||
MACRO__(0xE210, ## __VA_ARGS__), \
|
||||
MACRO__(0xE211, ## __VA_ARGS__), \
|
||||
MACRO__(0xE212, ## __VA_ARGS__), \
|
||||
MACRO__(0xE216, ## __VA_ARGS__), \
|
||||
MACRO__(0xE216, ## __VA_ARGS__)
|
||||
|
||||
#define INTEL_BMG_IDS(MACRO__, ...) \
|
||||
INTEL_BMG_G21_IDS(MACRO__, __VA_ARGS__), \
|
||||
MACRO__(0xE220, ## __VA_ARGS__), \
|
||||
MACRO__(0xE221, ## __VA_ARGS__), \
|
||||
MACRO__(0xE222, ## __VA_ARGS__), \
|
||||
|
|
|
|||
Loading…
Reference in New Issue