All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Tian, Kevin" <kevin.tian@intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: "Liu, Yi L" <yi.l.liu@intel.com>,
	"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
	"hch@lst.de" <hch@lst.de>,
	"jasowang@redhat.com" <jasowang@redhat.com>,
	"joro@8bytes.org" <joro@8bytes.org>,
	"jean-philippe@linaro.org" <jean-philippe@linaro.org>,
	"parav@mellanox.com" <parav@mellanox.com>,
	"lkml@metux.net" <lkml@metux.net>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"lushenming@huawei.com" <lushenming@huawei.com>,
	"eric.auger@redhat.com" <eric.auger@redhat.com>,
	"corbet@lwn.net" <corbet@lwn.net>,
	"Raj, Ashok" <ashok.raj@intel.com>,
	"yi.l.liu@linux.intel.com" <yi.l.liu@linux.intel.com>,
	"Tian, Jun J" <jun.j.tian@intel.com>,
	"Wu, Hao" <hao.wu@intel.com>,
	"Jiang, Dave" <dave.jiang@intel.com>,
	"jacob.jun.pan@linux.intel.com" <jacob.jun.pan@linux.intel.com>,
	"kwankhede@nvidia.com" <kwankhede@nvidia.com>,
	"robin.murphy@arm.com" <robin.murphy@arm.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"dwmw2@infradead.org" <dwmw2@infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"baolu.lu@linux.intel.com" <baolu.lu@linux.intel.com>,
	"david@gibson.dropbear.id.au" <david@gibson.dropbear.id.au>,
	"nicolinc@nvidia.com" <nicolinc@nvidia.com>
Subject: RE: [RFC 11/20] iommu/iommufd: Add IOMMU_IOASID_ALLOC/FREE
Date: Thu, 23 Sep 2021 09:14:58 +0000	[thread overview]
Message-ID: <BN9PR11MB5433A47FFA0A8C51643AA33C8CA39@BN9PR11MB5433.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20210922140911.GT327412@nvidia.com>

> From: Jason Gunthorpe <jgg@nvidia.com>
> Sent: Wednesday, September 22, 2021 10:09 PM
> 
> On Wed, Sep 22, 2021 at 03:40:25AM +0000, Tian, Kevin wrote:
> > > From: Jason Gunthorpe <jgg@nvidia.com>
> > > Sent: Wednesday, September 22, 2021 1:45 AM
> > >
> > > On Sun, Sep 19, 2021 at 02:38:39PM +0800, Liu Yi L wrote:
> > > > This patch adds IOASID allocation/free interface per iommufd. When
> > > > allocating an IOASID, userspace is expected to specify the type and
> > > > format information for the target I/O page table.
> > > >
> > > > This RFC supports only one type
> (IOMMU_IOASID_TYPE_KERNEL_TYPE1V2),
> > > > implying a kernel-managed I/O page table with vfio type1v2 mapping
> > > > semantics. For this type the user should specify the addr_width of
> > > > the I/O address space and whether the I/O page table is created in
> > > > an iommu enfore_snoop format. enforce_snoop must be true at this
> point,
> > > > as the false setting requires additional contract with KVM on handling
> > > > WBINVD emulation, which can be added later.
> > > >
> > > > Userspace is expected to call IOMMU_CHECK_EXTENSION (see next
> patch)
> > > > for what formats can be specified when allocating an IOASID.
> > > >
> > > > Open:
> > > > - Devices on PPC platform currently use a different iommu driver in vfio.
> > > >   Per previous discussion they can also use vfio type1v2 as long as there
> > > >   is a way to claim a specific iova range from a system-wide address
> space.
> > > >   This requirement doesn't sound PPC specific, as addr_width for pci
> > > devices
> > > >   can be also represented by a range [0, 2^addr_width-1]. This RFC
> hasn't
> > > >   adopted this design yet. We hope to have formal alignment in v1
> > > discussion
> > > >   and then decide how to incorporate it in v2.
> > >
> > > I think the request was to include a start/end IO address hint when
> > > creating the ios. When the kernel creates it then it can return the
> >
> > is the hint single-range or could be multiple-ranges?
> 
> David explained it here:
> 
> https://lore.kernel.org/kvm/YMrKksUeNW%2FPEGPM@yekko/
> 
> qeumu needs to be able to chooose if it gets the 32 bit range or 64
> bit range.
> 
> So a 'range hint' will do the job
> 
> David also suggested this:
> 
> https://lore.kernel.org/kvm/YL6%2FbjHyuHJTn4Rd@yekko/
> 
> So I like this better:
> 
> struct iommu_ioasid_alloc {
> 	__u32	argsz;
> 
> 	__u32	flags;
> #define IOMMU_IOASID_ENFORCE_SNOOP	(1 << 0)
> #define IOMMU_IOASID_HINT_BASE_IOVA	(1 << 1)
> 
> 	__aligned_u64 max_iova_hint;
> 	__aligned_u64 base_iova_hint; // Used only if
> IOMMU_IOASID_HINT_BASE_IOVA
> 
> 	// For creating nested page tables
> 	__u32 parent_ios_id;
> 	__u32 format;
> #define IOMMU_FORMAT_KERNEL 0
> #define IOMMU_FORMAT_PPC_XXX 2
> #define IOMMU_FORMAT_[..]
> 	u32 format_flags; // Layout depends on format above
> 
> 	__aligned_u64 user_page_directory;  // Used if parent_ios_id != 0
> };
> 
> Again 'type' as an overall API indicator should not exist, feature
> flags need to have clear narrow meanings.

currently the type is aimed to differentiate three usages:

- kernel-managed I/O page table
- user-managed I/O page table
- shared I/O page table (e.g. with mm, or ept)

we can remove 'type', but is FORMAT_KENREL/USER/SHARED a good
indicator? their difference is not about format.

