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

Commit 6dde39be authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
  drm/i915: i915 cannot provide switcher services.
  drm/radeon/kms: fix vram base calculation on rs780/rs880
  drm/radeon/kms: fix formatting of vram and gtt info
  drm/radeon/kms: forbid big bo allocation (fdo 31708) v3
  drm: Don't try and disable an encoder that was never enabled
  drm: Add missing drm_vblank_put() along queue vblank error path
  drm/i915/dp: Only apply the workaround if the select is still active
  drm/i915: Emit a request to clear a flushed and idle ring for unbusy bo
  drm/i915/lvds: Always restore panel-fitter when enabling the LVDS
  drm/i915/ringbuffer: Only print an error on the second attempt to reset head
  drm/i915: announce to userspace that the bsd ring is coherent
  agp/intel: Fix wrong kunmap in i830_cleanup()
  drm/i915: Factor in pixel-repeat in FDI M/N calculation
  drm/i915: Death to the unnecessary 64bit divide
  drm/i915: Clean conflicting modesetting registers upon init
  drm/i915: Apply a workaround for transitioning from DP on pipe B to HDMI.
  drm/i915: Always set the DP transcoder config to 8BPC.
parents f8f5d4f1 599bbb9d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -812,8 +812,10 @@ static int intel_fake_agp_fetch_size(void)

static void i830_cleanup(void)
{
	kunmap(intel_private.i8xx_page);
	if (intel_private.i8xx_flush_page) {
		kunmap(intel_private.i8xx_flush_page);
		intel_private.i8xx_flush_page = NULL;
	}

	__free_page(intel_private.i8xx_page);
	intel_private.i8xx_page = NULL;
+1 −1
Original line number Diff line number Diff line
@@ -241,7 +241,7 @@ void drm_helper_disable_unused_functions(struct drm_device *dev)
	}

	list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
		if (!drm_helper_encoder_in_use(encoder)) {
		if (encoder->crtc && !drm_helper_encoder_in_use(encoder)) {
			drm_encoder_disable(encoder);
			/* disconnector encoder from any connector */
			encoder->crtc = NULL;
+14 −5
Original line number Diff line number Diff line
@@ -585,10 +585,13 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
	struct timeval now;
	unsigned long flags;
	unsigned int seq;
	int ret;

	e = kzalloc(sizeof *e, GFP_KERNEL);
	if (e == NULL)
		return -ENOMEM;
	if (e == NULL) {
		ret = -ENOMEM;
		goto err_put;
	}

	e->pipe = pipe;
	e->base.pid = current->pid;
@@ -603,9 +606,8 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
	spin_lock_irqsave(&dev->event_lock, flags);

	if (file_priv->event_space < sizeof e->event) {
		spin_unlock_irqrestore(&dev->event_lock, flags);
		kfree(e);
		return -ENOMEM;
		ret = -EBUSY;
		goto err_unlock;
	}

	file_priv->event_space -= sizeof e->event;
@@ -638,6 +640,13 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
	spin_unlock_irqrestore(&dev->event_lock, flags);

	return 0;

err_unlock:
	spin_unlock_irqrestore(&dev->event_lock, flags);
	kfree(e);
err_put:
	drm_vblank_put(dev, e->pipe);
	return ret;
}

/**
+3 −0
Original line number Diff line number Diff line
@@ -767,6 +767,9 @@ static int i915_getparam(struct drm_device *dev, void *data,
	case I915_PARAM_HAS_BLT:
		value = HAS_BLT(dev);
		break;
	case I915_PARAM_HAS_COHERENT_RINGS:
		value = 1;
		break;
	default:
		DRM_DEBUG_DRIVER("Unknown parameter %d\n",
				 param->param);
+11 −1
Original line number Diff line number Diff line
@@ -4374,10 +4374,20 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data,
		 * use this buffer rather sooner than later, so issuing the required
		 * flush earlier is beneficial.
		 */
		if (obj->write_domain & I915_GEM_GPU_DOMAINS)
		if (obj->write_domain & I915_GEM_GPU_DOMAINS) {
			i915_gem_flush_ring(dev, file_priv,
					    obj_priv->ring,
					    0, obj->write_domain);
		} else if (obj_priv->ring->outstanding_lazy_request) {
			/* This ring is not being cleared by active usage,
			 * so emit a request to do so.
			 */
			u32 seqno = i915_add_request(dev,
						     NULL, NULL,
						     obj_priv->ring);
			if (seqno == 0)
				ret = -ENOMEM;
		}

		/* Update the active list for the hardware's current position.
		 * Otherwise this only updates on a delayed timer or when irqs
Loading