All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoffer Dall <cdall@linaro.org>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Auger Eric <eric.auger@redhat.com>,
	linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, Mark Rutland <mark.rutland@arm.com>,
	Andre Przywara <Andre.Przywara@arm.com>,
	Shameerali Kolothum Thodi  <shameerali.kolothum.thodi@huawei.com>,
	Christoffer Dall <christoffer.dall@linaro.org>,
	Shanker Donthineni <shankerd@codeaurora.org>
Subject: Re: [PATCH v5 16/26] KVM: arm/arm64: GICv4: Propagate property updates to VLPIs
Date: Fri, 10 Nov 2017 09:37:55 +0100	[thread overview]
Message-ID: <20171110083755.GI14144@cbox> (raw)
In-Reply-To: <49bff080-0908-cc7a-7036-543f963180a5@arm.com>

On Wed, Nov 08, 2017 at 03:08:36PM +0000, Marc Zyngier wrote:
> On 07/11/17 21:28, Auger Eric wrote:
> > Hi Marc,
> > 
> > On 27/10/2017 16:28, Marc Zyngier wrote:
> >> Upon updating a property, we propagate it all the way to the physical
> >> ITS, and ask for an INV command to be executed there.
> >>
> >> Acked-by: Christoffer Dall <cdall@linaro.org>
> >> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> >> ---
> >>  virt/kvm/arm/vgic/vgic-its.c | 3 +++
> >>  1 file changed, 3 insertions(+)
> >>
> >> diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
> >> index 0b7e648e7a0c..2e77c7c83942 100644
> >> --- a/virt/kvm/arm/vgic/vgic-its.c
> >> +++ b/virt/kvm/arm/vgic/vgic-its.c
> >> @@ -296,6 +296,9 @@ static int update_lpi_config(struct kvm *kvm, struct vgic_irq *irq,
> >>  		spin_unlock(&irq->irq_lock);
> >>  	}
> >>  
> >> +	if (irq->hw)
> >> +		return its_prop_update_vlpi(irq->host_irq, prop, true);
> >> +
> >>  	return 0;
> >>  }
> > I am confused by the vgic_queue_irq_unlock() on the "hw" path. Why is it
> > needed in hw mode?
> 
> It's not. I guess we could bypass this altogether and take a short cut
> after having updated the priority and enabled fields.
> 

I can apply this on top of the series as well if you're happy with it:

commit b54fba93b1330803a59ca75f3a5102e22cadc871 (HEAD -> next-gicv4)
Author: Christoffer Dall <christoffer.dall@linaro.org>
Date:   Fri Nov 10 09:34:54 2017 +0100

    KVM: arm/arm64: Don't queue VLPIs on INV/INVALL
    
    Since VLPIs are injected directly by the hardware there's no need to
    mark these as pending in software and queue them on the AP list.
    
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>

diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
index c93ecd4a903b..a3754ec719c4 100644
--- a/virt/kvm/arm/vgic/vgic-its.c
+++ b/virt/kvm/arm/vgic/vgic-its.c
@@ -292,11 +292,14 @@ static int update_lpi_config(struct kvm *kvm, struct vgic_irq *irq,
 		irq->priority = LPI_PROP_PRIORITY(prop);
 		irq->enabled = LPI_PROP_ENABLE_BIT(prop);
 
-		vgic_queue_irq_unlock(kvm, irq, flags);
-	} else {
-		spin_unlock_irqrestore(&irq->irq_lock, flags);
+		if (!irq->hw) {
+			vgic_queue_irq_unlock(kvm, irq, flags);
+			return 0;
+		}
 	}
 
+	spin_unlock_irqrestore(&irq->irq_lock, flags);
+
 	if (irq->hw)
 		return its_prop_update_vlpi(irq->host_irq, prop, needs_inv);
 


Thanks,
-Christoffer

WARNING: multiple messages have this Message-ID (diff)
From: cdall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 16/26] KVM: arm/arm64: GICv4: Propagate property updates to VLPIs
Date: Fri, 10 Nov 2017 09:37:55 +0100	[thread overview]
Message-ID: <20171110083755.GI14144@cbox> (raw)
In-Reply-To: <49bff080-0908-cc7a-7036-543f963180a5@arm.com>

