197403Sobrien/* SPDX-License-Identifier: MIT */
297403Sobrien/*
397403Sobrien * Copyright �� 2023 Intel Corporation
497403Sobrien */
597403Sobrien
697403Sobrien#ifndef INTEL_TLB_H
797403Sobrien#define INTEL_TLB_H
897403Sobrien
997403Sobrien#include <linux/seqlock.h>
1097403Sobrien#include <linux/types.h>
1197403Sobrien
1297403Sobrien#include "intel_gt_types.h"
1397403Sobrien
1497403Sobrienvoid intel_gt_invalidate_tlb_full(struct intel_gt *gt, u32 seqno);
1597403Sobrien
16169691Skanvoid intel_gt_init_tlb(struct intel_gt *gt);
1797403Sobrienvoid intel_gt_fini_tlb(struct intel_gt *gt);
1897403Sobrien
1997403Sobrienstatic inline u32 intel_gt_tlb_seqno(const struct intel_gt *gt)
2097403Sobrien{
2197403Sobrien	return seqprop_sequence(&gt->tlb.seqno);
2297403Sobrien}
2397403Sobrien
2497403Sobrienstatic inline u32 intel_gt_next_invalidate_tlb_full(const struct intel_gt *gt)
2597403Sobrien{
2697403Sobrien	return intel_gt_tlb_seqno(gt) | 1;
2797403Sobrien}
28132720Skan
29132720Skan#endif /* INTEL_TLB_H */
3097403Sobrien