Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e05bf4f3 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm fixes from Dave Airlie:
 "Fixes all over the place.

  The rockchip and imx fixes I missed while on holidays, so I've queued
  them now which makes this a bit bigger.

  The rest is misc amdgpu, radeon, i915 and armada.

  I think the most important thing is the ioctl fix, we dropped the
  avoid compat ball, so we get to add a compat wrapper.

  There is also an i915 revert to avoid a regression with existing
  userspace"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (43 commits)
  drm/ttm: improve uncached page deallocation.
  drm/ttm: fix uncached page deallocation to properly fill page pool v3.
  drm/amdgpu/dce8: Re-set VBLANK interrupt state when enabling a CRTC
  drm/radeon/ci: silence a harmless PCC warning
  drm/amdgpu/cz: silence some dpm debug output
  drm/amdgpu/cz: store the forced dpm level
  drm/amdgpu/cz: unforce dpm levels before forcing to low/high
  drm/amdgpu: remove bogus check in gfx8 rb setup
  drm/amdgpu: set proper index/data pair for smc regs on CZ (v2)
  drm/amdgpu: disable the IP module if early_init returns -ENOENT (v2)
  drm/amdgpu: stop context leak in the error path
  drm/amdgpu: validate the context id in the dependencies
  drm/radeon: fix user ptr race condition
  drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL
  drm/radeon: add a dpm quirk for Sapphire Radeon R9 270X 2GB GDDR5
  drm/armada: avoid saving the adjusted mode to crtc->mode
  drm/armada: fix overlay when partially off-screen
  drm/armada: convert overlay to use drm_plane_helper_check_update()
  drm/armada: fix gem object free after failed prime import
  drm/armada: fix incorrect overlay plane cleanup
  ...
parents 21bdb584 e9308884
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3383,7 +3383,7 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	</tr>
	<tr>
	<td rowspan="2" valign="top" >omap</td>
	<td valign="top" >omap</td>
	<td valign="top" >Generic</td>
	<td valign="top" >“zorder”</td>
	<td valign="top" >RANGE</td>
+24 −2
Original line number Diff line number Diff line
@@ -65,8 +65,10 @@ Optional properties:
- edid: verbatim EDID data block describing attached display.
- ddc: phandle describing the i2c bus handling the display data
  channel
- port: A port node with endpoint definitions as defined in
- port@[0-1]: Port nodes with endpoint definitions as defined in
  Documentation/devicetree/bindings/media/video-interfaces.txt.
  Port 0 is the input port connected to the IPU display interface,
  port 1 is the output port connected to a panel.

example:

@@ -75,9 +77,29 @@ display@di0 {
	edid = [edid-data];
	interface-pix-fmt = "rgb24";

	port {
	port@0 {
		reg = <0>;

		display_in: endpoint {
			remote-endpoint = <&ipu_di0_disp0>;
		};
	};

	port@1 {
		reg = <1>;

		display_out: endpoint {
			remote-endpoint = <&panel_in>;
		};
	};
};

panel {
	...

	port {
		panel_in: endpoint {
			remote-endpoint = <&display_out>;
		};
	};
};
+16 −3
Original line number Diff line number Diff line
@@ -669,6 +669,7 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,
static int amdgpu_cs_dependencies(struct amdgpu_device *adev,
				  struct amdgpu_cs_parser *p)
{
	struct amdgpu_fpriv *fpriv = p->filp->driver_priv;
	struct amdgpu_ib *ib;
	int i, j, r;

@@ -694,6 +695,7 @@ static int amdgpu_cs_dependencies(struct amdgpu_device *adev,
		for (j = 0; j < num_deps; ++j) {
			struct amdgpu_fence *fence;
			struct amdgpu_ring *ring;
			struct amdgpu_ctx *ctx;

			r = amdgpu_cs_get_ring(adev, deps[j].ip_type,
					       deps[j].ip_instance,
@@ -701,14 +703,21 @@ static int amdgpu_cs_dependencies(struct amdgpu_device *adev,
			if (r)
				return r;

			ctx = amdgpu_ctx_get(fpriv, deps[j].ctx_id);
			if (ctx == NULL)
				return -EINVAL;

			r = amdgpu_fence_recreate(ring, p->filp,
						  deps[j].handle,
						  &fence);
			if (r)
			if (r) {
				amdgpu_ctx_put(ctx);
				return r;
			}

			amdgpu_sync_fence(&ib->sync, fence);
			amdgpu_fence_unref(&fence);
			amdgpu_ctx_put(ctx);
		}
	}

@@ -808,12 +817,16 @@ int amdgpu_cs_wait_ioctl(struct drm_device *dev, void *data,

	r = amdgpu_cs_get_ring(adev, wait->in.ip_type, wait->in.ip_instance,
			       wait->in.ring, &ring);
	if (r)
	if (r) {
		amdgpu_ctx_put(ctx);
		return r;
	}

	r = amdgpu_fence_recreate(ring, filp, wait->in.handle, &fence);
	if (r)
	if (r) {
		amdgpu_ctx_put(ctx);
		return r;
	}

	r = fence_wait_timeout(&fence->base, true, timeout);
	amdgpu_fence_unref(&fence);
+7 −2
Original line number Diff line number Diff line
@@ -1207,10 +1207,15 @@ static int amdgpu_early_init(struct amdgpu_device *adev)
		} else {
			if (adev->ip_blocks[i].funcs->early_init) {
				r = adev->ip_blocks[i].funcs->early_init((void *)adev);
				if (r)
				if (r == -ENOENT)
					adev->ip_block_enabled[i] = false;
				else if (r)
					return r;
			}
				else
					adev->ip_block_enabled[i] = true;
			} else {
				adev->ip_block_enabled[i] = true;
			}
		}
	}

+12 −4
Original line number Diff line number Diff line
@@ -1679,7 +1679,7 @@ static int cz_dpm_unforce_dpm_levels(struct amdgpu_device *adev)
	if (ret)
		return ret;

	DRM_INFO("DPM unforce state min=%d, max=%d.\n",
	DRM_DEBUG("DPM unforce state min=%d, max=%d.\n",
		  pi->sclk_dpm.soft_min_clk,
		  pi->sclk_dpm.soft_max_clk);

@@ -1693,11 +1693,17 @@ static int cz_dpm_force_dpm_level(struct amdgpu_device *adev,

	switch (level) {
	case AMDGPU_DPM_FORCED_LEVEL_HIGH:
		ret = cz_dpm_unforce_dpm_levels(adev);
		if (ret)
			return ret;
		ret = cz_dpm_force_highest(adev);
		if (ret)
			return ret;
		break;
	case AMDGPU_DPM_FORCED_LEVEL_LOW:
		ret = cz_dpm_unforce_dpm_levels(adev);
		if (ret)
			return ret;
		ret = cz_dpm_force_lowest(adev);
		if (ret)
			return ret;
@@ -1711,6 +1717,8 @@ static int cz_dpm_force_dpm_level(struct amdgpu_device *adev,
		break;
	}

	adev->pm.dpm.forced_level = level;

	return ret;
}

Loading