From: Jason Gunthorpe <jgg@nvidia.com>
To: Baolu Lu <baolu.lu@linux.intel.com>
Cc: Andy Gross <agross@kernel.org>,
Alim Akhtar <alim.akhtar@samsung.com>,
Bjorn Andersson <andersson@kernel.org>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
Heiko Stuebner <heiko@sntech.de>,
iommu@lists.linux.dev, Jernej Skrabec <jernej.skrabec@gmail.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org,
linux-mediatek@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, linux-sunxi@lists.linux.dev,
linux-tegra@vger.kernel.org, Russell King <linux@armlinux.org.uk>,
linuxppc-dev@lists.ozlabs.org,
Matthias Brugger <matthias.bgg@gmail.com>,
Matthew Rosato <mjrosato@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Nicholas Piggin <npiggin@gmail.com>,
Orson Zhai <orsonzhai@gmail.com>, Rob Clark <robdclark@gmail.com>,
Robin Murphy <robin.murphy@arm.com>,
Samuel Holland <samuel@sholland.org>,
Thierry Reding <thierry.reding@gmail.com>,
Krishna Reddy <vdumpa@nvidia.com>, Chen-Yu Tsai <wens@csie.org>,
Will Deacon <will@kernel.org>, Yong Wu <yong.wu@mediatek.com>,
Chunyan Zhang <zhang.lyra@gmail.com>,
Dmitry Osipenko <digetx@gmail.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Nicolin Chen <nicolinc@nvidia.com>,
Niklas Schnelle <schnelle@linux.ibm.com>,
Steven Price <steven.price@arm.com>,
Thierry Reding <treding@nvidia.com>
Subject: Re: [PATCH v6 08/25] iommu: Reorganize iommu_get_default_domain_type() to respect def_domain_type()
Date: Mon, 14 Aug 2023 14:25:46 -0300 [thread overview]
Message-ID: <ZNpjmiBLneBC9oWe@nvidia.com> (raw)
In-Reply-To: <b50a464a-fa28-e359-1bc5-4f2b105326ad@linux.intel.com>
On Sat, Aug 12, 2023 at 10:15:42AM +0800, Baolu Lu wrote:
>
> How about consolidating above into a single helper?
>
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -1787,6 +1787,21 @@ __iommu_group_alloc_default_domain(struct iommu_group
> *group, int req_type)
> return __iommu_group_domain_alloc(group, req_type);
> }
>
> +/*
> + * Returns the iommu_ops for the devices in an iommu group.
> + *
> + * It is assumed that all devices in an iommu group are managed by a single
> + * IOMMU unit. Therefore, this returns the dev_iommu_ops of the first
> device
> + * in the group.
> + */
> +static const struct iommu_ops *group_iommu_ops(struct iommu_group *group)
> +{
> + struct group_device *device;
> +
> + device = list_first_entry(&group->devices, struct group_device, list);
> + return dev_iommu_ops(device->dev);
> +}
Okay I did this, but it doesn't help as much..
> @@ -2124,13 +2134,9 @@ static struct iommu_domain
> *__iommu_domain_alloc(const struct iommu_ops *ops,
> static struct iommu_domain *
> __iommu_group_domain_alloc(struct iommu_group *group, unsigned int type)
> {
> - struct device *dev =
> - list_first_entry(&group->devices, struct group_device, list)
> - ->dev;
> -
> lockdep_assert_held(&group->mutex);
>
> - return __iommu_domain_alloc(dev_iommu_ops(dev), dev, type);
> + return __iommu_domain_alloc(group_iommu_ops(group), dev, type);
> }
Since this is all still needed to calculate dev
> > +err:
> > + if (target_type) {
> > + dev_err_ratelimited(
> > + gdev->dev,
> > + "Device cannot be in %s domain - it is forcing %s\n",
> > + iommu_domain_type_str(target_type),
> > + iommu_domain_type_str(type));
> > + return -1;
> > + }
> > +
> > + dev_warn(
> > + gdev->dev,
> > + "Device needs domain type %s, but device %s in the same iommu group requires type %s - using default\n",
> > + iommu_domain_type_str(type), dev_name(last_dev),
> > + iommu_domain_type_str(best_type));
> > + return 0;
>
> This doesn't match the commit message, where it states:
>
> "Arrange things so that if the driver says it needs IDENTITY then
> iommu_get_default_domain_type() either fails or returns IDENTITY.
> "
>
> I saw that this change was made in the sequential patch. It is probably
> better to put that here?
Ah, I went over all this again and decided to try again, it is too
complicated. This patch can do what the commit message says and the
following patches are even simpler:
/*
* Combine the driver's choosen def_domain_type across all the devices in a
* group. Drivers must give a consistent result.
*/
static int iommu_get_def_domain_type(struct iommu_group *group,
struct device *dev, int cur_type)
{
const struct iommu_ops *ops = group_iommu_ops(group);
int type;
if (!ops->def_domain_type)
return cur_type;
type = ops->def_domain_type(dev);
if (!type || cur_type == type)
return cur_type;
if (!cur_type)
return type;
dev_err_ratelimited(
dev,
"IOMMU driver error, requesting conflicting def_domain_type, %s and %s, for devices in group %u.\n",
iommu_domain_type_str(cur_type), iommu_domain_type_str(type),
group->id);
/*
* Try to recover, drivers are allowed to force IDENITY or DMA, IDENTITY
* takes precedence.
*/
if (cur_type || type == IOMMU_DOMAIN_IDENTITY)
return IOMMU_DOMAIN_IDENTITY;
return cur_type;
}
/*
* A target_type of 0 will select the best domain type. 0 can be returned in
* this case meaning the global default should be used.
*/
static int iommu_get_default_domain_type(struct iommu_group *group,
int target_type)
{
struct device *untrusted = NULL;
struct group_device *gdev;
int driver_type = 0;
lockdep_assert_held(&group->mutex);
/*
* ARM32 drivers supporting CONFIG_ARM_DMA_USE_IOMMU can declare an
* identity_domain and it will automatically become their default
* domain. Later on ARM_DMA_USE_IOMMU will install its UNMANAGED domain.
* Override the selection to IDENTITY.
*/
if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) {
static_assert(!(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU) &&
IS_ENABLED(CONFIG_IOMMU_DMA)));
driver_type = IOMMU_DOMAIN_IDENTITY;
}
for_each_group_device(group, gdev) {
driver_type = iommu_get_def_domain_type(group, gdev->dev,
driver_type);
if (dev_is_pci(gdev->dev) && to_pci_dev(gdev->dev)->untrusted) {
/*
* No ARM32 using systems will set untrusted, it cannot
* work.
*/
if (WARN_ON(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)))
return -1;
untrusted = gdev->dev;
}
}
if (untrusted) {
if (driver_type && driver_type != IOMMU_DOMAIN_DMA) {
dev_err_ratelimited(
untrusted,
"Device is not trusted, but driver is overriding group %u to %s, refusing to probe.\n",
group->id, iommu_domain_type_str(driver_type));
return -1;
}
driver_type = IOMMU_DOMAIN_DMA;
}
if (target_type) {
if (driver_type && target_type != driver_type)
return -1;
return target_type;
}
return driver_type;
}
Thanks,
Jason
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Baolu Lu <baolu.lu@linux.intel.com>
Cc: Andy Gross <agross@kernel.org>,
Alim Akhtar <alim.akhtar@samsung.com>,
Bjorn Andersson <andersson@kernel.org>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
Heiko Stuebner <heiko@sntech.de>,
iommu@lists.linux.dev, Jernej Skrabec <jernej.skrabec@gmail.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org,
linux-mediatek@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, linux-sunxi@lists.linux.dev,
linux-tegra@vger.kernel.org, Russell King <linux@armlinux.org.uk>,
linuxppc-dev@lists.ozlabs.org,
Matthias Brugger <matthias.bgg@gmail.com>,
Matthew Rosato <mjrosato@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Nicholas Piggin <npiggin@gmail.com>,
Orson Zhai <orsonzhai@gmail.com>, Rob Clark <robdclark@gmail.com>,
Robin Murphy <robin.murphy@arm.com>,
Samuel Holland <samuel@sholland.org>,
Thierry Reding <thierry.reding@gmail.com>,
Krishna Reddy <vdumpa@nvidia.com>, Chen-Yu Tsai <wens@csie.org>,
Will Deacon <will@kernel.org>, Yong Wu <yong.wu@mediatek.com>,
Chunyan Zhang <zhang.lyra@gmail.com>,
Dmitry Osipenko <digetx@gmail.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Nicolin Chen <nicolinc@nvidia.com>,
Niklas Schnelle <schnelle@linux.ibm.com>,
Steven Price <steven.price@arm.com>,
Thierry Reding <treding@nvidia.com>
Subject: Re: [PATCH v6 08/25] iommu: Reorganize iommu_get_default_domain_type() to respect def_domain_type()
Date: Mon, 14 Aug 2023 14:25:46 -0300 [thread overview]
Message-ID: <ZNpjmiBLneBC9oWe@nvidia.com> (raw)
In-Reply-To: <b50a464a-fa28-e359-1bc5-4f2b105326ad@linux.intel.com>
On Sat, Aug 12, 2023 at 10:15:42AM +0800, Baolu Lu wrote:
>
> How about consolidating above into a single helper?
>
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -1787,6 +1787,21 @@ __iommu_group_alloc_default_domain(struct iommu_group
> *group, int req_type)
> return __iommu_group_domain_alloc(group, req_type);
> }
>
> +/*
> + * Returns the iommu_ops for the devices in an iommu group.
> + *
> + * It is assumed that all devices in an iommu group are managed by a single
> + * IOMMU unit. Therefore, this returns the dev_iommu_ops of the first
> device
> + * in the group.
> + */
> +static const struct iommu_ops *group_iommu_ops(struct iommu_group *group)
> +{
> + struct group_device *device;
> +
> + device = list_first_entry(&group->devices, struct group_device, list);
> + return dev_iommu_ops(device->dev);
> +}
Okay I did this, but it doesn't help as much..
> @@ -2124,13 +2134,9 @@ static struct iommu_domain
> *__iommu_domain_alloc(const struct iommu_ops *ops,
> static struct iommu_domain *
> __iommu_group_domain_alloc(struct iommu_group *group, unsigned int type)
> {
> - struct device *dev =
> - list_first_entry(&group->devices, struct group_device, list)
> - ->dev;
> -
> lockdep_assert_held(&group->mutex);
>
> - return __iommu_domain_alloc(dev_iommu_ops(dev), dev, type);
> + return __iommu_domain_alloc(group_iommu_ops(group), dev, type);
> }
Since this is all still needed to calculate dev
> > +err:
> > + if (target_type) {
> > + dev_err_ratelimited(
> > + gdev->dev,
> > + "Device cannot be in %s domain - it is forcing %s\n",
> > + iommu_domain_type_str(target_type),
> > + iommu_domain_type_str(type));
> > + return -1;
> > + }
> > +
> > + dev_warn(
> > + gdev->dev,
> > + "Device needs domain type %s, but device %s in the same iommu group requires type %s - using default\n",
> > + iommu_domain_type_str(type), dev_name(last_dev),
> > + iommu_domain_type_str(best_type));
> > + return 0;
>
> This doesn't match the commit message, where it states:
>
> "Arrange things so that if the driver says it needs IDENTITY then
> iommu_get_default_domain_type() either fails or returns IDENTITY.
> "
>
> I saw that this change was made in the sequential patch. It is probably
> better to put that here?
Ah, I went over all this again and decided to try again, it is too
complicated. This patch can do what the commit message says and the
following patches are even simpler:
/*
* Combine the driver's choosen def_domain_type across all the devices in a
* group. Drivers must give a consistent result.
*/
static int iommu_get_def_domain_type(struct iommu_group *group,
struct device *dev, int cur_type)
{
const struct iommu_ops *ops = group_iommu_ops(group);
int type;
if (!ops->def_domain_type)
return cur_type;
type = ops->def_domain_type(dev);
if (!type || cur_type == type)
return cur_type;
if (!cur_type)
return type;
dev_err_ratelimited(
dev,
"IOMMU driver error, requesting conflicting def_domain_type, %s and %s, for devices in group %u.\n",
iommu_domain_type_str(cur_type), iommu_domain_type_str(type),
group->id);
/*
* Try to recover, drivers are allowed to force IDENITY or DMA, IDENTITY
* takes precedence.
*/
if (cur_type || type == IOMMU_DOMAIN_IDENTITY)
return IOMMU_DOMAIN_IDENTITY;
return cur_type;
}
/*
* A target_type of 0 will select the best domain type. 0 can be returned in
* this case meaning the global default should be used.
*/
static int iommu_get_default_domain_type(struct iommu_group *group,
int target_type)
{
struct device *untrusted = NULL;
struct group_device *gdev;
int driver_type = 0;
lockdep_assert_held(&group->mutex);
/*
* ARM32 drivers supporting CONFIG_ARM_DMA_USE_IOMMU can declare an
* identity_domain and it will automatically become their default
* domain. Later on ARM_DMA_USE_IOMMU will install its UNMANAGED domain.
* Override the selection to IDENTITY.
*/
if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) {
static_assert(!(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU) &&
IS_ENABLED(CONFIG_IOMMU_DMA)));
driver_type = IOMMU_DOMAIN_IDENTITY;
}
for_each_group_device(group, gdev) {
driver_type = iommu_get_def_domain_type(group, gdev->dev,
driver_type);
if (dev_is_pci(gdev->dev) && to_pci_dev(gdev->dev)->untrusted) {
/*
* No ARM32 using systems will set untrusted, it cannot
* work.
*/
if (WARN_ON(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)))
return -1;
untrusted = gdev->dev;
}
}
if (untrusted) {
if (driver_type && driver_type != IOMMU_DOMAIN_DMA) {
dev_err_ratelimited(
untrusted,
"Device is not trusted, but driver is overriding group %u to %s, refusing to probe.\n",
group->id, iommu_domain_type_str(driver_type));
return -1;
}
driver_type = IOMMU_DOMAIN_DMA;
}
if (target_type) {
if (driver_type && target_type != driver_type)
return -1;
return target_type;
}
return driver_type;
}
Thanks,
Jason
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Baolu Lu <baolu.lu@linux.intel.com>
Cc: Heiko Stuebner <heiko@sntech.de>,
Matthew Rosato <mjrosato@linux.ibm.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
Thierry Reding <thierry.reding@gmail.com>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Alim Akhtar <alim.akhtar@samsung.com>,
Dmitry Osipenko <digetx@gmail.com>,
Steven Price <steven.price@arm.com>,
Will Deacon <will@kernel.org>,
Marek Szyprowski <m.szyprowski@samsung.com>,
linux-s390@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
Samuel Holland <samuel@sholland.org>,
Joerg Roedel <joro@8bytes.org>,
Russell King <linux@armlinux.org.uk>,
Jonathan Hunter <jonathanh@nvidia.com>,
linux-rockchip@lists.infradead.org, iommu@lists.linux.dev,
Andy Gross <agross@kernel.org>,
Nicolin Chen <nicolinc@nvidia.com>,
Yong Wu <yong.wu@mediatek.com>, Orson Zhai <orsonzhai@gmail.com>,
Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
Thierry Reding <treding@nvidia.com>,
linux-sunxi@lists.linux.dev, Rob Clark <robdclark@gmail.com>,
Kevin Tian <kevin.tian@intel.com>,
Niklas Schnelle <schnelle@linux.ibm.com>,
linux-arm-msm@vger.kernel.org,
Nicholas Piggin <npiggin@gmail.com>,
Krishna Reddy <vdumpa@nvidia.com>,
linux-mediatek@lists.infradead.org,
Baolin Wang <baolin.wang@linux.alibaba.com>,
linux-tegra@vger.kernel.org, Chen-Yu Tsai <wens@csie.org>,
linux-arm-kernel@lists.infradead.org,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Robin Murphy <robin.murphy@arm.com>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
Chunyan Zhang <zhang.lyra@gmail.com>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v6 08/25] iommu: Reorganize iommu_get_default_domain_type() to respect def_domain_type()
Date: Mon, 14 Aug 2023 14:25:46 -0300 [thread overview]
Message-ID: <ZNpjmiBLneBC9oWe@nvidia.com> (raw)
In-Reply-To: <b50a464a-fa28-e359-1bc5-4f2b105326ad@linux.intel.com>
On Sat, Aug 12, 2023 at 10:15:42AM +0800, Baolu Lu wrote:
>
> How about consolidating above into a single helper?
>
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -1787,6 +1787,21 @@ __iommu_group_alloc_default_domain(struct iommu_group
> *group, int req_type)
> return __iommu_group_domain_alloc(group, req_type);
> }
>
> +/*
> + * Returns the iommu_ops for the devices in an iommu group.
> + *
> + * It is assumed that all devices in an iommu group are managed by a single
> + * IOMMU unit. Therefore, this returns the dev_iommu_ops of the first
> device
> + * in the group.
> + */
> +static const struct iommu_ops *group_iommu_ops(struct iommu_group *group)
> +{
> + struct group_device *device;
> +
> + device = list_first_entry(&group->devices, struct group_device, list);
> + return dev_iommu_ops(device->dev);
> +}
Okay I did this, but it doesn't help as much..
> @@ -2124,13 +2134,9 @@ static struct iommu_domain
> *__iommu_domain_alloc(const struct iommu_ops *ops,
> static struct iommu_domain *
> __iommu_group_domain_alloc(struct iommu_group *group, unsigned int type)
> {
> - struct device *dev =
> - list_first_entry(&group->devices, struct group_device, list)
> - ->dev;
> -
> lockdep_assert_held(&group->mutex);
>
> - return __iommu_domain_alloc(dev_iommu_ops(dev), dev, type);
> + return __iommu_domain_alloc(group_iommu_ops(group), dev, type);
> }
Since this is all still needed to calculate dev
> > +err:
> > + if (target_type) {
> > + dev_err_ratelimited(
> > + gdev->dev,
> > + "Device cannot be in %s domain - it is forcing %s\n",
> > + iommu_domain_type_str(target_type),
> > + iommu_domain_type_str(type));
> > + return -1;
> > + }
> > +
> > + dev_warn(
> > + gdev->dev,
> > + "Device needs domain type %s, but device %s in the same iommu group requires type %s - using default\n",
> > + iommu_domain_type_str(type), dev_name(last_dev),
> > + iommu_domain_type_str(best_type));
> > + return 0;
>
> This doesn't match the commit message, where it states:
>
> "Arrange things so that if the driver says it needs IDENTITY then
> iommu_get_default_domain_type() either fails or returns IDENTITY.
> "
>
> I saw that this change was made in the sequential patch. It is probably
> better to put that here?
Ah, I went over all this again and decided to try again, it is too
complicated. This patch can do what the commit message says and the
following patches are even simpler:
/*
* Combine the driver's choosen def_domain_type across all the devices in a
* group. Drivers must give a consistent result.
*/
static int iommu_get_def_domain_type(struct iommu_group *group,
struct device *dev, int cur_type)
{
const struct iommu_ops *ops = group_iommu_ops(group);
int type;
if (!ops->def_domain_type)
return cur_type;
type = ops->def_domain_type(dev);
if (!type || cur_type == type)
return cur_type;
if (!cur_type)
return type;
dev_err_ratelimited(
dev,
"IOMMU driver error, requesting conflicting def_domain_type, %s and %s, for devices in group %u.\n",
iommu_domain_type_str(cur_type), iommu_domain_type_str(type),
group->id);
/*
* Try to recover, drivers are allowed to force IDENITY or DMA, IDENTITY
* takes precedence.
*/
if (cur_type || type == IOMMU_DOMAIN_IDENTITY)
return IOMMU_DOMAIN_IDENTITY;
return cur_type;
}
/*
* A target_type of 0 will select the best domain type. 0 can be returned in
* this case meaning the global default should be used.
*/
static int iommu_get_default_domain_type(struct iommu_group *group,
int target_type)
{
struct device *untrusted = NULL;
struct group_device *gdev;
int driver_type = 0;
lockdep_assert_held(&group->mutex);
/*
* ARM32 drivers supporting CONFIG_ARM_DMA_USE_IOMMU can declare an
* identity_domain and it will automatically become their default
* domain. Later on ARM_DMA_USE_IOMMU will install its UNMANAGED domain.
* Override the selection to IDENTITY.
*/
if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) {
static_assert(!(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU) &&
IS_ENABLED(CONFIG_IOMMU_DMA)));
driver_type = IOMMU_DOMAIN_IDENTITY;
}
for_each_group_device(group, gdev) {
driver_type = iommu_get_def_domain_type(group, gdev->dev,
driver_type);
if (dev_is_pci(gdev->dev) && to_pci_dev(gdev->dev)->untrusted) {
/*
* No ARM32 using systems will set untrusted, it cannot
* work.
*/
if (WARN_ON(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)))
return -1;
untrusted = gdev->dev;
}
}
if (untrusted) {
if (driver_type && driver_type != IOMMU_DOMAIN_DMA) {
dev_err_ratelimited(
untrusted,
"Device is not trusted, but driver is overriding group %u to %s, refusing to probe.\n",
group->id, iommu_domain_type_str(driver_type));
return -1;
}
driver_type = IOMMU_DOMAIN_DMA;
}
if (target_type) {
if (driver_type && target_type != driver_type)
return -1;
return target_type;
}
return driver_type;
}
Thanks,
Jason
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Baolu Lu <baolu.lu@linux.intel.com>
Cc: Andy Gross <agross@kernel.org>,
Alim Akhtar <alim.akhtar@samsung.com>,
Bjorn Andersson <andersson@kernel.org>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
Heiko Stuebner <heiko@sntech.de>,
iommu@lists.linux.dev, Jernej Skrabec <jernej.skrabec@gmail.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org,
linux-mediatek@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, linux-sunxi@lists.linux.dev,
linux-tegra@vger.kernel.org, Russell King <linux@armlinux.org.uk>,
linuxppc-dev@lists.ozlabs.org,
Matthias Brugger <matthias.bgg@gmail.com>,
Matthew Rosato <mjrosato@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Nicholas Piggin <npiggin@gmail.com>,
Orson Zhai <orsonzhai@gmail.com>, Rob Clark <robdclark@gmail.com>,
Robin Murphy <robin.murphy@arm.com>,
Samuel Holland <samuel@sholland.org>,
Thierry Reding <thierry.reding@gmail.com>,
Krishna Reddy <vdumpa@nvidia.com>, Chen-Yu Tsai <wens@csie.org>,
Will Deacon <will@kernel.org>, Yong Wu <yong.wu@mediatek.com>,
Chunyan Zhang <zhang.lyra@gmail.com>,
Dmitry Osipenko <digetx@gmail.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Nicolin Chen <nicolinc@nvidia.com>,
Niklas Schnelle <schnelle@linux.ibm.com>,
Steven Price <steven.price@arm.com>,
Thierry Reding <treding@nvidia.com>
Subject: Re: [PATCH v6 08/25] iommu: Reorganize iommu_get_default_domain_type() to respect def_domain_type()
Date: Mon, 14 Aug 2023 14:25:46 -0300 [thread overview]
Message-ID: <ZNpjmiBLneBC9oWe@nvidia.com> (raw)
In-Reply-To: <b50a464a-fa28-e359-1bc5-4f2b105326ad@linux.intel.com>
On Sat, Aug 12, 2023 at 10:15:42AM +0800, Baolu Lu wrote:
>
> How about consolidating above into a single helper?
>
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -1787,6 +1787,21 @@ __iommu_group_alloc_default_domain(struct iommu_group
> *group, int req_type)
> return __iommu_group_domain_alloc(group, req_type);
> }
>
> +/*
> + * Returns the iommu_ops for the devices in an iommu group.
> + *
> + * It is assumed that all devices in an iommu group are managed by a single
> + * IOMMU unit. Therefore, this returns the dev_iommu_ops of the first
> device
> + * in the group.
> + */
> +static const struct iommu_ops *group_iommu_ops(struct iommu_group *group)
> +{
> + struct group_device *device;
> +
> + device = list_first_entry(&group->devices, struct group_device, list);
> + return dev_iommu_ops(device->dev);
> +}
Okay I did this, but it doesn't help as much..
> @@ -2124,13 +2134,9 @@ static struct iommu_domain
> *__iommu_domain_alloc(const struct iommu_ops *ops,
> static struct iommu_domain *
> __iommu_group_domain_alloc(struct iommu_group *group, unsigned int type)
> {
> - struct device *dev =
> - list_first_entry(&group->devices, struct group_device, list)
> - ->dev;
> -
> lockdep_assert_held(&group->mutex);
>
> - return __iommu_domain_alloc(dev_iommu_ops(dev), dev, type);
> + return __iommu_domain_alloc(group_iommu_ops(group), dev, type);
> }
Since this is all still needed to calculate dev
> > +err:
> > + if (target_type) {
> > + dev_err_ratelimited(
> > + gdev->dev,
> > + "Device cannot be in %s domain - it is forcing %s\n",
> > + iommu_domain_type_str(target_type),
> > + iommu_domain_type_str(type));
> > + return -1;
> > + }
> > +
> > + dev_warn(
> > + gdev->dev,
> > + "Device needs domain type %s, but device %s in the same iommu group requires type %s - using default\n",
> > + iommu_domain_type_str(type), dev_name(last_dev),
> > + iommu_domain_type_str(best_type));
> > + return 0;
>
> This doesn't match the commit message, where it states:
>
> "Arrange things so that if the driver says it needs IDENTITY then
> iommu_get_default_domain_type() either fails or returns IDENTITY.
> "
>
> I saw that this change was made in the sequential patch. It is probably
> better to put that here?
Ah, I went over all this again and decided to try again, it is too
complicated. This patch can do what the commit message says and the
following patches are even simpler:
/*
* Combine the driver's choosen def_domain_type across all the devices in a
* group. Drivers must give a consistent result.
*/
static int iommu_get_def_domain_type(struct iommu_group *group,
struct device *dev, int cur_type)
{
const struct iommu_ops *ops = group_iommu_ops(group);
int type;
if (!ops->def_domain_type)
return cur_type;
type = ops->def_domain_type(dev);
if (!type || cur_type == type)
return cur_type;
if (!cur_type)
return type;
dev_err_ratelimited(
dev,
"IOMMU driver error, requesting conflicting def_domain_type, %s and %s, for devices in group %u.\n",
iommu_domain_type_str(cur_type), iommu_domain_type_str(type),
group->id);
/*
* Try to recover, drivers are allowed to force IDENITY or DMA, IDENTITY
* takes precedence.
*/
if (cur_type || type == IOMMU_DOMAIN_IDENTITY)
return IOMMU_DOMAIN_IDENTITY;
return cur_type;
}
/*
* A target_type of 0 will select the best domain type. 0 can be returned in
* this case meaning the global default should be used.
*/
static int iommu_get_default_domain_type(struct iommu_group *group,
int target_type)
{
struct device *untrusted = NULL;
struct group_device *gdev;
int driver_type = 0;
lockdep_assert_held(&group->mutex);
/*
* ARM32 drivers supporting CONFIG_ARM_DMA_USE_IOMMU can declare an
* identity_domain and it will automatically become their default
* domain. Later on ARM_DMA_USE_IOMMU will install its UNMANAGED domain.
* Override the selection to IDENTITY.
*/
if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) {
static_assert(!(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU) &&
IS_ENABLED(CONFIG_IOMMU_DMA)));
driver_type = IOMMU_DOMAIN_IDENTITY;
}
for_each_group_device(group, gdev) {
driver_type = iommu_get_def_domain_type(group, gdev->dev,
driver_type);
if (dev_is_pci(gdev->dev) && to_pci_dev(gdev->dev)->untrusted) {
/*
* No ARM32 using systems will set untrusted, it cannot
* work.
*/
if (WARN_ON(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)))
return -1;
untrusted = gdev->dev;
}
}
if (untrusted) {
if (driver_type && driver_type != IOMMU_DOMAIN_DMA) {
dev_err_ratelimited(
untrusted,
"Device is not trusted, but driver is overriding group %u to %s, refusing to probe.\n",
group->id, iommu_domain_type_str(driver_type));
return -1;
}
driver_type = IOMMU_DOMAIN_DMA;
}
if (target_type) {
if (driver_type && target_type != driver_type)
return -1;
return target_type;
}
return driver_type;
}
Thanks,
Jason
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-08-14 17:26 UTC|newest]
Thread overview: 268+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-03 0:07 [PATCH v6 00/25] iommu: Make default_domain's mandatory Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` [PATCH v6 01/25] iommu: Add iommu_ops->identity_domain Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` [PATCH v6 02/25] iommu: Add IOMMU_DOMAIN_PLATFORM Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-12 1:36 ` Baolu Lu
2023-08-12 1:36 ` Baolu Lu
2023-08-12 1:36 ` Baolu Lu
2023-08-12 1:36 ` Baolu Lu
2023-08-12 11:28 ` Jason Gunthorpe
2023-08-12 11:28 ` Jason Gunthorpe
2023-08-12 11:28 ` Jason Gunthorpe
2023-08-12 11:28 ` Jason Gunthorpe
2023-08-13 12:11 ` Baolu Lu
2023-08-13 12:11 ` Baolu Lu
2023-08-13 12:11 ` Baolu Lu
2023-08-13 12:11 ` Baolu Lu
2023-08-14 13:39 ` Jason Gunthorpe
2023-08-14 13:39 ` Jason Gunthorpe
2023-08-14 13:39 ` Jason Gunthorpe
2023-08-14 13:39 ` Jason Gunthorpe
2023-08-12 1:41 ` Baolu Lu
2023-08-12 1:41 ` Baolu Lu
2023-08-12 1:41 ` Baolu Lu
2023-08-12 1:41 ` Baolu Lu
2023-08-14 14:22 ` Jason Gunthorpe
2023-08-14 14:22 ` Jason Gunthorpe
2023-08-14 14:22 ` Jason Gunthorpe
2023-08-14 14:22 ` Jason Gunthorpe
2023-08-03 0:07 ` [PATCH v6 03/25] powerpc/iommu: Setup a default domain and remove set_platform_dma_ops Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-14 2:13 ` Baolu Lu
2023-08-14 2:13 ` Baolu Lu
2023-08-14 2:13 ` Baolu Lu
2023-08-14 2:13 ` Baolu Lu
2023-08-03 0:07 ` [PATCH v6 04/25] iommu: Add IOMMU_DOMAIN_PLATFORM for S390 Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-14 2:20 ` Baolu Lu
2023-08-14 2:20 ` Baolu Lu
2023-08-14 2:20 ` Baolu Lu
2023-08-14 2:20 ` Baolu Lu
2023-08-03 0:07 ` [PATCH v6 05/25] iommu/fsl_pamu: Implement a PLATFORM domain Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-14 2:35 ` Baolu Lu
2023-08-14 2:35 ` Baolu Lu
2023-08-14 2:35 ` Baolu Lu
2023-08-14 2:35 ` Baolu Lu
2023-08-03 0:07 ` [PATCH v6 06/25] iommu/tegra-gart: Remove tegra-gart Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-12 1:51 ` Baolu Lu
2023-08-12 1:51 ` Baolu Lu
2023-08-12 1:51 ` Baolu Lu
2023-08-12 1:51 ` Baolu Lu
2023-08-03 0:07 ` [PATCH v6 07/25] iommu/mtk_iommu_v1: Implement an IDENTITY domain Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-14 3:06 ` Baolu Lu
2023-08-14 3:06 ` Baolu Lu
2023-08-14 3:06 ` Baolu Lu
2023-08-14 3:06 ` Baolu Lu
2023-08-14 14:34 ` Jason Gunthorpe
2023-08-14 14:34 ` Jason Gunthorpe
2023-08-14 14:34 ` Jason Gunthorpe
2023-08-14 14:34 ` Jason Gunthorpe
2023-08-15 0:34 ` Baolu Lu
2023-08-15 0:34 ` Baolu Lu
2023-08-15 0:34 ` Baolu Lu
2023-08-15 0:34 ` Baolu Lu
2023-08-03 0:07 ` [PATCH v6 08/25] iommu: Reorganize iommu_get_default_domain_type() to respect def_domain_type() Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-12 2:15 ` Baolu Lu
2023-08-12 2:15 ` Baolu Lu
2023-08-12 2:15 ` Baolu Lu
2023-08-12 2:15 ` Baolu Lu
2023-08-14 17:25 ` Jason Gunthorpe [this message]
2023-08-14 17:25 ` Jason Gunthorpe
2023-08-14 17:25 ` Jason Gunthorpe
2023-08-14 17:25 ` Jason Gunthorpe
2023-08-15 1:18 ` Baolu Lu
2023-08-15 1:18 ` Baolu Lu
2023-08-15 1:18 ` Baolu Lu
2023-08-15 1:18 ` Baolu Lu
2023-08-16 12:44 ` Jason Gunthorpe
2023-08-16 12:44 ` Jason Gunthorpe
2023-08-16 12:44 ` Jason Gunthorpe
2023-08-16 12:44 ` Jason Gunthorpe
2023-08-03 0:07 ` [PATCH v6 09/25] iommu: Allow an IDENTITY domain as the default_domain in ARM32 Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-14 4:32 ` Baolu Lu
2023-08-14 4:32 ` Baolu Lu
2023-08-14 4:32 ` Baolu Lu
2023-08-14 4:32 ` Baolu Lu
2023-08-03 0:07 ` [PATCH v6 10/25] iommu/exynos: Implement an IDENTITY domain Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-14 4:52 ` Baolu Lu
2023-08-14 4:52 ` Baolu Lu
2023-08-14 4:52 ` Baolu Lu
2023-08-14 4:52 ` Baolu Lu
2023-08-14 12:48 ` Jason Gunthorpe
2023-08-14 12:48 ` Jason Gunthorpe
2023-08-14 12:48 ` Jason Gunthorpe
2023-08-14 12:48 ` Jason Gunthorpe
2023-08-03 0:07 ` [PATCH v6 11/25] iommu/tegra-smmu: " Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-14 5:01 ` Baolu Lu
2023-08-14 5:01 ` Baolu Lu
2023-08-14 5:01 ` Baolu Lu
2023-08-14 5:01 ` Baolu Lu
2023-08-03 0:07 ` [PATCH v6 12/25] iommu/tegra-smmu: Support DMA domains in tegra Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-03 0:07 ` Jason Gunthorpe
2023-08-14 5:08 ` Baolu Lu
2023-08-14 5:08 ` Baolu Lu
2023-08-14 5:08 ` Baolu Lu
2023-08-14 5:08 ` Baolu Lu
2023-08-14 15:34 ` Jason Gunthorpe
2023-08-14 15:34 ` Jason Gunthorpe
2023-08-14 15:34 ` Jason Gunthorpe
2023-08-14 15:34 ` Jason Gunthorpe
2023-08-03 0:08 ` [PATCH v6 13/25] iommu/omap: Implement an IDENTITY domain Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-14 5:10 ` Baolu Lu
2023-08-14 5:10 ` Baolu Lu
2023-08-14 5:10 ` Baolu Lu
2023-08-14 5:10 ` Baolu Lu
2023-08-03 0:08 ` [PATCH v6 14/25] iommu/msm: " Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-14 5:53 ` Baolu Lu
2023-08-14 5:53 ` Baolu Lu
2023-08-14 5:53 ` Baolu Lu
2023-08-14 5:53 ` Baolu Lu
2023-08-03 0:08 ` [PATCH v6 15/25] iommufd/selftest: Make the mock iommu driver into a real driver Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-12 4:57 ` Baolu Lu
2023-08-12 4:57 ` Baolu Lu
2023-08-12 4:57 ` Baolu Lu
2023-08-12 4:57 ` Baolu Lu
2023-08-12 5:01 ` Baolu Lu
2023-08-12 5:01 ` Baolu Lu
2023-08-12 5:01 ` Baolu Lu
2023-08-12 5:01 ` Baolu Lu
2023-08-14 23:16 ` Jason Gunthorpe
2023-08-14 23:16 ` Jason Gunthorpe
2023-08-14 23:16 ` Jason Gunthorpe
2023-08-14 23:16 ` Jason Gunthorpe
2023-08-03 0:08 ` [PATCH v6 16/25] iommu: Remove ops->set_platform_dma_ops() Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` [PATCH v6 17/25] iommu/qcom_iommu: Add an IOMMU_IDENTITIY_DOMAIN Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-14 6:32 ` Baolu Lu
2023-08-14 6:32 ` Baolu Lu
2023-08-14 6:32 ` Baolu Lu
2023-08-14 6:32 ` Baolu Lu
2023-08-14 15:36 ` Jason Gunthorpe
2023-08-14 15:36 ` Jason Gunthorpe
2023-08-14 15:36 ` Jason Gunthorpe
2023-08-14 15:36 ` Jason Gunthorpe
2023-08-15 0:56 ` Baolu Lu
2023-08-15 0:56 ` Baolu Lu
2023-08-15 0:56 ` Baolu Lu
2023-08-15 0:56 ` Baolu Lu
2023-08-03 0:08 ` [PATCH v6 18/25] iommu/ipmmu: " Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-14 6:34 ` Baolu Lu
2023-08-14 6:34 ` Baolu Lu
2023-08-14 6:34 ` Baolu Lu
2023-08-14 6:34 ` Baolu Lu
2023-08-03 0:08 ` [PATCH v6 19/25] iommu/mtk_iommu: " Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-14 6:35 ` Baolu Lu
2023-08-14 6:35 ` Baolu Lu
2023-08-14 6:35 ` Baolu Lu
2023-08-14 6:35 ` Baolu Lu
2023-08-03 0:08 ` [PATCH v6 20/25] iommu/sun50i: " Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-14 6:44 ` Baolu Lu
2023-08-14 6:44 ` Baolu Lu
2023-08-14 6:44 ` Baolu Lu
2023-08-14 6:44 ` Baolu Lu
2023-08-14 15:39 ` Jason Gunthorpe
2023-08-14 15:39 ` Jason Gunthorpe
2023-08-14 15:39 ` Jason Gunthorpe
2023-08-14 15:39 ` Jason Gunthorpe
2023-08-03 0:08 ` [PATCH v6 21/25] iommu: Require a default_domain for all iommu drivers Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` [PATCH v6 22/25] iommu: Add __iommu_group_domain_alloc() Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` [PATCH v6 23/25] iommu: Add ops->domain_alloc_paging() Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` [PATCH v6 24/25] iommu: Convert simple drivers with DOMAIN_DMA to domain_alloc_paging() Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-14 6:58 ` Baolu Lu
2023-08-14 6:58 ` Baolu Lu
2023-08-14 6:58 ` Baolu Lu
2023-08-14 6:58 ` Baolu Lu
2023-08-14 15:40 ` Jason Gunthorpe
2023-08-14 15:40 ` Jason Gunthorpe
2023-08-14 15:40 ` Jason Gunthorpe
2023-08-14 15:40 ` Jason Gunthorpe
2023-08-03 0:08 ` [PATCH v6 25/25] iommu: Convert remaining simple drivers " Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-03 0:08 ` Jason Gunthorpe
2023-08-14 7:00 ` Baolu Lu
2023-08-14 7:00 ` Baolu Lu
2023-08-14 7:00 ` Baolu Lu
2023-08-14 7:00 ` Baolu Lu
2023-08-14 8:43 ` [PATCH v6 00/25] iommu: Make default_domain's mandatory Baolu Lu
2023-08-14 8:43 ` Baolu Lu
2023-08-14 8:43 ` Baolu Lu
2023-08-14 8:43 ` Baolu Lu
2023-08-14 17:30 ` Jason Gunthorpe
2023-08-14 17:30 ` Jason Gunthorpe
2023-08-14 17:30 ` Jason Gunthorpe
2023-08-14 17:30 ` Jason Gunthorpe
2023-08-15 1:34 ` Baolu Lu
2023-08-15 1:34 ` Baolu Lu
2023-08-15 1:34 ` Baolu Lu
2023-08-15 1:34 ` Baolu Lu
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=ZNpjmiBLneBC9oWe@nvidia.com \
--to=jgg@nvidia.com \
--cc=agross@kernel.org \
--cc=alim.akhtar@samsung.com \
--cc=andersson@kernel.org \
--cc=angelogioacchino.delregno@collabora.com \
--cc=baolin.wang@linux.alibaba.com \
--cc=baolu.lu@linux.intel.com \
--cc=christophe.leroy@csgroup.eu \
--cc=digetx@gmail.com \
--cc=gerald.schaefer@linux.ibm.com \
--cc=heiko@sntech.de \
--cc=iommu@lists.linux.dev \
--cc=jernej.skrabec@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=konrad.dybcio@linaro.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=linux-tegra@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=m.szyprowski@samsung.com \
--cc=matthias.bgg@gmail.com \
--cc=mjrosato@linux.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=nicolinc@nvidia.com \
--cc=npiggin@gmail.com \
--cc=orsonzhai@gmail.com \
--cc=robdclark@gmail.com \
--cc=robin.murphy@arm.com \
--cc=samuel@sholland.org \
--cc=schnelle@linux.ibm.com \
--cc=steven.price@arm.com \
--cc=thierry.reding@gmail.com \
--cc=treding@nvidia.com \
--cc=vdumpa@nvidia.com \
--cc=wens@csie.org \
--cc=will@kernel.org \
--cc=yong.wu@mediatek.com \
--cc=zhang.lyra@gmail.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.