All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Antonios Motakis
	<a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
Cc: VFIO DRIVER <kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Marc Zyngier <marc.zyngier-5wv7dgnIgG8@public.gmane.org>,
	Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
	Linux IOMMU
	<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
	open list <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	VirtualOpenSystems Technical Team
	<tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>,
	kvm-arm
	<kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org>,
	Christoffer Dall
	<christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Subject: Re: [PATCH v9 12/19] vfio/platform: trigger an interrupt via eventfd
Date: Thu, 20 Nov 2014 15:24:12 +0100	[thread overview]
Message-ID: <546DF98C.5040200@linaro.org> (raw)
In-Reply-To: <CAG8rG2w6-1=BmU-AxtL6gvaC=H32O5E5V7WeDWTyjxHKKmwa=w@mail.gmail.com>

On 11/20/2014 03:11 PM, Antonios Motakis wrote:
> On Wed, Nov 12, 2014 at 3:22 PM, Eric Auger <eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
>> On 10/31/2014 08:36 PM, Alex Williamson wrote:
>>> On Mon, 2014-10-27 at 19:07 +0100, Antonios Motakis wrote:
>>>> This patch allows to set an eventfd for a patform device's interrupt,
>> platform device (typo)
> 
> Ack.
> 
>>>> and also to trigger the interrupt eventfd from userspace for testing.
>>>> Level sensitive interrupts are marked as maskable and are handled in
>>>> a later patch. Edge triggered interrupts are not advertised as maskable
>>>> and are implemented here using a simple and efficient IRQ handler.
>>>>
>>>> Signed-off-by: Antonios Motakis <a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
>>>> ---
>>>>  drivers/vfio/platform/vfio_platform_irq.c     | 93 ++++++++++++++++++++++++++-
>>>>  drivers/vfio/platform/vfio_platform_private.h |  2 +
>>>>  2 files changed, 93 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/vfio/platform/vfio_platform_irq.c b/drivers/vfio/platform/vfio_platform_irq.c
>>>> index 007b386..2ac8ed7 100644
>>>> --- a/drivers/vfio/platform/vfio_platform_irq.c
>>>> +++ b/drivers/vfio/platform/vfio_platform_irq.c
>>>> @@ -45,11 +45,91 @@ static int vfio_platform_set_irq_unmask(struct vfio_platform_device *vdev,
>>>>      return -EINVAL;
>>>>  }
>>>>
>>>> +static irqreturn_t vfio_irq_handler(int irq, void *dev_id)
>>>> +{
>>>> +    struct vfio_platform_irq *irq_ctx = dev_id;
>>>> +
>>>> +    eventfd_signal(irq_ctx->trigger, 1);
>>>> +
>>>> +    return IRQ_HANDLED;
>>>> +}
>>>> +
>>>> +static int vfio_set_trigger(struct vfio_platform_device *vdev, int index,
>>>> +                        int fd, irq_handler_t handler)
>>>> +{
>>>> +    struct vfio_platform_irq *irq = &vdev->irqs[index];
>>>> +    struct eventfd_ctx *trigger;
>>>> +    int ret;
>>>> +
>>>> +    if (irq->trigger) {
>>>> +            free_irq(irq->hwirq, irq);
>>>> +            kfree(irq->name);
>>>> +            eventfd_ctx_put(irq->trigger);
>>>> +            irq->trigger = NULL;
>>>> +    }
>>>> +
>>>> +    if (fd < 0) /* Disable only */
>>>> +            return 0;
>>>> +
>>>> +    irq->name = kasprintf(GFP_KERNEL, "vfio-irq[%d](%s)",
>>>> +                                            irq->hwirq, vdev->name);
>>>> +    if (!irq->name)
>>>> +            return -ENOMEM;
>>>> +
>>>> +    trigger = eventfd_ctx_fdget(fd);
>>>> +    if (IS_ERR(trigger)) {
>>>> +            kfree(irq->name);
>>>> +            return PTR_ERR(trigger);
>>>> +    }
>>>> +
>>>> +    irq->trigger = trigger;
>>>> +
>>>> +    ret = request_irq(irq->hwirq, handler, 0, irq->name, irq);
>>>> +    if (ret) {
>>>> +            kfree(irq->name);
>>>> +            eventfd_ctx_put(trigger);
>>>> +            irq->trigger = NULL;
>>>> +            return ret;
>>>> +    }
>>>> +
>>>> +    return 0;
>> you may simply return ret here?
> 
> Indeed, ack.
> 
>>>> +}
>>>> +
>>>>  static int vfio_platform_set_irq_trigger(struct vfio_platform_device *vdev,
>>>>                                   unsigned index, unsigned start,
>>>>                                   unsigned count, uint32_t flags, void *data)
>>>>  {
>>>> -    return -EINVAL;
>>>> +    struct vfio_platform_irq *irq = &vdev->irqs[index];
>>>> +    irq_handler_t handler;
>>>> +
>>>> +    if (vdev->irqs[index].flags & VFIO_IRQ_INFO_MASKABLE)
>>>> +            return -EINVAL; /* not implemented */
>>>> +    else
>>>> +            handler = vfio_irq_handler;
>>>> +
>>>> +    if (!count && (flags & VFIO_IRQ_SET_DATA_NONE))
>>>> +            return vfio_set_trigger(vdev, index, -1, handler);
>>>> +
>>>> +    if (start != 0 || count != 1)
>>>> +            return -EINVAL;
>>>> +
>>>> +    if (flags & VFIO_IRQ_SET_DATA_EVENTFD) {
>>>> +            int32_t fd = *(int32_t *)data;
>>>> +
>>>> +            return vfio_set_trigger(vdev, index, fd, handler);
>>>> +    }
>>>> +
>>>> +    if (flags & VFIO_IRQ_SET_DATA_NONE) {
>>>> +            handler(irq->hwirq, irq);
>>>> +
>>>> +    } else if (flags & VFIO_IRQ_SET_DATA_BOOL) {
>>>> +            uint8_t trigger = *(uint8_t *)data;
>>>> +
>>>> +            if (trigger)
>>>> +                    handler(irq->hwirq, irq);
>>>> +    }
>>>> +
>>>> +    return 0;
>>>>  }
>>>>
>>>>  int vfio_platform_set_irqs_ioctl(struct vfio_platform_device *vdev,
>>>> @@ -95,7 +175,11 @@ int vfio_platform_irq_init(struct vfio_platform_device *vdev)
>>>>              if (hwirq < 0)
>>>>                      goto err;
>>>>
>>>> -            vdev->irqs[i].flags = 0;
>>>> +            vdev->irqs[i].flags = VFIO_IRQ_INFO_EVENTFD;
>>>> +
>>>> +            if (irq_get_trigger_type(hwirq) & IRQ_TYPE_LEVEL_MASK)
>>>> +                    vdev->irqs[i].flags |= VFIO_IRQ_INFO_MASKABLE;
>>>
>>> This is a bit confusing because edge interrupts can support masking, but
>>> they don't require it.  Level interrupts really must support masking
>>> because we need to mask them on the host and therefore the user needs to
>>> be able to unmask them (ignoring the irq prioritization thing you guys
>>> can do on arm).  So this works, but I would really have expected
>>> VFIO_IRQ_INFO_AUTOMASKED here and in the above function.
>>
>> Shouldn't we have AUTOMASKED for level sensitive and MASKABLE for both
>> level & edge?
> 
> I believe it was Alex's argument to expose edge triggered irqs as
> non-MASKABLE so they can benefit from a more efficient interrupt
> handler.
Hi Antonios,

OK I understand. Please forget my comment and follow Alex recommendation.

> 
> Would it be acceptable to make them both maskable, but check for
> masked status without a lock?

> 
>>
>> For forwarded IRQ, may I enrich the external API with a new function
>> enabling to turn the automasked flag off? Would that make sense?
> 
> Are you thinking of an external function but internal to the kernel,
> or the external user API?

Actually I changed my mind and aligned to your dual handler strategy. I
do not see real interest/use case in allowing the user to change
forwarding state while the VFIO signaling mechanism is set. So I now
reject any state change attempt if the VFIO handler is installed.

by the way I am currently using v9 on 3.18rc5 and it runs fine with KVM
passthrough use case.

Best Regards

Eric
> 
>>
>> Thanks
>>
>> Eric
>>>
>>>> +
>>>>              vdev->irqs[i].count = 1;
>>>>              vdev->irqs[i].hwirq = hwirq;
>>>>      }
>>>> @@ -110,6 +194,11 @@ err:
>>>>
>>>>  void vfio_platform_irq_cleanup(struct vfio_platform_device *vdev)
>>>>  {
>>>> +    int i;
>>>> +
>>>> +    for (i = 0; i < vdev->num_irqs; i++)
>>>> +            vfio_set_trigger(vdev, i, -1, NULL);
>>>> +
>>>>      vdev->num_irqs = 0;
>>>>      kfree(vdev->irqs);
>>>>  }
>>>> diff --git a/drivers/vfio/platform/vfio_platform_private.h b/drivers/vfio/platform/vfio_platform_private.h
>>>> index ffa2459..a3f2411 100644
>>>> --- a/drivers/vfio/platform/vfio_platform_private.h
>>>> +++ b/drivers/vfio/platform/vfio_platform_private.h
>>>> @@ -28,6 +28,8 @@ struct vfio_platform_irq {
>>>>      u32                     flags;
>>>>      u32                     count;
>>>>      int                     hwirq;
>>>> +    char                    *name;
>>>> +    struct eventfd_ctx      *trigger;
>>>>  };
>>>>
>>>>  struct vfio_platform_region {
>>>
>>>
>>>
>>

  reply	other threads:[~2014-11-20 14:24 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-27 18:07 [PATCH v9 00/19] VFIO support for platform and AMBA devices on ARM Antonios Motakis
     [not found] ` <1414433284-31719-1-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-27 18:07   ` [PATCH v9 01/19] vfio/platform: initial skeleton of VFIO support for platform devices Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-2-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-11-12 10:05       ` Eric Auger
     [not found]         ` <546330DE.5010002-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-11-12 16:49           ` Alex Williamson
2014-11-12 16:49             ` Alex Williamson
     [not found]             ` <1415810985.16601.361.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-11-20 14:10               ` Antonios Motakis
2014-11-20 14:10                 ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 02/19] vfio: platform: probe to devices on the platform bus Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 03/19] vfio: platform: add the VFIO PLATFORM module to Kconfig Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-4-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-11-12  9:38       ` Hongbo Zhang
     [not found]         ` <CAOhR-w2N3SF=3DTgFr22JfAKDXxzz0PASznJaRjK3oBrRTVcsw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-12 10:05           ` Bharat.Bhushan-KZfg59tc24xl57MIdRCFDg
2014-11-12 10:38             ` Hongbo Zhang
     [not found]               ` <CAOhR-w305sv-_D3QNCtifkzODTv0XoPKBEs6C2MRT1fPVKjZ8A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-12 11:00                 ` Bharat.Bhushan-KZfg59tc24xl57MIdRCFDg
