[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAAhV-H7eGNof=qjq=U1KaQaC4p48DDroiRxhiTEWs9Eg=Y7D5w@mail.gmail.com>
Date: Sat, 7 Sep 2024 15:56:05 +0800
From: Huacai Chen <chenhuacai@...nel.org>
To: Xianglai Li <lixianglai@...ngson.cn>
Cc: linux-kernel@...r.kernel.org, Bibo Mao <maobibo@...ngson.cn>, kvm@...r.kernel.org,
loongarch@...ts.linux.dev, Paolo Bonzini <pbonzini@...hat.com>,
Tianrui Zhao <zhaotianrui@...ngson.cn>, WANG Xuerui <kernel@...0n.name>
Subject: Re: [[PATCH V2 00/10] Added Interrupt controller emulation for
loongarch kvm
Hi, Xianglai,
This series is good as a whole, just some naming issues.
1, In the current kernel the short name of "Extended I/O Interrupt
Controller" is eiointc, so please change related prefix from extioi_
to eiointc.
And for
KVM_DEV_TYPE_LA_IOAPIC,
KVM_DEV_TYPE_LA_IPI,
KVM_DEV_TYPE_LA_EXTIOI,
Please use
KVM_DEV_TYPE_LOONGARCH_IPI,
KVM_DEV_TYPE_LOONGARCH_EXTIOI,
KVM_DEV_TYPE_LOONGARCH_PCHPIC,
instead.
Huacai
On Fri, Aug 23, 2024 at 5:51 PM Xianglai Li <lixianglai@...ngson.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.
>
> The following is a virtual machine simulation diagram of interrupted
> connections:
> +-----+ +---------+ +-------+
> | IPI |--> | CPUINTC | <-- | Timer |
> +-----+ +---------+ +-------+
> ^
> |
> +---------+
> | EIOINTC |
> +---------+
> ^ ^
> | |
> +---------+ +---------+
> | PCH-PIC | | PCH-MSI |
> +---------+ +---------+
> ^ ^ ^
> | | |
> +--------+ +---------+ +---------+
> | UARTs | | Devices | | Devices |
> +--------+ +---------+ +---------+
>
> In this series of patches, we mainly realized the simulation of
> IPI EXTIOI PCH-PIC interrupt controller.
>
> The simulation of IPI EXTIOI PCH-PIC interrupt controller mainly
> completes the creation simulation of the interrupt controller,
> the register address space read and write simulation,
> and the interface with user mode to obtain and set the interrupt
> controller state for the preservation,
> recovery and migration of virtual machines.
>
> 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.
>
> change log:
> V1->V2:
> 1.Remove redundant blank lines according to community comments
> 2.Remove simplified redundant code
> 3.Adds 16 bits of read/write interface to the extioi iocsr address space
> 4.Optimize user - and kernel-mode data access interfaces: Access
> fixed length data each time to prevent memory overruns
> 5.Added virtual extioi, where interrupts can be routed to cpus other than cpu 4
>
> Cc: Bibo Mao <maobibo@...ngson.cn>
> Cc: Huacai Chen <chenhuacai@...nel.org>
> Cc: kvm@...r.kernel.org
> Cc: loongarch@...ts.linux.dev
> Cc: Paolo Bonzini <pbonzini@...hat.com>
> Cc: Tianrui Zhao <zhaotianrui@...ngson.cn>
> Cc: WANG Xuerui <kernel@...0n.name>
> Cc: Xianglai li <lixianglai@...ngson.cn>
>
> Xianglai Li (10):
> LoongArch: KVM: Add iocsr and mmio bus simulation in kernel
> LoongArch: KVM: Add IPI device support
> LoongArch: KVM: Add IPI read and write function
> LoongArch: KVM: Add IPI user mode read and write function
> LoongArch: KVM: Add EXTIOI device support
> LoongArch: KVM: Add EXTIOI read and write functions
> LoongArch: KVM: Add PCHPIC device support
> LoongArch: KVM: Add PCHPIC read and write functions
> LoongArch: KVM: Add PCHPIC user mode read and write functions
> LoongArch: KVM: Add irqfd support
>
> arch/loongarch/include/asm/kvm_extioi.h | 122 +++
> arch/loongarch/include/asm/kvm_host.h | 30 +
> arch/loongarch/include/asm/kvm_ipi.h | 52 ++
> arch/loongarch/include/asm/kvm_pch_pic.h | 61 ++
> arch/loongarch/include/uapi/asm/kvm.h | 19 +
> arch/loongarch/kvm/Kconfig | 3 +
> arch/loongarch/kvm/Makefile | 4 +
> arch/loongarch/kvm/exit.c | 86 +-
> arch/loongarch/kvm/intc/extioi.c | 1056 ++++++++++++++++++++++
> arch/loongarch/kvm/intc/ipi.c | 510 +++++++++++
> arch/loongarch/kvm/intc/pch_pic.c | 521 +++++++++++
> arch/loongarch/kvm/irqfd.c | 87 ++
> arch/loongarch/kvm/main.c | 18 +-
> arch/loongarch/kvm/vcpu.c | 3 +
> arch/loongarch/kvm/vm.c | 53 +-
> include/linux/kvm_host.h | 1 +
> include/trace/events/kvm.h | 35 +
> include/uapi/linux/kvm.h | 8 +
> 18 files changed, 2641 insertions(+), 28 deletions(-)
> create mode 100644 arch/loongarch/include/asm/kvm_extioi.h
> create mode 100644 arch/loongarch/include/asm/kvm_ipi.h
> create mode 100644 arch/loongarch/include/asm/kvm_pch_pic.h
> create mode 100644 arch/loongarch/kvm/intc/extioi.c
> create mode 100644 arch/loongarch/kvm/intc/ipi.c
> create mode 100644 arch/loongarch/kvm/intc/pch_pic.c
> create mode 100644 arch/loongarch/kvm/irqfd.c
>
>
> base-commit: 872cf28b8df9c5c3a1e71a88ee750df7c2513971
> --
> 2.39.1
>
Powered by blists - more mailing lists