11fc30960SLukasz Laguna /* SPDX-License-Identifier: MIT */ 21fc30960SLukasz Laguna /* 31fc30960SLukasz Laguna * Copyright(c) 2025, Intel Corporation. All rights reserved. 41fc30960SLukasz Laguna */ 51fc30960SLukasz Laguna 6e7994954SMichal Wajdeczko #ifndef _XE_MERT_H_ 7e7994954SMichal Wajdeczko #define _XE_MERT_H_ 81fc30960SLukasz Laguna 91fc30960SLukasz Laguna #include <linux/completion.h> 101fc30960SLukasz Laguna #include <linux/spinlock.h> 111fc30960SLukasz Laguna #include <linux/types.h> 121fc30960SLukasz Laguna 131fc30960SLukasz Laguna struct xe_device; 141fc30960SLukasz Laguna 15a92c68ebSMichal Wajdeczko /** 16a92c68ebSMichal Wajdeczko * struct xe_mert - MERT related data 17a92c68ebSMichal Wajdeczko */ 181fc30960SLukasz Laguna struct xe_mert { 191fc30960SLukasz Laguna /** @lock: protects the TLB invalidation status */ 201fc30960SLukasz Laguna spinlock_t lock; 211fc30960SLukasz Laguna /** @tlb_inv_triggered: indicates if TLB invalidation was triggered */ 221fc30960SLukasz Laguna bool tlb_inv_triggered; 23a92c68ebSMichal Wajdeczko /** @tlb_inv_done: completion of TLB invalidation */ 241fc30960SLukasz Laguna struct completion tlb_inv_done; 251fc30960SLukasz Laguna }; 261fc30960SLukasz Laguna 271fc30960SLukasz Laguna #ifdef CONFIG_PCI_IOV 28*7970e04dSMichal Wajdeczko void xe_mert_init_early(struct xe_device *xe); 29ff4eca1fSMichal Wajdeczko int xe_mert_invalidate_lmtt(struct xe_device *xe); 301fc30960SLukasz Laguna void xe_mert_irq_handler(struct xe_device *xe, u32 master_ctl); 311fc30960SLukasz Laguna #else 321fc30960SLukasz Laguna static inline void xe_mert_irq_handler(struct xe_device *xe, u32 master_ctl) { } 331fc30960SLukasz Laguna #endif 341fc30960SLukasz Laguna 35e7994954SMichal Wajdeczko #endif 36