* [RFC 0/2] Add risc-v vhost-net support @ 2020-07-24 8:54 ` Yifei Jiang 0 siblings, 0 replies; 14+ messages in thread From: Yifei Jiang @ 2020-07-24 8:54 UTC (permalink / raw) To: pbonzini, paul.walmsley, palmer, aou Cc: anup.patel, atish.patra, kvm, kvm-riscv, linux-riscv, linux-kernel, victor.zhangxiaofeng, wu.wubin, zhang.zhanghailiang, dengkai1, limingwang, Yifei Jiang Hi, These two patches enable support for vhost-net on RISC-V architecture. They are developed based on the Linux source in this repo: https://github.com/avpatel/linux, the branch is riscv_kvm_v13. The accompanying QEMU is from the repo: https://github.com/alistair23/qemu, the branch is hyp-ext-v0.6.next. In order for the QEMU to work with KVM, the patch found here is necessary: https://patchwork.kernel.org/cover/11435965/ Several steps to use this: 1. create virbr0 on riscv64 emulation $ brctl addbr virbr0 $ brctl stp virbr0 on $ ifconfig virbr0 up $ ifconfig virbr0 <virbr0_ip> netmask <virbr0_netmask> 2. boot riscv64 guestOS on riscv64 emulation $ ./qemu-system-riscv64 -M virt,accel=kvm -m 1024M -cpu host -nographic \ -name guest=riscv-guest \ -smp 2 \ -kernel ./Image \ -drive file=./guest.img,format=raw,id=hd0 \ -device virtio-blk,drive=hd0 \ -netdev type=tap,vhost=on,script=./ifup.sh,downscript=./ifdown.sh,id=net0 \ -append "root=/dev/vda rw console=ttyS0 earlycon=sbi" $ cat ifup.sh #!/bin/sh brctl addif virbr0 $1 ifconfig $1 up $ cat ifdown.sh #!/bin/sh ifconfig $1 down brctl delif virbr0 $1 This brenchmark is vhost-net compare with virtio: $ ./netperf -H <virbr0_ip> -l 100 -t TCP_STREAM vhost-net: Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 100.07 457.55 virtio: Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 100.07 227.02 The next step is to support irqfd on RISC-V architecture. Yifei Jiang (2): RISC-V: KVM: enable ioeventfd capability and compile for risc-v RISC-V: KVM: read\write kernel mmio device support arch/riscv/kvm/Kconfig | 2 ++ arch/riscv/kvm/Makefile | 2 +- arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ arch/riscv/kvm/vm.c | 1 + 4 files changed, 36 insertions(+), 7 deletions(-) -- 2.19.1 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [RFC 0/2] Add risc-v vhost-net support @ 2020-07-24 8:54 ` Yifei Jiang 0 siblings, 0 replies; 14+ messages in thread From: Yifei Jiang @ 2020-07-24 8:54 UTC (permalink / raw) To: pbonzini, paul.walmsley, palmer, aou Cc: victor.zhangxiaofeng, zhang.zhanghailiang, kvm, anup.patel, linux-kernel, atish.patra, Yifei Jiang, kvm-riscv, limingwang, linux-riscv, wu.wubin, dengkai1 Hi, These two patches enable support for vhost-net on RISC-V architecture. They are developed based on the Linux source in this repo: https://github.com/avpatel/linux, the branch is riscv_kvm_v13. The accompanying QEMU is from the repo: https://github.com/alistair23/qemu, the branch is hyp-ext-v0.6.next. In order for the QEMU to work with KVM, the patch found here is necessary: https://patchwork.kernel.org/cover/11435965/ Several steps to use this: 1. create virbr0 on riscv64 emulation $ brctl addbr virbr0 $ brctl stp virbr0 on $ ifconfig virbr0 up $ ifconfig virbr0 <virbr0_ip> netmask <virbr0_netmask> 2. boot riscv64 guestOS on riscv64 emulation $ ./qemu-system-riscv64 -M virt,accel=kvm -m 1024M -cpu host -nographic \ -name guest=riscv-guest \ -smp 2 \ -kernel ./Image \ -drive file=./guest.img,format=raw,id=hd0 \ -device virtio-blk,drive=hd0 \ -netdev type=tap,vhost=on,script=./ifup.sh,downscript=./ifdown.sh,id=net0 \ -append "root=/dev/vda rw console=ttyS0 earlycon=sbi" $ cat ifup.sh #!/bin/sh brctl addif virbr0 $1 ifconfig $1 up $ cat ifdown.sh #!/bin/sh ifconfig $1 down brctl delif virbr0 $1 This brenchmark is vhost-net compare with virtio: $ ./netperf -H <virbr0_ip> -l 100 -t TCP_STREAM vhost-net: Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 100.07 457.55 virtio: Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 100.07 227.02 The next step is to support irqfd on RISC-V architecture. Yifei Jiang (2): RISC-V: KVM: enable ioeventfd capability and compile for risc-v RISC-V: KVM: read\write kernel mmio device support arch/riscv/kvm/Kconfig | 2 ++ arch/riscv/kvm/Makefile | 2 +- arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ arch/riscv/kvm/vm.c | 1 + 4 files changed, 36 insertions(+), 7 deletions(-) -- 2.19.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 14+ messages in thread
* [RFC 1/2] RISC-V: KVM: enable ioeventfd capability and compile for risc-v 2020-07-24 8:54 ` Yifei Jiang @ 2020-07-24 8:54 ` Yifei Jiang -1 siblings, 0 replies; 14+ messages in thread From: Yifei Jiang @ 2020-07-24 8:54 UTC (permalink / raw) To: pbonzini, paul.walmsley, palmer, aou Cc: anup.patel, atish.patra, kvm, kvm-riscv, linux-riscv, linux-kernel, victor.zhangxiaofeng, wu.wubin, zhang.zhanghailiang, dengkai1, limingwang, Yifei Jiang Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> Signed-off-by: Mingwang Li <limingwang@huawei.com> --- arch/riscv/kvm/Kconfig | 2 ++ arch/riscv/kvm/Makefile | 2 +- arch/riscv/kvm/vm.c | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/riscv/kvm/Kconfig b/arch/riscv/kvm/Kconfig index 2356dc52ebb3..95d85d893ab6 100644 --- a/arch/riscv/kvm/Kconfig +++ b/arch/riscv/kvm/Kconfig @@ -4,6 +4,7 @@ # source "virt/kvm/Kconfig" +source "drivers/vhost/Kconfig" menuconfig VIRTUALIZATION bool "Virtualization" @@ -26,6 +27,7 @@ config KVM select KVM_MMIO select HAVE_KVM_VCPU_ASYNC_IOCTL select SRCU + select HAVE_KVM_EVENTFD help Support hosting virtualized guest machines. diff --git a/arch/riscv/kvm/Makefile b/arch/riscv/kvm/Makefile index b56dc1650d2c..3ad46fe44900 100644 --- a/arch/riscv/kvm/Makefile +++ b/arch/riscv/kvm/Makefile @@ -2,7 +2,7 @@ # Makefile for RISC-V KVM support # -common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o) +common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o eventfd.o) ccflags-y := -Ivirt/kvm -Iarch/riscv/kvm diff --git a/arch/riscv/kvm/vm.c b/arch/riscv/kvm/vm.c index 4f2498198cb5..473299e71f68 100644 --- a/arch/riscv/kvm/vm.c +++ b/arch/riscv/kvm/vm.c @@ -52,6 +52,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext) int r; switch (ext) { + case KVM_CAP_IOEVENTFD: case KVM_CAP_DEVICE_CTRL: case KVM_CAP_USER_MEMORY: case KVM_CAP_SYNC_MMU: -- 2.19.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [RFC 1/2] RISC-V: KVM: enable ioeventfd capability and compile for risc-v @ 2020-07-24 8:54 ` Yifei Jiang 0 siblings, 0 replies; 14+ messages in thread From: Yifei Jiang @ 2020-07-24 8:54 UTC (permalink / raw) To: pbonzini, paul.walmsley, palmer, aou Cc: victor.zhangxiaofeng, zhang.zhanghailiang, kvm, anup.patel, linux-kernel, atish.patra, Yifei Jiang, kvm-riscv, limingwang, linux-riscv, wu.wubin, dengkai1 Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> Signed-off-by: Mingwang Li <limingwang@huawei.com> --- arch/riscv/kvm/Kconfig | 2 ++ arch/riscv/kvm/Makefile | 2 +- arch/riscv/kvm/vm.c | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/riscv/kvm/Kconfig b/arch/riscv/kvm/Kconfig index 2356dc52ebb3..95d85d893ab6 100644 --- a/arch/riscv/kvm/Kconfig +++ b/arch/riscv/kvm/Kconfig @@ -4,6 +4,7 @@ # source "virt/kvm/Kconfig" +source "drivers/vhost/Kconfig" menuconfig VIRTUALIZATION bool "Virtualization" @@ -26,6 +27,7 @@ config KVM select KVM_MMIO select HAVE_KVM_VCPU_ASYNC_IOCTL select SRCU + select HAVE_KVM_EVENTFD help Support hosting virtualized guest machines. diff --git a/arch/riscv/kvm/Makefile b/arch/riscv/kvm/Makefile index b56dc1650d2c..3ad46fe44900 100644 --- a/arch/riscv/kvm/Makefile +++ b/arch/riscv/kvm/Makefile @@ -2,7 +2,7 @@ # Makefile for RISC-V KVM support # -common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o) +common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o eventfd.o) ccflags-y := -Ivirt/kvm -Iarch/riscv/kvm diff --git a/arch/riscv/kvm/vm.c b/arch/riscv/kvm/vm.c index 4f2498198cb5..473299e71f68 100644 --- a/arch/riscv/kvm/vm.c +++ b/arch/riscv/kvm/vm.c @@ -52,6 +52,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext) int r; switch (ext) { + case KVM_CAP_IOEVENTFD: case KVM_CAP_DEVICE_CTRL: case KVM_CAP_USER_MEMORY: case KVM_CAP_SYNC_MMU: -- 2.19.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [RFC 1/2] RISC-V: KVM: enable ioeventfd capability and compile for risc-v 2020-07-24 8:54 ` Yifei Jiang @ 2020-07-26 12:48 ` Anup Patel -1 siblings, 0 replies; 14+ messages in thread From: Anup Patel @ 2020-07-26 12:48 UTC (permalink / raw) To: Yifei Jiang Cc: Paolo Bonzini, Paul Walmsley, Palmer Dabbelt, Albert Ou, Anup Patel, Atish Patra, KVM General, kvm-riscv, linux-riscv, linux-kernel@vger.kernel.org List, Zhangxiaofeng (F), wu.wubin, Zhanghailiang, dengkai (A), limingwang Please change subject to: "RISC-V: KVM: enable ioeventfd capability" Also add 1-2 sentences of commit description. On Fri, Jul 24, 2020 at 2:25 PM Yifei Jiang <jiangyifei@huawei.com> wrote: > > Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> > Signed-off-by: Mingwang Li <limingwang@huawei.com> > --- > arch/riscv/kvm/Kconfig | 2 ++ > arch/riscv/kvm/Makefile | 2 +- > arch/riscv/kvm/vm.c | 1 + > 3 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/kvm/Kconfig b/arch/riscv/kvm/Kconfig > index 2356dc52ebb3..95d85d893ab6 100644 > --- a/arch/riscv/kvm/Kconfig > +++ b/arch/riscv/kvm/Kconfig > @@ -4,6 +4,7 @@ > # > > source "virt/kvm/Kconfig" > +source "drivers/vhost/Kconfig" > > menuconfig VIRTUALIZATION > bool "Virtualization" > @@ -26,6 +27,7 @@ config KVM > select KVM_MMIO > select HAVE_KVM_VCPU_ASYNC_IOCTL > select SRCU > + select HAVE_KVM_EVENTFD > help > Support hosting virtualized guest machines. > > diff --git a/arch/riscv/kvm/Makefile b/arch/riscv/kvm/Makefile > index b56dc1650d2c..3ad46fe44900 100644 > --- a/arch/riscv/kvm/Makefile > +++ b/arch/riscv/kvm/Makefile > @@ -2,7 +2,7 @@ > # Makefile for RISC-V KVM support > # > > -common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o) > +common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o eventfd.o) > > ccflags-y := -Ivirt/kvm -Iarch/riscv/kvm > > diff --git a/arch/riscv/kvm/vm.c b/arch/riscv/kvm/vm.c > index 4f2498198cb5..473299e71f68 100644 > --- a/arch/riscv/kvm/vm.c > +++ b/arch/riscv/kvm/vm.c > @@ -52,6 +52,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext) > int r; > > switch (ext) { > + case KVM_CAP_IOEVENTFD: > case KVM_CAP_DEVICE_CTRL: > case KVM_CAP_USER_MEMORY: > case KVM_CAP_SYNC_MMU: > -- > 2.19.1 > > Regards, Anup ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC 1/2] RISC-V: KVM: enable ioeventfd capability and compile for risc-v @ 2020-07-26 12:48 ` Anup Patel 0 siblings, 0 replies; 14+ messages in thread From: Anup Patel @ 2020-07-26 12:48 UTC (permalink / raw) To: Yifei Jiang Cc: Albert Ou, Zhanghailiang, KVM General, Anup Patel, linux-kernel@vger.kernel.org List, limingwang, Atish Patra, Zhangxiaofeng (F), Palmer Dabbelt, kvm-riscv, Paul Walmsley, Paolo Bonzini, linux-riscv, wu.wubin, dengkai (A) Please change subject to: "RISC-V: KVM: enable ioeventfd capability" Also add 1-2 sentences of commit description. On Fri, Jul 24, 2020 at 2:25 PM Yifei Jiang <jiangyifei@huawei.com> wrote: > > Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> > Signed-off-by: Mingwang Li <limingwang@huawei.com> > --- > arch/riscv/kvm/Kconfig | 2 ++ > arch/riscv/kvm/Makefile | 2 +- > arch/riscv/kvm/vm.c | 1 + > 3 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/kvm/Kconfig b/arch/riscv/kvm/Kconfig > index 2356dc52ebb3..95d85d893ab6 100644 > --- a/arch/riscv/kvm/Kconfig > +++ b/arch/riscv/kvm/Kconfig > @@ -4,6 +4,7 @@ > # > > source "virt/kvm/Kconfig" > +source "drivers/vhost/Kconfig" > > menuconfig VIRTUALIZATION > bool "Virtualization" > @@ -26,6 +27,7 @@ config KVM > select KVM_MMIO > select HAVE_KVM_VCPU_ASYNC_IOCTL > select SRCU > + select HAVE_KVM_EVENTFD > help > Support hosting virtualized guest machines. > > diff --git a/arch/riscv/kvm/Makefile b/arch/riscv/kvm/Makefile > index b56dc1650d2c..3ad46fe44900 100644 > --- a/arch/riscv/kvm/Makefile > +++ b/arch/riscv/kvm/Makefile > @@ -2,7 +2,7 @@ > # Makefile for RISC-V KVM support > # > > -common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o) > +common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o eventfd.o) > > ccflags-y := -Ivirt/kvm -Iarch/riscv/kvm > > diff --git a/arch/riscv/kvm/vm.c b/arch/riscv/kvm/vm.c > index 4f2498198cb5..473299e71f68 100644 > --- a/arch/riscv/kvm/vm.c > +++ b/arch/riscv/kvm/vm.c > @@ -52,6 +52,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext) > int r; > > switch (ext) { > + case KVM_CAP_IOEVENTFD: > case KVM_CAP_DEVICE_CTRL: > case KVM_CAP_USER_MEMORY: > case KVM_CAP_SYNC_MMU: > -- > 2.19.1 > > Regards, Anup _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 14+ messages in thread
* [RFC 2/2] RISC-V: KVM: read\write kernel mmio device support 2020-07-24 8:54 ` Yifei Jiang @ 2020-07-24 8:54 ` Yifei Jiang -1 siblings, 0 replies; 14+ messages in thread From: Yifei Jiang @ 2020-07-24 8:54 UTC (permalink / raw) To: pbonzini, paul.walmsley, palmer, aou Cc: anup.patel, atish.patra, kvm, kvm-riscv, linux-riscv, linux-kernel, victor.zhangxiaofeng, wu.wubin, zhang.zhanghailiang, dengkai1, limingwang, Yifei Jiang Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> Signed-off-by: Mingwang Li <limingwang@huawei.com> --- arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c index e97ba96cb0ae..448f11179fa8 100644 --- a/arch/riscv/kvm/vcpu_exit.c +++ b/arch/riscv/kvm/vcpu_exit.c @@ -191,6 +191,8 @@ static int virtual_inst_fault(struct kvm_vcpu *vcpu, struct kvm_run *run, static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, unsigned long fault_addr, unsigned long htinst) { + int ret; + u8 data_buf[8]; unsigned long insn; int shift = 0, len = 0; struct kvm_cpu_trap utrap = { 0 }; @@ -272,19 +274,32 @@ static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, vcpu->arch.mmio_decode.len = len; vcpu->arch.mmio_decode.return_handled = 0; - /* Exit to userspace for MMIO emulation */ - vcpu->stat.mmio_exit_user++; - run->exit_reason = KVM_EXIT_MMIO; + ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, fault_addr, len, + data_buf); + run->mmio.is_write = false; run->mmio.phys_addr = fault_addr; run->mmio.len = len; + if (!ret) { + /* We handled the access successfully in the kernel. */ + memcpy(run->mmio.data, data_buf, len); + vcpu->stat.mmio_exit_kernel++; + kvm_riscv_vcpu_mmio_return(vcpu, run); + return 1; + } + + /* Exit to userspace for MMIO emulation */ + vcpu->stat.mmio_exit_user++; + run->exit_reason = KVM_EXIT_MMIO; + return 0; } static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, unsigned long fault_addr, unsigned long htinst) { + int ret; u8 data8; u16 data16; u32 data32; @@ -378,13 +393,24 @@ static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, return -ENOTSUPP; }; - /* Exit to userspace for MMIO emulation */ - vcpu->stat.mmio_exit_user++; - run->exit_reason = KVM_EXIT_MMIO; + ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, fault_addr, len, + run->mmio.data); + run->mmio.is_write = true; run->mmio.phys_addr = fault_addr; run->mmio.len = len; + if (!ret) { + /* We handled the access successfully in the kernel. */ + vcpu->stat.mmio_exit_kernel++; + kvm_riscv_vcpu_mmio_return(vcpu, run); + return 1; + } + + /* Exit to userspace for MMIO emulation */ + vcpu->stat.mmio_exit_user++; + run->exit_reason = KVM_EXIT_MMIO; + return 0; } -- 2.19.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [RFC 2/2] RISC-V: KVM: read\write kernel mmio device support @ 2020-07-24 8:54 ` Yifei Jiang 0 siblings, 0 replies; 14+ messages in thread From: Yifei Jiang @ 2020-07-24 8:54 UTC (permalink / raw) To: pbonzini, paul.walmsley, palmer, aou Cc: victor.zhangxiaofeng, zhang.zhanghailiang, kvm, anup.patel, linux-kernel, atish.patra, Yifei Jiang, kvm-riscv, limingwang, linux-riscv, wu.wubin, dengkai1 Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> Signed-off-by: Mingwang Li <limingwang@huawei.com> --- arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c index e97ba96cb0ae..448f11179fa8 100644 --- a/arch/riscv/kvm/vcpu_exit.c +++ b/arch/riscv/kvm/vcpu_exit.c @@ -191,6 +191,8 @@ static int virtual_inst_fault(struct kvm_vcpu *vcpu, struct kvm_run *run, static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, unsigned long fault_addr, unsigned long htinst) { + int ret; + u8 data_buf[8]; unsigned long insn; int shift = 0, len = 0; struct kvm_cpu_trap utrap = { 0 }; @@ -272,19 +274,32 @@ static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, vcpu->arch.mmio_decode.len = len; vcpu->arch.mmio_decode.return_handled = 0; - /* Exit to userspace for MMIO emulation */ - vcpu->stat.mmio_exit_user++; - run->exit_reason = KVM_EXIT_MMIO; + ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, fault_addr, len, + data_buf); + run->mmio.is_write = false; run->mmio.phys_addr = fault_addr; run->mmio.len = len; + if (!ret) { + /* We handled the access successfully in the kernel. */ + memcpy(run->mmio.data, data_buf, len); + vcpu->stat.mmio_exit_kernel++; + kvm_riscv_vcpu_mmio_return(vcpu, run); + return 1; + } + + /* Exit to userspace for MMIO emulation */ + vcpu->stat.mmio_exit_user++; + run->exit_reason = KVM_EXIT_MMIO; + return 0; } static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, unsigned long fault_addr, unsigned long htinst) { + int ret; u8 data8; u16 data16; u32 data32; @@ -378,13 +393,24 @@ static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, return -ENOTSUPP; }; - /* Exit to userspace for MMIO emulation */ - vcpu->stat.mmio_exit_user++; - run->exit_reason = KVM_EXIT_MMIO; + ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, fault_addr, len, + run->mmio.data); + run->mmio.is_write = true; run->mmio.phys_addr = fault_addr; run->mmio.len = len; + if (!ret) { + /* We handled the access successfully in the kernel. */ + vcpu->stat.mmio_exit_kernel++; + kvm_riscv_vcpu_mmio_return(vcpu, run); + return 1; + } + + /* Exit to userspace for MMIO emulation */ + vcpu->stat.mmio_exit_user++; + run->exit_reason = KVM_EXIT_MMIO; + return 0; } -- 2.19.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [RFC 2/2] RISC-V: KVM: read\write kernel mmio device support 2020-07-24 8:54 ` Yifei Jiang @ 2020-07-26 12:57 ` Anup Patel -1 siblings, 0 replies; 14+ messages in thread From: Anup Patel @ 2020-07-26 12:57 UTC (permalink / raw) To: Yifei Jiang Cc: Paolo Bonzini, Paul Walmsley, Palmer Dabbelt, Albert Ou, Anup Patel, Atish Patra, KVM General, kvm-riscv, linux-riscv, linux-kernel@vger.kernel.org List, Zhangxiaofeng (F), wu.wubin, Zhanghailiang, dengkai (A), limingwang On Fri, Jul 24, 2020 at 2:25 PM Yifei Jiang <jiangyifei@huawei.com> wrote: > > Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> > Signed-off-by: Mingwang Li <limingwang@huawei.com> > --- > arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ > 1 file changed, 32 insertions(+), 6 deletions(-) > > diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c > index e97ba96cb0ae..448f11179fa8 100644 > --- a/arch/riscv/kvm/vcpu_exit.c > +++ b/arch/riscv/kvm/vcpu_exit.c > @@ -191,6 +191,8 @@ static int virtual_inst_fault(struct kvm_vcpu *vcpu, struct kvm_run *run, > static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, > unsigned long fault_addr, unsigned long htinst) > { > + int ret; > + u8 data_buf[8]; > unsigned long insn; > int shift = 0, len = 0; > struct kvm_cpu_trap utrap = { 0 }; > @@ -272,19 +274,32 @@ static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, > vcpu->arch.mmio_decode.len = len; > vcpu->arch.mmio_decode.return_handled = 0; > > - /* Exit to userspace for MMIO emulation */ > - vcpu->stat.mmio_exit_user++; > - run->exit_reason = KVM_EXIT_MMIO; > + ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, fault_addr, len, > + data_buf); > + Move "ret = kvm_io_bus_read()" just before "if (!ret)". > run->mmio.is_write = false; > run->mmio.phys_addr = fault_addr; > run->mmio.len = len; > > + if (!ret) { > + /* We handled the access successfully in the kernel. */ > + memcpy(run->mmio.data, data_buf, len); > + vcpu->stat.mmio_exit_kernel++; > + kvm_riscv_vcpu_mmio_return(vcpu, run); > + return 1; > + } > + > + /* Exit to userspace for MMIO emulation */ > + vcpu->stat.mmio_exit_user++; > + run->exit_reason = KVM_EXIT_MMIO; > + > return 0; > } > > static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, > unsigned long fault_addr, unsigned long htinst) > { > + int ret; > u8 data8; > u16 data16; > u32 data32; > @@ -378,13 +393,24 @@ static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, > return -ENOTSUPP; > }; > > - /* Exit to userspace for MMIO emulation */ > - vcpu->stat.mmio_exit_user++; > - run->exit_reason = KVM_EXIT_MMIO; > + ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, fault_addr, len, > + run->mmio.data); > + Same as above. Move "ret = kvm_io_bus_write()" just before "if (!ret) {" > run->mmio.is_write = true; > run->mmio.phys_addr = fault_addr; > run->mmio.len = len; > > + if (!ret) { > + /* We handled the access successfully in the kernel. */ > + vcpu->stat.mmio_exit_kernel++; > + kvm_riscv_vcpu_mmio_return(vcpu, run); > + return 1; > + } > + > + /* Exit to userspace for MMIO emulation */ > + vcpu->stat.mmio_exit_user++; > + run->exit_reason = KVM_EXIT_MMIO; > + > return 0; > } > > -- > 2.19.1 > > Regards, Anup ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC 2/2] RISC-V: KVM: read\write kernel mmio device support @ 2020-07-26 12:57 ` Anup Patel 0 siblings, 0 replies; 14+ messages in thread From: Anup Patel @ 2020-07-26 12:57 UTC (permalink / raw) To: Yifei Jiang Cc: Albert Ou, Zhanghailiang, KVM General, Anup Patel, linux-kernel@vger.kernel.org List, limingwang, Atish Patra, Zhangxiaofeng (F), Palmer Dabbelt, kvm-riscv, Paul Walmsley, Paolo Bonzini, linux-riscv, wu.wubin, dengkai (A) On Fri, Jul 24, 2020 at 2:25 PM Yifei Jiang <jiangyifei@huawei.com> wrote: > > Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> > Signed-off-by: Mingwang Li <limingwang@huawei.com> > --- > arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ > 1 file changed, 32 insertions(+), 6 deletions(-) > > diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c > index e97ba96cb0ae..448f11179fa8 100644 > --- a/arch/riscv/kvm/vcpu_exit.c > +++ b/arch/riscv/kvm/vcpu_exit.c > @@ -191,6 +191,8 @@ static int virtual_inst_fault(struct kvm_vcpu *vcpu, struct kvm_run *run, > static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, > unsigned long fault_addr, unsigned long htinst) > { > + int ret; > + u8 data_buf[8]; > unsigned long insn; > int shift = 0, len = 0; > struct kvm_cpu_trap utrap = { 0 }; > @@ -272,19 +274,32 @@ static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, > vcpu->arch.mmio_decode.len = len; > vcpu->arch.mmio_decode.return_handled = 0; > > - /* Exit to userspace for MMIO emulation */ > - vcpu->stat.mmio_exit_user++; > - run->exit_reason = KVM_EXIT_MMIO; > + ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, fault_addr, len, > + data_buf); > + Move "ret = kvm_io_bus_read()" just before "if (!ret)". > run->mmio.is_write = false; > run->mmio.phys_addr = fault_addr; > run->mmio.len = len; > > + if (!ret) { > + /* We handled the access successfully in the kernel. */ > + memcpy(run->mmio.data, data_buf, len); > + vcpu->stat.mmio_exit_kernel++; > + kvm_riscv_vcpu_mmio_return(vcpu, run); > + return 1; > + } > + > + /* Exit to userspace for MMIO emulation */ > + vcpu->stat.mmio_exit_user++; > + run->exit_reason = KVM_EXIT_MMIO; > + > return 0; > } > > static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, > unsigned long fault_addr, unsigned long htinst) > { > + int ret; > u8 data8; > u16 data16; > u32 data32; > @@ -378,13 +393,24 @@ static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, > return -ENOTSUPP; > }; > > - /* Exit to userspace for MMIO emulation */ > - vcpu->stat.mmio_exit_user++; > - run->exit_reason = KVM_EXIT_MMIO; > + ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, fault_addr, len, > + run->mmio.data); > + Same as above. Move "ret = kvm_io_bus_write()" just before "if (!ret) {" > run->mmio.is_write = true; > run->mmio.phys_addr = fault_addr; > run->mmio.len = len; > > + if (!ret) { > + /* We handled the access successfully in the kernel. */ > + vcpu->stat.mmio_exit_kernel++; > + kvm_riscv_vcpu_mmio_return(vcpu, run); > + return 1; > + } > + > + /* Exit to userspace for MMIO emulation */ > + vcpu->stat.mmio_exit_user++; > + run->exit_reason = KVM_EXIT_MMIO; > + > return 0; > } > > -- > 2.19.1 > > Regards, Anup _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC 2/2] RISC-V: KVM: read\write kernel mmio device support 2020-07-24 8:54 ` Yifei Jiang @ 2020-07-26 12:58 ` Anup Patel -1 siblings, 0 replies; 14+ messages in thread From: Anup Patel @ 2020-07-26 12:58 UTC (permalink / raw) To: Yifei Jiang Cc: Paolo Bonzini, Paul Walmsley, Palmer Dabbelt, Albert Ou, Anup Patel, Atish Patra, KVM General, kvm-riscv, linux-riscv, linux-kernel@vger.kernel.org List, Zhangxiaofeng (F), wu.wubin, Zhanghailiang, dengkai (A), limingwang Change subject to: RISC-V: KVM: kernel mmio read/write support Also add 1-2 sentences of commit description. On Fri, Jul 24, 2020 at 2:25 PM Yifei Jiang <jiangyifei@huawei.com> wrote: > > Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> > Signed-off-by: Mingwang Li <limingwang@huawei.com> > --- > arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ > 1 file changed, 32 insertions(+), 6 deletions(-) > > diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c > index e97ba96cb0ae..448f11179fa8 100644 > --- a/arch/riscv/kvm/vcpu_exit.c > +++ b/arch/riscv/kvm/vcpu_exit.c > @@ -191,6 +191,8 @@ static int virtual_inst_fault(struct kvm_vcpu *vcpu, struct kvm_run *run, > static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, > unsigned long fault_addr, unsigned long htinst) > { > + int ret; > + u8 data_buf[8]; > unsigned long insn; > int shift = 0, len = 0; > struct kvm_cpu_trap utrap = { 0 }; > @@ -272,19 +274,32 @@ static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, > vcpu->arch.mmio_decode.len = len; > vcpu->arch.mmio_decode.return_handled = 0; > > - /* Exit to userspace for MMIO emulation */ > - vcpu->stat.mmio_exit_user++; > - run->exit_reason = KVM_EXIT_MMIO; > + ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, fault_addr, len, > + data_buf); > + > run->mmio.is_write = false; > run->mmio.phys_addr = fault_addr; > run->mmio.len = len; > > + if (!ret) { > + /* We handled the access successfully in the kernel. */ > + memcpy(run->mmio.data, data_buf, len); > + vcpu->stat.mmio_exit_kernel++; > + kvm_riscv_vcpu_mmio_return(vcpu, run); > + return 1; > + } > + > + /* Exit to userspace for MMIO emulation */ > + vcpu->stat.mmio_exit_user++; > + run->exit_reason = KVM_EXIT_MMIO; > + > return 0; > } > > static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, > unsigned long fault_addr, unsigned long htinst) > { > + int ret; > u8 data8; > u16 data16; > u32 data32; > @@ -378,13 +393,24 @@ static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, > return -ENOTSUPP; > }; > > - /* Exit to userspace for MMIO emulation */ > - vcpu->stat.mmio_exit_user++; > - run->exit_reason = KVM_EXIT_MMIO; > + ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, fault_addr, len, > + run->mmio.data); > + > run->mmio.is_write = true; > run->mmio.phys_addr = fault_addr; > run->mmio.len = len; > > + if (!ret) { > + /* We handled the access successfully in the kernel. */ > + vcpu->stat.mmio_exit_kernel++; > + kvm_riscv_vcpu_mmio_return(vcpu, run); > + return 1; > + } > + > + /* Exit to userspace for MMIO emulation */ > + vcpu->stat.mmio_exit_user++; > + run->exit_reason = KVM_EXIT_MMIO; > + > return 0; > } > > -- > 2.19.1 > > Regards, Anup ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC 2/2] RISC-V: KVM: read\write kernel mmio device support @ 2020-07-26 12:58 ` Anup Patel 0 siblings, 0 replies; 14+ messages in thread From: Anup Patel @ 2020-07-26 12:58 UTC (permalink / raw) To: Yifei Jiang Cc: Albert Ou, Zhanghailiang, KVM General, Anup Patel, linux-kernel@vger.kernel.org List, limingwang, Atish Patra, Zhangxiaofeng (F), Palmer Dabbelt, kvm-riscv, Paul Walmsley, Paolo Bonzini, linux-riscv, wu.wubin, dengkai (A) Change subject to: RISC-V: KVM: kernel mmio read/write support Also add 1-2 sentences of commit description. On Fri, Jul 24, 2020 at 2:25 PM Yifei Jiang <jiangyifei@huawei.com> wrote: > > Signed-off-by: Yifei Jiang <jiangyifei@huawei.com> > Signed-off-by: Mingwang Li <limingwang@huawei.com> > --- > arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ > 1 file changed, 32 insertions(+), 6 deletions(-) > > diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c > index e97ba96cb0ae..448f11179fa8 100644 > --- a/arch/riscv/kvm/vcpu_exit.c > +++ b/arch/riscv/kvm/vcpu_exit.c > @@ -191,6 +191,8 @@ static int virtual_inst_fault(struct kvm_vcpu *vcpu, struct kvm_run *run, > static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, > unsigned long fault_addr, unsigned long htinst) > { > + int ret; > + u8 data_buf[8]; > unsigned long insn; > int shift = 0, len = 0; > struct kvm_cpu_trap utrap = { 0 }; > @@ -272,19 +274,32 @@ static int emulate_load(struct kvm_vcpu *vcpu, struct kvm_run *run, > vcpu->arch.mmio_decode.len = len; > vcpu->arch.mmio_decode.return_handled = 0; > > - /* Exit to userspace for MMIO emulation */ > - vcpu->stat.mmio_exit_user++; > - run->exit_reason = KVM_EXIT_MMIO; > + ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, fault_addr, len, > + data_buf); > + > run->mmio.is_write = false; > run->mmio.phys_addr = fault_addr; > run->mmio.len = len; > > + if (!ret) { > + /* We handled the access successfully in the kernel. */ > + memcpy(run->mmio.data, data_buf, len); > + vcpu->stat.mmio_exit_kernel++; > + kvm_riscv_vcpu_mmio_return(vcpu, run); > + return 1; > + } > + > + /* Exit to userspace for MMIO emulation */ > + vcpu->stat.mmio_exit_user++; > + run->exit_reason = KVM_EXIT_MMIO; > + > return 0; > } > > static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, > unsigned long fault_addr, unsigned long htinst) > { > + int ret; > u8 data8; > u16 data16; > u32 data32; > @@ -378,13 +393,24 @@ static int emulate_store(struct kvm_vcpu *vcpu, struct kvm_run *run, > return -ENOTSUPP; > }; > > - /* Exit to userspace for MMIO emulation */ > - vcpu->stat.mmio_exit_user++; > - run->exit_reason = KVM_EXIT_MMIO; > + ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, fault_addr, len, > + run->mmio.data); > + > run->mmio.is_write = true; > run->mmio.phys_addr = fault_addr; > run->mmio.len = len; > > + if (!ret) { > + /* We handled the access successfully in the kernel. */ > + vcpu->stat.mmio_exit_kernel++; > + kvm_riscv_vcpu_mmio_return(vcpu, run); > + return 1; > + } > + > + /* Exit to userspace for MMIO emulation */ > + vcpu->stat.mmio_exit_user++; > + run->exit_reason = KVM_EXIT_MMIO; > + > return 0; > } > > -- > 2.19.1 > > Regards, Anup _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC 0/2] Add risc-v vhost-net support 2020-07-24 8:54 ` Yifei Jiang @ 2020-08-28 4:57 ` Anup Patel -1 siblings, 0 replies; 14+ messages in thread From: Anup Patel @ 2020-08-28 4:57 UTC (permalink / raw) To: Yifei Jiang Cc: Paolo Bonzini, Paul Walmsley, Palmer Dabbelt, Albert Ou, Anup Patel, Atish Patra, KVM General, kvm-riscv, linux-riscv, linux-kernel@vger.kernel.org List, Zhangxiaofeng (F), wu.wubin, Zhanghailiang, dengkai (A), limingwang On Fri, Jul 24, 2020 at 2:25 PM Yifei Jiang <jiangyifei@huawei.com> wrote: > > Hi, > > These two patches enable support for vhost-net on RISC-V architecture. They are developed > based on the Linux source in this repo: https://github.com/avpatel/linux, > the branch is riscv_kvm_v13. > > The accompanying QEMU is from the repo: https://github.com/alistair23/qemu, the branch is > hyp-ext-v0.6.next. In order for the QEMU to work with KVM, the patch found here is necessary: > https://patchwork.kernel.org/cover/11435965/ > > Several steps to use this: > > 1. create virbr0 on riscv64 emulation > $ brctl addbr virbr0 > $ brctl stp virbr0 on > $ ifconfig virbr0 up > $ ifconfig virbr0 <virbr0_ip> netmask <virbr0_netmask> > > 2. boot riscv64 guestOS on riscv64 emulation > $ ./qemu-system-riscv64 -M virt,accel=kvm -m 1024M -cpu host -nographic \ > -name guest=riscv-guest \ > -smp 2 \ > -kernel ./Image \ > -drive file=./guest.img,format=raw,id=hd0 \ > -device virtio-blk,drive=hd0 \ > -netdev type=tap,vhost=on,script=./ifup.sh,downscript=./ifdown.sh,id=net0 \ > -append "root=/dev/vda rw console=ttyS0 earlycon=sbi" > > $ cat ifup.sh > #!/bin/sh > brctl addif virbr0 $1 > ifconfig $1 up > > $ cat ifdown.sh > #!/bin/sh > ifconfig $1 down > brctl delif virbr0 $1 > > This brenchmark is vhost-net compare with virtio: > > $ ./netperf -H <virbr0_ip> -l 100 -t TCP_STREAM > > vhost-net: > Recv Send Send > Socket Socket Message Elapsed > Size Size Size Time Throughput > bytes bytes bytes secs. 10^6bits/sec > > 131072 16384 16384 100.07 457.55 > > virtio: > Recv Send Send > Socket Socket Message Elapsed > Size Size Size Time Throughput > bytes bytes bytes secs. 10^6bits/sec > > 131072 16384 16384 100.07 227.02 > > > The next step is to support irqfd on RISC-V architecture. > > Yifei Jiang (2): > RISC-V: KVM: enable ioeventfd capability and compile for risc-v > RISC-V: KVM: read\write kernel mmio device support > > arch/riscv/kvm/Kconfig | 2 ++ > arch/riscv/kvm/Makefile | 2 +- > arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ > arch/riscv/kvm/vm.c | 1 + > 4 files changed, 36 insertions(+), 7 deletions(-) > > -- > 2.19.1 > > I will be squashing these patches into PATCH7 of v14 KVM RISC-V series. I will also add your Signed-off-by to PATCH7 of v14 KVM RISC-V to acknowledge your efforts. Thanks, Anup ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC 0/2] Add risc-v vhost-net support @ 2020-08-28 4:57 ` Anup Patel 0 siblings, 0 replies; 14+ messages in thread From: Anup Patel @ 2020-08-28 4:57 UTC (permalink / raw) To: Yifei Jiang Cc: Albert Ou, Zhanghailiang, KVM General, Anup Patel, linux-kernel@vger.kernel.org List, limingwang, Atish Patra, Zhangxiaofeng (F), Palmer Dabbelt, kvm-riscv, Paul Walmsley, Paolo Bonzini, linux-riscv, wu.wubin, dengkai (A) On Fri, Jul 24, 2020 at 2:25 PM Yifei Jiang <jiangyifei@huawei.com> wrote: > > Hi, > > These two patches enable support for vhost-net on RISC-V architecture. They are developed > based on the Linux source in this repo: https://github.com/avpatel/linux, > the branch is riscv_kvm_v13. > > The accompanying QEMU is from the repo: https://github.com/alistair23/qemu, the branch is > hyp-ext-v0.6.next. In order for the QEMU to work with KVM, the patch found here is necessary: > https://patchwork.kernel.org/cover/11435965/ > > Several steps to use this: > > 1. create virbr0 on riscv64 emulation > $ brctl addbr virbr0 > $ brctl stp virbr0 on > $ ifconfig virbr0 up > $ ifconfig virbr0 <virbr0_ip> netmask <virbr0_netmask> > > 2. boot riscv64 guestOS on riscv64 emulation > $ ./qemu-system-riscv64 -M virt,accel=kvm -m 1024M -cpu host -nographic \ > -name guest=riscv-guest \ > -smp 2 \ > -kernel ./Image \ > -drive file=./guest.img,format=raw,id=hd0 \ > -device virtio-blk,drive=hd0 \ > -netdev type=tap,vhost=on,script=./ifup.sh,downscript=./ifdown.sh,id=net0 \ > -append "root=/dev/vda rw console=ttyS0 earlycon=sbi" > > $ cat ifup.sh > #!/bin/sh > brctl addif virbr0 $1 > ifconfig $1 up > > $ cat ifdown.sh > #!/bin/sh > ifconfig $1 down > brctl delif virbr0 $1 > > This brenchmark is vhost-net compare with virtio: > > $ ./netperf -H <virbr0_ip> -l 100 -t TCP_STREAM > > vhost-net: > Recv Send Send > Socket Socket Message Elapsed > Size Size Size Time Throughput > bytes bytes bytes secs. 10^6bits/sec > > 131072 16384 16384 100.07 457.55 > > virtio: > Recv Send Send > Socket Socket Message Elapsed > Size Size Size Time Throughput > bytes bytes bytes secs. 10^6bits/sec > > 131072 16384 16384 100.07 227.02 > > > The next step is to support irqfd on RISC-V architecture. > > Yifei Jiang (2): > RISC-V: KVM: enable ioeventfd capability and compile for risc-v > RISC-V: KVM: read\write kernel mmio device support > > arch/riscv/kvm/Kconfig | 2 ++ > arch/riscv/kvm/Makefile | 2 +- > arch/riscv/kvm/vcpu_exit.c | 38 ++++++++++++++++++++++++++++++++------ > arch/riscv/kvm/vm.c | 1 + > 4 files changed, 36 insertions(+), 7 deletions(-) > > -- > 2.19.1 > > I will be squashing these patches into PATCH7 of v14 KVM RISC-V series. I will also add your Signed-off-by to PATCH7 of v14 KVM RISC-V to acknowledge your efforts. Thanks, Anup _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2020-08-28 4:57 UTC | newest] Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-07-24 8:54 [RFC 0/2] Add risc-v vhost-net support Yifei Jiang 2020-07-24 8:54 ` Yifei Jiang 2020-07-24 8:54 ` [RFC 1/2] RISC-V: KVM: enable ioeventfd capability and compile for risc-v Yifei Jiang 2020-07-24 8:54 ` Yifei Jiang 2020-07-26 12:48 ` Anup Patel 2020-07-26 12:48 ` Anup Patel 2020-07-24 8:54 ` [RFC 2/2] RISC-V: KVM: read\write kernel mmio device support Yifei Jiang 2020-07-24 8:54 ` Yifei Jiang 2020-07-26 12:57 ` Anup Patel 2020-07-26 12:57 ` Anup Patel 2020-07-26 12:58 ` Anup Patel 2020-07-26 12:58 ` Anup Patel 2020-08-28 4:57 ` [RFC 0/2] Add risc-v vhost-net support Anup Patel 2020-08-28 4:57 ` Anup Patel
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.