> 
> This does both of David's suggestions at once. If quemu wants the 1G
> limited region it could specify max_iova_hint = 1G, if it wants the
> extend 64bit region with the hole it can give either the high base or
> a large max_iova_hint. format/format_flags allows a further

Dave's links didn't answer one puzzle from me. Does PPC needs accurate
range information or be ok with a large range including holes (then let
the kernel to figure out where the holes locate)?

> device-specific escape if more specific customization is needed and is
> needed to specify user space page tables anyhow.

and I didn't understand the 2nd link. How does user-managed page
table jump into this range claim problem? I'm getting confused...

> 
> > > ioas works well here I think. Use ioas_id to refer to the xarray
> > > index.
> >
> > What about when introducing pasid to this uAPI? Then use ioas_id
> > for the xarray index
> 
> Yes, ioas_id should always be the xarray index.
> 
> PASID needs to be called out as PASID or as a generic "hw description"
> blob.

ARM doesn't use PASID. So we need a generic blob, e.g. ioas_hwid?

and still we have both ioas_id (iommufd) and ioasid (ioasid.c) in the
kernel. Do we want to clear this confusion? Or possibly it's fine because
ioas_id is never used outside of iommufd and iommufd doesn't directly
call ioasid_alloc() from ioasid.c?

> 
> kvm's API to program the vPASID translation table should probably take
> in a (iommufd,ioas_id,device_id) tuple and extract the IOMMU side
> information using an in-kernel API. Userspace shouldn't have to
> shuttle it around.

the vPASID info is carried in VFIO_DEVICE_ATTACH_IOASID uAPI. 
when kvm calls iommufd with above tuple, vPASID->pPASID is
returned to kvm. So we still need a generic blob to represent
vPASID in the uAPI.

> 
> I'm starting to feel like the struct approach for describing this uAPI
> might not scale well, but lets see..
> 
> Jason

WARNING: multiple messages have this Message-ID (diff)
From: "Tian, Kevin" <kevin.tian@intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"jasowang@redhat.com" <jasowang@redhat.com>,
	"kwankhede@nvidia.com" <kwankhede@nvidia.com>,
	"hch@lst.de" <hch@lst.de>,
	"jean-philippe@linaro.org" <jean-philippe@linaro.org>,
	"Jiang, Dave" <dave.jiang@intel.com>,
	"Raj, Ashok" <ashok.raj@intel.com>,
	"corbet@lwn.net" <corbet@lwn.net>,
	"parav@mellanox.com" <parav@mellanox.com>,
	"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
	"lkml@metux.net" <lkml@metux.net>,
	"david@gibson.dropbear.id.au" <david@gibson.dropbear.id.au>,
	"dwmw2@infradead.org" <dwmw2@infradead.org>,
	"Tian, Jun J" <jun.j.tian@intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"lushenming@huawei.com" <lushenming@huawei.com>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"robin.murphy@arm.com" <robin.murphy@arm.com>
Subject: RE: [RFC 11/20] iommu/iommufd: Add IOMMU_IOASID_ALLOC/FREE
Date: Thu, 23 Sep 2021 09:14:58 +0000	[thread overview]
Message-ID: <BN9PR11MB5433A47FFA0A8C51643AA33C8CA39@BN9PR11MB5433.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20210922140911.GT327412@nvidia.com>

> From: Jason Gunthorpe <jgg@nvidia.com>
> Sent: Wednesday, September 22, 2021 10:09 PM
> 
> On Wed, Sep 22, 2021 at 03:40:25AM +0000, Tian, Kevin wrote:
> > > From: Jason Gunthorpe <jgg@nvidia.com>
> > > Sent: Wednesday, September 22, 2021 1:45 AM
> > >
> > > On Sun, Sep 19, 2021 at 02:38:39PM +0800, Liu Yi L wrote:
> > > > This patch adds IOASID allocation/free interface per iommufd. When
> > > > allocating an IOASID, userspace is expected to specify the type and
> > > > format information for the target I/O page table.
> > > >
> > > > This RFC supports only one type
> (IOMMU_IOASID_TYPE_KERNEL_TYPE1V2),
> > > > implying a kernel-managed I/O page table with vfio type1v2 mapping
> > > > semantics. For this type the user should specify the addr_width of
> > > > the I/O address space and whether the I/O page table is created in
> > > > an iommu enfore_snoop format. enforce_snoop must be true at this
> point,
> > > > as the false setting requires additional contract with KVM on handling
> > > > WBINVD emulation, which can be added later.
> > > >
> > > > Userspace is expected to call IOMMU_CHECK_EXTENSION (see next
> patch)
> > > > for what formats can be specified when allocating an IOASID.
> > > >
> > > > Open:
> > > > - Devices on PPC platform currently use a different iommu driver in vfio.
> > > >   Per previous discussion they can also use vfio type1v2 as long as there
> > > >   is a way to claim a specific iova range from a system-wide address
> space.
> > > >   This requirement doesn't sound PPC specific, as addr_width for pci
> > > devices
> > > >   can be also represented by a range [0, 2^addr_width-1]. This RFC
> hasn't
> > > >   adopted this design yet. We hope to have formal alignment in v1
> > > discussion
> > > >   and then decide how to incorporate it in v2.
> > >
> > > I think the request was to include a start/end IO address hint when
> > > creating the ios. When the kernel creates it then it can return the
> >
> > is the hint single-range or could be multiple-ranges?
> 
> David explained it here:
> 
> https://lore.kernel.org/kvm/YMrKksUeNW%2FPEGPM@yekko/
> 
> qeumu needs to be able to chooose if it gets the 32 bit range or 64
> bit range.
> 
> So a 'range hint' will do the job
> 
> David also suggested this:
> 
> https://lore.kernel.org/kvm/YL6%2FbjHyuHJTn4Rd@yekko/
> 
> So I like this better:
> 
> struct iommu_ioasid_alloc {
> 	__u32	argsz;
> 
> 	__u32	flags;
> #define IOMMU_IOASID_ENFORCE_SNOOP	(1 << 0)
> #define IOMMU_IOASID_HINT_BASE_IOVA	(1 << 1)
> 
> 	__aligned_u64 max_iova_hint;
> 	__aligned_u64 base_iova_hint; // Used only if
> IOMMU_IOASID_HINT_BASE_IOVA
> 
> 	// For creating nested page tables
> 	__u32 parent_ios_id;
> 	__u32 format;
> #define IOMMU_FORMAT_KERNEL 0
> #define IOMMU_FORMAT_PPC_XXX 2
> #define IOMMU_FORMAT_[..]
> 	u32 format_flags; // Layout depends on format above
> 
> 	__aligned_u64 user_page_directory;  // Used if parent_ios_id != 0
> };
> 
> Again 'type' as an overall API indicator should not exist, feature
> flags need to have clear narrow meanings.

