FILE
kvm_tlb.h
File preview with syntax highlighting.
linux-6.19.14/arch/riscv/include/asm/kvm_tlb.h
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.