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

Commit 4ff63e47 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:
 "Intel: edid fixes, power consumption fix, s/r fix, haswell fix

  Radeon: BIOS loading fixes for UEFI and Thunderbolt machines, better
  MSAA validation, lockup timeout fixes, modesetting fixes

  One udl dpms fix, one vmwgfx fix, a couple of trivial core changes.

  There is an export added to ACPI as part of the radeon bios fixes.

  I've also included the fbcon flashing cursor vs deinit race fix, that
  seems the simplest place to start"

Trivial conflict in drivers/video/console/fbcon.c due to me having
already applied the fbcon flashing cursor vs deinit race fix, and Dave
had added a comment in there too.

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (22 commits)
  fbcon: fix race condition between console lock and cursor timer (v1.1)
  drm: Add missing static storage class specifiers in drm_proc.c file
  drm/udl: dpms off the crtc when disabled.
  drm: Remove two unused fields from struct drm_display_mode
  drm: stop vmgfx driver explosion
  drm/radeon/ss: use num_crtc rather than hardcoded 6
  Revert "drm/radeon: fix bo creation retry path"
  drm/i915: use hsw rps tuning values everywhere on gen6+
  drm/radeon: split ATRM support out from the ATPX handler (v3)
  drm/radeon: convert radeon vfct code to use acpi_get_table_with_size
  ACPI: export symbol acpi_get_table_with_size
  drm/radeon: implement ACPI VFCT vbios fetch (v3)
  drm/radeon/kms: extend the Fujitsu D3003-S2 board connector quirk to cover later silicon stepping
  drm/radeon: fix checking of MSAA renderbuffers on r600-r700
  drm/radeon: allow CMASK and FMASK in the CS checker on r600-r700
  drm/radeon: init lockup timeout on ring init
  drm/radeon: avoid turning off spread spectrum for used pll
  drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads
  drm/i915: extract connector update from intel_ddc_get_modes() for reuse
  drm/i915: fix hsw uncached pte
  ...
parents 09236994 d8636a27
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -387,6 +387,7 @@ acpi_get_table_with_size(char *signature,

	return (AE_NOT_FOUND);
}
ACPI_EXPORT_SYMBOL(acpi_get_table_with_size)

acpi_status
acpi_get_table(char *signature,
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@
#define I830_PTE_SYSTEM_CACHED  0x00000006
/* GT PTE cache control fields */
#define GEN6_PTE_UNCACHED	0x00000002
#define HSW_PTE_UNCACHED	0x00000000
#define GEN6_PTE_LLC		0x00000004
#define GEN6_PTE_LLC_MLC	0x00000006
#define GEN6_PTE_GFDT		0x00000008
+69 −36
Original line number Diff line number Diff line
@@ -1156,6 +1156,30 @@ static bool gen6_check_flags(unsigned int flags)
	return true;
}

static void haswell_write_entry(dma_addr_t addr, unsigned int entry,
				unsigned int flags)
{
	unsigned int type_mask = flags & ~AGP_USER_CACHED_MEMORY_GFDT;
	unsigned int gfdt = flags & AGP_USER_CACHED_MEMORY_GFDT;
	u32 pte_flags;

	if (type_mask == AGP_USER_MEMORY)
		pte_flags = HSW_PTE_UNCACHED | I810_PTE_VALID;
	else if (type_mask == AGP_USER_CACHED_MEMORY_LLC_MLC) {
		pte_flags = GEN6_PTE_LLC_MLC | I810_PTE_VALID;
		if (gfdt)
			pte_flags |= GEN6_PTE_GFDT;
	} else { /* set 'normal'/'cached' to LLC by default */
		pte_flags = GEN6_PTE_LLC | I810_PTE_VALID;
		if (gfdt)
			pte_flags |= GEN6_PTE_GFDT;
	}

	/* gen6 has bit11-4 for physical addr bit39-32 */
	addr |= (addr >> 28) & 0xff0;
	writel(addr | pte_flags, intel_private.gtt + entry);
}

static void gen6_write_entry(dma_addr_t addr, unsigned int entry,
			     unsigned int flags)
{
@@ -1382,6 +1406,15 @@ static const struct intel_gtt_driver sandybridge_gtt_driver = {
	.check_flags = gen6_check_flags,
	.chipset_flush = i9xx_chipset_flush,
};
static const struct intel_gtt_driver haswell_gtt_driver = {
	.gen = 6,
	.setup = i9xx_setup,
	.cleanup = gen6_cleanup,
	.write_entry = haswell_write_entry,
	.dma_mask_size = 40,
	.check_flags = gen6_check_flags,
	.chipset_flush = i9xx_chipset_flush,
};
static const struct intel_gtt_driver valleyview_gtt_driver = {
	.gen = 7,
	.setup = i9xx_setup,
@@ -1499,77 +1532,77 @@ static const struct intel_gtt_driver_description {
	{ PCI_DEVICE_ID_INTEL_VALLEYVIEW_IG,
	    "ValleyView", &valleyview_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_D_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_M_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_S_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT1_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_PLUS_IG,
	    "Haswell", &sandybridge_gtt_driver },
	    "Haswell", &haswell_gtt_driver },
	{ 0, NULL, NULL }
};

+0 −3
Original line number Diff line number Diff line
@@ -706,9 +706,6 @@ void drm_mode_set_crtcinfo(struct drm_display_mode *p, int adjust_flags)
	p->crtc_vblank_end = max(p->crtc_vsync_end, p->crtc_vtotal);
	p->crtc_hblank_start = min(p->crtc_hsync_start, p->crtc_hdisplay);
	p->crtc_hblank_end = max(p->crtc_hsync_end, p->crtc_htotal);

	p->crtc_hadjusted = false;
	p->crtc_vadjusted = false;
}
EXPORT_SYMBOL(drm_mode_set_crtcinfo);

+2 −2
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ static const struct file_operations drm_proc_fops = {
 * Create a given set of proc files represented by an array of
 * gdm_proc_lists in the given root directory.
 */
int drm_proc_create_files(struct drm_info_list *files, int count,
static int drm_proc_create_files(struct drm_info_list *files, int count,
			  struct proc_dir_entry *root, struct drm_minor *minor)
{
	struct drm_device *dev = minor->dev;
@@ -172,7 +172,7 @@ int drm_proc_init(struct drm_minor *minor, int minor_id,
	return 0;
}

int drm_proc_remove_files(struct drm_info_list *files, int count,
static int drm_proc_remove_files(struct drm_info_list *files, int count,
			  struct drm_minor *minor)
{
	struct list_head *pos, *q;
Loading