Commit 30c185da authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-intel-next-fixes-2019-11-20' of...

Merge tag 'drm-intel-next-fixes-2019-11-20' of git://anongit.freedesktop.org/drm/drm-intel

 into drm-next

- Includes gvt-next-fixes-2019-11-12
- Fix Bugzilla #112051: Fix detection for a CMP-V PCH
- Fix Bugzilla #112256: Corrupted page table at address on plymouth splash
- Fix Bugzilla #111594: Avoid losing RC6 when HuC authentication is used
- Fix for OA/perf metric coherency, restore GT coarse power gating workaround
- Avoid atomic context on error capture
- Avoid MST bitmask overflowing to EDP/DPI input select
- Fixes to CI found dmesg splats

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191120204035.GA14908@jlahtine-desk.ger.corp.intel.com
parents c22fe762 0122baaa
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -234,6 +234,11 @@ static int intelfb_create(struct drm_fb_helper *helper,
	info->apertures->ranges[0].base = ggtt->gmadr.start;
	info->apertures->ranges[0].base = ggtt->gmadr.start;
	info->apertures->ranges[0].size = ggtt->mappable_end;
	info->apertures->ranges[0].size = ggtt->mappable_end;


	/* Our framebuffer is the entirety of fbdev's system memory */
	info->fix.smem_start =
		(unsigned long)(ggtt->gmadr.start + vma->node.start);
	info->fix.smem_len = vma->node.size;

	vaddr = i915_vma_pin_iomap(vma);
	vaddr = i915_vma_pin_iomap(vma);
	if (IS_ERR(vaddr)) {
	if (IS_ERR(vaddr)) {
		DRM_ERROR("Failed to remap framebuffer into virtual memory\n");
		DRM_ERROR("Failed to remap framebuffer into virtual memory\n");
@@ -243,10 +248,6 @@ static int intelfb_create(struct drm_fb_helper *helper,
	info->screen_base = vaddr;
	info->screen_base = vaddr;
	info->screen_size = vma->node.size;
	info->screen_size = vma->node.size;


	/* Our framebuffer is the entirety of fbdev's system memory */
	info->fix.smem_start = (unsigned long)info->screen_base;
	info->fix.smem_len = info->screen_size;

	drm_fb_helper_fill_info(info, &ifbdev->helper, sizes);
	drm_fb_helper_fill_info(info, &ifbdev->helper, sizes);


	/* If the object is shmemfs backed, it will have given us zeroed pages.
	/* If the object is shmemfs backed, it will have given us zeroed pages.
+1 −1
Original line number Original line Diff line number Diff line
@@ -2885,7 +2885,7 @@ struct intel_plane *
skl_universal_plane_create(struct drm_i915_private *dev_priv,
skl_universal_plane_create(struct drm_i915_private *dev_priv,
			   enum pipe pipe, enum plane_id plane_id)
			   enum pipe pipe, enum plane_id plane_id)
{
{
	static const struct drm_plane_funcs *plane_funcs;
	const struct drm_plane_funcs *plane_funcs;
	struct intel_plane *plane;
	struct intel_plane *plane;
	enum drm_plane_type plane_type;
	enum drm_plane_type plane_type;
	unsigned int supported_rotations;
	unsigned int supported_rotations;
+1 −0
Original line number Original line Diff line number Diff line
@@ -727,6 +727,7 @@ int i915_gem_init_contexts(struct drm_i915_private *i915)
void i915_gem_driver_release__contexts(struct drm_i915_private *i915)
void i915_gem_driver_release__contexts(struct drm_i915_private *i915)
{
{
	destroy_kernel_context(&i915->kernel_context);
	destroy_kernel_context(&i915->kernel_context);
	flush_work(&i915->gem.contexts.free_work);
}
}


static int context_idr_cleanup(int id, void *p, void *data)
static int context_idr_cleanup(int id, void *p, void *data)
+3 −8
Original line number Original line Diff line number Diff line
@@ -33,7 +33,6 @@ long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout)
{
{
	struct intel_gt_timelines *timelines = &gt->timelines;
	struct intel_gt_timelines *timelines = &gt->timelines;
	struct intel_timeline *tl, *tn;
	struct intel_timeline *tl, *tn;
	unsigned long active_count = 0;
	unsigned long flags;
	unsigned long flags;
	bool interruptible;
	bool interruptible;
	LIST_HEAD(free);
	LIST_HEAD(free);
@@ -46,10 +45,8 @@ long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout)


	spin_lock_irqsave(&timelines->lock, flags);
	spin_lock_irqsave(&timelines->lock, flags);
	list_for_each_entry_safe(tl, tn, &timelines->active_list, link) {
	list_for_each_entry_safe(tl, tn, &timelines->active_list, link) {
		if (!mutex_trylock(&tl->mutex)) {
		if (!mutex_trylock(&tl->mutex))
			active_count++; /* report busy to caller, try again? */
			continue;
			continue;
		}


		intel_timeline_get(tl);
		intel_timeline_get(tl);
		GEM_BUG_ON(!tl->active_count);
		GEM_BUG_ON(!tl->active_count);
@@ -74,9 +71,7 @@ long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout)


		/* Resume iteration after dropping lock */
		/* Resume iteration after dropping lock */
		list_safe_reset_next(tl, tn, link);
		list_safe_reset_next(tl, tn, link);
		if (--tl->active_count)
		if (!--tl->active_count)
			active_count += !!rcu_access_pointer(tl->last_request.fence);
		else
			list_del(&tl->link);
			list_del(&tl->link);


		mutex_unlock(&tl->mutex);
		mutex_unlock(&tl->mutex);
@@ -92,7 +87,7 @@ long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout)
	list_for_each_entry_safe(tl, tn, &free, link)
	list_for_each_entry_safe(tl, tn, &free, link)
		__intel_timeline_free(&tl->kref);
		__intel_timeline_free(&tl->kref);


	return active_count ? timeout : 0;
	return list_empty(&timelines->active_list) ? 0 : timeout;
}
}


int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout)
int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout)
+7 −2
Original line number Original line Diff line number Diff line
@@ -178,6 +178,11 @@ static void gen9_rc6_enable(struct intel_rc6 *rc6)
	    GEN6_RC_CTL_RC6_ENABLE |
	    GEN6_RC_CTL_RC6_ENABLE |
	    rc6_mode);
	    rc6_mode);


	/*
	 * WaRsDisableCoarsePowerGating:skl,cnl
	 *   - Render/Media PG need to be disabled with RC6.
	 */
	if (!NEEDS_WaRsDisableCoarsePowerGating(rc6_to_i915(rc6)))
		set(uncore, GEN9_PG_ENABLE,
		set(uncore, GEN9_PG_ENABLE,
		    GEN9_RENDER_PG_ENABLE | GEN9_MEDIA_PG_ENABLE);
		    GEN9_RENDER_PG_ENABLE | GEN9_MEDIA_PG_ENABLE);
}
}
Loading