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

Commit aecde27c 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:
 "I was going to leave this until post -rc1 but sysfs fixes broke
  hotplug in userspace, so I had to fix it harder, otherwise a set of
  pulls from intel, radeon and vmware,

  The vmware/ttm changes are bit larger but since its early and they are
  unlikely to break anything else I put them in, it lets vmware work
  with dri3"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (36 commits)
  drm/sysfs: fix hotplug regression since lifetime changes
  drm/exynos: g2d: fix memory leak to userptr
  drm/i915: Fix gen3 self-refresh watermarks
  drm/ttm: Remove set_need_resched from the ttm fault handler
  drm/ttm: Don't move non-existing data
  drm/radeon: hook up backlight functions for CI and KV family.
  drm/i915: Replicate BIOS eDP bpp clamping hack for hsw
  drm/i915: Do not enable package C8 on unsupported hardware
  drm/i915: Hold pc8 lock around toggling pc8.gpu_idle
  drm/i915: encoder->get_config is no longer optional
  drm/i915/tv: add ->get_config callback
  drm/radeon/cik: Add macrotile mode array query
  drm/radeon/cik: Return backend map information to userspace
  drm/vmwgfx: Make vmwgfx dma buffers prime aware
  drm/vmwgfx: Make surfaces prime-aware
  drm/vmwgfx: Hook up the prime ioctls
  drm/ttm: Add a minimal prime implementation for ttm base objects
  drm/vmwgfx: Fix false lockdep warning
  drm/ttm: Allow execbuf util reserves without ticket
  drm/i915: restore the early forcewake cleanup
  ...
parents e3414786 760c960b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -330,8 +330,8 @@ static struct pci_device_id intel_stolen_ids[] __initdata = {
	INTEL_I915GM_IDS(gen3_stolen_size),
	INTEL_I945G_IDS(gen3_stolen_size),
	INTEL_I945GM_IDS(gen3_stolen_size),
	INTEL_VLV_M_IDS(gen3_stolen_size),
	INTEL_VLV_D_IDS(gen3_stolen_size),
	INTEL_VLV_M_IDS(gen6_stolen_size),
	INTEL_VLV_D_IDS(gen6_stolen_size),
	INTEL_PINEVIEW_IDS(gen3_stolen_size),
	INTEL_I965G_IDS(gen3_stolen_size),
	INTEL_G33_IDS(gen3_stolen_size),
+33 −7
Original line number Diff line number Diff line
@@ -489,6 +489,11 @@ void drm_sysfs_hotplug_event(struct drm_device *dev)
}
EXPORT_SYMBOL(drm_sysfs_hotplug_event);

static void drm_sysfs_release(struct device *dev)
{
	kfree(dev);
}

/**
 * drm_sysfs_device_add - adds a class device to sysfs for a character driver
 * @dev: DRM device to be added
@@ -501,6 +506,7 @@ EXPORT_SYMBOL(drm_sysfs_hotplug_event);
int drm_sysfs_device_add(struct drm_minor *minor)
{
	char *minor_str;
	int r;

	if (minor->type == DRM_MINOR_CONTROL)
		minor_str = "controlD%d";
@@ -509,14 +515,34 @@ int drm_sysfs_device_add(struct drm_minor *minor)
        else
                minor_str = "card%d";

	minor->kdev = device_create(drm_class, minor->dev->dev,
				    MKDEV(DRM_MAJOR, minor->index),
				    minor, minor_str, minor->index);
	if (IS_ERR(minor->kdev)) {
		DRM_ERROR("device create failed %ld\n", PTR_ERR(minor->kdev));
		return PTR_ERR(minor->kdev);
	minor->kdev = kzalloc(sizeof(*minor->kdev), GFP_KERNEL);
	if (!minor->dev) {
		r = -ENOMEM;
		goto error;
	}

	device_initialize(minor->kdev);
	minor->kdev->devt = MKDEV(DRM_MAJOR, minor->index);
	minor->kdev->class = drm_class;
	minor->kdev->type = &drm_sysfs_device_minor;
	minor->kdev->parent = minor->dev->dev;
	minor->kdev->release = drm_sysfs_release;
	dev_set_drvdata(minor->kdev, minor);

	r = dev_set_name(minor->kdev, minor_str, minor->index);
	if (r < 0)
		goto error;

	r = device_add(minor->kdev);
	if (r < 0)
		goto error;

	return 0;

error:
	DRM_ERROR("device create failed %d\n", r);
	put_device(minor->kdev);
	return r;
}

/**
@@ -529,7 +555,7 @@ int drm_sysfs_device_add(struct drm_minor *minor)
void drm_sysfs_device_remove(struct drm_minor *minor)
{
	if (minor->kdev)
		device_destroy(drm_class, MKDEV(DRM_MAJOR, minor->index));
		device_unregister(minor->kdev);
	minor->kdev = NULL;
}

+2 −0
Original line number Diff line number Diff line
@@ -383,6 +383,8 @@ out:
					g2d_userptr->npages,
					g2d_userptr->vma);

	exynos_gem_put_vma(g2d_userptr->vma);

	if (!g2d_userptr->out_of_list)
		list_del_init(&g2d_userptr->list);

+1 −0
Original line number Diff line number Diff line
@@ -1816,6 +1816,7 @@ struct drm_i915_file_private {
#define HAS_POWER_WELL(dev)	(IS_HASWELL(dev) || IS_BROADWELL(dev))
#define HAS_FPGA_DBG_UNCLAIMED(dev)	(INTEL_INFO(dev)->has_fpga_dbg)
#define HAS_PSR(dev)		(IS_HASWELL(dev) || IS_BROADWELL(dev))
#define HAS_PC8(dev)		(IS_HASWELL(dev)) /* XXX HSW:ULX */

#define INTEL_PCH_DEVICE_ID_MASK		0xff00
#define INTEL_PCH_IBX_DEVICE_ID_TYPE		0x3b00
+6 −1
Original line number Diff line number Diff line
@@ -790,7 +790,12 @@ init_vbt_defaults(struct drm_i915_private *dev_priv)

	/* Default to using SSC */
	dev_priv->vbt.lvds_use_ssc = 1;
	dev_priv->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(dev, 1);
	/*
	 * Core/SandyBridge/IvyBridge use alternative (120MHz) reference
	 * clock for LVDS.
	 */
	dev_priv->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(dev,
			!HAS_PCH_SPLIT(dev));
	DRM_DEBUG_KMS("Set default to SSC at %dMHz\n", dev_priv->vbt.lvds_ssc_freq);

	for (port = PORT_A; port < I915_MAX_PORTS; port++) {
Loading