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

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

Merge tag 'drm-fixes-for-v4.10-rc6-part-two' of git://people.freedesktop.org/~airlied/linux

Pull drm fixes from Dave Airlie:
 "This is the main request for rc6, since really the one earlier was the
  rc5 one :-)

  The main thing are the nouveau specific race fixes for the connector
  locking bug we fixed in -next and reverted here as it has quite large
  prereqs. These two fixes should solve the problem at that level and we
  can fix it properly in 4.11

  Otherwise i915 has a bunch of changes, one ABI change for GVT related
  stuff, some VC4 leak fixes, one core fence fix and some AMD changes,
  oh and one ast hang avoidance fix.

  Hoping it calms down around now"

* tag 'drm-fixes-for-v4.10-rc6-part-two' of git://people.freedesktop.org/~airlied/linux: (25 commits)
  drm/nouveau: Handle fbcon suspend/resume in seperate worker
  drm/nouveau: Don't enabling polling twice on runtime resume
  drm/ast: Fixed system hanged if disable P2A
  Revert "drm/radeon: always apply pci shutdown callbacks"
  drm/i915: reinstate call to trace_i915_vma_bind
  drm/i915: Move atomic state free from out of fence release
  drm/i915: Check for NULL atomic state in intel_crtc_disable_noatomic()
  drm/i915: Fix calculation of rotated x and y offsets for planar formats
  drm/i915: Don't init hpd polling for vlv and chv from runtime_suspend()
  drm/i915: Don't leak edid in intel_crt_detect_ddc()
  drm/i915: Release temporary load-detect state upon switching
  drm/i915: prevent crash with .disable_display parameter
  drm/i915: Avoid drm_atomic_state_put(NULL) in intel_display_resume
  MAINTAINERS: update new mail list for intel gvt driver
  drm/i915/gvt: Fix kmem_cache_create() name
  drm/i915/gvt/kvmgt: mdev ABI is available_instances, not available_instance
  drm/amdgpu: fix unload driver issue for virtual display
  drm/amdgpu: check ring being ready before using
  drm/vc4: Return -EINVAL on the overflow checks failing.
  drm/vc4: Fix an integer overflow in temporary allocation layout.
  ...
parents 2287a240 736a1494
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4153,7 +4153,7 @@ F: Documentation/gpu/i915.rst
INTEL GVT-g DRIVERS (Intel GPU Virtualization)
M:      Zhenyu Wang <zhenyuw@linux.intel.com>
M:      Zhi Wang <zhi.a.wang@intel.com>
L:      igvt-g-dev@lists.01.org
L:      intel-gvt-dev@lists.freedesktop.org
L:      intel-gfx@lists.freedesktop.org
W:      https://01.org/igvt-g
T:      git https://github.com/01org/gvt-linux.git
+7 −0
Original line number Diff line number Diff line
@@ -83,6 +83,13 @@ int amdgpu_cs_get_ring(struct amdgpu_device *adev, u32 ip_type,
		}
		break;
	}

	if (!(*out_ring && (*out_ring)->adev)) {
		DRM_ERROR("Ring %d is not initialized on IP %d\n",
			  ring, ip_type);
		return -EINVAL;
	}

	return 0;
}

+1 −4
Original line number Diff line number Diff line
@@ -627,11 +627,8 @@ static const struct drm_encoder_helper_funcs dce_virtual_encoder_helper_funcs =

static void dce_virtual_encoder_destroy(struct drm_encoder *encoder)
{
	struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);

	kfree(amdgpu_encoder->enc_priv);
	drm_encoder_cleanup(encoder);
	kfree(amdgpu_encoder);
	kfree(encoder);
}

static const struct drm_encoder_funcs dce_virtual_encoder_funcs = {
+1 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ struct ast_private {
	struct ttm_bo_kmap_obj cache_kmap;
	int next_cursor;
	bool support_wide_screen;
	bool DisableP2A;

	enum ast_tx_chip tx_chip_type;
	u8 dp501_maxclk;
+83 −74
Original line number Diff line number Diff line
@@ -124,6 +124,12 @@ static int ast_detect_chip(struct drm_device *dev, bool *need_post)
	} else
		*need_post = false;

	/* Check P2A Access */
	ast->DisableP2A = true;
	data = ast_read32(ast, 0xf004);
	if (data != 0xFFFFFFFF)
		ast->DisableP2A = false;

	/* Check if we support wide screen */
	switch (ast->chip) {
	case AST1180:
@@ -140,6 +146,7 @@ static int ast_detect_chip(struct drm_device *dev, bool *need_post)
			ast->support_wide_screen = true;
		else {
			ast->support_wide_screen = false;
			if (ast->DisableP2A == false) {
				/* Read SCU7c (silicon revision register) */
				ast_write32(ast, 0xf004, 0x1e6e0000);
				ast_write32(ast, 0xf000, 0x1);
@@ -150,6 +157,7 @@ static int ast_detect_chip(struct drm_device *dev, bool *need_post)
				if (ast->chip == AST2400 && data == 0x100) /* ast1400 */
					ast->support_wide_screen = true;
			}
		}
		break;
	}

@@ -216,16 +224,16 @@ static int ast_get_dram_info(struct drm_device *dev)
	uint32_t data, data2;
	uint32_t denum, num, div, ref_pll;

	if (ast->DisableP2A)
	{
		ast->dram_bus_width = 16;
		ast->dram_type = AST_DRAM_1Gx16;
		ast->mclk = 396;
	}
	else
	{
		ast_write32(ast, 0xf004, 0x1e6e0000);
		ast_write32(ast, 0xf000, 0x1);


	ast_write32(ast, 0x10000, 0xfc600309);

	do {
		if (pci_channel_offline(dev->pdev))
			return -EIO;
	} while (ast_read32(ast, 0x10000) != 0x01);
		data = ast_read32(ast, 0x10004);

		if (data & 0x40)
@@ -290,6 +298,7 @@ static int ast_get_dram_info(struct drm_device *dev)
			break;
		}
		ast->mclk = ref_pll * (num + 2) / (denum + 2) * (div * 1000);
	}
	return 0;
}

Loading