On Wed, Nov 08, 2017 at 03:08:36PM +0000, Marc Zyngier wrote:
> On 07/11/17 21:28, Auger Eric wrote:
> > Hi Marc,
> > 
> > On 27/10/2017 16:28, Marc Zyngier wrote:
> >> Upon updating a property, we propagate it all the way to the physical
> >> ITS, and ask for an INV command to be executed there.
> >>
> >> Acked-by: Christoffer Dall <cdall@linaro.org>
> >> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> >> ---
> >>  virt/kvm/arm/vgic/vgic-its.c | 3 +++
> >>  1 file changed, 3 insertions(+)
> >>
> >> diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
> >> index 0b7e648e7a0c..2e77c7c83942 100644
> >> --- a/virt/kvm/arm/vgic/vgic-its.c
> >> +++ b/virt/kvm/arm/vgic/vgic-its.c
> >> @@ -296,6 +296,9 @@ static int update_lpi_config(struct kvm *kvm, struct vgic_irq *irq,
> >>  		spin_unlock(&irq->irq_lock);
> >>  	}
> >>  
> >> +	if (irq->hw)
> >> +		return its_prop_update_vlpi(irq->host_irq, prop, true);
> >> +
> >>  	return 0;
> >>  }
> > I am confused by the vgic_queue_irq_unlock() on the "hw" path. Why is it
> > needed in hw mode?
> 
> It's not. I guess we could bypass this altogether and take a short cut
> after having updated the priority and enabled fields.
> 

I can apply this on top of the series as well if you're happy with it:

commit b54fba93b1330803a59ca75f3a5102e22cadc871 (HEAD -> next-gicv4)
Author: Christoffer Dall <christoffer.dall@linaro.org>
Date:   Fri Nov 10 09:34:54 2017 +0100

    KVM: arm/arm64: Don't queue VLPIs on INV/INVALL
    
    Since VLPIs are injected directly by the hardware there's no need to
    mark these as pending in software and queue them on the AP list.
    
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>

diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
index c93ecd4a903b..a3754ec719c4 100644
--- a/virt/kvm/arm/vgic/vgic-its.c
+++ b/virt/kvm/arm/vgic/vgic-its.c
@@ -292,11 +292,14 @@ static int update_lpi_config(struct kvm *kvm, struct vgic_irq *irq,
 		irq->priority = LPI_PROP_PRIORITY(prop);
 		irq->enabled = LPI_PROP_ENABLE_BIT(prop);
 
-		vgic_queue_irq_unlock(kvm, irq, flags);
-	} else {
-		spin_unlock_irqrestore(&irq->irq_lock, flags);
+		if (!irq->hw) {
+			vgic_queue_irq_unlock(kvm, irq, flags);
+			return 0;
+		}
 	}
 
+	spin_unlock_irqrestore(&irq->irq_lock, flags);
+
 	if (irq->hw)
 		return its_prop_update_vlpi(irq->host_irq, prop, needs_inv);
 


Thanks,
-Christoffer

  reply	other threads:[~2017-11-10  8:37 UTC|newest]

