All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	David Gibson <david@gibson.dropbear.id.au>,
	Alexander Graf <agraf@suse.de>,
	linuxppc-dev@lists.ozlabs.org, Paul Mackerras <paulus@samba.org>,
	"kvm@vger.kernel.org mailing list" <kvm@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>,
	kvm-ppc@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>,
	Joerg Roedel <joro@8bytes.org>
Subject: Re: [PATCH 3/4] KVM: PPC: Add support for IOMMU in-kernel handling
Date: Sat, 22 Jun 2013 08:25:43 +0000	[thread overview]
Message-ID: <51C55F87.8080702@ozlabs.ru> (raw)
In-Reply-To: <1371740113.32709.22.camel@ul30vt.home>

On 06/21/2013 12:55 AM, Alex Williamson wrote:
> On Thu, 2013-06-20 at 18:48 +1000, Alexey Kardashevskiy wrote:
>> On 06/20/2013 05:47 PM, Benjamin Herrenschmidt wrote:
>>> On Thu, 2013-06-20 at 15:28 +1000, David Gibson wrote:
>>>>> Just out of curiosity - would not get_file() and fput_atomic() on a
>>>> group's
>>>>> file* do the right job instead of vfio_group_add_external_user() and
>>>>> vfio_group_del_external_user()?
>>>>
>>>> I was thinking that too.  Grabbing a file reference would certainly be
>>>> the usual way of handling this sort of thing.
>>>
>>> But that wouldn't prevent the group ownership to be returned to
>>> the kernel or another user would it ?
>>
>>
>> Holding the file pointer does not let the group->container_users counter go
>> to zero
> 
> How so?  Holding the file pointer means the file won't go away, which
> means the group release function won't be called.  That means the group
> won't go away, but that doesn't mean it's attached to an IOMMU.  A user
> could call UNSET_CONTAINER.
> 
>>  and this is exactly what vfio_group_add_external_user() and
>> vfio_group_del_external_user() do. The difference is only in absolute value
>> - 2 vs. 3.
>>
>> No change in behaviour whether I use new vfio API or simply hold file* till
>> KVM closes fd created when IOMMU was connected to LIOBN.
> 
> By that notion you could open(/dev/vfio/$GROUP) and you're safe, right?
> But what about SET_CONTAINER & SET_IOMMU?  All that you guarantee
> holding the file pointer is that the vfio_group exists.
> 
>> And while this counter is not zero, QEMU cannot take ownership over the group.
>>
>> I am definitely still missing the bigger picture...
> 
> The bigger picture is that the group needs to exist AND it needs to be
> setup and maintained to have IOMMU protection.  Actually, my first stab
> at add_external_user doesn't look sufficient, it needs to look more like
> vfio_group_get_device_fd, checking group->container->iommu and
> group_viable().


This makes sense. If you did this, that would be great. Without it, I
really cannot see how the proposed inc/dec of container_users is better
than simple holding file*. Thanks.


> As written it would allow an external user after
> SET_CONTAINER without SET_IOMMU.  It should also be part of the API that
> the external user must hold the file reference between add_external_use
> and del_external_user and do cleanup on any exit paths.  Thanks,


-- 
Alexey

WARNING: multiple messages have this Message-ID (diff)
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: "kvm@vger.kernel.org mailing list" <kvm@vger.kernel.org>,
	Joerg Roedel <joro@8bytes.org>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Alexander Graf <agraf@suse.de>,
	kvm-ppc@vger.kernel.org, open list <linux-kernel@vger.kernel.org>,
	Paul Mackerras <paulus@samba.org>,
	linuxppc-dev@lists.ozlabs.org,
	David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [PATCH 3/4] KVM: PPC: Add support for IOMMU in-kernel handling
Date: Sat, 22 Jun 2013 18:25:43 +1000	[thread overview]
Message-ID: <51C55F87.8080702@ozlabs.ru> (raw)
In-Reply-To: <1371740113.32709.22.camel@ul30vt.home>

