Message ID | 20201114151717.5369-4-jonathan@marek.ca (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/msm: support for host-cached BOs | expand |
On Sat, Nov 14, 2020 at 10:17:11AM -0500, Jonathan Marek wrote: > Always use direct dma ops and no swiotlb. > > Note: arm-smmu-qcom already avoids creating iommu dma ops, but not > everything uses arm-smmu-qcom and this also sets the dma mask. > > Signed-off-by: Jonathan Marek <jonathan@marek.ca> > --- > drivers/gpu/drm/msm/Kconfig | 1 + > drivers/gpu/drm/msm/msm_drv.c | 8 +++++--- > 2 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig > index e5816b498494..07c50405970a 100644 > --- a/drivers/gpu/drm/msm/Kconfig > +++ b/drivers/gpu/drm/msm/Kconfig > @@ -20,6 +20,7 @@ config DRM_MSM > select SND_SOC_HDMI_CODEC if SND_SOC > select SYNC_FILE > select PM_OPP > + select DMA_OPS_BYPASS > help > DRM/KMS driver for MSM/snapdragon. > > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c > index 49685571dc0e..bae48afca82e 100644 > --- a/drivers/gpu/drm/msm/msm_drv.c > +++ b/drivers/gpu/drm/msm/msm_drv.c > @@ -6,6 +6,7 @@ > */ > > #include <linux/dma-mapping.h> > +#include <linux/dma-direct.h> > #include <linux/kthread.h> > #include <linux/uaccess.h> > #include <uapi/linux/sched/types.h> > @@ -1288,10 +1289,11 @@ static int msm_pdev_probe(struct platform_device *pdev) > if (ret) > goto fail; > > - /* on all devices that I am aware of, iommu's which can map > - * any address the cpu can see are used: > + /* always use direct dma ops and no swiotlb Again, and implementation detail. Comments should not explain details obvious from the code (especially layers away) but the intent.
diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig index e5816b498494..07c50405970a 100644 --- a/drivers/gpu/drm/msm/Kconfig +++ b/drivers/gpu/drm/msm/Kconfig @@ -20,6 +20,7 @@ config DRM_MSM select SND_SOC_HDMI_CODEC if SND_SOC select SYNC_FILE select PM_OPP + select DMA_OPS_BYPASS help DRM/KMS driver for MSM/snapdragon. diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 49685571dc0e..bae48afca82e 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -6,6 +6,7 @@ */ #include <linux/dma-mapping.h> +#include <linux/dma-direct.h> #include <linux/kthread.h> #include <linux/uaccess.h> #include <uapi/linux/sched/types.h> @@ -1288,10 +1289,11 @@ static int msm_pdev_probe(struct platform_device *pdev) if (ret) goto fail; - /* on all devices that I am aware of, iommu's which can map - * any address the cpu can see are used: + /* always use direct dma ops and no swiotlb + * note: arm-smmu-qcom already avoids creating iommu dma ops, but + * not everything uses arm-smmu-qcom and this also sets the dma mask */ - ret = dma_set_mask_and_coherent(&pdev->dev, ~0); + ret = dma_direct_bypass(&pdev->dev); if (ret) goto fail;
Always use direct dma ops and no swiotlb. Note: arm-smmu-qcom already avoids creating iommu dma ops, but not everything uses arm-smmu-qcom and this also sets the dma mask. Signed-off-by: Jonathan Marek <jonathan@marek.ca> --- drivers/gpu/drm/msm/Kconfig | 1 + drivers/gpu/drm/msm/msm_drv.c | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-)