* [PATCH 0/2] iommu/qcom+msm: Use identity domain for display/GPU @ 2026-10-29 21:23 Rob Clark 2026-10-29 21:23 ` [PATCH 1/2] iommu/qcom: Use identity domain for GPU and display Rob Clark 2026-10-29 21:23 ` [PATCH 2/2] iommu/msm: " Rob Clark 0 siblings, 2 replies; 6+ messages in thread From: Rob Clark @ 2026-10-29 21:23 UTC (permalink / raw) To: iommu Cc: dri-devel, linux-arm-msm, freedreno, Dmitry Baryshkov, Rob Clark, Joerg Roedel (AMD), moderated list:ARM SMMU DRIVERS, open list, Robin Murphy, Will Deacon Similar to what is already done in arm-smmu-qcom, match display and GPU compatible strings to pick identity domain type for them. So far, we have an "evil twin" domain kicking around after drm/msm attaches it's own domain. Until now, that has been relatively harmless. But it becomes a problem with [1] when we start using sg_dma_len()/ sg_dma_address() for setting up mappings. Which is required to avoid problems with CONFIG_DMABUF_DEBUG (dma_buf_wrap_sg_table()). The first patch is at least compile tested.. msm_iommu seems to be armv7-only. If there are devices with bootloader splash, we may also need some work on qcom_iommu_identity_attach() and/or msm_iommu_identity_attach() to put the context bank into bypass instead of disabling it? Not sure, but that is probably going to require someone with such hardware at hand. [1] https://patchwork.freedesktop.org/series/175619/ Rob Clark (2): iommu/qcom: Use identity domain for GPU and display iommu/msm: Use identity domain for GPU and display drivers/iommu/arm/arm-smmu/qcom_iommu.c | 18 ++++++++++++++++++ drivers/iommu/msm_iommu.c | 16 ++++++++++++++++ 2 files changed, 34 insertions(+) -- 2.56.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] iommu/qcom: Use identity domain for GPU and display 2026-10-29 21:23 [PATCH 0/2] iommu/qcom+msm: Use identity domain for display/GPU Rob Clark @ 2026-10-29 21:23 ` Rob Clark 2026-10-30 8:35 ` Konrad Dybcio 2026-10-29 21:23 ` [PATCH 2/2] iommu/msm: " Rob Clark 1 sibling, 1 reply; 6+ messages in thread From: Rob Clark @ 2026-10-29 21:23 UTC (permalink / raw) To: iommu Cc: dri-devel, linux-arm-msm, freedreno, Dmitry Baryshkov, Rob Clark, Will Deacon, Robin Murphy, Joerg Roedel (AMD), moderated list:ARM SMMU DRIVERS, open list Similar to commit 0e764a01015d ("iommu/arm-smmu: Allow client devices to select direct mapping") for arm-smmu-qcom, match GPU and display compat strings to pick identity domain time. The drm/msm driver attaches it's own domain, which it manages directly, so we don't want an iommu managed domain interfering. Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com> --- drivers/iommu/arm/arm-smmu/qcom_iommu.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/iommu/arm/arm-smmu/qcom_iommu.c b/drivers/iommu/arm/arm-smmu/qcom_iommu.c index 21d18ce67b98..5b10feb419d8 100644 --- a/drivers/iommu/arm/arm-smmu/qcom_iommu.c +++ b/drivers/iommu/arm/arm-smmu/qcom_iommu.c @@ -22,6 +22,7 @@ #include <linux/init.h> #include <linux/mutex.h> #include <linux/of.h> +#include <linux/of_device.h> #include <linux/of_platform.h> #include <linux/platform_device.h> #include <linux/pm.h> @@ -589,6 +590,22 @@ static int qcom_iommu_of_xlate(struct device *dev, return iommu_fwspec_add_ids(dev, &asid, 1); } +static const struct of_device_id qcom_iommu_client_of_match[] = { + { .compatible = "qcom,adreno" }, + { .compatible = "qcom,mdp4" }, + { .compatible = "qcom,mdp5" }, + { .compatible = "qcom,mdss" }, + { } +}; + +static int qcom_iommu_def_domain_type(struct device *dev) +{ + const struct of_device_id *match = + of_match_device(qcom_iommu_client_of_match, dev); + + return match ? IOMMU_DOMAIN_IDENTITY : 0; +} + static const struct iommu_ops qcom_iommu_ops = { .identity_domain = &qcom_iommu_identity_domain, .capable = qcom_iommu_capable, @@ -596,6 +613,7 @@ static const struct iommu_ops qcom_iommu_ops = { .probe_device = qcom_iommu_probe_device, .device_group = generic_device_group, .of_xlate = qcom_iommu_of_xlate, + .def_domain_type = qcom_iommu_def_domain_type, .default_domain_ops = &(const struct iommu_domain_ops) { .attach_dev = qcom_iommu_attach_dev, .map_pages = qcom_iommu_map, -- 2.56.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] iommu/qcom: Use identity domain for GPU and display 2026-10-29 21:23 ` [PATCH 1/2] iommu/qcom: Use identity domain for GPU and display Rob Clark @ 2026-10-30 8:35 ` Konrad Dybcio 2026-10-30 12:35 ` Rob Clark 0 siblings, 1 reply; 6+ messages in thread From: Konrad Dybcio @ 2026-10-30 8:35 UTC (permalink / raw) To: Rob Clark, iommu Cc: dri-devel, linux-arm-msm, freedreno, Dmitry Baryshkov, Will Deacon, Robin Murphy, Joerg Roedel (AMD), moderated list:ARM SMMU DRIVERS, open list On 10/29/26 10:23 PM, Rob Clark wrote: > Similar to commit 0e764a01015d ("iommu/arm-smmu: Allow client devices to > select direct mapping") for arm-smmu-qcom, match GPU and display compat > strings to pick identity domain time. > > The drm/msm driver attaches it's own domain, which it manages directly, > so we don't want an iommu managed domain interfering. > > Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com> > --- fwiw I'm not sure we have any devices with this driver and mdp4 but anyway Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Konrad ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] iommu/qcom: Use identity domain for GPU and display 2026-10-30 8:35 ` Konrad Dybcio @ 2026-10-30 12:35 ` Rob Clark 0 siblings, 0 replies; 6+ messages in thread From: Rob Clark @ 2026-10-30 12:35 UTC (permalink / raw) To: Konrad Dybcio Cc: iommu, dri-devel, linux-arm-msm, freedreno, Dmitry Baryshkov, Will Deacon, Robin Murphy, Joerg Roedel (AMD), moderated list:ARM SMMU DRIVERS, open list On Fri, Oct 30, 2026 at 1:35 AM Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote: > > On 10/29/26 10:23 PM, Rob Clark wrote: > > Similar to commit 0e764a01015d ("iommu/arm-smmu: Allow client devices to > > select direct mapping") for arm-smmu-qcom, match GPU and display compat > > strings to pick identity domain time. > > > > The drm/msm driver attaches it's own domain, which it manages directly, > > so we don't want an iommu managed domain interfering. > > > > Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com> > > --- > > fwiw I'm not sure we have any devices with this driver and mdp4 > but anyway probably true of arm-smmu-qcom as well ;-) > Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > > Konrad ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] iommu/msm: Use identity domain for GPU and display 2026-10-29 21:23 [PATCH 0/2] iommu/qcom+msm: Use identity domain for display/GPU Rob Clark 2026-10-29 21:23 ` [PATCH 1/2] iommu/qcom: Use identity domain for GPU and display Rob Clark @ 2026-10-29 21:23 ` Rob Clark 2026-10-30 8:35 ` Konrad Dybcio 1 sibling, 1 reply; 6+ messages in thread From: Rob Clark @ 2026-10-29 21:23 UTC (permalink / raw) To: iommu Cc: dri-devel, linux-arm-msm, freedreno, Dmitry Baryshkov, Rob Clark, Joerg Roedel (AMD), Will Deacon, Robin Murphy, open list Similar to commit 0e764a01015d ("iommu/arm-smmu: Allow client devices to select direct mapping") for arm-smmu-qcom, match GPU and display compat strings to pick identity domain time. The drm/msm driver attaches it's own domain, which it manages directly, so we don't want an iommu managed domain interfering. Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com> --- drivers/iommu/msm_iommu.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/iommu/msm_iommu.c b/drivers/iommu/msm_iommu.c index 4ef1e8c8244b..1c5011432628 100644 --- a/drivers/iommu/msm_iommu.c +++ b/drivers/iommu/msm_iommu.c @@ -12,6 +12,7 @@ #include <linux/io.h> #include <linux/io-pgtable.h> #include <linux/interrupt.h> +#include <linux/of_device.h> #include <linux/list.h> #include <linux/spinlock.h> #include <linux/slab.h> @@ -691,12 +692,27 @@ irqreturn_t msm_iommu_fault_handler(int irq, void *dev_id) return 0; } +static const struct of_device_id msm_iommu_client_of_match[] = { + { .compatible = "qcom,adreno" }, + { .compatible = "qcom,mdp4" }, + { } +}; + +static int msm_iommu_def_domain_type(struct device *dev) +{ + const struct of_device_id *match = + of_match_device(msm_iommu_client_of_match, dev); + + return match ? IOMMU_DOMAIN_IDENTITY : 0; +} + static struct iommu_ops msm_iommu_ops = { .identity_domain = &msm_iommu_identity_domain, .domain_alloc_paging = msm_iommu_domain_alloc_paging, .probe_device = msm_iommu_probe_device, .device_group = generic_device_group, .of_xlate = qcom_iommu_of_xlate, + .def_domain_type = msm_iommu_def_domain_type, .default_domain_ops = &(const struct iommu_domain_ops) { .attach_dev = msm_iommu_attach_dev, .map_pages = msm_iommu_map, -- 2.56.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] iommu/msm: Use identity domain for GPU and display 2026-10-29 21:23 ` [PATCH 2/2] iommu/msm: " Rob Clark @ 2026-10-30 8:35 ` Konrad Dybcio 0 siblings, 0 replies; 6+ messages in thread From: Konrad Dybcio @ 2026-10-30 8:35 UTC (permalink / raw) To: Rob Clark, iommu Cc: dri-devel, linux-arm-msm, freedreno, Dmitry Baryshkov, Joerg Roedel (AMD), Will Deacon, Robin Murphy, open list On 10/29/26 10:23 PM, Rob Clark wrote: > Similar to commit 0e764a01015d ("iommu/arm-smmu: Allow client devices to > select direct mapping") for arm-smmu-qcom, match GPU and display compat > strings to pick identity domain time. > > The drm/msm driver attaches it's own domain, which it manages directly, > so we don't want an iommu managed domain interfering. > > Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com> > --- Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Konrad ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-10-30 12:36 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-10-29 21:23 [PATCH 0/2] iommu/qcom+msm: Use identity domain for display/GPU Rob Clark 2026-10-29 21:23 ` [PATCH 1/2] iommu/qcom: Use identity domain for GPU and display Rob Clark 2026-10-30 8:35 ` Konrad Dybcio 2026-10-30 12:35 ` Rob Clark 2026-10-29 21:23 ` [PATCH 2/2] iommu/msm: " Rob Clark 2026-10-30 8:35 ` Konrad Dybcio
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®