diff options
Diffstat (limited to 'drivers/gpu/drm/msm/msm_drv.c')
| -rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 15 | 
1 files changed, 11 insertions, 4 deletions
| diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 2e6fc185e54d..d4e09703a87d 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -630,10 +630,11 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv)  	if (ret)  		goto err_msm_uninit; -	ret = msm_disp_snapshot_init(ddev); -	if (ret) -		DRM_DEV_ERROR(dev, "msm_disp_snapshot_init failed ret = %d\n", ret); - +	if (kms) { +		ret = msm_disp_snapshot_init(ddev); +		if (ret) +			DRM_DEV_ERROR(dev, "msm_disp_snapshot_init failed ret = %d\n", ret); +	}  	drm_mode_config_reset(ddev);  #ifdef CONFIG_DRM_FBDEV_EMULATION @@ -682,6 +683,7 @@ static void load_gpu(struct drm_device *dev)  static int context_init(struct drm_device *dev, struct drm_file *file)  { +	static atomic_t ident = ATOMIC_INIT(0);  	struct msm_drm_private *priv = dev->dev_private;  	struct msm_file_private *ctx; @@ -689,12 +691,17 @@ static int context_init(struct drm_device *dev, struct drm_file *file)  	if (!ctx)  		return -ENOMEM; +	INIT_LIST_HEAD(&ctx->submitqueues); +	rwlock_init(&ctx->queuelock); +  	kref_init(&ctx->ref);  	msm_submitqueue_init(dev, ctx);  	ctx->aspace = msm_gpu_create_private_address_space(priv->gpu, current);  	file->driver_priv = ctx; +	ctx->seqno = atomic_inc_return(&ident); +  	return 0;  } | 
