162306a36Sopenharmony_ci/* SPDX-License-Identifier: MIT */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright © 2023 Intel Corporation
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef INTEL_TLB_H
762306a36Sopenharmony_ci#define INTEL_TLB_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/seqlock.h>
1062306a36Sopenharmony_ci#include <linux/types.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include "intel_gt_types.h"
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_civoid intel_gt_invalidate_tlb_full(struct intel_gt *gt, u32 seqno);
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_civoid intel_gt_init_tlb(struct intel_gt *gt);
1762306a36Sopenharmony_civoid intel_gt_fini_tlb(struct intel_gt *gt);
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_cistatic inline u32 intel_gt_tlb_seqno(const struct intel_gt *gt)
2062306a36Sopenharmony_ci{
2162306a36Sopenharmony_ci	return seqprop_sequence(&gt->tlb.seqno);
2262306a36Sopenharmony_ci}
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cistatic inline u32 intel_gt_next_invalidate_tlb_full(const struct intel_gt *gt)
2562306a36Sopenharmony_ci{
2662306a36Sopenharmony_ci	return intel_gt_tlb_seqno(gt) | 1;
2762306a36Sopenharmony_ci}
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci#endif /* INTEL_TLB_H */
30