qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC 0/4] Added Interrupt controller emulation for loongarch kvm


From: Cornelia Huck
Subject: Re: [RFC 0/4] Added Interrupt controller emulation for loongarch kvm
Date: Wed, 17 Jul 2024 09:58:03 +0200
User-agent: Notmuch/0.38.3 (https://notmuchmail.org)

On Wed, Jul 17 2024, Xianglai Li <lixianglai@loongson.cn> wrote:

> Before this, the interrupt controller simulation has been completed
> in the user mode program. In order to reduce the loss caused by frequent
> switching of the virtual machine monitor from kernel mode to user mode
> when the guest accesses the interrupt controller, we add the interrupt
> controller simulation in kvm.
>
> In qemu side implementation is simple, just make a new IPI EXTIOI PCH KVM
> related several classes, And the interface to access kvm related data is
> implemented.
>
> Most of the simulation work of the interrupt controller is done in kvm.
> Because KVM the changes have not been the Linux community acceptance,
> the patches of this series will have RFC label until KVM patch into the 
> community.
>
> For the implementation of kvm simulation, refer to the following documents.
>
> IPI simulation implementation reference:
> https://github.com/loongson/LoongArch-Documentation/tree/main/docs/Loongson-3A5000-usermanual-EN/inter-processor-interrupts-and-communication
>
> EXTIOI simulation implementation reference:
> https://github.com/loongson/LoongArch-Documentation/tree/main/docs/Loongson-3A5000-usermanual-EN/io-interrupts/extended-io-interrupts
>
> PCH-PIC simulation implementation reference:
> https://github.com/loongson/LoongArch-Documentation/blob/main/docs/Loongson-7A1000-usermanual-EN/interrupt-controller.adoc
>
> For PCH-MSI, we used irqfd mechanism to send the interrupt signal
> generated by user state to kernel state and then to EXTIOI without
> maintaining PCH-MSI state in kernel state.
>
> You can easily get the code from the link below:
> the kernel:
> https://github.com/lixianglai/linux
> the branch is: interrupt
>
> the qemu:
> https://github.com/lixianglai/qemu
> the branch is: interrupt
>
> Please note that the code above is regularly updated based on community
> reviews.
>
> Cc: Paolo Bonzini <pbonzini@redhat.com> 
> Cc: Song Gao <gaosong@loongson.cn> 
> Cc: Huacai Chen <chenhuacai@kernel.org> 
> Cc: Jiaxun Yang <jiaxun.yang@flygoat.com> 
> Cc: "Michael S. Tsirkin" <mst@redhat.com> 
> Cc: Cornelia Huck <cohuck@redhat.com> 
> Cc: kvm@vger.kernel.org 
> Cc: Bibo Mao <maobibo@loongson.cn> 
>
> Xianglai Li (4):
>   hw/loongarch: Add KVM IPI device support
>   hw/loongarch: Add KVM extioi device support
>   hw/loongarch: Add KVM pch pic device support
>   hw/loongarch: Add KVM pch msi device support
>
>  hw/intc/Kconfig                     |  12 ++
>  hw/intc/loongarch_extioi_kvm.c      | 141 +++++++++++++++++++
>  hw/intc/loongarch_ipi_kvm.c         | 207 ++++++++++++++++++++++++++++
>  hw/intc/loongarch_pch_msi.c         |  42 ++++--
>  hw/intc/loongarch_pch_pic.c         |  20 ++-
>  hw/intc/loongarch_pch_pic_kvm.c     | 189 +++++++++++++++++++++++++
>  hw/intc/meson.build                 |   3 +
>  hw/loongarch/virt.c                 | 141 ++++++++++++-------
>  include/hw/intc/loongarch_extioi.h  |  34 ++++-
>  include/hw/intc/loongarch_pch_msi.h |   2 +-
>  include/hw/intc/loongarch_pch_pic.h |  51 ++++++-
>  include/hw/intc/loongson_ipi.h      |  22 +++
>  include/hw/loongarch/virt.h         |  15 ++
>  linux-headers/asm-loongarch/kvm.h   |   7 +
>  linux-headers/linux/kvm.h           |   6 +

Please split out any headers changes into a separate patch -- just put
them into a placeholder patch at the beginning of the series as long as
the changes are not yet upstream (and replace that with a full headers
sync later.)

>  15 files changed, 823 insertions(+), 69 deletions(-)
>  create mode 100644 hw/intc/loongarch_extioi_kvm.c
>  create mode 100644 hw/intc/loongarch_ipi_kvm.c
>  create mode 100644 hw/intc/loongarch_pch_pic_kvm.c




reply via email to

[Prev in Thread] Current Thread [Next in Thread]