[PATCH v4 0/6] Add RISC-V KVM AIA Support

Yong-Xuan Wang posted 6 patches 2 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230621145500.25624-1-yongxuan.wang@sifive.com
Maintainers: Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Bin Meng <bin.meng@windriver.com>, Weiwei Li <liweiwei@iscas.ac.cn>, Daniel Henrique Barboza <dbarboza@ventanamicro.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, "Michael S. Tsirkin" <mst@redhat.com>, Cornelia Huck <cohuck@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
There is a newer version of this series
hw/intc/riscv_aplic.c         |  58 +++++--
hw/intc/riscv_imsic.c         |  26 ++-
hw/riscv/virt.c               | 297 +++++++++++++++++++++-------------
include/hw/riscv/virt.h       |   1 +
linux-headers/asm-riscv/kvm.h | 123 +++++++++++++-
linux-headers/linux/kvm.h     |   2 +
target/riscv/kvm.c            | 176 +++++++++++++++++++-
target/riscv/kvm_riscv.h      |   6 +
8 files changed, 554 insertions(+), 135 deletions(-)
[PATCH v4 0/6] Add RISC-V KVM AIA Support
Posted by Yong-Xuan Wang 2 years, 6 months ago
This series adds support for KVM AIA in RISC-V architecture.

In order to test these patches, we require Linux with KVM AIA support which can
be found in the riscv_kvm_aia_hwaccel_v1 branch at
https://github.com/avpatel/linux.git

---
v4:
- update the linux header by the scripts/update-linux-headers.sh in PATCH1
- remove the checking for "aplic_m" before creating S-mode APLIC device in PATCH2
- add more setting when we initialize the KVM AIA chip in PATCH4
- fix msi message delivery and the APLIC devices emulation in PATCH5
- fix the AIA devices mapping with NUMA enabled in PATCH6
- add "kvm-aia" parameter to sepecify the KVM AIA mode in PATCH6

v3:
- fix typo
- tag the linux-header patch as placeholder

v2:
- rebase to riscv-to-apply.next
- update the linux header by the scripts/update-linux-headers.sh

Yong-Xuan Wang (6):
  update-linux-headers: sync-up header with Linux for KVM AIA support
    placeholder
  target/riscv: support the AIA device emulation with KVM enabled
  target/riscv: check the in-kernel irqchip support
  target/riscv: Create an KVM AIA irqchip
  target/riscv: update APLIC and IMSIC to support KVM AIA
  target/riscv: select KVM AIA in riscv virt machine

 hw/intc/riscv_aplic.c         |  58 +++++--
 hw/intc/riscv_imsic.c         |  26 ++-
 hw/riscv/virt.c               | 297 +++++++++++++++++++++-------------
 include/hw/riscv/virt.h       |   1 +
 linux-headers/asm-riscv/kvm.h | 123 +++++++++++++-
 linux-headers/linux/kvm.h     |   2 +
 target/riscv/kvm.c            | 176 +++++++++++++++++++-
 target/riscv/kvm_riscv.h      |   6 +
 8 files changed, 554 insertions(+), 135 deletions(-)

-- 
2.17.1
Re: [PATCH v4 0/6] Add RISC-V KVM AIA Support
Posted by Andrew Jones 2 years, 5 months ago
On Wed, Jun 21, 2023 at 02:54:50PM +0000, Yong-Xuan Wang wrote:
> This series adds support for KVM AIA in RISC-V architecture.
> 
> In order to test these patches, we require Linux with KVM AIA support which can
> be found in the riscv_kvm_aia_hwaccel_v1 branch at
> https://github.com/avpatel/linux.git

Is it possible to add irqfd support? Maybe even as simply as the diff
below? If not, can you explain what still needs to be done in order
to do so?

Thanks,
drew


diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c
index 00fdb60fc6ab..b38d9bb5506a 100644
--- a/hw/intc/riscv_imsic.c
+++ b/hw/intc/riscv_imsic.c
@@ -371,6 +371,7 @@ static void riscv_imsic_realize(DeviceState *dev, Error **errp)
     }

     msi_nonbroken = true;
+    kvm_msi_via_irqfd_allowed = kvm_irqfds_enabled();
 }

 static Property riscv_imsic_properties[] = {
Re: [PATCH v4 0/6] Add RISC-V KVM AIA Support
Posted by Yong-Xuan Wang 2 years, 5 months ago
Hi Andrew,

I'll add it into patch v5. Thank you!

Regards,
Yong-Xuan

On Wed, Jul 5, 2023 at 4:14 PM Andrew Jones <ajones@ventanamicro.com> wrote:
>
> On Wed, Jun 21, 2023 at 02:54:50PM +0000, Yong-Xuan Wang wrote:
> > This series adds support for KVM AIA in RISC-V architecture.
> >
> > In order to test these patches, we require Linux with KVM AIA support which can
> > be found in the riscv_kvm_aia_hwaccel_v1 branch at
> > https://github.com/avpatel/linux.git
>
> Is it possible to add irqfd support? Maybe even as simply as the diff
> below? If not, can you explain what still needs to be done in order
> to do so?
>
> Thanks,
> drew
>
>
> diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c
> index 00fdb60fc6ab..b38d9bb5506a 100644
> --- a/hw/intc/riscv_imsic.c
> +++ b/hw/intc/riscv_imsic.c
> @@ -371,6 +371,7 @@ static void riscv_imsic_realize(DeviceState *dev, Error **errp)
>      }
>
>      msi_nonbroken = true;
> +    kvm_msi_via_irqfd_allowed = kvm_irqfds_enabled();
>  }
>
>  static Property riscv_imsic_properties[] = {
>