22019338487_display PLATFORM(LUNARLAKE)
14022085890 SUBPLATFORM(BATTLEMAGE, G21)
14026539277 PLATFORM(NOVALAKE_P), PLATFORM_STEP(A0, B0)
+14026633728 PLATFORM(CRESCENTISLAND)
#include <uapi/drm/xe_drm.h>
#include <generated/xe_wa_oob.h>
+#include <generated/xe_device_wa_oob.h>
#include "abi/guc_actions_slpc_abi.h"
#include "instructions/xe_mi_commands.h"
xe_map_wr(stream->oa->xe, map, report_offset + 4, u32, 0);
}
+static bool mert_wa_14026633728(struct xe_oa_stream *s)
+{
+ return s->oa_unit->type == DRM_XE_OA_UNIT_TYPE_MERT && XE_DEVICE_WA(s->oa->xe, 14026633728);
+}
+
static bool xe_oa_buffer_check_unlocked(struct xe_oa_stream *stream)
{
u32 gtt_offset = xe_bo_ggtt_addr(stream->oa_buffer.bo);
static int xe_oa_alloc_oa_buffer(struct xe_oa_stream *stream, size_t size)
{
+ u32 vram = mert_wa_14026633728(stream) ?
+ XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(stream->oa->xe)) :
+ XE_BO_FLAG_SYSTEM;
struct xe_bo *bo;
bo = xe_bo_create_pin_map_novm(stream->oa->xe, stream->gt->tile,
size, ttm_bo_type_kernel,
- XE_BO_FLAG_SYSTEM | XE_BO_FLAG_GGTT, false);
+ vram | XE_BO_FLAG_GGTT, false);
if (IS_ERR(bo))
return PTR_ERR(bo);