File Index
Files and directories
Sign in
FILE

kvm_tlb.h

File preview with syntax highlighting.

linux-6.19.14/arch/riscv/include/asm/kvm_tlb.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Copyright (c) 2025 Ventana Micro Systems Inc.
 4 */
 5
 6#ifndef __RISCV_KVM_TLB_H_
 7#define __RISCV_KVM_TLB_H_
 8
 9#include <linux/kvm_types.h>
10
11enum kvm_riscv_hfence_type {
12	KVM_RISCV_HFENCE_UNKNOWN = 0,
13	KVM_RISCV_HFENCE_GVMA_VMID_GPA,
14	KVM_RISCV_HFENCE_GVMA_VMID_ALL,
15	KVM_RISCV_HFENCE_VVMA_ASID_GVA,
16	KVM_RISCV_HFENCE_VVMA_ASID_ALL,
17	KVM_RISCV_HFENCE_VVMA_GVA,
18	KVM_RISCV_HFENCE_VVMA_ALL
19};
20
21struct kvm_riscv_hfence {
22	enum kvm_riscv_hfence_type type;
23	unsigned long asid;
24	unsigned long vmid;
25	unsigned long order;
26	gpa_t addr;
27	gpa_t size;
28};
29
30#define KVM_RISCV_VCPU_MAX_HFENCE	64
31
32#define KVM_RISCV_GSTAGE_TLB_MIN_ORDER		12
33
34void kvm_riscv_local_hfence_gvma_vmid_gpa(unsigned long vmid,
35					  gpa_t gpa, gpa_t gpsz,
36					  unsigned long order);
37void kvm_riscv_local_hfence_gvma_vmid_all(unsigned long vmid);
38void kvm_riscv_local_hfence_gvma_gpa(gpa_t gpa, gpa_t gpsz,
39				     unsigned long order);
40void kvm_riscv_local_hfence_gvma_all(void);
41void kvm_riscv_local_hfence_vvma_asid_gva(unsigned long vmid,
42					  unsigned long asid,
43					  unsigned long gva,
44					  unsigned long gvsz,
45					  unsigned long order);
46void kvm_riscv_local_hfence_vvma_asid_all(unsigned long vmid,
47					  unsigned long asid);
48void kvm_riscv_local_hfence_vvma_gva(unsigned long vmid,
49				     unsigned long gva, unsigned long gvsz,
50				     unsigned long order);
51void kvm_riscv_local_hfence_vvma_all(unsigned long vmid);
52void kvm_riscv_local_tlb_sanitize(struct kvm_vcpu *vcpu);
53
54void kvm_riscv_tlb_flush_process(struct kvm_vcpu *vcpu);
55
56void kvm_riscv_fence_i_process(struct kvm_vcpu *vcpu);
57void kvm_riscv_hfence_vvma_all_process(struct kvm_vcpu *vcpu);
58void kvm_riscv_hfence_process(struct kvm_vcpu *vcpu);
59
60void kvm_riscv_fence_i(struct kvm *kvm,
61		       unsigned long hbase, unsigned long hmask);
62void kvm_riscv_hfence_gvma_vmid_gpa(struct kvm *kvm,
63				    unsigned long hbase, unsigned long hmask,
64				    gpa_t gpa, gpa_t gpsz,
65				    unsigned long order, unsigned long vmid);
66void kvm_riscv_hfence_gvma_vmid_all(struct kvm *kvm,
67				    unsigned long hbase, unsigned long hmask,
68				    unsigned long vmid);
69void kvm_riscv_hfence_vvma_asid_gva(struct kvm *kvm,
70				    unsigned long hbase, unsigned long hmask,
71				    unsigned long gva, unsigned long gvsz,
72				    unsigned long order, unsigned long asid,
73				    unsigned long vmid);
74void kvm_riscv_hfence_vvma_asid_all(struct kvm *kvm,
75				    unsigned long hbase, unsigned long hmask,
76				    unsigned long asid, unsigned long vmid);
77void kvm_riscv_hfence_vvma_gva(struct kvm *kvm,
78			       unsigned long hbase, unsigned long hmask,
79			       unsigned long gva, unsigned long gvsz,
80			       unsigned long order, unsigned long vmid);
81void kvm_riscv_hfence_vvma_all(struct kvm *kvm,
82			       unsigned long hbase, unsigned long hmask,
83			       unsigned long vmid);
84
85#endif
~/ Read-only file preview.