Re: [PATCH v5 0/3] LoongArch: KVM: irqchip fixes
From: Huacai Chen
Date: Sun Nov 08 2026 - 00:06:35 EST
Series applied, thanks.
Huacai
On Fri, Oct 16, 2026 at 5:52 PM Tao Cui <cui.tao@xxxxxxxxx> wrote:
>
> From: Tao Cui <cuitao@xxxxxxxxxx>
>
> Hi,
>
> Three fixes for the LoongArch KVM irqchip code:
>
> - Patch 1 clears the device pointer in the destroy callbacks: when
> KVM_CREATE_DEVICE succeeds but the following fd allocation fails
> (e.g. under RLIMIT_NOFILE), ops->destroy() frees the irqchip while
> kvm->arch.* still points to it.
>
> - Patch 2 aligns kvm_pch_pic_create() with kvm_eiointc_create() by
> propagating the real error code; the kvm_ipi_create() counterpart is
> being fixed separately (Chaithanya Lagisetty).
>
> - Patch 3 rejects repeated PCH-PIC CTRL_INIT with -EEXIST, using the
> initialized state of the kvm_io_device as the indicator. The check,
> the MMIO base update and the bus registration are serialized by
> slots_lock; on a registration failure the state is rolled back so
> that a retry can start over.
>
> All patches carry Fixes tags.
>
> Changes in v5:
>
> - Patch 3: roll back the base and the device state on registration
> failure, as suggested by Bibo.
>
> Changes in v4:
>
> - Patch 3: update pch_pic_base unconditionally, as suggested by
> Huacai.
>
> Changes in v3:
>
> - Drop "Load dmsintc pointer once in pch_msi_set_irq" (v2 patch 2),
> suggested by Bibo and Huacai.
>
> - Patch 3 (v2 patch 4): reject repeated CTRL_INIT by checking the
> kvm_io_device state instead of a separate has_init flag, also
> suggested by Huacai; the check stays under slots_lock.
>
> Changes in v2:
>
> - Drop "Guard against NULL irqchip in irq injection" (v1 patch 2) and
> "Rebase steal time counter in vcpu context" (v1 patch 4) after
> review discussion: their trigger scenarios are not reachable
> through real VMM behaviour.
>
> - Use the one-line destroy style in dmsintc suggested by Bibo.
>
> - Track repeated PCH-PIC CTRL_INIT with a has_init flag and return
> -EEXIST instead of -EBUSY, also suggested by Bibo; move the check
> and base update under slots_lock so they are atomic.
>
> - Add READ_ONCE() to the dmsintc pointer loads so the compiler
> keeps each of them a single load.
>
> Tao Cui (3):
> LoongArch: KVM: Clear device pointer in irqchip destroy callbacks
> LoongArch: KVM: Propagate real error code in kvm_pch_pic_create
> LoongArch: KVM: Reject repeated PCH-PIC CTRL_INIT
>
> arch/loongarch/kvm/intc/dmsintc.c | 1 +
> arch/loongarch/kvm/intc/eiointc.c | 1 +
> arch/loongarch/kvm/intc/ipi.c | 1 +
> arch/loongarch/kvm/intc/pch_pic.c | 19 +++++++++++++++----
> 4 files changed, 18 insertions(+), 4 deletions(-)
>
> --
> 2.43.0
>