2014-11-12 11:00                   ` Bharat.Bhushan
2014-11-12 11:17                   ` Hongbo Zhang
2014-11-12 10:00       ` Eric Auger
2014-11-12  9:52     ` Hongbo Zhang
     [not found]       ` <CAOhR-w1nARQqtUX3nLBZYNg3PufDJMkOYeiJmpaz4fzPSZAmaQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-12  9:57         ` Antonios Motakis
2014-11-12  9:57           ` Antonios Motakis
2014-11-13  8:05           ` Hongbo Zhang
     [not found]             ` <CAOhR-w3pB9AfXODFfzv0VthnkPwW0d5DPoW26u1xGVCR1_W6RQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-20 14:10               ` Antonios Motakis
2014-11-20 14:10                 ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 04/19] vfio: amba: VFIO support for AMBA devices Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-5-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-31 18:40       ` Alex Williamson
2014-10-31 18:40         ` Alex Williamson
     [not found]         ` <1414780819.27420.314.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-11-05  9:50           ` Antonios Motakis
2014-11-05  9:50             ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 05/19] vfio: amba: add the VFIO for AMBA devices module to Kconfig Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 06/19] vfio/platform: return info for bound device Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-7-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-11-12 10:32       ` Eric Auger
     [not found]         ` <5463373C.2010202-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-11-12 16:36           ` Alex Williamson
2014-11-12 16:36             ` Alex Williamson
     [not found]             ` <1415810168.16601.353.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-11-20 14:10               ` Antonios Motakis
