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