Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Jun 2015 20:18:51 +0000 (13:18 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Jun 2015 20:18:51 +0000 (13:18 -0700)
Pull drm updates from Dave Airlie:
 "This is the main drm pull request for v4.2.

  I've one other new driver from freescale on my radar, it's been posted
  and reviewed, I'd just like to get someone to give it a last look, so
  maybe I'll send it or maybe I'll leave it.

  There is no major nouveau changes in here, Ben was working on
  something big, and we agreed it was a bit late, there wasn't anything
  else he considered urgent to merge.

  There might be another msm pull for some bits that are waiting on
  arm-soc, I'll see how we time it.

  This touches some "of" stuff, acks are in place except for the fixes
  to the build in various configs,t hat I just applied.

  Summary:

  New drivers:
      - virtio-gpu:
                KMS only pieces of driver for virtio-gpu in qemu.
                This is just the first part of this driver, enough to run
                unaccelerated userspace on. As qemu merges more we'll start
                adding the 3D features for the virgl 3d work.
      - amdgpu:
                a new driver from AMD to driver their newer GPUs. (VI+)
                It contains a new cleaner userspace API, and is a clean
                break from radeon moving forward, that AMD are going to
                concentrate on. It also contains a set of register headers
                auto generated from AMD internal database.

  core:
      - atomic modesetting API completed, enabled by default now.
      - Add support for mode_id blob to atomic ioctl to complete interface.
      - bunch of Displayport MST fixes
      - lots of misc fixes.

  panel:
      - new simple panels
      - fix some long-standing build issues with bridge drivers

  radeon:
      - VCE1 support
      - add a GPU reset counter for userspace
      - lots of fixes.

  amdkfd:
      - H/W debugger support module
      - static user-mode queues
      - support killing all the waves when a process terminates
      - use standard DECLARE_BITMAP

  i915:
      - Add Broxton support
      - S3, rotation support for Skylake
      - RPS booting tuning
      - CPT modeset sequence fixes
      - ns2501 dither support
      - enable cmd parser on haswell
      - cdclk handling fixes
      - gen8 dynamic pte allocation
      - lots of atomic conversion work

  exynos:
      - Add atomic modesetting support
      - Add iommu support
      - Consolidate drm driver initialization
      - and MIC, DECON and MIPI-DSI support for exynos5433

  omapdrm:
      - atomic modesetting support (fixes lots of things in rewrite)

  tegra:
      - DP aux transaction fixes
      - iommu support fix

  msm:
      - adreno a306 support
      - various dsi bits
      - various 64-bit fixes
      - NV12MT support

  rcar-du:
      - atomic and misc fixes

  sti:
      - fix HDMI timing complaince

  tilcdc:
      - use drm component API to access tda998x driver
      - fix module unloading

  qxl:
      - stability fixes"

* 'drm-next' of git://people.freedesktop.org/~airlied/linux: (872 commits)
  drm/nouveau: Pause between setting gpu to D3hot and cutting the power
  drm/dp/mst: close deadlock in connector destruction.
  drm: Always enable atomic API
  drm/vgem: Set unique to "vgem"
  of: fix a build error to of_graph_get_endpoint_by_regs function
  drm/dp/mst: take lock around looking up the branch device on hpd irq
  drm/dp/mst: make sure mst_primary mstb is valid in work function
  of: add EXPORT_SYMBOL for of_graph_get_endpoint_by_regs
  ARM: dts: rename the clock of MIPI DSI 'pll_clk' to 'sclk_mipi'
  drm/atomic: Don't set crtc_state->enable manually
  drm/exynos: dsi: do not set TE GPIO direction by input
  drm/exynos: dsi: add support for MIC driver as a bridge
  drm/exynos: dsi: add support for Exynos5433
  drm/exynos: dsi: make use of array for clock access
  drm/exynos: dsi: make use of driver data for static values
  drm/exynos: dsi: add macros for register access
  drm/exynos: dsi: rename pll_clk to sclk_clk
  drm/exynos: mic: add MIC driver
  of: add helper for getting endpoint node of specific identifiers
  drm/exynos: add Exynos5433 decon driver
  ...

22 files changed:
1  2 
MAINTAINERS
arch/arm/boot/dts/exynos4.dtsi
arch/x86/kernel/early-quirks.c
drivers/gpu/drm/drm_ioctl.c
drivers/gpu/drm/drm_sysfs.c
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem_execbuffer.c
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_audio.c
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_i2c.c
drivers/gpu/drm/i915/intel_lrc.c
drivers/gpu/drm/i915/intel_ringbuffer.c
drivers/gpu/drm/i915/intel_sdvo.c
drivers/gpu/drm/radeon/radeon_device.c
drivers/gpu/drm/radeon/radeon_kms.c
drivers/gpu/drm/radeon/radeon_vm.c
drivers/iommu/Kconfig
drivers/media/platform/Kconfig
drivers/of/base.c
include/uapi/drm/radeon_drm.h

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index d714a4b5711e4e7fa390ec6b659d2683ef41f585,280c282da9bd6d35b78e7b92d57122442a8f096d..76afc62373d75bc8c6d9349acd42a38cc71a5a02
@@@ -876,12 -880,23 +880,21 @@@ intel_dp_aux_ch(struct intel_dp *intel_
                                   DP_AUX_CH_CTL_TIME_OUT_ERROR |
                                   DP_AUX_CH_CTL_RECEIVE_ERROR);
  
-                       if (status & (DP_AUX_CH_CTL_TIME_OUT_ERROR |
-                                     DP_AUX_CH_CTL_RECEIVE_ERROR))
+                       if (status & DP_AUX_CH_CTL_TIME_OUT_ERROR)
+                               continue;
+                       /* DP CTS 1.2 Core Rev 1.1, 4.2.1.1 & 4.2.1.2
+                        *   400us delay required for errors and timeouts
+                        *   Timeout errors from the HW already meet this
+                        *   requirement so skip to next iteration
+                        */
+                       if (status & DP_AUX_CH_CTL_RECEIVE_ERROR) {
+                               usleep_range(400, 500);
                                continue;
+                       }
                        if (status & DP_AUX_CH_CTL_DONE)
 -                              break;
 +                              goto done;
                }
 -              if (status & DP_AUX_CH_CTL_DONE)
 -                      break;
        }
  
        if ((status & DP_AUX_CH_CTL_DONE) == 0) {
Simple merge
Simple merge
index 005b5e04de4d74d13eee87af223c9e22687f6d35,d934f857394ddbc95d276d0fc511b3ac67616cea..3817a6f00d9ef1fe4455282acfedf90c436e7300
@@@ -1017,13 -1030,17 +1023,24 @@@ static int skl_init_workarounds(struct 
                WA_SET_BIT_MASKED(HIZ_CHICKEN,
                                  BDW_HIZ_POWER_COMPILER_CLOCK_GATING_DISABLE);
  
 +      if (INTEL_REVID(dev) == SKL_REVID_C0 ||
 +          INTEL_REVID(dev) == SKL_REVID_D0)
 +              /* WaBarrierPerformanceFixDisable:skl */
 +              WA_SET_BIT_MASKED(HDC_CHICKEN0,
 +                                HDC_FENCE_DEST_SLM_DISABLE |
 +                                HDC_BARRIER_PERFORMANCE_DISABLE);
 +
+       if (INTEL_REVID(dev) <= SKL_REVID_D0) {
+               /*
+                *Use Force Non-Coherent whenever executing a 3D context. This
+                * is a workaround for a possible hang in the unlikely event
+                * a TLB invalidation occurs during a PSD flush.
+                */
+               /* WaForceEnableNonCoherent:skl */
+               WA_SET_BIT_MASKED(HDC_CHICKEN0,
+                                 HDC_FORCE_NON_COHERENT);
+       }
        return skl_tune_iz_hashing(ring);
  }
  
Simple merge
index b0acf50d95581d9970cef89690be25b32324c7b3,9632e886ddc3a85a79bdb300c02db326ebd57d1e..4a119c255ba9709692b234c51a928d826cc22ec2
@@@ -576,9 -576,9 +576,12 @@@ static int radeon_info_ioctl(struct drm
                if (radeon_get_allowed_info_register(rdev, *value, value))
                        return -EINVAL;
                break;
 +      case RADEON_INFO_VA_UNMAP_WORKING:
 +              *value = true;
 +              break;
+       case RADEON_INFO_GPU_RESET_COUNTER:
+               *value = atomic_read(&rdev->gpu_reset_counter);
+               break;
        default:
                DRM_DEBUG_KMS("Invalid request %d\n", info->request);
                return -EINVAL;
Simple merge
Simple merge
Simple merge
Simple merge
index 94d44ab2fda1821bcda7e1b541bcfeffb556e7c5,573cb86a3d6e8b0ef7fee5dfb2003b9e2f50ef71..1ef76661e1a1b5cc7a1d1021aefd2501f8e5375e
@@@ -1038,7 -1038,7 +1038,8 @@@ struct drm_radeon_cs 
  #define RADEON_INFO_CURRENT_GPU_SCLK  0x22
  #define RADEON_INFO_CURRENT_GPU_MCLK  0x23
  #define RADEON_INFO_READ_REG          0x24
 -#define RADEON_INFO_GPU_RESET_COUNTER 0x25
 +#define RADEON_INFO_VA_UNMAP_WORKING  0x25
++#define RADEON_INFO_GPU_RESET_COUNTER 0x26
  
  struct drm_radeon_info {
        uint32_t                request;