From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Joonyoung Shim <jy0922.shim@samsung.com>,
dri-devel@lists.freedesktop.org
Cc: sw0312.kim@samsung.com
Subject: Re: [PATCH 2/3] drm/exynos: remove unnecessary checking to support iommu
Date: Thu, 02 Jul 2015 16:00:29 +0200 [thread overview]
Message-ID: <559543FD.10601@samsung.com> (raw)
In-Reply-To: <1435841379-28286-2-git-send-email-jy0922.shim@samsung.com>
Hello,
On 2015-07-02 14:49, Joonyoung Shim wrote:
> Already drm_iommu_attach_device and drm_iommu_detach_device check
> whether support iommu internally, so we don't have to call
> is_drm_iommu_supported before call them.
>
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 3 +--
> drivers/gpu/drm/exynos/exynos7_drm_decon.c | 3 +--
> drivers/gpu/drm/exynos/exynos_drm_fimd.c | 9 +--------
> drivers/gpu/drm/exynos/exynos_drm_g2d.c | 6 ------
> drivers/gpu/drm/exynos/exynos_drm_iommu.c | 11 +++--------
> drivers/gpu/drm/exynos/exynos_drm_ipp.c | 16 ++++++----------
> drivers/gpu/drm/exynos/exynos_mixer.c | 3 +--
> 7 files changed, 13 insertions(+), 38 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
> index 8b1225f..ba43437 100644
> --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
> +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
> @@ -514,8 +514,7 @@ static void decon_unbind(struct device *dev, struct device *master, void *data)
> decon_disable(ctx->crtc);
>
> /* detach this sub driver from iommu mapping if supported. */
> - if (is_drm_iommu_supported(ctx->drm_dev))
> - drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
> + drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
> }
>
> static const struct component_ops decon_component_ops = {
> diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
> index 362532a..2c29635 100644
> --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c
> +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
> @@ -136,8 +136,7 @@ static int decon_ctx_initialize(struct decon_context *ctx,
> static void decon_ctx_remove(struct decon_context *ctx)
> {
> /* detach this sub driver from iommu mapping if supported. */
> - if (is_drm_iommu_supported(ctx->drm_dev))
> - drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
> + drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
> }
>
> static u32 decon_calc_clkdiv(struct decon_context *ctx,
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> index 794e56c..300730c 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> @@ -348,13 +348,6 @@ static void fimd_clear_channels(struct exynos_drm_crtc *crtc)
> pm_runtime_put(ctx->dev);
> }
>
> -static void fimd_iommu_detach_devices(struct fimd_context *ctx)
> -{
> - /* detach this sub driver from iommu mapping if supported. */
> - if (is_drm_iommu_supported(ctx->drm_dev))
> - drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
> -}
> -
> static u32 fimd_calc_clkdiv(struct fimd_context *ctx,
> const struct drm_display_mode *mode)
> {
> @@ -978,7 +971,7 @@ static void fimd_unbind(struct device *dev, struct device *master,
>
> fimd_disable(ctx->crtc);
>
> - fimd_iommu_detach_devices(ctx);
> + drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
>
> if (ctx->display)
> exynos_dpi_remove(ctx->display);
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c b/drivers/gpu/drm/exynos/exynos_drm_g2d.c
> index 7584834..7fb8d0b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c
> @@ -1288,9 +1288,6 @@ static int g2d_subdrv_probe(struct drm_device *drm_dev, struct device *dev)
> return ret;
> }
>
> - if (!is_drm_iommu_supported(drm_dev))
> - return 0;
> -
> ret = drm_iommu_attach_device(drm_dev, dev);
> if (ret < 0) {
> dev_err(dev, "failed to enable iommu.\n");
> @@ -1303,9 +1300,6 @@ static int g2d_subdrv_probe(struct drm_device *drm_dev, struct device *dev)
>
> static void g2d_subdrv_remove(struct drm_device *drm_dev, struct device *dev)
> {
> - if (!is_drm_iommu_supported(drm_dev))
> - return;
> -
> drm_iommu_detach_device(drm_dev, dev);
> }
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_iommu.c b/drivers/gpu/drm/exynos/exynos_drm_iommu.c
> index d4ec746..4c2ec1b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_iommu.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_iommu.c
> @@ -87,10 +87,8 @@ int drm_iommu_attach_device(struct drm_device *drm_dev,
> struct device *dev = drm_dev->dev;
> int ret;
>
> - if (!dev->archdata.mapping) {
> - DRM_ERROR("iommu_mapping is null.\n");
> - return -EFAULT;
> - }
> + if (!dev->archdata.mapping)
> + return 0;
>
> subdrv_dev->dma_parms = devm_kzalloc(subdrv_dev,
> sizeof(*subdrv_dev->dma_parms),
> @@ -148,13 +146,10 @@ void drm_iommu_detach_device(struct drm_device *drm_dev,
> int drm_iommu_attach_device_if_possible(struct exynos_drm_crtc *exynos_crtc,
> struct drm_device *drm_dev, struct device *subdrv_dev)
> {
> - int ret = 0;
> -
> if (is_drm_iommu_supported(drm_dev)) {
> if (exynos_crtc->ops->clear_channels)
> exynos_crtc->ops->clear_channels(exynos_crtc);
> - return drm_iommu_attach_device(drm_dev, subdrv_dev);
> }
>
> - return ret;
> + return drm_iommu_attach_device(drm_dev, subdrv_dev);
> }
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> index 67e5451..67d2423 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> @@ -1622,12 +1622,10 @@ static int ipp_subdrv_probe(struct drm_device *drm_dev, struct device *dev)
> INIT_LIST_HEAD(&ippdrv->cmd_list);
> mutex_init(&ippdrv->cmd_lock);
>
> - if (is_drm_iommu_supported(drm_dev)) {
> - ret = drm_iommu_attach_device(drm_dev, ippdrv->dev);
> - if (ret) {
> - DRM_ERROR("failed to activate iommu\n");
> - goto err;
> - }
> + ret = drm_iommu_attach_device(drm_dev, ippdrv->dev);
> + if (ret) {
> + DRM_ERROR("failed to activate iommu\n");
> + goto err;
> }
> }
>
> @@ -1637,8 +1635,7 @@ err:
> /* get ipp driver entry */
> list_for_each_entry_continue_reverse(ippdrv, &exynos_drm_ippdrv_list,
> drv_list) {
> - if (is_drm_iommu_supported(drm_dev))
> - drm_iommu_detach_device(drm_dev, ippdrv->dev);
> + drm_iommu_detach_device(drm_dev, ippdrv->dev);
>
> ipp_remove_id(&ctx->ipp_idr, &ctx->ipp_lock,
> ippdrv->prop_list.ipp_id);
> @@ -1654,8 +1651,7 @@ static void ipp_subdrv_remove(struct drm_device *drm_dev, struct device *dev)
>
> /* get ipp driver entry */
> list_for_each_entry_safe(ippdrv, t, &exynos_drm_ippdrv_list, drv_list) {
> - if (is_drm_iommu_supported(drm_dev))
> - drm_iommu_detach_device(drm_dev, ippdrv->dev);
> + drm_iommu_detach_device(drm_dev, ippdrv->dev);
>
> ipp_remove_id(&ctx->ipp_idr, &ctx->ipp_lock,
> ippdrv->prop_list.ipp_id);
> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
> index 60538bf..1a01c48 100644
> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> @@ -891,8 +891,7 @@ static int mixer_initialize(struct mixer_context *mixer_ctx,
>
> static void mixer_ctx_remove(struct mixer_context *mixer_ctx)
> {
> - if (is_drm_iommu_supported(mixer_ctx->drm_dev))
> - drm_iommu_detach_device(mixer_ctx->drm_dev, mixer_ctx->dev);
> + drm_iommu_detach_device(mixer_ctx->drm_dev, mixer_ctx->dev);
> }
>
> static int mixer_enable_vblank(struct exynos_drm_crtc *crtc)
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2015-07-02 14:00 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-02 12:49 [PATCH 1/3] drm/exynos: remove to use ifdef CONFIG_ARM_DMA_USE_IOMMU Joonyoung Shim
2015-07-02 12:49 ` [PATCH 2/3] drm/exynos: remove unnecessary checking to support iommu Joonyoung Shim
2015-07-02 14:00 ` Marek Szyprowski [this message]
2015-07-02 12:49 ` [PATCH 3/3] drm/exynos: remove drm_iommu_attach_device_if_possible Joonyoung Shim
2015-07-02 14:01 ` Marek Szyprowski
2015-07-02 14:00 ` [PATCH 1/3] drm/exynos: remove to use ifdef CONFIG_ARM_DMA_USE_IOMMU Marek Szyprowski
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=559543FD.10601@samsung.com \
--to=m.szyprowski@samsung.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jy0922.shim@samsung.com \
--cc=sw0312.kim@samsung.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.