2014-11-20 14:10                 ` Antonios Motakis
     [not found]                 ` <CAG8rG2z_iCXEDGnfuZW_g+29NjhRXzUaDG3AUEVh1zvbf298BA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-20 14:26                   ` Eric Auger
2014-11-20 14:26                     ` Eric Auger
2014-10-27 18:07   ` [PATCH v9 07/19] vfio/platform: return info for device memory mapped IO regions Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-8-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-31 18:58       ` Alex Williamson
2014-10-31 18:58         ` Alex Williamson
     [not found]         ` <1414781936.27420.317.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-11-05  9:50           ` Antonios Motakis
2014-11-05  9:50             ` Antonios Motakis
2014-11-12 10:58       ` Eric Auger
     [not found]         ` <54633D5B.4040204-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-11-20 14:11           ` Antonios Motakis
2014-11-20 14:11             ` Antonios Motakis
     [not found]             ` <CAG8rG2wngS7+8yVQFydQzQkzzMKc8i9hcs2eH3+fKh+KZqmReQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-24 15:53               ` Antonios Motakis
2014-11-24 15:53                 ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 08/19] vfio/platform: read and write support for the device fd Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-9-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-11-12 15:46       ` Eric Auger
     [not found]         ` <546380DD.8000802-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-11-20 14:11           ` Antonios Motakis
2014-11-20 14:11             ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 09/19] vfio/platform: support MMAP of MMIO regions Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 10/19] vfio/platform: return IRQ info Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-11-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-31 19:11       ` Alex Williamson
2014-10-31 19:11         ` Alex Williamson
     [not found]         ` <1414782674.27420.320.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-11-05 10:04           ` Antonios Motakis
2014-11-05 10:04             ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 11/19] vfio/platform: initial interrupts support code Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
2014-10-27 18:07   ` [PATCH v9 12/19] vfio/platform: trigger an interrupt via eventfd Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-13-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-31 19:36       ` Alex Williamson
2014-10-31 19:36         ` Alex Williamson
     [not found]         ` <1414784174.27420.327.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-11-05 10:08           ` Antonios Motakis
