* [PATCH 1/2] KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table()
2024-02-21 9:27 [PATCH 0/2] KVM: arm64: vgic-its: Fixes for 6.8 Oliver Upton
@ 2024-02-21 9:27 ` Oliver Upton
2024-02-21 9:27 ` [PATCH 2/2] KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler Oliver Upton
2024-02-21 10:12 ` [PATCH 0/2] KVM: arm64: vgic-its: Fixes for 6.8 Marc Zyngier
2 siblings, 0 replies; 4+ messages in thread
From: Oliver Upton @ 2024-02-21 9:27 UTC (permalink / raw)
To: kvmarm
Cc: Marc Zyngier, James Morse, Suzuki K Poulose, Zenghui Yu,
Oliver Upton, stable
vgic_get_irq() may not return a valid descriptor if there is no ITS that
holds a valid translation for the specified INTID. If that is the case,
it is safe to silently ignore it and continue processing the LPI pending
table.
Cc: stable@vger.kernel.org
Fixes: 33d3bc9556a7 ("KVM: arm64: vgic-its: Read initial LPI pending table")
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
---
arch/arm64/kvm/vgic/vgic-its.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c
index e2764d0ffa9f..082448de27ed 100644
--- a/arch/arm64/kvm/vgic/vgic-its.c
+++ b/arch/arm64/kvm/vgic/vgic-its.c
@@ -468,6 +468,9 @@ static int its_sync_lpi_pending_table(struct kvm_vcpu *vcpu)
}
irq = vgic_get_irq(vcpu->kvm, NULL, intids[i]);
+ if (!irq)
+ continue;
+
raw_spin_lock_irqsave(&irq->irq_lock, flags);
irq->pending_latch = pendmask & (1U << bit_nr);
vgic_queue_irq_unlock(vcpu->kvm, irq, flags);
--
2.44.0.rc0.258.g7320e95886-goog
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH 2/2] KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler
2024-02-21 9:27 [PATCH 0/2] KVM: arm64: vgic-its: Fixes for 6.8 Oliver Upton
2024-02-21 9:27 ` [PATCH 1/2] KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table() Oliver Upton
@ 2024-02-21 9:27 ` Oliver Upton
2024-02-21 10:12 ` [PATCH 0/2] KVM: arm64: vgic-its: Fixes for 6.8 Marc Zyngier
2 siblings, 0 replies; 4+ messages in thread
From: Oliver Upton @ 2024-02-21 9:27 UTC (permalink / raw)
To: kvmarm
Cc: Marc Zyngier, James Morse, Suzuki K Poulose, Zenghui Yu,
Oliver Upton, stable
It is possible that an LPI mapped in a different ITS gets unmapped while
handling the MOVALL command. If that is the case, there is no state that
can be migrated to the destination. Silently ignore it and continue
migrating other LPIs.
Cc: stable@vger.kernel.org
Fixes: ff9c114394aa ("KVM: arm/arm64: GICv4: Handle MOVALL applied to a vPE")
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
---
arch/arm64/kvm/vgic/vgic-its.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c
index 082448de27ed..28a93074eca1 100644
--- a/arch/arm64/kvm/vgic/vgic-its.c
+++ b/arch/arm64/kvm/vgic/vgic-its.c
@@ -1435,6 +1435,8 @@ static int vgic_its_cmd_handle_movall(struct kvm *kvm, struct vgic_its *its,
for (i = 0; i < irq_count; i++) {
irq = vgic_get_irq(kvm, NULL, intids[i]);
+ if (!irq)
+ continue;
update_affinity(irq, vcpu2);
--
2.44.0.rc0.258.g7320e95886-goog
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH 0/2] KVM: arm64: vgic-its: Fixes for 6.8
2024-02-21 9:27 [PATCH 0/2] KVM: arm64: vgic-its: Fixes for 6.8 Oliver Upton
2024-02-21 9:27 ` [PATCH 1/2] KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table() Oliver Upton
2024-02-21 9:27 ` [PATCH 2/2] KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler Oliver Upton
@ 2024-02-21 10:12 ` Marc Zyngier
2 siblings, 0 replies; 4+ messages in thread
From: Marc Zyngier @ 2024-02-21 10:12 UTC (permalink / raw)
To: kvmarm, Oliver Upton; +Cc: James Morse, Suzuki K Poulose, Zenghui Yu
On Wed, 21 Feb 2024 09:27:30 +0000, Oliver Upton wrote:
> Spotted a couple issues in the way KVM's ITS emulation handles intids
> returned from vgic_copy_lpi_list().
>
> Marc, I'd like to get these in ASAP, ideally as fixes for 6.8.
>
> Oliver Upton (2):
> KVM: arm64: vgic-its: Test for valid IRQ in
> its_sync_lpi_pending_table()
> KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler
>
> [...]
Applied to fixes, thanks!
[1/2] KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table()
commit: 8d3a7dfb801d157ac423261d7cd62c33e95375f8
[2/2] KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler
commit: 85a71ee9a0700f6c18862ef3b0011ed9dad99aca
Cheers,
M.
--
Without deviation from the norm, progress is not possible.
^ permalink raw reply [flat|nested] 4+ messages in thread