On 06/21/2013 12:55 AM, Alex Williamson wrote:
> On Thu, 2013-06-20 at 18:48 +1000, Alexey Kardashevskiy wrote:
>> On 06/20/2013 05:47 PM, Benjamin Herrenschmidt wrote:
>>> On Thu, 2013-06-20 at 15:28 +1000, David Gibson wrote:
>>>>> Just out of curiosity - would not get_file() and fput_atomic() on a
>>>> group's
>>>>> file* do the right job instead of vfio_group_add_external_user() and
>>>>> vfio_group_del_external_user()?
>>>>
>>>> I was thinking that too.  Grabbing a file reference would certainly be
>>>> the usual way of handling this sort of thing.
>>>
>>> But that wouldn't prevent the group ownership to be returned to
>>> the kernel or another user would it ?
>>
>>
>> Holding the file pointer does not let the group->container_users counter go
>> to zero
> 
> How so?  Holding the file pointer means the file won't go away, which
> means the group release function won't be called.  That means the group
> won't go away, but that doesn't mean it's attached to an IOMMU.  A user
> could call UNSET_CONTAINER.
> 
>>  and this is exactly what vfio_group_add_external_user() and
>> vfio_group_del_external_user() do. The difference is only in absolute value
>> - 2 vs. 3.
>>
>> No change in behaviour whether I use new vfio API or simply hold file* till
>> KVM closes fd created when IOMMU was connected to LIOBN.
> 
> By that notion you could open(/dev/vfio/$GROUP) and you're safe, right?
> But what about SET_CONTAINER & SET_IOMMU?  All that you guarantee
> holding the file pointer is that the vfio_group exists.
> 
>> And while this counter is not zero, QEMU cannot take ownership over the group.
>>
>> I am definitely still missing the bigger picture...
> 
> The bigger picture is that the group needs to exist AND it needs to be
> setup and maintained to have IOMMU protection.  Actually, my first stab
> at add_external_user doesn't look sufficient, it needs to look more like
> vfio_group_get_device_fd, checking group->container->iommu and
> group_viable().


This makes sense. If you did this, that would be great. Without it, I
really cannot see how the proposed inc/dec of container_users is better
than simple holding file*. Thanks.


> As written it would allow an external user after
> SET_CONTAINER without SET_IOMMU.  It should also be part of the API that
> the external user must hold the file reference between add_external_use
> and del_external_user and do cleanup on any exit paths.  Thanks,


-- 
Alexey

WARNING: multiple messages have this Message-ID (diff)
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	David Gibson <david@gibson.dropbear.id.au>,
	Alexander Graf <agraf@suse.de>,
	linuxppc-dev@lists.ozlabs.org, Paul Mackerras <paulus@samba.org>,
	"kvm@vger.kernel.org mailing list" <kvm@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>,
	kvm-ppc@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>,
	Joerg Roedel <joro@8bytes.org>
Subject: Re: [PATCH 3/4] KVM: PPC: Add support for IOMMU in-kernel handling
Date: Sat, 22 Jun 2013 18:25:43 +1000	[thread overview]
Message-ID: <51C55F87.8080702@ozlabs.ru> (raw)
In-Reply-To: <1371740113.32709.22.camel@ul30vt.home>

On 06/21/2013 12:55 AM, Alex Williamson wrote:
> On Thu, 2013-06-20 at 18:48 +1000, Alexey Kardashevskiy wrote:
>> On 06/20/2013 05:47 PM, Benjamin Herrenschmidt wrote:
>>> On Thu, 2013-06-20 at 15:28 +1000, David Gibson wrote:
>>>>> Just out of curiosity - would not get_file() and fput_atomic() on a
>>>> group's
>>>>> file* do the right job instead of vfio_group_add_external_user() and
>>>>> vfio_group_del_external_user()?
>>>>
>>>> I was thinking that too.  Grabbing a file reference would certainly be
>>>> the usual way of handling this sort of thing.
>>>
>>> But that wouldn't prevent the group ownership to be returned to
>>> the kernel or another user would it ?
>>
>>
>> Holding the file pointer does not let the group->container_users counter go
>> to zero
> 
> How so?  Holding the file pointer means the file won't go away, which
> means the group release function won't be called.  That means the group
> won't go away, but that doesn't mean it's attached to an IOMMU.  A user
> could call UNSET_CONTAINER.
> 
>>  and this is exactly what vfio_group_add_external_user() and
>> vfio_group_del_external_user() do. The difference is only in absolute value
>> - 2 vs. 3.
>>
>> No change in behaviour whether I use new vfio API or simply hold file* till
>> KVM closes fd created when IOMMU was connected to LIOBN.
> 
> By that notion you could open(/dev/vfio/$GROUP) and you're safe, right?
> But what about SET_CONTAINER & SET_IOMMU?  All that you guarantee
> holding the file pointer is that the vfio_group exists.
> 
>> And while this counter is not zero, QEMU cannot take ownership over the group.
>>
>> I am definitely still missing the bigger picture...
> 
> The bigger picture is that the group needs to exist AND it needs to be
> setup and maintained to have IOMMU protection.  Actually, my first stab
> at add_external_user doesn't look sufficient, it needs to look more like
> vfio_group_get_device_fd, checking group->container->iommu and
> group_viable().


