| /* SPDX-License-Identifier: MIT */ | |
| /* | |
| * Copyright(c) 2025, Intel Corporation. All rights reserved. | |
| */ | |
| #ifndef _XE_MERT_H_ | |
| #define _XE_MERT_H_ | |
| #include <linux/completion.h> | |
| #include <linux/spinlock.h> | |
| #include <linux/types.h> | |
| struct xe_device; | |
| /** | |
| * struct xe_mert - MERT related data | |
| */ | |
| struct xe_mert { | |
| /** @lock: protects the TLB invalidation status */ | |
| spinlock_t lock; | |
| /** @tlb_inv_triggered: indicates if TLB invalidation was triggered */ | |
| bool tlb_inv_triggered; | |
| /** @tlb_inv_done: completion of TLB invalidation */ | |
| struct completion tlb_inv_done; | |
| }; | |
| #ifdef CONFIG_PCI_IOV | |
| void xe_mert_init_early(struct xe_device *xe); | |
| int xe_mert_invalidate_lmtt(struct xe_device *xe); | |
| void xe_mert_irq_handler(struct xe_device *xe, u32 master_ctl); | |
| #else | |
| static inline void xe_mert_irq_handler(struct xe_device *xe, u32 master_ctl) { } | |
| #endif | |
| #endif |