2014-11-05 10:08             ` Antonios Motakis
2014-11-12 14:22           ` Eric Auger
     [not found]             ` <54636D25.6060009-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-11-20 14:11               ` Antonios Motakis
2014-11-20 14:11                 ` Antonios Motakis
2014-11-20 14:24                 ` Eric Auger [this message]
2014-10-27 18:07   ` [PATCH v9 13/19] vfio/platform: support for level sensitive interrupts Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-14-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-31 19:36       ` Alex Williamson
2014-10-31 19:36         ` Alex Williamson
     [not found]         ` <1414784196.27420.328.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-11-05 10:10           ` Antonios Motakis
2014-11-05 10:10             ` Antonios Motakis
2014-11-12 15:03           ` Eric Auger
2014-11-12 15:03           ` Eric Auger
2014-10-27 18:07   ` [PATCH v9 14/19] vfio: move eventfd support code for VFIO_PCI to a separate file Antonios Motakis
2014-10-27 18:07     ` Antonios Motakis
     [not found]     ` <1414433284-31719-15-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-27 19:16       ` Bjorn Helgaas
2014-10-27 19:16         ` Bjorn Helgaas
2014-10-27 19:16         ` Bjorn Helgaas
     [not found]         ` <CAErSpo55o00=YwtWChFaxC1tEAwv_A5nB90mDU9J6kpb9Tqf_Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-31 16:03           ` Antonios Motakis
2014-10-31 16:03             ` Antonios Motakis
2014-10-31 16:03             ` Antonios Motakis
2014-10-27 18:08   ` [PATCH v9 15/19] vfio: add local lock in virqfd instead of depending on VFIO PCI Antonios Motakis
2014-10-27 18:08     ` Antonios Motakis
     [not found]     ` <1414433284-31719-16-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-31 19:43       ` Alex Williamson
2014-10-31 19:43         ` Alex Williamson
     [not found]         ` <1414784583.27420.330.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-11-05 10:04           ` Antonios Motakis
2014-11-05 10:04             ` Antonios Motakis
2014-10-27 18:08   ` [PATCH v9 16/19] vfio: pass an opaque pointer on virqfd initialization Antonios Motakis
2014-10-27 18:08     ` Antonios Motakis
2014-10-27 18:08   ` [PATCH v9 17/19] vfio: virqfd: add vfio_ prefix to virqfd_enable and virqfd_disable Antonios Motakis
2014-10-27 18:08     ` Antonios Motakis
     [not found]     ` <1414433284-31719-18-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-10-27 20:12       ` Bjorn Helgaas
2014-10-27 20:12         ` Bjorn Helgaas
2014-10-27 20:12         ` Bjorn Helgaas
2014-10-31 16:06         ` Antonios Motakis
2014-10-27 18:08   ` [PATCH v9 18/19] vfio: initialize the virqfd workqueue in VFIO generic code Antonios Motakis
2014-10-27 18:08     ` Antonios Motakis
2014-10-27 18:08   ` [PATCH v9 19/19] vfio/platform: implement IRQ masking/unmasking via an eventfd Antonios Motakis
2014-10-27 18:08     ` Antonios Motakis

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=546DF98C.5040200@linaro.org \
    --to=eric.auger-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org \
    --cc=christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=marc.zyngier-5wv7dgnIgG8@public.gmane.org \
    --cc=tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org \
    --cc=will.deacon-5wv7dgnIgG8@public.gmane.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.