drm/xe/mert: Use local mert variable to simplify the code

There is no need to always refer to MERT data using tile pointer.
Use of local mert pointer will simplify the code and make it look
like other existing MERT function.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Lukasz Laguna <lukasz.laguna@intel.com>
Reviewed-by: Lukasz Laguna <lukasz.laguna@intel.com>
Link: https://patch.msgid.link/20260109151219.26206-5-michal.wajdeczko@intel.com
This commit is contained in:
Michal Wajdeczko 2026-01-09 16:12:18 +01:00
parent ff4eca1f46
commit 401fabd6e2

View File

@ -52,6 +52,7 @@ int xe_mert_invalidate_lmtt(struct xe_device *xe)
void xe_mert_irq_handler(struct xe_device *xe, u32 master_ctl)
{
struct xe_tile *tile = xe_device_get_root_tile(xe);
struct xe_mert *mert = &tile->mert;
unsigned long flags;
u32 reg_val;
u8 err;
@ -69,13 +70,13 @@ void xe_mert_irq_handler(struct xe_device *xe, u32 master_ctl)
else if (err)
drm_dbg(&xe->drm, "MERT catastrophic error: Unexpected fault (0x%x)\n", err);
spin_lock_irqsave(&tile->mert.lock, flags);
if (tile->mert.tlb_inv_triggered) {
spin_lock_irqsave(&mert->lock, flags);
if (mert->tlb_inv_triggered) {
reg_val = xe_mmio_read32(&tile->mmio, MERT_TLB_INV_DESC_A);
if (!(reg_val & MERT_TLB_INV_DESC_A_VALID)) {
tile->mert.tlb_inv_triggered = false;
complete_all(&tile->mert.tlb_inv_done);
mert->tlb_inv_triggered = false;
complete_all(&mert->tlb_inv_done);
}
}
spin_unlock_irqrestore(&tile->mert.lock, flags);
spin_unlock_irqrestore(&mert->lock, flags);
}