currently the type is aimed to differentiate three usages:

- kernel-managed I/O page table
- user-managed I/O page table
- shared I/O page table (e.g. with mm, or ept)

we can remove 'type', but is FORMAT_KENREL/USER/SHARED a good
indicator? their difference is not about format.

> 
> This does both of David's suggestions at once. If quemu wants the 1G
> limited region it could specify max_iova_hint = 1G, if it wants the
> extend 64bit region with the hole it can give either the high base or
> a large max_iova_hint. format/format_flags allows a further

Dave's links didn't answer one puzzle from me. Does PPC needs accurate
range information or be ok with a large range including holes (then let
the kernel to figure out where the holes locate)?

> device-specific escape if more specific customization is needed and is
> needed to specify user space page tables anyhow.

and I didn't understand the 2nd link. How does user-managed page
table jump into this range claim problem? I'm getting confused...

> 
> > > ioas works well here I think. Use ioas_id to refer to the xarray
> > > index.
> >
> > What about when introducing pasid to this uAPI? Then use ioas_id
> > for the xarray index
> 
> Yes, ioas_id should always be the xarray index.
> 
> PASID needs to be called out as PASID or as a generic "hw description"
> blob.

ARM doesn't use PASID. So we need a generic blob, e.g. ioas_hwid?

and still we have both ioas_id (iommufd) and ioasid (ioasid.c) in the
kernel. Do we want to clear this confusion? Or possibly it's fine because
ioas_id is never used outside of iommufd and iommufd doesn't directly
call ioasid_alloc() from ioasid.c?

> 
> kvm's API to program the vPASID translation table should probably take
> in a (iommufd,ioas_id,device_id) tuple and extract the IOMMU side
> information using an in-kernel API. Userspace shouldn't have to
> shuttle it around.

the vPASID info is carried in VFIO_DEVICE_ATTACH_IOASID uAPI. 
when kvm calls iommufd with above tuple, vPASID->pPASID is
returned to kvm. So we still need a generic blob to represent
vPASID in the uAPI.

> 
> I'm starting to feel like the struct approach for describing this uAPI
> might not scale well, but lets see..
> 
> Jason
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

  reply	other threads:[~2021-09-23  9:15 UTC|newest]

