xref: /linux/arch/riscv/include/asm/kvm_vcpu_sbi_fwft.h (revision 4f38da1f027ea2c9f01bb71daa7a299c191b6940)
16b72fd17SClément Léger /* SPDX-License-Identifier: GPL-2.0-only */
26b72fd17SClément Léger /*
36b72fd17SClément Léger  * Copyright (c) 2025 Rivos Inc.
46b72fd17SClément Léger  *
56b72fd17SClément Léger  * Authors:
66b72fd17SClément Léger  *     Clément Léger <cleger@rivosinc.com>
76b72fd17SClément Léger  */
86b72fd17SClément Léger 
96b72fd17SClément Léger #ifndef __KVM_VCPU_RISCV_FWFT_H
106b72fd17SClément Léger #define __KVM_VCPU_RISCV_FWFT_H
116b72fd17SClément Léger 
126b72fd17SClément Léger #include <asm/sbi.h>
136b72fd17SClément Léger 
146b72fd17SClément Léger struct kvm_sbi_fwft_feature;
156b72fd17SClément Léger 
166b72fd17SClément Léger struct kvm_sbi_fwft_config {
176b72fd17SClément Léger 	const struct kvm_sbi_fwft_feature *feature;
186b72fd17SClément Léger 	bool supported;
19*48d67106SAnup Patel 	bool enabled;
206b72fd17SClément Léger 	unsigned long flags;
216b72fd17SClément Léger };
226b72fd17SClément Léger 
236b72fd17SClément Léger /* FWFT data structure per vcpu */
246b72fd17SClément Léger struct kvm_sbi_fwft {
256b72fd17SClément Léger 	struct kvm_sbi_fwft_config *configs;
266f576fc0SSamuel Holland #ifndef CONFIG_32BIT
276f576fc0SSamuel Holland 	bool have_vs_pmlen_7;
286f576fc0SSamuel Holland 	bool have_vs_pmlen_16;
296f576fc0SSamuel Holland #endif
306b72fd17SClément Léger };
316b72fd17SClément Léger 
326b72fd17SClément Léger #define vcpu_to_fwft(vcpu) (&(vcpu)->arch.fwft_context)
336b72fd17SClément Léger 
346b72fd17SClément Léger #endif /* !__KVM_VCPU_RISCV_FWFT_H */
35