mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 13:06:59 +02:00
drm/xe: Add assert for XE_WA() usage
It's not always safe to call XE_WA() in the driver initialization. Add a xe_gt_assert() so this doesn't go unnoticed. While at it, fix typo in kernel-doc about OOB workarounds. Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240722160815.4085605-1-lucas.demarchi@intel.com Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
This commit is contained in:
parent
a2b4da9501
commit
66ac3451fb
|
|
@ -387,8 +387,14 @@ struct xe_gt {
|
|||
unsigned long *engine;
|
||||
/** @wa_active.lrc: bitmap with active LRC workarounds */
|
||||
unsigned long *lrc;
|
||||
/** @wa_active.oob: bitmap with active OOB workaroudns */
|
||||
/** @wa_active.oob: bitmap with active OOB workarounds */
|
||||
unsigned long *oob;
|
||||
/**
|
||||
* @wa_active.oob_initialized: mark oob as initialized to help
|
||||
* detecting misuse of XE_WA() - it can only be called on
|
||||
* initialization after OOB WAs have being processed
|
||||
*/
|
||||
bool oob_initialized;
|
||||
} wa_active;
|
||||
|
||||
/** @user_engines: engines present in GT and available to userspace */
|
||||
|
|
|
|||
|
|
@ -755,6 +755,7 @@ void xe_wa_process_oob(struct xe_gt *gt)
|
|||
|
||||
xe_rtp_process_ctx_enable_active_tracking(&ctx, gt->wa_active.oob,
|
||||
ARRAY_SIZE(oob_was));
|
||||
gt->wa_active.oob_initialized = true;
|
||||
xe_rtp_process(&ctx, oob_was);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#ifndef _XE_WA_
|
||||
#define _XE_WA_
|
||||
|
||||
#include "xe_assert.h"
|
||||
|
||||
struct drm_printer;
|
||||
struct xe_gt;
|
||||
struct xe_hw_engine;
|
||||
|
|
@ -25,6 +27,9 @@ void xe_wa_dump(struct xe_gt *gt, struct drm_printer *p);
|
|||
* @gt__: gt instance
|
||||
* @id__: XE_OOB_<id__>, as generated by build system in generated/xe_wa_oob.h
|
||||
*/
|
||||
#define XE_WA(gt__, id__) test_bit(XE_WA_OOB_ ## id__, (gt__)->wa_active.oob)
|
||||
#define XE_WA(gt__, id__) ({ \
|
||||
xe_gt_assert(gt__, (gt__)->wa_active.oob_initialized); \
|
||||
test_bit(XE_WA_OOB_ ## id__, (gt__)->wa_active.oob); \
|
||||
})
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user