Thread overview: 537+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-19  6:38 [RFC 00/20] Introduce /dev/iommu for userspace I/O address space management Liu Yi L
2021-09-19  6:38 ` Liu Yi L
2021-09-19  6:38 ` [RFC 01/20] iommu/iommufd: Add /dev/iommu core Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 15:41   ` Jason Gunthorpe
2021-09-21 15:41     ` Jason Gunthorpe via iommu
2021-09-22  1:51     ` Tian, Kevin
2021-09-22  1:51       ` Tian, Kevin
2021-09-22 12:40       ` Jason Gunthorpe
2021-09-22 12:40         ` Jason Gunthorpe via iommu
2021-09-22 13:59         ` Tian, Kevin
2021-09-22 13:59           ` Tian, Kevin
2021-09-22 14:10           ` Jason Gunthorpe
2021-09-22 14:10             ` Jason Gunthorpe via iommu
2021-10-15  9:18     ` Liu, Yi L
2021-10-15  9:18       ` Liu, Yi L
2021-10-15 11:18       ` Jason Gunthorpe
2021-10-15 11:18         ` Jason Gunthorpe via iommu
2021-10-15 11:29         ` Liu, Yi L
2021-10-15 11:29           ` Liu, Yi L
2021-10-19 16:57         ` Jacob Pan
2021-10-19 16:57           ` Jacob Pan
2021-10-19 16:57           ` Jason Gunthorpe
2021-10-19 16:57             ` Jason Gunthorpe via iommu
2021-10-19 17:11             ` Jacob Pan
2021-10-19 17:11               ` Jacob Pan
2021-10-19 17:12               ` Jason Gunthorpe
2021-10-19 17:12                 ` Jason Gunthorpe via iommu
2021-09-19  6:38 ` [RFC 02/20] vfio: Add device class for /dev/vfio/devices Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 15:57   ` Jason Gunthorpe
2021-09-21 15:57     ` Jason Gunthorpe via iommu
2021-09-21 23:56     ` Tian, Kevin
2021-09-21 23:56       ` Tian, Kevin
2021-09-22  0:55       ` Jason Gunthorpe
2021-09-22  0:55         ` Jason Gunthorpe via iommu
2021-09-22  1:07         ` Tian, Kevin
2021-09-22  1:07           ` Tian, Kevin
2021-09-22 12:31           ` Jason Gunthorpe
2021-09-22 12:31             ` Jason Gunthorpe via iommu
2021-09-22  3:22         ` Tian, Kevin
2021-09-22  3:22           ` Tian, Kevin
2021-09-22 12:50           ` Jason Gunthorpe
2021-09-22 12:50             ` Jason Gunthorpe via iommu
2021-09-22 14:09             ` Tian, Kevin
2021-09-22 14:09               ` Tian, Kevin
2021-09-21 19:56   ` Alex Williamson
2021-09-21 19:56     ` Alex Williamson
2021-09-22  0:56     ` Tian, Kevin
2021-09-22  0:56       ` Tian, Kevin
2021-09-29  2:08   ` David Gibson
2021-09-29  2:08     ` David Gibson
2021-09-29 19:05     ` Alex Williamson
2021-09-29 19:05       ` Alex Williamson
2021-09-30  2:43       ` David Gibson
2021-09-30  2:43         ` David Gibson
2021-10-20 12:39     ` Liu, Yi L
2021-10-20 12:39       ` Liu, Yi L
2021-09-19  6:38 ` [RFC 03/20] vfio: Add vfio_[un]register_device() Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 16:01   ` Jason Gunthorpe
2021-09-21 16:01     ` Jason Gunthorpe via iommu
2021-09-21 23:10     ` Tian, Kevin
2021-09-21 23:10       ` Tian, Kevin
2021-09-22  0:53       ` Jason Gunthorpe
2021-09-22  0:53         ` Jason Gunthorpe via iommu
2021-09-22  0:59         ` Tian, Kevin
2021-09-22  0:59           ` Tian, Kevin
2021-09-22  9:23         ` Tian, Kevin
2021-09-22  9:23           ` Tian, Kevin
2021-09-22 12:22           ` Jason Gunthorpe
2021-09-22 12:22             ` Jason Gunthorpe via iommu
2021-09-22 13:44             ` Tian, Kevin
2021-09-22 13:44               ` Tian, Kevin
2021-09-22 20:10             ` Alex Williamson
2021-09-22 20:10               ` Alex Williamson
2021-09-22 22:34               ` Tian, Kevin
2021-09-22 22:34                 ` Tian, Kevin
2021-09-22 22:45                 ` Alex Williamson
2021-09-22 22:45                   ` Alex Williamson
2021-09-22 23:45                   ` Tian, Kevin
2021-09-22 23:45                     ` Tian, Kevin
2021-09-22 23:52                     ` Jason Gunthorpe
2021-09-22 23:52                       ` Jason Gunthorpe via iommu
2021-09-23  0:38                       ` Tian, Kevin
2021-09-23  0:38                         ` Tian, Kevin
2021-09-22 23:56               ` Jason Gunthorpe
2021-09-22 23:56                 ` Jason Gunthorpe via iommu
2021-09-22  0:54     ` Tian, Kevin
2021-09-22  0:54       ` Tian, Kevin
2021-09-22  1:00       ` Jason Gunthorpe
2021-09-22  1:00         ` Jason Gunthorpe via iommu
2021-09-22  1:02         ` Tian, Kevin
2021-09-22  1:02           ` Tian, Kevin
2021-09-23  7:25         ` Eric Auger
2021-09-23  7:25           ` Eric Auger
2021-09-23 11:44           ` Jason Gunthorpe
2021-09-23 11:44             ` Jason Gunthorpe via iommu
2021-09-29  2:46         ` david
2021-09-29  2:46           ` david
2021-09-29 12:22           ` Jason Gunthorpe
2021-09-29 12:22             ` Jason Gunthorpe via iommu
2021-09-30  2:48             ` david
2021-09-30  2:48               ` david
2021-09-29  2:43   ` David Gibson
2021-09-29  2:43     ` David Gibson
2021-09-29  3:40     ` Tian, Kevin
2021-09-29  3:40       ` Tian, Kevin
2021-09-29  5:30     ` Tian, Kevin
2021-09-29  5:30       ` Tian, Kevin
2021-09-29  7:08       ` Cornelia Huck
2021-09-29  7:08         ` Cornelia Huck
2021-09-29 12:15         ` Jason Gunthorpe via iommu
2021-09-29 12:15           ` Jason Gunthorpe
2021-09-19  6:38 ` [RFC 04/20] iommu: Add iommu_device_get_info interface Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 16:19   ` Jason Gunthorpe
2021-09-21 16:19     ` Jason Gunthorpe via iommu
2021-09-22  2:31     ` Lu Baolu
2021-09-22  2:31       ` Lu Baolu
2021-09-22  5:07       ` Christoph Hellwig
2021-09-22  5:07         ` Christoph Hellwig
2021-09-29  2:52   ` David Gibson
2021-09-29  2:52     ` David Gibson
2021-09-29  9:25     ` Lu Baolu
2021-09-29  9:25       ` Lu Baolu
2021-09-29  9:29       ` Lu Baolu
2021-09-29  9:29         ` Lu Baolu
2021-09-19  6:38 ` [RFC 05/20] vfio/pci: Register device to /dev/vfio/devices Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 16:40   ` Jason Gunthorpe
2021-09-21 16:40     ` Jason Gunthorpe via iommu
2021-09-21 21:09     ` Alex Williamson
2021-09-21 21:09       ` Alex Williamson
2021-09-21 21:58       ` Jason Gunthorpe
2021-09-21 21:58         ` Jason Gunthorpe via iommu
2021-09-22  1:24         ` Tian, Kevin
2021-09-22  1:24           ` Tian, Kevin
2021-09-22  1:19       ` Tian, Kevin
2021-09-22  1:19         ` Tian, Kevin
2021-09-22 21:17         ` Alex Williamson
2021-09-22 21:17           ` Alex Williamson
2021-09-22 23:49           ` Tian, Kevin
2021-09-22 23:49             ` Tian, Kevin
2021-09-19  6:38 ` [RFC 06/20] iommu: Add iommu_device_init[exit]_user_dma interfaces Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 17:09   ` Jason Gunthorpe
2021-09-21 17:09     ` Jason Gunthorpe via iommu
2021-09-22  1:47     ` Tian, Kevin
2021-09-22  1:47       ` Tian, Kevin
2021-09-22 12:39       ` Jason Gunthorpe
2021-09-22 12:39         ` Jason Gunthorpe via iommu
2021-09-22 13:56         ` Tian, Kevin
2021-09-22 13:56           ` Tian, Kevin
2021-09-27  9:42         ` Tian, Kevin
2021-09-27  9:42           ` Tian, Kevin
2021-09-27 11:34           ` Lu Baolu
2021-09-27 11:34             ` Lu Baolu
2021-09-27 13:08             ` Tian, Kevin
2021-09-27 13:08               ` Tian, Kevin
2021-09-27 11:53           ` Jason Gunthorpe
2021-09-27 11:53             ` Jason Gunthorpe via iommu
2021-09-27 13:00             ` Tian, Kevin
2021-09-27 13:00               ` Tian, Kevin
2021-09-27 13:09               ` Jason Gunthorpe
2021-09-27 13:09                 ` Jason Gunthorpe via iommu
2021-09-27 13:32                 ` Tian, Kevin
2021-09-27 14:39                   ` Jason Gunthorpe
2021-09-28  7:13                     ` Tian, Kevin
2021-09-28 11:54                       ` Jason Gunthorpe
2021-09-28 23:59                         ` Tian, Kevin
2021-09-27 19:19                   ` Alex Williamson
2021-09-28  7:43                     ` Tian, Kevin
2021-09-28 16:26                       ` Alex Williamson
2021-09-27 15:09           ` Jason Gunthorpe
2021-09-27 15:09             ` Jason Gunthorpe via iommu
2021-09-28  7:30             ` Tian, Kevin
2021-09-28  7:30               ` Tian, Kevin
2021-09-28 11:57               ` Jason Gunthorpe
2021-09-28 11:57                 ` Jason Gunthorpe via iommu
2021-09-28 13:35                 ` Lu Baolu
2021-09-28 13:35                   ` Lu Baolu
2021-09-28 14:07                   ` Jason Gunthorpe
2021-09-28 14:07                     ` Jason Gunthorpe via iommu
2021-09-29  0:38                     ` Tian, Kevin
2021-09-29  0:38                       ` Tian, Kevin
2021-09-29 12:59                       ` Jason Gunthorpe
2021-09-29 12:59                         ` Jason Gunthorpe via iommu
2021-10-15  1:29                         ` Tian, Kevin
2021-10-15  1:29                           ` Tian, Kevin
2021-10-15 11:09                           ` Jason Gunthorpe
2021-10-15 11:09                             ` Jason Gunthorpe via iommu
2021-10-18  1:52                             ` Tian, Kevin
2021-10-18  1:52                               ` Tian, Kevin
2021-09-29  2:22                     ` Lu Baolu
2021-09-29  2:22                       ` Lu Baolu
2021-09-29  2:29                       ` Tian, Kevin
2021-09-29  2:29                         ` Tian, Kevin
2021-09-29  2:38                         ` Lu Baolu
2021-09-29  2:38                           ` Lu Baolu
2021-09-29  4:55   ` David Gibson
2021-09-29  4:55     ` David Gibson
2021-09-29  5:38     ` Tian, Kevin
2021-09-29  5:38       ` Tian, Kevin
2021-09-29  6:35       ` David Gibson
2021-09-29  6:35         ` David Gibson
2021-09-29  7:31         ` Tian, Kevin
2021-09-29  7:31           ` Tian, Kevin
2021-09-30  3:05           ` David Gibson
2021-09-30  3:05             ` David Gibson
2021-09-29 12:57         ` Jason Gunthorpe
2021-09-29 12:57           ` Jason Gunthorpe via iommu
2021-09-30  3:09           ` David Gibson
2021-09-30  3:09             ` David Gibson
2021-09-30 22:28             ` Jason Gunthorpe
2021-09-30 22:28               ` Jason Gunthorpe via iommu
2021-10-01  3:54               ` David Gibson
2021-10-01  3:54                 ` David Gibson
2021-09-19  6:38 ` [RFC 07/20] iommu/iommufd: Add iommufd_[un]bind_device() Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 17:14   ` Jason Gunthorpe
2021-09-21 17:14     ` Jason Gunthorpe via iommu
2021-10-15  9:21     ` Liu, Yi L
2021-10-15  9:21       ` Liu, Yi L
2021-09-29  5:25   ` David Gibson
2021-09-29  5:25     ` David Gibson
2021-09-29 12:24     ` Jason Gunthorpe
2021-09-29 12:24       ` Jason Gunthorpe via iommu
2021-09-30  3:10       ` David Gibson
2021-09-30  3:10         ` David Gibson
2021-10-01 12:43         ` Jason Gunthorpe
2021-10-01 12:43           ` Jason Gunthorpe via iommu
2021-10-07  1:23           ` David Gibson
2021-10-07  1:23             ` David Gibson
2021-10-07 11:35             ` Jason Gunthorpe
2021-10-07 11:35               ` Jason Gunthorpe via iommu
2021-10-11  3:24               ` David Gibson
2021-10-11  3:24                 ` David Gibson
2021-09-19  6:38 ` [RFC 08/20] vfio/pci: Add VFIO_DEVICE_BIND_IOMMUFD Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-19 10:08   ` kernel test robot
2021-09-19 10:08     ` kernel test robot
2021-09-21 17:29   ` Jason Gunthorpe
2021-09-21 17:29     ` Jason Gunthorpe via iommu
2021-09-22 21:01     ` Alex Williamson
2021-09-22 21:01       ` Alex Williamson
2021-09-22 23:01       ` Jason Gunthorpe
2021-09-22 23:01         ` Jason Gunthorpe via iommu
2021-09-29  6:00   ` David Gibson
2021-09-29  6:00     ` David Gibson
2021-09-29  6:41     ` Tian, Kevin
2021-09-29  6:41       ` Tian, Kevin
2021-09-29 12:28       ` Jason Gunthorpe
2021-09-29 12:28         ` Jason Gunthorpe via iommu
2021-09-29 22:34         ` Tian, Kevin
2021-09-29 22:34           ` Tian, Kevin
2021-09-30  3:12       ` David Gibson
2021-09-30  3:12         ` David Gibson
2021-09-19  6:38 ` [RFC 09/20] iommu: Add page size and address width attributes Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-22 13:42   ` Eric Auger
2021-09-22 13:42     ` Eric Auger
2021-09-22 14:19     ` Tian, Kevin
2021-09-22 14:19       ` Tian, Kevin
2021-09-19  6:38 ` [RFC 10/20] iommu/iommufd: Add IOMMU_DEVICE_GET_INFO Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 17:40   ` Jason Gunthorpe
2021-09-21 17:40     ` Jason Gunthorpe via iommu
2021-09-22  3:30     ` Tian, Kevin
2021-09-22  3:30       ` Tian, Kevin
2021-09-22 12:41       ` Jason Gunthorpe
2021-09-22 12:41         ` Jason Gunthorpe via iommu
2021-09-29  6:18         ` david
2021-09-29  6:18           ` david
2021-09-22 21:24   ` Alex Williamson
2021-09-22 21:24     ` Alex Williamson
2021-09-22 23:49     ` Jason Gunthorpe
2021-09-22 23:49       ` Jason Gunthorpe via iommu
2021-09-23  3:10       ` Tian, Kevin
2021-09-23  3:10         ` Tian, Kevin
2021-09-23 10:15         ` Jean-Philippe Brucker
2021-09-23 10:15           ` Jean-Philippe Brucker
2021-09-23 11:27           ` Jason Gunthorpe
2021-09-23 11:27             ` Jason Gunthorpe via iommu
2021-09-23 12:05             ` Tian, Kevin
2021-09-23 12:05               ` Tian, Kevin
2021-09-23 12:22               ` Jason Gunthorpe
2021-09-23 12:22                 ` Jason Gunthorpe via iommu
2021-09-29  8:48                 ` Tian, Kevin
2021-09-29  8:48                   ` Tian, Kevin
2021-09-29 12:36                   ` Jason Gunthorpe
2021-09-29 12:36                     ` Jason Gunthorpe via iommu
2021-09-30  8:30                     ` Tian, Kevin
2021-09-30 10:33                       ` Jean-Philippe Brucker
2021-09-30 22:04                         ` Jason Gunthorpe
2021-10-01  3:28                           ` hch
2021-10-14  8:13                             ` Tian, Kevin
2021-10-14  8:22                               ` hch
2021-10-14  8:29                                 ` Tian, Kevin
2021-10-14  8:01                         ` Tian, Kevin
2021-10-14  9:16                           ` Jean-Philippe Brucker
2021-09-30  8:49                 ` Tian, Kevin
2021-09-30  8:49                   ` Tian, Kevin
2021-09-30 13:43                   ` Lu Baolu
2021-09-30 13:43                     ` Lu Baolu
2021-10-01  3:24                     ` hch
2021-10-01  3:24                       ` hch
2021-09-30 22:08                   ` Jason Gunthorpe
2021-09-30 22:08                     ` Jason Gunthorpe via iommu
2021-09-23 11:36         ` Jason Gunthorpe
2021-09-23 11:36           ` Jason Gunthorpe via iommu
     [not found]       ` <BN9PR11MB5433409DF766AAEF1BB2CF258CA39@BN9PR11MB5433.namprd11.prod.outlook.com>
2021-09-23  3:38         ` Tian, Kevin
2021-09-23  3:38           ` Tian, Kevin
2021-09-23 11:42           ` Jason Gunthorpe
2021-09-23 11:42             ` Jason Gunthorpe via iommu
2021-09-30  9:35             ` Tian, Kevin
2021-09-30  9:35               ` Tian, Kevin
2021-09-30 22:23               ` Jason Gunthorpe
2021-09-30 22:23                 ` Jason Gunthorpe via iommu
2021-10-01  3:30                 ` hch
2021-10-01  3:30                   ` hch
2021-10-14  9:11                 ` Tian, Kevin
2021-10-14  9:11                   ` Tian, Kevin
2021-10-14 15:42                   ` Jason Gunthorpe
2021-10-14 15:42                     ` Jason Gunthorpe via iommu
2021-10-15  1:01                     ` Tian, Kevin
2021-10-15  1:01                       ` Tian, Kevin
     [not found]                     ` <BN9PR11MB543327BB6D58AEF91AD2C9D18CB99@BN9PR11MB5433.namprd11.prod.outlook.com>
