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)
|
15015404425 PLATFORM(LUNARLAKE)
|
||||||
PLATFORM(PANTHERLAKE)
|
PLATFORM(PANTHERLAKE)
|
||||||
22019338487_display PLATFORM(LUNARLAKE)
|
22019338487_display PLATFORM(LUNARLAKE)
|
||||||
|
14022085890 SUBPLATFORM(BATTLEMAGE, G21)
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#include <drm/drm_managed.h>
|
#include <drm/drm_managed.h>
|
||||||
#include <drm/drm_print.h>
|
#include <drm/drm_print.h>
|
||||||
|
#include <generated/xe_device_wa_oob.h>
|
||||||
#include <generated/xe_wa_oob.h>
|
#include <generated/xe_wa_oob.h>
|
||||||
|
|
||||||
#include "abi/guc_actions_slpc_abi.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)
|
if (pc_get_min_freq(pc) > pc->rp0_freq)
|
||||||
ret = pc_set_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)));
|
ret = pc_set_min_freq(pc, max(BMG_MIN_FREQ, pc_get_min_freq(pc)));
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
|
||||||
|
|
@ -335,6 +335,8 @@ static const struct xe_device_desc lnl_desc = {
|
||||||
.vm_max_level = 4,
|
.vm_max_level = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const u16 bmg_g21_ids[] = { INTEL_BMG_G21_IDS(NOP), 0 };
|
||||||
|
|
||||||
static const struct xe_device_desc bmg_desc = {
|
static const struct xe_device_desc bmg_desc = {
|
||||||
DGFX_FEATURES,
|
DGFX_FEATURES,
|
||||||
PLATFORM(BATTLEMAGE),
|
PLATFORM(BATTLEMAGE),
|
||||||
|
|
@ -349,6 +351,10 @@ static const struct xe_device_desc bmg_desc = {
|
||||||
.has_sriov = true,
|
.has_sriov = true,
|
||||||
.max_gt_per_tile = 2,
|
.max_gt_per_tile = 2,
|
||||||
.needs_scratch = true,
|
.needs_scratch = true,
|
||||||
|
.subplatforms = (const struct xe_subplatform_desc[]) {
|
||||||
|
{ XE_SUBPLATFORM_BATTLEMAGE_G21, "G21", bmg_g21_ids },
|
||||||
|
{ }
|
||||||
|
},
|
||||||
.va_bits = 48,
|
.va_bits = 48,
|
||||||
.vm_max_level = 4,
|
.vm_max_level = 4,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ enum xe_subplatform {
|
||||||
XE_SUBPLATFORM_DG2_G10,
|
XE_SUBPLATFORM_DG2_G10,
|
||||||
XE_SUBPLATFORM_DG2_G11,
|
XE_SUBPLATFORM_DG2_G11,
|
||||||
XE_SUBPLATFORM_DG2_G12,
|
XE_SUBPLATFORM_DG2_G12,
|
||||||
|
XE_SUBPLATFORM_BATTLEMAGE_G21,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1138,6 +1138,6 @@ void xe_wa_apply_tile_workarounds(struct xe_tile *tile)
|
||||||
if (IS_SRIOV_VF(tile->xe))
|
if (IS_SRIOV_VF(tile->xe))
|
||||||
return;
|
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);
|
xe_mmio_rmw32(mmio, XEHP_CLOCK_GATE_DIS, 0, SGSI_SIDECLK_DIS);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@
|
||||||
14016763929 SUBPLATFORM(DG2, G10)
|
14016763929 SUBPLATFORM(DG2, G10)
|
||||||
SUBPLATFORM(DG2, G12)
|
SUBPLATFORM(DG2, G12)
|
||||||
16017236439 PLATFORM(PVC)
|
16017236439 PLATFORM(PVC)
|
||||||
22010954014 PLATFORM(DG2)
|
|
||||||
14019821291 MEDIA_VERSION_RANGE(1300, 2000)
|
14019821291 MEDIA_VERSION_RANGE(1300, 2000)
|
||||||
14015076503 MEDIA_VERSION(1300)
|
14015076503 MEDIA_VERSION(1300)
|
||||||
16020292621 GRAPHICS_VERSION(2004), GRAPHICS_STEP(A0, B0)
|
16020292621 GRAPHICS_VERSION(2004), GRAPHICS_STEP(A0, B0)
|
||||||
|
|
@ -74,9 +73,5 @@
|
||||||
16023683509 MEDIA_VERSION(2000), FUNC(xe_rtp_match_psmi_enabled)
|
16023683509 MEDIA_VERSION(2000), FUNC(xe_rtp_match_psmi_enabled)
|
||||||
MEDIA_VERSION(3000), MEDIA_STEP(A0, B0), 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)
|
15015404425_disable PLATFORM(PANTHERLAKE), MEDIA_STEP(B0, FOREVER)
|
||||||
16026007364 MEDIA_VERSION(3000)
|
16026007364 MEDIA_VERSION(3000)
|
||||||
|
|
|
||||||
|
|
@ -849,7 +849,7 @@
|
||||||
MACRO__(0x64B0, ## __VA_ARGS__)
|
MACRO__(0x64B0, ## __VA_ARGS__)
|
||||||
|
|
||||||
/* BMG */
|
/* BMG */
|
||||||
#define INTEL_BMG_IDS(MACRO__, ...) \
|
#define INTEL_BMG_G21_IDS(MACRO__, ...) \
|
||||||
MACRO__(0xE202, ## __VA_ARGS__), \
|
MACRO__(0xE202, ## __VA_ARGS__), \
|
||||||
MACRO__(0xE209, ## __VA_ARGS__), \
|
MACRO__(0xE209, ## __VA_ARGS__), \
|
||||||
MACRO__(0xE20B, ## __VA_ARGS__), \
|
MACRO__(0xE20B, ## __VA_ARGS__), \
|
||||||
|
|
@ -858,7 +858,10 @@
|
||||||
MACRO__(0xE210, ## __VA_ARGS__), \
|
MACRO__(0xE210, ## __VA_ARGS__), \
|
||||||
MACRO__(0xE211, ## __VA_ARGS__), \
|
MACRO__(0xE211, ## __VA_ARGS__), \
|
||||||
MACRO__(0xE212, ## __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__(0xE220, ## __VA_ARGS__), \
|
||||||
MACRO__(0xE221, ## __VA_ARGS__), \
|
MACRO__(0xE221, ## __VA_ARGS__), \
|
||||||
MACRO__(0xE222, ## __VA_ARGS__), \
|
MACRO__(0xE222, ## __VA_ARGS__), \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue