[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC 0/4] Added Interrupt controller emulation for loongarch kvm
From: |
Xianglai Li |
Subject: |
[RFC 0/4] Added Interrupt controller emulation for loongarch kvm |
Date: |
Wed, 17 Jul 2024 11:29:52 +0800 |
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 +
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
--
2.39.1
- [RFC 0/4] Added Interrupt controller emulation for loongarch kvm,
Xianglai Li <=
- [RFC 4/4] hw/loongarch: Add KVM pch msi device support, Xianglai Li, 2024/07/16
- [RFC 2/4] hw/loongarch: Add KVM extioi device support, Xianglai Li, 2024/07/16
- [RFC 1/4] hw/loongarch: Add KVM IPI device support, Xianglai Li, 2024/07/16
- [RFC 3/4] hw/loongarch: Add KVM pch pic device support, Xianglai Li, 2024/07/16
- Re: [RFC 0/4] Added Interrupt controller emulation for loongarch kvm, Cornelia Huck, 2024/07/17