2021-10-21  2:26                       ` Tian, Kevin
2021-10-21  2:26                         ` Tian, Kevin
2021-10-21 14:58                         ` Jean-Philippe Brucker
2021-10-21 14:58                           ` Jean-Philippe Brucker
2021-10-21 23:22                           ` Jason Gunthorpe
2021-10-21 23:22                             ` Jason Gunthorpe via iommu
2021-10-22  7:49                             ` Jean-Philippe Brucker
2021-10-22  7:49                               ` Jean-Philippe Brucker
2021-10-25 16:51                               ` Jason Gunthorpe
2021-10-25 16:51                                 ` Jason Gunthorpe via iommu
2021-10-21 23:30                         ` Jason Gunthorpe
2021-10-21 23:30                           ` Jason Gunthorpe via iommu
2021-10-22  3:08                           ` Tian, Kevin
2021-10-22  3:08                             ` Tian, Kevin
2021-10-25 23:34                             ` Jason Gunthorpe
2021-10-25 23:34                               ` Jason Gunthorpe via iommu
2021-10-27  1:42                               ` Tian, Kevin
2021-10-27  1:42                                 ` Tian, Kevin
2021-10-28  2:07                               ` Tian, Kevin
2021-10-28  2:07                                 ` Tian, Kevin
2021-10-29 13:55                                 ` Jason Gunthorpe
2021-10-29 13:55                                   ` Jason Gunthorpe via iommu
2021-09-29  6:23   ` David Gibson
2021-09-29  6:23     ` David Gibson
2021-09-19  6:38 ` [RFC 11/20] iommu/iommufd: Add IOMMU_IOASID_ALLOC/FREE Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-19 11:03   ` kernel test robot
2021-09-19 11:03     ` kernel test robot
2021-09-21 17:44   ` Jason Gunthorpe
2021-09-21 17:44     ` Jason Gunthorpe via iommu
2021-09-22  3:40     ` Tian, Kevin
2021-09-22  3:40       ` Tian, Kevin
2021-09-22 14:09       ` Jason Gunthorpe
2021-09-22 14:09         ` Jason Gunthorpe via iommu
2021-09-23  9:14         ` Tian, Kevin [this message]
2021-09-23  9:14           ` Tian, Kevin
2021-09-23 12:06           ` Jason Gunthorpe
2021-09-23 12:06             ` Jason Gunthorpe via iommu
2021-09-23 12:22             ` Tian, Kevin
2021-09-23 12:22               ` Tian, Kevin
2021-09-23 12:31               ` Jason Gunthorpe
2021-09-23 12:31                 ` Jason Gunthorpe via iommu
2021-09-23 12:45                 ` Tian, Kevin
2021-09-23 12:45                   ` Tian, Kevin
2021-09-23 13:01                   ` Jason Gunthorpe
2021-09-23 13:01                     ` Jason Gunthorpe via iommu
2021-09-23 13:20                     ` Tian, Kevin
2021-09-23 13:20                       ` Tian, Kevin
2021-09-23 13:30                       ` Jason Gunthorpe
2021-09-23 13:30                         ` Jason Gunthorpe via iommu
2021-09-23 13:41                         ` Tian, Kevin
2021-09-23 13:41                           ` Tian, Kevin
2021-10-01  6:30               ` david
2021-10-01  6:30                 ` david
2021-10-01  6:26           ` david
2021-10-01  6:26             ` david
2021-10-01  6:19         ` david
2021-10-01  6:19           ` david
2021-10-01 12:25           ` Jason Gunthorpe
2021-10-01 12:25             ` Jason Gunthorpe via iommu
2021-10-02  4:21             ` david
2021-10-02  4:21               ` david
2021-10-02 12:25               ` Jason Gunthorpe
2021-10-02 12:25                 ` Jason Gunthorpe via iommu
2021-10-11  5:37                 ` david
2021-10-11  5:37                   ` david
2021-10-11 17:17                   ` Jason Gunthorpe
2021-10-11 17:17                     ` Jason Gunthorpe via iommu
2021-10-14  4:33                     ` david
2021-10-14  4:33                       ` david
2021-10-14 15:06                       ` Jason Gunthorpe via iommu
2021-10-14 15:06                         ` Jason Gunthorpe
2021-10-18  3:40                         ` david
2021-10-18  3:40                           ` david
2021-10-01  6:15       ` david
2021-10-01  6:15         ` david
2021-09-22 12:51     ` Liu, Yi L
2021-09-22 12:51       ` Liu, Yi L
2021-09-22 13:32       ` Jason Gunthorpe
2021-09-22 13:32         ` Jason Gunthorpe via iommu
2021-09-23  6:26         ` Liu, Yi L
2021-09-23  6:26           ` Liu, Yi L
2021-10-01  6:13     ` David Gibson
2021-10-01  6:13       ` David Gibson
2021-10-01 12:22       ` Jason Gunthorpe
2021-10-01 12:22         ` Jason Gunthorpe via iommu
2021-10-11  6:02         ` David Gibson
2021-10-11  6:02           ` David Gibson
2021-10-11  8:49           ` Jean-Philippe Brucker
2021-10-11  8:49             ` Jean-Philippe Brucker
2021-10-11 23:38             ` Jason Gunthorpe
2021-10-11 23:38               ` Jason Gunthorpe via iommu
2021-10-12  8:33               ` Jean-Philippe Brucker
2021-10-12  8:33                 ` Jean-Philippe Brucker
2021-10-13  7:14                 ` Tian, Kevin
2021-10-13  7:14                   ` Tian, Kevin
2021-10-13  7:07             ` Tian, Kevin
2021-10-13  7:07               ` Tian, Kevin
2021-10-14  4:38             ` David Gibson
2021-10-14  4:38               ` David Gibson
2021-10-11 18:49           ` Jason Gunthorpe
2021-10-11 18:49             ` Jason Gunthorpe via iommu
2021-10-14  4:53             ` David Gibson
2021-10-14  4:53               ` David Gibson
2021-10-14 14:52               ` Jason Gunthorpe
2021-10-14 14:52                 ` Jason Gunthorpe via iommu
2021-10-18  3:50                 ` David Gibson
2021-10-18  3:50                   ` David Gibson
2021-10-18 17:42                   ` Jason Gunthorpe
2021-10-18 17:42                     ` Jason Gunthorpe via iommu
2021-09-22 13:45   ` Jean-Philippe Brucker
2021-09-22 13:45     ` Jean-Philippe Brucker
2021-09-29 10:47     ` Liu, Yi L
2021-09-29 10:47       ` Liu, Yi L
2021-10-01  6:11   ` David Gibson
2021-10-01  6:11     ` David Gibson
2021-10-13  7:00     ` Tian, Kevin
2021-10-13  7:00       ` Tian, Kevin
2021-10-14  5:00       ` David Gibson
2021-10-14  5:00         ` David Gibson
2021-10-14  6:53         ` Tian, Kevin
2021-10-14  6:53           ` Tian, Kevin
2021-10-25  5:05           ` David Gibson
2021-10-25  5:05             ` David Gibson
2021-10-27  2:32             ` Tian, Kevin
2021-10-27  2:32               ` Tian, Kevin
2021-09-19  6:38 ` [RFC 12/20] iommu/iommufd: Add IOMMU_CHECK_EXTENSION Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 17:47   ` Jason Gunthorpe
2021-09-21 17:47     ` Jason Gunthorpe via iommu
2021-09-22  3:41     ` Tian, Kevin
2021-09-22  3:41       ` Tian, Kevin
2021-09-22 12:55       ` Jason Gunthorpe
2021-09-22 12:55         ` Jason Gunthorpe via iommu
2021-09-22 14:13         ` Tian, Kevin
2021-09-19  6:38 ` [RFC 13/20] iommu: Extend iommu_at[de]tach_device() for multiple devices group Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-10-14  5:24   ` David Gibson
2021-10-14  5:24     ` David Gibson
2021-10-14  7:06     ` Tian, Kevin
2021-10-14  7:06       ` Tian, Kevin
2021-10-18  3:57       ` David Gibson
2021-10-18  3:57         ` David Gibson
2021-10-18 16:32         ` Jason Gunthorpe
2021-10-18 16:32           ` Jason Gunthorpe via iommu
2021-10-25  5:14           ` David Gibson
2021-10-25  5:14             ` David Gibson
2021-10-25 12:14             ` Jason Gunthorpe
2021-10-25 12:14               ` Jason Gunthorpe via iommu
2021-10-25 13:16               ` David Gibson
2021-10-25 13:16                 ` David Gibson
2021-10-25 23:36                 ` Jason Gunthorpe
2021-10-25 23:36                   ` Jason Gunthorpe via iommu
2021-10-26  9:23                   ` David Gibson
2021-10-26  9:23                     ` David Gibson
2021-09-19  6:38 ` [RFC 14/20] iommu/iommufd: Add iommufd_device_[de]attach_ioasid() Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 18:02   ` Jason Gunthorpe
2021-09-21 18:02     ` Jason Gunthorpe via iommu
2021-09-22  3:53     ` Tian, Kevin
2021-09-22  3:53       ` Tian, Kevin
2021-09-22 12:57       ` Jason Gunthorpe
2021-09-22 12:57         ` Jason Gunthorpe via iommu
2021-09-22 14:16         ` Tian, Kevin
2021-09-22 14:16           ` Tian, Kevin
2021-09-19  6:38 ` [RFC 15/20] vfio/pci: Add VFIO_DEVICE_[DE]ATTACH_IOASID Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 18:04   ` Jason Gunthorpe
2021-09-21 18:04     ` Jason Gunthorpe via iommu
2021-09-22  3:56     ` Tian, Kevin
2021-09-22  3:56       ` Tian, Kevin
2021-09-22 12:58       ` Jason Gunthorpe
2021-09-22 12:58         ` Jason Gunthorpe via iommu
2021-09-22 14:17         ` Tian, Kevin
2021-09-22 14:17           ` Tian, Kevin
2021-09-19  6:38 ` [RFC 16/20] vfio/type1: Export symbols for dma [un]map code sharing Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-21 18:14   ` Jason Gunthorpe
2021-09-21 18:14     ` Jason Gunthorpe via iommu
2021-09-22  3:57     ` Tian, Kevin
2021-09-22  3:57       ` Tian, Kevin
2021-09-19  6:38 ` [RFC 17/20] iommu/iommufd: Report iova range to userspace Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-19  9:38   ` kernel test robot
2021-09-19 16:41   ` kernel test robot
2021-09-22 14:49   ` Jean-Philippe Brucker
2021-09-22 14:49     ` Jean-Philippe Brucker
2021-09-29 10:44     ` Liu, Yi L
2021-09-29 10:44       ` Liu, Yi L
2021-09-29 12:07       ` Jean-Philippe Brucker
2021-09-29 12:07         ` Jean-Philippe Brucker
2021-09-29 12:31         ` Jason Gunthorpe
2021-09-29 12:31           ` Jason Gunthorpe via iommu
2021-09-19  6:38 ` [RFC 18/20] iommu/iommufd: Add IOMMU_[UN]MAP_DMA on IOASID Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-19 11:53   ` kernel test robot
2021-09-19  6:38 ` [RFC 19/20] iommu/vt-d: Implement device_info iommu_ops callback Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-09-19  6:38 ` [RFC 20/20] Doc: Add documentation for /dev/iommu Liu Yi L
2021-09-19  6:38   ` Liu Yi L
2021-10-29  0:15   ` David Gibson
2021-10-29  0:15     ` David Gibson
2021-10-29 12:44     ` Jason Gunthorpe
2021-10-29 12:44       ` Jason Gunthorpe via iommu
2021-09-19  6:45 ` [RFC 00/20] Introduce /dev/iommu for userspace I/O address space management Liu, Yi L
2021-09-19  6:45   ` Liu, Yi L
2021-09-21 13:45 ` Jason Gunthorpe
2021-09-21 13:45   ` Jason Gunthorpe via iommu
2021-09-22  3:25   ` Liu, Yi L
2021-09-22  3:25     ` Liu, Yi L

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=BN9PR11MB5433A47FFA0A8C51643AA33C8CA39@BN9PR11MB5433.namprd11.prod.outlook.com \
    --to=kevin.tian@intel.com \
    --cc=alex.williamson@redhat.com \
    --cc=ashok.raj@intel.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=corbet@lwn.net \
    --cc=dave.jiang@intel.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=dwmw2@infradead.org \
    --cc=eric.auger@redhat.com \
    --cc=hao.wu@intel.com \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@linux.intel.com \
    --cc=jasowang@redhat.com \
    --cc=jean-philippe@linaro.org \
    --cc=jgg@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=jun.j.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkml@metux.net \
    --cc=lushenming@huawei.com \
    --cc=nicolinc@nvidia.com \
    --cc=parav@mellanox.com \
    --cc=pbonzini@redhat.com \
    --cc=robin.murphy@arm.com \
    --cc=yi.l.liu@intel.com \
    --cc=yi.l.liu@linux.intel.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.