Message ID | 20230621145500.25624-4-yongxuan.wang@sifive.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v4,1/6] update-linux-headers: sync-up header with Linux for KVM AIA support placeholder | expand |
On Wed, Jun 21, 2023 at 02:54:53PM +0000, Yong-Xuan Wang wrote: > We check the in-kernel irqchip support when using KVM acceleration. > > Signed-off-by: Yong-Xuan Wang <yongxuan.wang@sifive.com> > Reviewed-by: Jim Shu <jim.shu@sifive.com> > Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> > --- > target/riscv/kvm.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c > index 0f932a5b96..eb469e8ca5 100644 > --- a/target/riscv/kvm.c > +++ b/target/riscv/kvm.c > @@ -433,7 +433,18 @@ int kvm_arch_init(MachineState *ms, KVMState *s) > > int kvm_arch_irqchip_create(KVMState *s) > { > - return 0; > + if (kvm_kernel_irqchip_split()) { > + error_report("-machine kernel_irqchip=split is not supported " > + "on RISC-V."); It's best to not split error messages across lines. We can go to 90 chars before checkpatch considers it an error, and I'd still consider it worse to split an error message than to ignore checkpatch and exceed 90 chars. > + exit(1); > + } > + > + /* > + * If we can create the VAIA using the newer device control API, we > + * let the device do this when it initializes itself, otherwise we > + * fall back to the old API This comment appears lifted from arm, but the "fall back to the old API" doesn't apply to riscv since riscv doesn't support KVM_CREATE_IRQCHIP. > + */ > + return kvm_check_extension(s, KVM_CAP_DEVICE_CTRL); > } > > int kvm_arch_process_async_events(CPUState *cs) > -- > 2.17.1 > > Thanks, drew
diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index 0f932a5b96..eb469e8ca5 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -433,7 +433,18 @@ int kvm_arch_init(MachineState *ms, KVMState *s) int kvm_arch_irqchip_create(KVMState *s) { - return 0; + if (kvm_kernel_irqchip_split()) { + error_report("-machine kernel_irqchip=split is not supported " + "on RISC-V."); + exit(1); + } + + /* + * If we can create the VAIA using the newer device control API, we + * let the device do this when it initializes itself, otherwise we + * fall back to the old API + */ + return kvm_check_extension(s, KVM_CAP_DEVICE_CTRL); } int kvm_arch_process_async_events(CPUState *cs)