summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm/msm_drv.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2022-03-10 08:30:46 +1000
committerDave Airlie <airlied@redhat.com>2022-03-10 09:26:50 +1000
commit482d7b582d7f9688a5f64ed2424157a76a17f2a7 (patch)
tree40bb5ec213733f1ce5565f66b34a3dd0aef15a41 /drivers/gpu/drm/msm/msm_drv.c
parente6700703353f47193e670bf497267e70d9a12379 (diff)
parent05afd57f4d34602a652fdaf58e0a2756b3c20fd4 (diff)
downloadlinux-482d7b582d7f9688a5f64ed2424157a76a17f2a7.tar.bz2
Merge tag 'drm-msm-next-2022-03-08' of https://gitlab.freedesktop.org/drm/msm into drm-next
Follow-up pull req for v5.18 to pull in some important fixes. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Rob Clark <robdclark@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/CAF6AEGvwHFHEd+9df-0aBOCfmw+ULvTS3f18sJuq_cvGKLDSjw@mail.gmail.com
Diffstat (limited to 'drivers/gpu/drm/msm/msm_drv.c')
-rw-r--r--drivers/gpu/drm/msm/msm_drv.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index c09c23a80c81..61c81af23ba7 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -41,9 +41,10 @@
* - 1.6.0 - Syncobj support
* - 1.7.0 - Add MSM_PARAM_SUSPENDS to access suspend count
* - 1.8.0 - Add MSM_BO_CACHED_COHERENT for supported GPUs (a6xx)
+ * - 1.9.0 - Add MSM_SUBMIT_FENCE_SN_IN
*/
#define MSM_VERSION_MAJOR 1
-#define MSM_VERSION_MINOR 8
+#define MSM_VERSION_MINOR 9
#define MSM_VERSION_PATCHLEVEL 0
static const struct drm_mode_config_funcs mode_config_funcs = {
@@ -561,8 +562,16 @@ static void context_close(struct msm_file_private *ctx)
static void msm_postclose(struct drm_device *dev, struct drm_file *file)
{
+ struct msm_drm_private *priv = dev->dev_private;
struct msm_file_private *ctx = file->driver_priv;
+ /*
+ * It is not possible to set sysprof param to non-zero if gpu
+ * is not initialized:
+ */
+ if (priv->gpu)
+ msm_file_private_set_sysprof(ctx, priv->gpu, 0);
+
context_close(ctx);
}
@@ -616,6 +625,25 @@ static int msm_ioctl_get_param(struct drm_device *dev, void *data,
args->param, &args->value);
}
+static int msm_ioctl_set_param(struct drm_device *dev, void *data,
+ struct drm_file *file)
+{
+ struct msm_drm_private *priv = dev->dev_private;
+ struct drm_msm_param *args = data;
+ struct msm_gpu *gpu;
+
+ if (args->pipe != MSM_PIPE_3D0)
+ return -EINVAL;
+
+ gpu = priv->gpu;
+
+ if (!gpu)
+ return -ENXIO;
+
+ return gpu->funcs->set_param(gpu, file->driver_priv,
+ args->param, args->value);
+}
+
static int msm_ioctl_gem_new(struct drm_device *dev, void *data,
struct drm_file *file)
{
@@ -901,6 +929,7 @@ static int msm_ioctl_submitqueue_close(struct drm_device *dev, void *data,
static const struct drm_ioctl_desc msm_ioctls[] = {
DRM_IOCTL_DEF_DRV(MSM_GET_PARAM, msm_ioctl_get_param, DRM_RENDER_ALLOW),
+ DRM_IOCTL_DEF_DRV(MSM_SET_PARAM, msm_ioctl_set_param, DRM_RENDER_ALLOW),
DRM_IOCTL_DEF_DRV(MSM_GEM_NEW, msm_ioctl_gem_new, DRM_RENDER_ALLOW),
DRM_IOCTL_DEF_DRV(MSM_GEM_INFO, msm_ioctl_gem_info, DRM_RENDER_ALLOW),
DRM_IOCTL_DEF_DRV(MSM_GEM_CPU_PREP, msm_ioctl_gem_cpu_prep, DRM_RENDER_ALLOW),