From: Marc Zyngier <marc.zyngier@arm.com>
To: Eric Auger <eric.auger@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
alex.williamson@redhat.com, pbonzini@redhat.com,
kvmarm@lists.cs.columbia.edu, eric.auger.pro@gmail.com
Subject: Re: [PATCH 01/10] vfio: platform: Add automasked field to vfio_platform_irq
Date: Thu, 25 May 2017 19:05:05 +0100 [thread overview]
Message-ID: <87fufslsmm.fsf@arm.com> (raw)
In-Reply-To: <1495656803-28011-2-git-send-email-eric.auger@redhat.com> (Eric Auger's message of "Wed, 24 May 2017 22:13:14 +0200")
Hi Eric,
On Wed, May 24 2017 at 10:13:14 pm BST, Eric Auger <eric.auger@redhat.com> wrote:
> For direct EOI modality we will need to differentiate a userspace
> masking from the IRQ handler auto-masking.
>
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> ---
> drivers/vfio/platform/vfio_platform_irq.c | 10 ++++++----
> drivers/vfio/platform/vfio_platform_private.h | 1 +
> 2 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/vfio/platform/vfio_platform_irq.c b/drivers/vfio/platform/vfio_platform_irq.c
> index 46d4750..831f0b0 100644
> --- a/drivers/vfio/platform/vfio_platform_irq.c
> +++ b/drivers/vfio/platform/vfio_platform_irq.c
> @@ -29,7 +29,7 @@ static void vfio_platform_mask(struct vfio_platform_irq *irq_ctx)
>
> spin_lock_irqsave(&irq_ctx->lock, flags);
>
> - if (!irq_ctx->masked) {
> + if (!irq_ctx->masked && !irq_ctx->automasked) {
Could you please expand a bit on what this automasked variable covers?
It'd be good to document how masked and automasked differ in behaviour.
Also, it may be worth having a helper (is_masked?) to abstract both
cases.
> disable_irq_nosync(irq_ctx->hwirq);
> irq_ctx->masked = true;
> }
> @@ -89,9 +89,10 @@ static void vfio_platform_unmask(struct vfio_platform_irq *irq_ctx)
>
> spin_lock_irqsave(&irq_ctx->lock, flags);
>
> - if (irq_ctx->masked) {
> + if (irq_ctx->masked || irq_ctx->automasked) {
> enable_irq(irq_ctx->hwirq);
> irq_ctx->masked = false;
> + irq_ctx->automasked = false;
> }
>
> spin_unlock_irqrestore(&irq_ctx->lock, flags);
> @@ -152,12 +153,12 @@ static irqreturn_t vfio_automasked_irq_handler(int irq, void *dev_id)
>
> spin_lock_irqsave(&irq_ctx->lock, flags);
>
> - if (!irq_ctx->masked) {
> + if (!irq_ctx->masked && !irq_ctx->automasked) {
> ret = IRQ_HANDLED;
>
> /* automask maskable interrupts */
> disable_irq_nosync(irq_ctx->hwirq);
> - irq_ctx->masked = true;
> + irq_ctx->automasked = true;
> }
>
> spin_unlock_irqrestore(&irq_ctx->lock, flags);
> @@ -315,6 +316,7 @@ int vfio_platform_irq_init(struct vfio_platform_device *vdev)
> vdev->irqs[i].count = 1;
> vdev->irqs[i].hwirq = hwirq;
> vdev->irqs[i].masked = false;
> + vdev->irqs[i].automasked = false;
> }
>
> vdev->num_irqs = cnt;
> diff --git a/drivers/vfio/platform/vfio_platform_private.h b/drivers/vfio/platform/vfio_platform_private.h
> index 85ffe5d..8a3cfa9 100644
> --- a/drivers/vfio/platform/vfio_platform_private.h
> +++ b/drivers/vfio/platform/vfio_platform_private.h
> @@ -34,6 +34,7 @@ struct vfio_platform_irq {
> char *name;
> struct eventfd_ctx *trigger;
> bool masked;
> + bool automasked;
> spinlock_t lock;
> struct virqfd *unmask;
> struct virqfd *mask;
Thanks,
M.
--
Jazz is not dead, it just smell funny.
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <marc.zyngier@arm.com>
To: Eric Auger <eric.auger@redhat.com>
Cc: <eric.auger.pro@gmail.com>, <linux-kernel@vger.kernel.org>,
<kvm@vger.kernel.org>, <kvmarm@lists.cs.columbia.edu>,
<alex.williamson@redhat.com>, <pbonzini@redhat.com>,
<christoffer.dall@linaro.org>, <drjones@redhat.com>,
<wei@redhat.com>
Subject: Re: [PATCH 01/10] vfio: platform: Add automasked field to vfio_platform_irq
Date: Thu, 25 May 2017 19:05:05 +0100 [thread overview]
Message-ID: <87fufslsmm.fsf@arm.com> (raw)
In-Reply-To: <1495656803-28011-2-git-send-email-eric.auger@redhat.com> (Eric Auger's message of "Wed, 24 May 2017 22:13:14 +0200")
Hi Eric,
On Wed, May 24 2017 at 10:13:14 pm BST, Eric Auger <eric.auger@redhat.com> wrote:
> For direct EOI modality we will need to differentiate a userspace
> masking from the IRQ handler auto-masking.
>
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> ---
> drivers/vfio/platform/vfio_platform_irq.c | 10 ++++++----
> drivers/vfio/platform/vfio_platform_private.h | 1 +
> 2 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/vfio/platform/vfio_platform_irq.c b/drivers/vfio/platform/vfio_platform_irq.c
> index 46d4750..831f0b0 100644
> --- a/drivers/vfio/platform/vfio_platform_irq.c
> +++ b/drivers/vfio/platform/vfio_platform_irq.c
> @@ -29,7 +29,7 @@ static void vfio_platform_mask(struct vfio_platform_irq *irq_ctx)
>
> spin_lock_irqsave(&irq_ctx->lock, flags);
>
> - if (!irq_ctx->masked) {
> + if (!irq_ctx->masked && !irq_ctx->automasked) {
Could you please expand a bit on what this automasked variable covers?
It'd be good to document how masked and automasked differ in behaviour.
Also, it may be worth having a helper (is_masked?) to abstract both
cases.
> disable_irq_nosync(irq_ctx->hwirq);
> irq_ctx->masked = true;
> }
> @@ -89,9 +89,10 @@ static void vfio_platform_unmask(struct vfio_platform_irq *irq_ctx)
>
> spin_lock_irqsave(&irq_ctx->lock, flags);
>
> - if (irq_ctx->masked) {
> + if (irq_ctx->masked || irq_ctx->automasked) {
> enable_irq(irq_ctx->hwirq);
> irq_ctx->masked = false;
> + irq_ctx->automasked = false;
> }
>
> spin_unlock_irqrestore(&irq_ctx->lock, flags);
> @@ -152,12 +153,12 @@ static irqreturn_t vfio_automasked_irq_handler(int irq, void *dev_id)
>
> spin_lock_irqsave(&irq_ctx->lock, flags);
>
> - if (!irq_ctx->masked) {
> + if (!irq_ctx->masked && !irq_ctx->automasked) {
> ret = IRQ_HANDLED;
>
> /* automask maskable interrupts */
> disable_irq_nosync(irq_ctx->hwirq);
> - irq_ctx->masked = true;
> + irq_ctx->automasked = true;
> }
>
> spin_unlock_irqrestore(&irq_ctx->lock, flags);
> @@ -315,6 +316,7 @@ int vfio_platform_irq_init(struct vfio_platform_device *vdev)
> vdev->irqs[i].count = 1;
> vdev->irqs[i].hwirq = hwirq;
> vdev->irqs[i].masked = false;
> + vdev->irqs[i].automasked = false;
> }
>
> vdev->num_irqs = cnt;
> diff --git a/drivers/vfio/platform/vfio_platform_private.h b/drivers/vfio/platform/vfio_platform_private.h
> index 85ffe5d..8a3cfa9 100644
> --- a/drivers/vfio/platform/vfio_platform_private.h
> +++ b/drivers/vfio/platform/vfio_platform_private.h
> @@ -34,6 +34,7 @@ struct vfio_platform_irq {
> char *name;
> struct eventfd_ctx *trigger;
> bool masked;
> + bool automasked;
> spinlock_t lock;
> struct virqfd *unmask;
> struct virqfd *mask;
Thanks,
M.
--
Jazz is not dead, it just smell funny.
next prev parent reply other threads:[~2017-05-25 18:01 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-24 20:13 [PATCH 00/10] ARM/ARM64 Direct EOI setup for VFIO wired interrupts Eric Auger
2017-05-24 20:13 ` [PATCH 01/10] vfio: platform: Add automasked field to vfio_platform_irq Eric Auger
2017-05-24 20:13 ` Eric Auger
2017-05-25 18:05 ` Marc Zyngier [this message]
2017-05-25 18:05 ` Marc Zyngier
2017-05-30 12:45 ` Auger Eric
2017-05-31 17:41 ` Alex Williamson
2017-05-31 17:41 ` Alex Williamson
2017-05-24 20:13 ` [PATCH 02/10] VFIO: platform: Introduce direct EOI interrupt handler Eric Auger
2017-05-24 20:13 ` Eric Auger
2017-05-31 18:20 ` Alex Williamson
2017-05-31 18:20 ` Alex Williamson
2017-05-24 20:13 ` [PATCH 03/10] VFIO: platform: Direct EOI irq bypass for ARM/ARM64 Eric Auger
2017-05-24 20:13 ` Eric Auger
2017-05-31 18:20 ` Alex Williamson
2017-05-31 18:20 ` Alex Williamson
2017-05-31 19:31 ` Auger Eric
2017-05-31 19:31 ` Auger Eric
2017-06-01 10:49 ` Marc Zyngier
2017-05-24 20:13 ` [PATCH 04/10] VFIO: pci: Add automasked field to vfio_pci_irq_ctx Eric Auger
2017-05-24 20:13 ` Eric Auger
2017-05-31 18:21 ` Alex Williamson
2017-05-31 18:21 ` Alex Williamson
2017-05-24 20:13 ` [PATCH 05/10] VFIO: pci: Introduce direct EOI INTx interrupt handler Eric Auger
2017-05-24 20:13 ` Eric Auger
2017-05-31 18:24 ` Alex Williamson
2017-06-01 20:40 ` Auger Eric
2017-06-01 20:40 ` Auger Eric
2017-06-02 8:41 ` Marc Zyngier
2017-06-02 8:41 ` Marc Zyngier
2017-06-14 8:07 ` Auger Eric
2017-06-14 8:41 ` Marc Zyngier
2017-06-14 8:41 ` Marc Zyngier
2017-05-24 20:13 ` [PATCH 06/10] irqbypass: Add a private field in the producer Eric Auger
2017-05-24 20:13 ` Eric Auger
2017-05-24 20:13 ` [PATCH 07/10] VFIO: pci: Direct EOI irq bypass for ARM/ARM64 Eric Auger
2017-05-24 20:13 ` Eric Auger
2017-05-24 20:13 ` [PATCH 08/10] KVM: arm/arm64: vgic: Handle unshared mapped interrupts Eric Auger
2017-05-24 20:13 ` Eric Auger
2017-05-25 19:14 ` Marc Zyngier
2017-05-25 19:14 ` Marc Zyngier
2017-05-30 12:50 ` Auger Eric
2017-05-30 12:50 ` Auger Eric
2017-06-02 13:33 ` Christoffer Dall
2017-06-02 13:33 ` Christoffer Dall
2017-06-02 14:10 ` Marc Zyngier
2017-06-02 14:10 ` Marc Zyngier
2017-06-02 16:29 ` Christoffer Dall
2017-06-02 16:29 ` Christoffer Dall
2017-06-08 8:23 ` Marc Zyngier
2017-06-08 8:34 ` Christoffer Dall
2017-06-08 8:55 ` Auger Eric
2017-06-08 8:55 ` Auger Eric
2017-06-08 10:14 ` Christoffer Dall
2017-06-08 10:14 ` Christoffer Dall
2017-06-08 8:49 ` Auger Eric
2017-06-08 8:49 ` Auger Eric
2017-06-08 10:11 ` Christoffer Dall
2017-05-24 20:13 ` [PATCH 09/10] KVM: arm/arm64: vgic: Implement forwarding setting Eric Auger
2017-05-24 20:13 ` Eric Auger
2017-05-25 19:19 ` Marc Zyngier
2017-05-25 19:19 ` Marc Zyngier
2017-05-30 12:54 ` Auger Eric
2017-05-30 12:54 ` Auger Eric
2017-05-30 13:17 ` Marc Zyngier
2017-05-30 13:17 ` Marc Zyngier
2017-05-30 14:03 ` Auger Eric
2017-05-24 20:13 ` [PATCH 10/10] KVM: arm/arm64: register DEOI irq bypass consumer on ARM/ARM64 Eric Auger
2017-05-24 20:13 ` Eric Auger
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=87fufslsmm.fsf@arm.com \
--to=marc.zyngier@arm.com \
--cc=alex.williamson@redhat.com \
--cc=eric.auger.pro@gmail.com \
--cc=eric.auger@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
/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.