This makes sense. If you did this, that would be great. Without it, I
really cannot see how the proposed inc/dec of container_users is better
than simple holding file*. Thanks.


> As written it would allow an external user after
> SET_CONTAINER without SET_IOMMU.  It should also be part of the API that
> the external user must hold the file reference between add_external_use
> and del_external_user and do cleanup on any exit paths.  Thanks,


-- 
Alexey

  reply	other threads:[~2013-06-22  8:25 UTC|newest]

Thread overview: 212+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-05  6:11 [PATCH 0/4 v3] KVM: PPC: IOMMU in-kernel handling Alexey Kardashevskiy
2013-06-05  6:11 ` Alexey Kardashevskiy
2013-06-05  6:11 ` Alexey Kardashevskiy
2013-06-05  6:11 ` [PATCH 1/4] KVM: PPC: Add support for multiple-TCE hcalls Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-16  4:20   ` Benjamin Herrenschmidt
2013-06-16  4:20     ` Benjamin Herrenschmidt
2013-06-16  4:20     ` Benjamin Herrenschmidt
2013-06-16 22:06   ` Alexander Graf
2013-06-16 22:06     ` Alexander Graf
2013-06-16 22:06     ` Alexander Graf
2013-06-17  7:55     ` Alexey Kardashevskiy
2013-06-17  7:55       ` Alexey Kardashevskiy
2013-06-17  7:55       ` Alexey Kardashevskiy
2013-06-17  8:02       ` Alexander Graf
2013-06-17  8:02         ` Alexander Graf
2013-06-17  8:02         ` Alexander Graf
2013-06-17  8:34         ` Alexey Kardashevskiy
2013-06-17  8:34           ` Alexey Kardashevskiy
2013-06-17  8:34           ` Alexey Kardashevskiy
2013-06-17  8:40           ` Alexander Graf
2013-06-17  8:40             ` Alexander Graf
2013-06-17  8:40             ` Alexander Graf
2013-06-17  8:51             ` Alexey Kardashevskiy
2013-06-17  8:51               ` Alexey Kardashevskiy
2013-06-17  8:51               ` Alexey Kardashevskiy
2013-06-17 10:46               ` Alexander Graf
2013-06-17 10:46                 ` Alexander Graf
2013-06-17 10:46                 ` Alexander Graf
2013-06-17 10:48                 ` Alexander Graf
2013-06-17 10:48                   ` Alexander Graf
2013-06-17 10:48                   ` Alexander Graf
2013-06-17  8:37       ` Benjamin Herrenschmidt
2013-06-17  8:37         ` Benjamin Herrenschmidt
2013-06-17  8:37         ` Benjamin Herrenschmidt
2013-06-17  8:42         ` Alexander Graf
2013-06-17  8:42           ` Alexander Graf
2013-06-17  8:42           ` Alexander Graf
2013-06-05  6:11 ` [PATCH 2/4] powerpc: Prepare to support kernel handling of IOMMU map/unmap Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-16  4:26   ` Benjamin Herrenschmidt
2013-06-16  4:26     ` Benjamin Herrenschmidt
2013-06-16  4:26     ` Benjamin Herrenschmidt
2013-06-16  4:26     ` Benjamin Herrenschmidt
2013-06-16  4:31     ` Benjamin Herrenschmidt
2013-06-16  4:31       ` Benjamin Herrenschmidt
2013-06-16  4:31       ` Benjamin Herrenschmidt
2013-06-16  4:31       ` Benjamin Herrenschmidt
2013-06-17  9:17     ` Alexey Kardashevskiy
2013-06-17  9:17       ` Alexey Kardashevskiy
2013-06-17  9:17       ` Alexey Kardashevskiy
2013-06-17  9:17       ` Alexey Kardashevskiy
2013-06-05  6:11 ` [PATCH 3/4] KVM: PPC: Add support for IOMMU in-kernel handling Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-16  4:39   ` Benjamin Herrenschmidt
2013-06-16  4:39     ` Benjamin Herrenschmidt
2013-06-16  4:39     ` Benjamin Herrenschmidt
2013-06-19  3:17     ` Alexey Kardashevskiy
2013-06-19  3:17       ` Alexey Kardashevskiy
2013-06-19  3:17       ` Alexey Kardashevskiy
2013-06-16 22:25   ` Alexander Graf
2013-06-16 22:25     ` Alexander Graf
2013-06-16 22:25     ` Alexander Graf
2013-06-16 22:39   ` Benjamin Herrenschmidt
2013-06-16 22:39     ` Benjamin Herrenschmidt
2013-06-16 22:39     ` Benjamin Herrenschmidt
2013-06-17  3:13     ` Alex Williamson
2013-06-17  3:13       ` Alex Williamson
2013-06-17  3:13       ` Alex Williamson
2013-06-17  3:56       ` Benjamin Herrenschmidt
2013-06-17  3:56         ` Benjamin Herrenschmidt
2013-06-17  3:56         ` Benjamin Herrenschmidt
2013-06-18  2:32         ` Alex Williamson
2013-06-18  2:32           ` Alex Williamson
2013-06-18  2:32           ` Alex Williamson
2013-06-18  4:38           ` Benjamin Herrenschmidt
2013-06-18  4:38             ` Benjamin Herrenschmidt
2013-06-18  4:38             ` Benjamin Herrenschmidt
2013-06-18 14:48             ` Alex Williamson
2013-06-18 14:48               ` Alex Williamson
2013-06-18 14:48               ` Alex Williamson
2013-06-18 21:58               ` Benjamin Herrenschmidt
2013-06-18 21:58                 ` Benjamin Herrenschmidt
2013-06-18 21:58                 ` Benjamin Herrenschmidt
2013-06-19  3:35           ` Rusty Russell
2013-06-19  3:47             ` Rusty Russell
2013-06-19  3:35             ` Rusty Russell
2013-06-19  4:59             ` Benjamin Herrenschmidt
2013-06-19  4:59               ` Benjamin Herrenschmidt
2013-06-19  4:59               ` Benjamin Herrenschmidt
2013-06-19  9:58               ` Alexander Graf
2013-06-19  9:58                 ` Alexander Graf
2013-06-19  9:58                 ` Alexander Graf
2013-06-19 14:50                 ` Benjamin Herrenschmidt
2013-06-19 14:50                   ` Benjamin Herrenschmidt
2013-06-19 14:50                   ` Benjamin Herrenschmidt
2013-06-19 15:49                   ` Alex Williamson
2013-06-19 15:49                     ` Alex Williamson
2013-06-19 15:49                     ` Alex Williamson
2013-06-20  4:58                     ` Alexey Kardashevskiy
2013-06-20  4:58                       ` Alexey Kardashevskiy
2013-06-20  4:58                       ` Alexey Kardashevskiy
2013-06-20  5:28                       ` David Gibson
2013-06-20  5:28                         ` David Gibson
2013-06-20  5:28                         ` David Gibson
2013-06-20  7:47                         ` Benjamin Herrenschmidt
2013-06-20  7:47                           ` Benjamin Herrenschmidt
2013-06-20  7:47                           ` Benjamin Herrenschmidt
2013-06-20  8:48                           ` Alexey Kardashevskiy
2013-06-20  8:48                             ` Alexey Kardashevskiy
2013-06-20  8:48                             ` Alexey Kardashevskiy
2013-06-20 14:55                             ` Alex Williamson
2013-06-20 14:55                               ` Alex Williamson
2013-06-20 14:55                               ` Alex Williamson
2013-06-22  8:25                               ` Alexey Kardashevskiy [this message]
2013-06-22  8:25                                 ` Alexey Kardashevskiy
2013-06-22  8:25                                 ` Alexey Kardashevskiy
2013-06-22 12:03                               ` David Gibson
2013-06-22 12:03                                 ` David Gibson
2013-06-22 12:03                                 ` David Gibson
2013-06-22 14:28                                 ` Alex Williamson
2013-06-22 14:28                                   ` Alex Williamson
2013-06-22 14:28                                   ` Alex Williamson
2013-06-24  3:52                                   ` David Gibson
2013-06-24  3:52                                     ` David Gibson
2013-06-24  3:52                                     ` David Gibson
2013-06-24  3:52                                     ` David Gibson
2013-06-24  4:41                                     ` Alex Williamson
2013-06-24  4:41                                       ` Alex Williamson
2013-06-24  4:41                                       ` Alex Williamson
2013-06-27 11:01                                       ` David Gibson
2013-06-27 11:01                                         ` David Gibson
2013-06-27 11:01                                         ` David Gibson
2013-06-22 23:28                                 ` Benjamin Herrenschmidt
2013-06-22 23:28                                   ` Benjamin Herrenschmidt
2013-06-22 23:28                                   ` Benjamin Herrenschmidt
2013-06-24  3:54                                   ` David Gibson
2013-06-24  3:54                                     ` David Gibson
2013-06-24  3:54                                     ` David Gibson
2013-06-24  3:58                                     ` Benjamin Herrenschmidt
2013-06-24  3:58                                       ` Benjamin Herrenschmidt
2013-06-24  3:58                                       ` Benjamin Herrenschmidt
2013-06-05  6:11 ` [PATCH 4/4] KVM: PPC: Add hugepage " Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-16  4:46   ` Benjamin Herrenschmidt
2013-06-16  4:46     ` Benjamin Herrenschmidt
2013-06-16  4:46     ` Benjamin Herrenschmidt
2013-06-17 16:35   ` Paolo Bonzini
2013-06-17 16:35     ` Paolo Bonzini
2013-06-17 16:35     ` Paolo Bonzini
2013-06-12  3:14 ` [PATCH 0/4 v3] KVM: PPC: " Benjamin Herrenschmidt
2013-06-12  3:14   ` Benjamin Herrenschmidt
2013-06-12  3:14   ` Benjamin Herrenschmidt
  -- strict thread matches above, loose matches on Subject: below --