Thread overview: 234+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-27 14:28 [PATCH v5 00/26] KVM/ARM: Add support for GICv4 Marc Zyngier
2017-10-27 14:28 ` Marc Zyngier
2017-10-27 14:28 ` Marc Zyngier
2017-10-27 14:28 ` [PATCH v5 01/26] irqchip/gic-v3-its: Setup VLPI properties at map time Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-30  6:46   ` Christoffer Dall
2017-10-30  6:46     ` Christoffer Dall
2017-10-30  6:46     ` Christoffer Dall
2017-10-27 14:28 ` [PATCH v5 02/26] KVM: arm/arm64: register irq bypass consumer on ARM/ARM64 Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-30  6:47   ` Christoffer Dall
2017-10-30  6:47     ` Christoffer Dall
2017-10-30  6:47     ` Christoffer Dall
2017-10-27 14:28 ` [PATCH v5 03/26] KVM: arm/arm64: vgic: restructure kvm_vgic_(un)map_phys_irq Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28 ` [PATCH v5 04/26] KVM: arm: Select ARM_GIC_V3 and ARM_GIC_V3_ITS Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28 ` [PATCH v5 05/26] KVM: arm/arm64: vgic: Move kvm_vgic_destroy call around Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28 ` [PATCH v5 06/26] KVM: arm/arm64: vITS: Add MSI translation helpers Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 20:34   ` Auger Eric
2017-11-07 20:34     ` Auger Eric
2017-11-07 20:34     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 07/26] KVM: arm/arm64: vITS: Add a helper to update the affinity of an LPI Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 13:44   ` Auger Eric
2017-11-07 13:44     ` Auger Eric
2017-11-07 13:44     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 08/26] KVM: arm/arm64: GICv4: Add property field and per-VM predicate Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 20:30   ` Auger Eric
2017-11-07 20:30     ` Auger Eric
2017-11-07 20:30     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 09/26] KVM: arm/arm64: GICv4: Add init/teardown of the per-VM vPE irq domain Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 13:08   ` Auger Eric
2017-11-07 13:08     ` Auger Eric
2017-11-07 13:08     ` Auger Eric
2017-11-10  8:20     ` Christoffer Dall
2017-11-10  8:20       ` Christoffer Dall
2017-11-10  8:20       ` Christoffer Dall
2017-11-10  8:55       ` Marc Zyngier
2017-11-10  8:55         ` Marc Zyngier
2017-11-10  8:55         ` Marc Zyngier
2017-11-07 13:09   ` Auger Eric
2017-11-07 13:09     ` Auger Eric
2017-11-07 13:09     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 10/26] KVM: arm/arm64: GICv4: Wire mapping/unmapping of VLPIs in VFIO irq bypass Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 13:06   ` Auger Eric
2017-11-07 13:06     ` Auger Eric
2017-11-07 13:06     ` Auger Eric
2017-11-07 14:42     ` Marc Zyngier
2017-11-07 14:42       ` Marc Zyngier
2017-11-07 14:42       ` Marc Zyngier
2017-11-07 15:59       ` Auger Eric
2017-11-07 15:59         ` Auger Eric
2017-11-07 15:59         ` Auger Eric
2017-11-08 11:30         ` Marc Zyngier
2017-11-08 11:30           ` Marc Zyngier
2017-11-08 11:30           ` Marc Zyngier
2017-11-10  8:28       ` Christoffer Dall
2017-11-10  8:28         ` Christoffer Dall
2017-11-10  8:28         ` Christoffer Dall
2017-11-10  9:05         ` Marc Zyngier
2017-11-10  9:05           ` Marc Zyngier
2017-11-10  9:05           ` Marc Zyngier
2017-11-10  9:41           ` Christoffer Dall
2017-11-10  9:41             ` Christoffer Dall
2017-11-10  9:41             ` Christoffer Dall
2017-10-27 14:28 ` [PATCH v5 11/26] KVM: arm/arm64: GICv4: Handle INT command applied to a VLPI Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 20:15   ` Auger Eric
2017-11-07 20:15     ` Auger Eric
2017-11-07 20:15     ` Auger Eric
2017-11-08 11:40     ` Marc Zyngier
2017-11-08 11:40       ` Marc Zyngier
2017-11-08 11:40       ` Marc Zyngier
2017-11-08 14:14       ` Auger Eric
2017-11-08 14:14         ` Auger Eric
2017-11-08 14:14         ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 12/26] KVM: arm/arm64: GICv4: Unmap VLPI when freeing an LPI Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 20:28   ` Auger Eric
2017-11-07 20:28     ` Auger Eric
2017-11-07 20:28     ` Auger Eric
2017-11-08 11:52     ` Marc Zyngier
2017-11-08 11:52       ` Marc Zyngier
2017-11-08 11:52       ` Marc Zyngier
2017-11-08 14:14       ` Auger Eric
2017-11-08 14:14         ` Auger Eric
2017-11-08 14:14         ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 13/26] KVM: arm/arm64: GICv4: Propagate affinity changes to the physical ITS Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 21:01   ` Auger Eric
2017-11-07 21:01     ` Auger Eric
2017-11-07 21:01     ` Auger Eric
2017-11-08 12:05     ` Marc Zyngier
2017-11-08 12:05       ` Marc Zyngier
2017-11-08 12:05       ` Marc Zyngier
2017-10-27 14:28 ` [PATCH v5 14/26] KVM: arm/arm64: GICv4: Handle CLEAR applied to a VLPI Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 21:04   ` Auger Eric
2017-11-07 21:04     ` Auger Eric
2017-11-07 21:04     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 15/26] KVM: arm/arm64: GICv4: Handle MOVALL applied to a vPE Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 21:06   ` Auger Eric
2017-11-07 21:06     ` Auger Eric
2017-11-07 21:06     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 16/26] KVM: arm/arm64: GICv4: Propagate property updates to VLPIs Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 21:28   ` Auger Eric
2017-11-07 21:28     ` Auger Eric
2017-11-07 21:28     ` Auger Eric
2017-11-08 15:08     ` Marc Zyngier
2017-11-08 15:08       ` Marc Zyngier
2017-11-08 15:08       ` Marc Zyngier
2017-11-10  8:37       ` Christoffer Dall [this message]
2017-11-10  8:37         ` Christoffer Dall
2017-11-10  8:37         ` Christoffer Dall
2017-11-10  8:58         ` Marc Zyngier
2017-11-10  8:58           ` Marc Zyngier
2017-11-10  8:58           ` Marc Zyngier
2017-10-27 14:28 ` [PATCH v5 17/26] KVM: arm/arm64: GICv4: Handle INVALL applied to a vPE Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 21:23   ` Auger Eric
2017-11-07 21:23     ` Auger Eric
2017-11-07 21:23     ` Auger Eric
2017-11-10  8:41     ` Christoffer Dall
2017-11-10  8:41       ` Christoffer Dall
2017-11-10  8:41       ` Christoffer Dall
2017-11-10  8:56       ` Marc Zyngier
2017-11-10  8:56         ` Marc Zyngier
2017-11-10  8:56         ` Marc Zyngier
2017-10-27 14:28 ` [PATCH v5 18/26] KVM: arm/arm64: GICv4: Use pending_last as a scheduling hint Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 21:38   ` Auger Eric
2017-11-07 21:38     ` Auger Eric
2017-11-07 21:38     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 19/26] KVM: arm/arm64: GICv4: Add doorbell interrupt handling Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 21:43   ` Auger Eric
2017-11-07 21:43     ` Auger Eric
2017-11-07 21:43     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 20/26] KVM: arm/arm64: GICv4: Use the doorbell interrupt as an unblocking source Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 21:45   ` Auger Eric
2017-11-07 21:45     ` Auger Eric
2017-11-07 21:45     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 21/26] KVM: arm/arm64: GICv4: Hook vPE scheduling into vgic flush/sync Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 21:54   ` Auger Eric
2017-11-07 21:54     ` Auger Eric
2017-11-07 21:54     ` Auger Eric
2017-11-07 22:14     ` Auger Eric
2017-11-07 22:14       ` Auger Eric
2017-11-07 22:14       ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 22/26] KVM: arm/arm64: GICv4: Enable virtual cpuif if VLPIs can be delivered Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-08  8:46   ` Auger Eric
2017-11-08  8:46     ` Auger Eric
2017-11-08  8:46     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 23/26] KVM: arm/arm64: GICv4: Prevent a VM using GICv4 from being saved Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-07 15:24   ` Auger Eric
2017-11-07 15:24     ` Auger Eric
2017-11-07 15:24     ` Auger Eric
2017-11-07 15:38     ` Marc Zyngier
2017-11-07 15:38       ` Marc Zyngier
2017-11-07 15:38       ` Marc Zyngier
2017-11-07 16:12       ` Auger Eric
2017-11-07 16:12         ` Auger Eric
2017-11-07 16:12         ` Auger Eric
2017-11-07 16:34         ` Marc Zyngier
2017-11-07 16:34           ` Marc Zyngier
2017-11-07 16:34           ` Marc Zyngier
2017-11-07 22:24           ` Auger Eric
2017-11-07 22:24             ` Auger Eric
2017-11-07 22:24             ` Auger Eric
2017-11-08  9:35             ` Auger Eric
2017-11-08  9:35               ` Auger Eric
2017-11-08  9:35               ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 24/26] KVM: arm/arm64: GICv4: Prevent userspace from changing doorbell affinity Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-30  6:51   ` Christoffer Dall
2017-10-30  6:51     ` Christoffer Dall
2017-10-30  6:51     ` Christoffer Dall
2017-11-07 22:17   ` Auger Eric
2017-11-07 22:17     ` Auger Eric
2017-11-07 22:17     ` Auger Eric
2017-10-27 14:28 ` [PATCH v5 25/26] KVM: arm/arm64: GICv4: Enable VLPI support Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-08  8:44   ` Auger Eric
2017-11-08  8:44     ` Auger Eric
2017-11-08  8:44     ` Auger Eric
2017-11-08 15:14     ` Marc Zyngier
2017-11-08 15:14       ` Marc Zyngier
2017-11-08 15:14       ` Marc Zyngier
2017-10-27 14:28 ` [PATCH v5 26/26] KVM: arm/arm64: GICv4: Theory of operations Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-10-27 14:28   ` Marc Zyngier
2017-11-08  9:13   ` Auger Eric
2017-11-08  9:13     ` Auger Eric
2017-11-08  9:13     ` Auger Eric
2017-11-08 15:19     ` Marc Zyngier
2017-11-08 15:19       ` Marc Zyngier
2017-11-08 15:19       ` Marc Zyngier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171110083755.GI14144@cbox \
    --to=cdall@linaro.org \
    --cc=Andre.Przywara@arm.com \
    --cc=christoffer.dall@linaro.org \
    --cc=eric.auger@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=shankerd@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.