xref: /kvmtool/riscv/include/kvm/kvm-config-arch.h (revision fa958fb68cfbab62b798ec7fe78b150a2dfafaf8)
1 #ifndef KVM__KVM_CONFIG_ARCH_H
2 #define KVM__KVM_CONFIG_ARCH_H
3 
4 #include "kvm/parse-options.h"
5 
6 struct kvm_config_arch {
7 	const char	*dump_dtb_filename;
8 	u64		custom_mvendorid;
9 	u64		custom_marchid;
10 	u64		custom_mimpid;
11 	bool		ext_disabled[KVM_RISCV_ISA_EXT_MAX];
12 	bool		sbi_ext_disabled[KVM_RISCV_SBI_EXT_MAX];
13 };
14 
15 #define OPT_ARCH_RUN(pfx, cfg)						\
16 	pfx,								\
17 	OPT_STRING('\0', "dump-dtb", &(cfg)->dump_dtb_filename,		\
18 		   ".dtb file", "Dump generated .dtb to specified file"),\
19 	OPT_U64('\0', "custom-mvendorid",				\
20 		&(cfg)->custom_mvendorid,				\
21 		"Show custom mvendorid to Guest VCPU"),			\
22 	OPT_U64('\0', "custom-marchid",					\
23 		&(cfg)->custom_marchid,					\
24 		"Show custom marchid to Guest VCPU"),			\
25 	OPT_U64('\0', "custom-mimpid",					\
26 		&(cfg)->custom_mimpid,					\
27 		"Show custom mimpid to Guest VCPU"),			\
28 	OPT_BOOLEAN('\0', "disable-smstateen",				\
29 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_SMSTATEEN],	\
30 		    "Disable Smstateen Extension"),			\
31 	OPT_BOOLEAN('\0', "disable-ssaia",				\
32 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_SSAIA],	\
33 		    "Disable Ssaia Extension"),				\
34 	OPT_BOOLEAN('\0', "disable-sscofpmf",				\
35 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_SSCOFPMF],	\
36 		    "Disable Sscofpmf Extension"),			\
37 	OPT_BOOLEAN('\0', "disable-sstc",				\
38 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_SSTC],	\
39 		    "Disable Sstc Extension"),				\
40 	OPT_BOOLEAN('\0', "disable-svinval",				\
41 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_SVINVAL],	\
42 		    "Disable Svinval Extension"),			\
43 	OPT_BOOLEAN('\0', "disable-svnapot",				\
44 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_SVNAPOT],	\
45 		    "Disable Svnapot Extension"),			\
46 	OPT_BOOLEAN('\0', "disable-svpbmt",				\
47 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_SVPBMT],	\
48 		    "Disable Svpbmt Extension"),			\
49 	OPT_BOOLEAN('\0', "disable-zacas",				\
50 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZACAS],	\
51 		    "Disable Zacas Extension"),				\
52 	OPT_BOOLEAN('\0', "disable-zba",				\
53 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZBA],	\
54 		    "Disable Zba Extension"),				\
55 	OPT_BOOLEAN('\0', "disable-zbb",				\
56 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZBB],	\
57 		    "Disable Zbb Extension"),				\
58 	OPT_BOOLEAN('\0', "disable-zbc",				\
59 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZBC],	\
60 		    "Disable Zbc Extension"),				\
61 	OPT_BOOLEAN('\0', "disable-zbkb",				\
62 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZBKB],	\
63 		    "Disable Zbkb Extension"),				\
64 	OPT_BOOLEAN('\0', "disable-zbkc",				\
65 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZBKC],	\
66 		    "Disable Zbkc Extension"),				\
67 	OPT_BOOLEAN('\0', "disable-zbkx",				\
68 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZBKX],	\
69 		    "Disable Zbkx Extension"),				\
70 	OPT_BOOLEAN('\0', "disable-zbs",				\
71 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZBS],	\
72 		    "Disable Zbs Extension"),				\
73 	OPT_BOOLEAN('\0', "disable-zfa",				\
74 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZFA],	\
75 		    "Disable Zfa Extension"),				\
76 	OPT_BOOLEAN('\0', "disable-zfh",				\
77 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZFH],	\
78 		    "Disable Zfh Extension"),				\
79 	OPT_BOOLEAN('\0', "disable-zfhmin",				\
80 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZFHMIN],	\
81 		    "Disable Zfhmin Extension"),			\
82 	OPT_BOOLEAN('\0', "disable-zicbom",				\
83 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZICBOM],	\
84 		    "Disable Zicbom Extension"),			\
85 	OPT_BOOLEAN('\0', "disable-zicboz",				\
86 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZICBOZ],	\
87 		    "Disable Zicboz Extension"),			\
88 	OPT_BOOLEAN('\0', "disable-zicntr",				\
89 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZICNTR],	\
90 		    "Disable Zicntr Extension"),			\
91 	OPT_BOOLEAN('\0', "disable-zicond",				\
92 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZICOND],	\
93 		    "Disable Zicond Extension"),			\
94 	OPT_BOOLEAN('\0', "disable-zicsr",				\
95 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZICSR],	\
96 		    "Disable Zicsr Extension"),				\
97 	OPT_BOOLEAN('\0', "disable-zifencei",				\
98 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZIFENCEI],	\
99 		    "Disable Zifencei Extension"),			\
100 	OPT_BOOLEAN('\0', "disable-zihintntl",				\
101 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZIHINTNTL],	\
102 		    "Disable Zihintntl Extension"),			\
103 	OPT_BOOLEAN('\0', "disable-zihintpause",			\
104 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZIHINTPAUSE],\
105 		    "Disable Zihintpause Extension"),			\
106 	OPT_BOOLEAN('\0', "disable-zihpm",				\
107 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZIHPM],	\
108 		    "Disable Zihpm Extension"),				\
109 	OPT_BOOLEAN('\0', "disable-zknd",				\
110 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZKND],	\
111 		    "Disable Zknd Extension"),				\
112 	OPT_BOOLEAN('\0', "disable-zkne",				\
113 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZKNE],	\
114 		    "Disable Zkne Extension"),				\
115 	OPT_BOOLEAN('\0', "disable-zknh",				\
116 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZKNH],	\
117 		    "Disable Zknh Extension"),				\
118 	OPT_BOOLEAN('\0', "disable-zkr",				\
119 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZKR],	\
120 		    "Disable Zkr Extension"),				\
121 	OPT_BOOLEAN('\0', "disable-zksed",				\
122 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZKSED],	\
123 		    "Disable Zksed Extension"),				\
124 	OPT_BOOLEAN('\0', "disable-zksh",				\
125 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZKSH],	\
126 		    "Disable Zksh Extension"),				\
127 	OPT_BOOLEAN('\0', "disable-zkt",				\
128 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZKT],	\
129 		    "Disable Zkt Extension"),				\
130 	OPT_BOOLEAN('\0', "disable-ztso",				\
131 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZTSO],	\
132 		    "Disable Ztso Extension"),				\
133 	OPT_BOOLEAN('\0', "disable-zvbb",				\
134 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVBB],	\
135 		    "Disable Zvbb Extension"),				\
136 	OPT_BOOLEAN('\0', "disable-zvbc",				\
137 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVBC],	\
138 		    "Disable Zvbc Extension"),				\
139 	OPT_BOOLEAN('\0', "disable-zvfh",				\
140 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVFH],	\
141 		    "Disable Zvfh Extension"),				\
142 	OPT_BOOLEAN('\0', "disable-zvfhmin",				\
143 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVFHMIN],	\
144 		    "Disable Zvfhmin Extension"),			\
145 	OPT_BOOLEAN('\0', "disable-zvkb",				\
146 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVKB],	\
147 		    "Disable Zvkb Extension"),				\
148 	OPT_BOOLEAN('\0', "disable-zvkg",				\
149 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVKG],	\
150 		    "Disable Zvkg Extension"),				\
151 	OPT_BOOLEAN('\0', "disable-zvkned",				\
152 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVKNED],	\
153 		    "Disable Zvkned Extension"),			\
154 	OPT_BOOLEAN('\0', "disable-zvknha",				\
155 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVKNHA],	\
156 		    "Disable Zvknha Extension"),			\
157 	OPT_BOOLEAN('\0', "disable-zvknhb",				\
158 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVKNHB],	\
159 		    "Disable Zvknhb Extension"),			\
160 	OPT_BOOLEAN('\0', "disable-zvksed",				\
161 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVKSED],	\
162 		    "Disable Zvksed Extension"),			\
163 	OPT_BOOLEAN('\0', "disable-zvksh",				\
164 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVKSH],	\
165 		    "Disable Zvksh Extension"),				\
166 	OPT_BOOLEAN('\0', "disable-zvkt",				\
167 		    &(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_ZVKT],	\
168 		    "Disable Zvkt Extension"),				\
169 	OPT_BOOLEAN('\0', "disable-sbi-legacy",				\
170 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_V01],	\
171 		    "Disable SBI Legacy Extensions"),			\
172 	OPT_BOOLEAN('\0', "disable-sbi-time",				\
173 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_TIME],	\
174 		    "Disable SBI Time Extension"),			\
175 	OPT_BOOLEAN('\0', "disable-sbi-ipi",				\
176 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_IPI],	\
177 		    "Disable SBI IPI Extension"),			\
178 	OPT_BOOLEAN('\0', "disable-sbi-rfence",				\
179 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_RFENCE],	\
180 		    "Disable SBI RFence Extension"),			\
181 	OPT_BOOLEAN('\0', "disable-sbi-srst",				\
182 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_SRST],	\
183 		    "Disable SBI SRST Extension"),			\
184 	OPT_BOOLEAN('\0', "disable-sbi-hsm",				\
185 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_HSM],	\
186 		    "Disable SBI HSM Extension"),			\
187 	OPT_BOOLEAN('\0', "disable-sbi-pmu",				\
188 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_PMU],	\
189 		    "Disable SBI PMU Extension"),			\
190 	OPT_BOOLEAN('\0', "disable-sbi-experimental",			\
191 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_EXPERIMENTAL],\
192 		    "Disable SBI Experimental Extensions"),		\
193 	OPT_BOOLEAN('\0', "disable-sbi-vendor",				\
194 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_VENDOR],	\
195 		    "Disable SBI Vendor Extensions"),			\
196 	OPT_BOOLEAN('\0', "disable-sbi-dbcn",				\
197 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_DBCN],	\
198 		    "Disable SBI DBCN Extension"),			\
199 	OPT_BOOLEAN('\0', "disable-sbi-sta",				\
200 		    &(cfg)->sbi_ext_disabled[KVM_RISCV_SBI_EXT_STA],	\
201 		    "Disable SBI STA Extension"),
202 
203 #endif /* KVM__KVM_CONFIG_ARCH_H */
204