Commit 42854f8d authored by Rob Clark's avatar Rob Clark
Browse files

drm/msm: Disallow relocs on a6xx+

Mesa stopped using these pretty early in a6xx bringup[1].  Take advantage
of this to disallow some legacy UABI.

[1] https://gitlab.freedesktop.org/mesa/mesa/-/commit/7ef722861b691ce99be3827ed05f8c0ddf2cd66e



Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Patchwork: https://patchwork.freedesktop.org/patch/551175/
parent 3136a0f8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1078,6 +1078,8 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
	adreno_gpu->info = config->info;
	adreno_gpu->chip_id = config->chip_id;

	gpu->allow_relocs = config->info->family < ADRENO_6XX_GEN1;

	/* Only handle the core clock when GMU is not in use (or is absent). */
	if (adreno_has_gmu_wrapper(adreno_gpu) ||
	    adreno_gpu->info->family < ADRENO_6XX_GEN1) {
+10 −0
Original line number Diff line number Diff line
@@ -882,6 +882,16 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
		if (submit->valid)
			continue;

		if (!gpu->allow_relocs) {
			if (submit->cmd[i].nr_relocs) {
				DRM_ERROR("relocs not allowed\n");
				ret = -EINVAL;
				goto out;
			}

			continue;
		}

		ret = submit_reloc(submit, msm_obj, submit->cmd[i].offset * 4,
				submit->cmd[i].nr_relocs, submit->cmd[i].relocs);
		if (ret)
+9 −0
Original line number Diff line number Diff line
@@ -285,6 +285,15 @@ struct msm_gpu {
	/* True if the hardware supports expanded apriv (a650 and newer) */
	bool hw_apriv;

	/**
	 * @allow_relocs: allow relocs in SUBMIT ioctl
	 *
	 * Mesa won't use relocs for driver version 1.4.0 and later.  This
	 * switch-over happened early enough in mesa a6xx bringup that we
	 * can disallow relocs for a6xx and newer.
	 */
	bool allow_relocs;

	struct thermal_cooling_device *cooling;
};