2013-05-21  3:06 [PATCH 0/4 v2] " Alexey Kardashevskiy
2013-05-21  3:06 ` [PATCH 3/4] KVM: PPC: Add support for " Alexey Kardashevskiy
2013-05-21  3:06   ` Alexey Kardashevskiy
2013-05-21  3:06   ` Alexey Kardashevskiy
2013-05-22 21:06   ` Scott Wood
2013-05-22 21:06     ` Scott Wood
2013-05-22 21:06     ` Scott Wood
2013-05-25  2:45     ` David Gibson
2013-05-25  2:45       ` David Gibson
2013-05-25  2:45       ` David Gibson
2013-05-27  2:44       ` Alexey Kardashevskiy
2013-05-27  2:44         ` Alexey Kardashevskiy
2013-05-27  2:44         ` Alexey Kardashevskiy
2013-05-27 10:23       ` Paolo Bonzini
2013-05-27 10:23         ` Paolo Bonzini
2013-05-27 10:23         ` Paolo Bonzini
2013-05-27 14:26         ` Alexey Kardashevskiy
2013-05-27 14:26           ` Alexey Kardashevskiy
2013-05-27 14:26           ` Alexey Kardashevskiy
2013-05-27 14:41           ` Paolo Bonzini
2013-05-27 14:41             ` Paolo Bonzini
2013-05-27 14:41             ` Paolo Bonzini
2013-05-28 16:32   ` Scott Wood
2013-05-28 16:32     ` Scott Wood
2013-05-28 16:32     ` Scott Wood
2013-05-29  0:20     ` Alexey Kardashevskiy
2013-05-29  0:20       ` Alexey Kardashevskiy
2013-05-29  0:20       ` Alexey Kardashevskiy
2013-05-28 17:45   ` Scott Wood
2013-05-28 17:45     ` Scott Wood
2013-05-28 17:45     ` Scott Wood
2013-05-28 23:30     ` Alexey Kardashevskiy
2013-05-28 23:30       ` Alexey Kardashevskiy
2013-05-28 23:30       ` Alexey Kardashevskiy
2013-05-28 23:35       ` Scott Wood
2013-05-28 23:35         ` Scott Wood
2013-05-28 23:35         ` Scott Wood
2013-05-29  0:12         ` Alexey Kardashevskiy
2013-05-29  0:12           ` Alexey Kardashevskiy
2013-05-29  0:12           ` Alexey Kardashevskiy
2013-05-29 20:05           ` Scott Wood
2013-05-29 20:05             ` Scott Wood
2013-05-29 20:05             ` Scott Wood
2013-05-29 23:10             ` Alexey Kardashevskiy
2013-05-29 23:10               ` Alexey Kardashevskiy
2013-05-29 23:10               ` Alexey Kardashevskiy
2013-05-29 23:14               ` Scott Wood
2013-05-29 23:14                 ` Scott Wood
2013-05-29 23:14                 ` Scott Wood
2013-05-29 23:14                 ` Scott Wood
2013-05-29 23:29                 ` Alexey Kardashevskiy
2013-05-29 23:29                   ` Alexey Kardashevskiy
2013-05-29 23:29                   ` Alexey Kardashevskiy
2013-05-29 23:32                   ` Scott Wood
2013-05-29 23:32                     ` Scott Wood
2013-05-29 23:32                     ` Scott Wood

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=51C55F87.8080702@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=agraf@suse.de \
    --cc=alex.williamson@redhat.com \
    --cc=benh@kernel.crashing.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=joro@8bytes.org \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=paulus@samba.org \
    --cc=rusty@rustcorp.com.au \
    /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.