[Freedreno] [PATCH 05/11] drm/msm: get an iova from the address space instead of an id
Archit Taneja
architt at codeaurora.org
Thu Feb 9 05:01:17 UTC 2017
On 02/06/2017 11:09 PM, Jordan Crouse wrote:
> In the future we won't have a fixed set of addresses spaces.
> Instead of going through the effort of assigning a ID for each
> address space just use the address space itself as a token for
> getting / putting an iova.
>
> This forces a few changes in the gem object however: instead
> of using a simple index into a list of domains, we need to
> maintain a list of them. Luckily the list will be pretty small;
> even with dynamic address spaces we wouldn't ever see more than
> two or three.
>
> Signed-off-by: Jordan Crouse <jcrouse at codeaurora.org>
> ---
> drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 8 +-
> drivers/gpu/drm/msm/adreno/a5xx_power.c | 5 +-
> drivers/gpu/drm/msm/adreno/adreno_gpu.c | 6 +-
> drivers/gpu/drm/msm/dsi/dsi_host.c | 15 +++-
> drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c | 8 +-
> drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 18 ++---
> drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h | 3 -
> drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c | 13 ++--
> drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | 5 +-
> drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c | 11 +--
> drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | 4 -
> drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 13 ++--
> drivers/gpu/drm/msm/msm_drv.c | 14 ----
> drivers/gpu/drm/msm/msm_drv.h | 25 +++---
> drivers/gpu/drm/msm/msm_fb.c | 15 ++--
> drivers/gpu/drm/msm/msm_fbdev.c | 10 ++-
> drivers/gpu/drm/msm/msm_gem.c | 124 +++++++++++++++++++++---------
> drivers/gpu/drm/msm/msm_gem.h | 4 +-
> drivers/gpu/drm/msm/msm_gem_submit.c | 4 +-
> drivers/gpu/drm/msm/msm_gpu.c | 8 +-
> drivers/gpu/drm/msm/msm_gpu.h | 1 -
> drivers/gpu/drm/msm/msm_kms.h | 3 +
> 22 files changed, 184 insertions(+), 133 deletions(-)
>
<snip>
> diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c
> index e8f41eb..0b5b839 100644
> --- a/drivers/gpu/drm/msm/msm_fbdev.c
> +++ b/drivers/gpu/drm/msm/msm_fbdev.c
> @@ -20,6 +20,7 @@
> #include "drm_crtc.h"
> #include "drm_fb_helper.h"
> #include "msm_gem.h"
> +#include "msm_kms.h"
>
> extern int msm_gem_mmap_obj(struct drm_gem_object *obj,
> struct vm_area_struct *vma);
> @@ -78,6 +79,7 @@ static int msm_fbdev_create(struct drm_fb_helper *helper,
> {
> struct msm_fbdev *fbdev = to_msm_fbdev(helper);
> struct drm_device *dev = helper->dev;
> + struct msm_drm_private *priv = dev->dev_private;
> struct drm_framebuffer *fb = NULL;
> struct fb_info *fbi = NULL;
> struct drm_mode_fb_cmd2 mode_cmd = {0};
> @@ -129,7 +131,13 @@ static int msm_fbdev_create(struct drm_fb_helper *helper,
> * in panic (ie. lock-safe, etc) we could avoid pinning the
> * buffer now:
> */
> - ret = msm_gem_get_iova_locked(fbdev->bo, 0, &paddr);
> +
> + if (!priv->kms) {
> + ret = -ENODEV;
> + goto fail_unlock;
> + }
This check isn't needed. As of now, we don't create a fbdev device if we don't
have kms initialized.
Otherwise,
Reviewed-by: Archit Taneja <architt at codeaurora.org>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
More information about the Freedreno
mailing list