Merge tag 'drm-intel-next-2014-09-01' of git://anongit.freedesktop.org/drm-intel...
authorDave Airlie <airlied@redhat.com>
Tue, 2 Sep 2014 22:30:48 +0000 (08:30 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 2 Sep 2014 22:30:48 +0000 (08:30 +1000)
drm-intel-next-2014-08-22:
- basic code for execlist, which is the fancy new cmd submission on gen8. Still
  disabled by default (Ben, Oscar Mateo, Thomas Daniel et al)
- remove the useless usage of console_lock for I915_FBDEV=n (Chris)
- clean up relations between ctx and ppgtt
- clean up ppgtt lifetime handling (Michel Thierry)
- various cursor code improvements from Ville
- execbuffer code cleanups and secure batch fixes (Chris)
- prep work for dev -> dev_priv transition (Chris)
- some of the prep patches for the seqno -> request object transition (Chris)
- various small improvements all over

* tag 'drm-intel-next-2014-09-01' of git://anongit.freedesktop.org/drm-intel: (86 commits)
  drm/i915: fix suspend/resume for GENs w/o runtime PM support
  drm/i915: Update DRIVER_DATE to 20140822
  drm: fix plane rotation when restoring fbdev configuration
  drm/i915/bdw: Disable execlists by default
  drm/i915/bdw: Enable Logical Ring Contexts (hence, Execlists)
  drm/i915/bdw: Document Logical Rings, LR contexts and Execlists
  drm/i915/bdw: Print context state in debugfs
  drm/i915/bdw: Display context backing obj & ringbuffer info in debugfs
  drm/i915/bdw: Display execlists info in debugfs
  drm/i915/bdw: Disable semaphores for Execlists
  drm/i915/bdw: Make sure gpu reset still works with Execlists
  drm/i915/bdw: Don't write PDP in the legacy way when using LRCs
  drm/i915: Track cursor changes as frontbuffer tracking flushes
  drm/i915/bdw: Help out the ctx switch interrupt handler
  drm/i915/bdw: Avoid non-lite-restore preemptions
  drm/i915/bdw: Handle context switch events
  drm/i915/bdw: Two-stage execlist submit process
  drm/i915/bdw: Write the tail pointer, LRC style
  drm/i915/bdw: Implement context switching (somewhat)
  drm/i915/bdw: Emission of requests with logical rings
  ...

Conflicts:
drivers/gpu/drm/i915/i915_drv.c

13 files changed:
1  2 
Documentation/DocBook/drm.tmpl
drivers/gpu/drm/drm_crtc.c
drivers/gpu/drm/drm_fb_helper.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_params.c
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/i915/intel_pm.c
include/drm/drm_crtc.h

Simple merge
Simple merge
Simple merge
index e27cdbe9d524a79dbd4168febc15de0660e82d9f,0f7a522682a56a7f9daba834008c05edd7ce8bdb..ff4db249cc7210f16169cc9d6a4c4413e9f70104
@@@ -494,36 -498,11 +498,40 @@@ bool i915_semaphore_is_enabled(struct d
        return true;
  }
  
 +void intel_hpd_cancel_work(struct drm_i915_private *dev_priv)
 +{
 +      spin_lock_irq(&dev_priv->irq_lock);
 +
 +      dev_priv->long_hpd_port_mask = 0;
 +      dev_priv->short_hpd_port_mask = 0;
 +      dev_priv->hpd_event_bits = 0;
 +
 +      spin_unlock_irq(&dev_priv->irq_lock);
 +
 +      cancel_work_sync(&dev_priv->dig_port_work);
 +      cancel_work_sync(&dev_priv->hotplug_work);
 +      cancel_delayed_work_sync(&dev_priv->hotplug_reenable_work);
 +}
 +
 +static void intel_suspend_encoders(struct drm_i915_private *dev_priv)
 +{
 +      struct drm_device *dev = dev_priv->dev;
 +      struct drm_encoder *encoder;
 +
 +      drm_modeset_lock_all(dev);
 +      list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
 +              struct intel_encoder *intel_encoder = to_intel_encoder(encoder);
 +
 +              if (intel_encoder->suspend)
 +                      intel_encoder->suspend(intel_encoder);
 +      }
 +      drm_modeset_unlock_all(dev);
 +}
  
+ static int intel_suspend_complete(struct drm_i915_private *dev_priv);
+ static int intel_resume_prepare(struct drm_i915_private *dev_priv,
+                               bool rpm_resume);
  static int i915_drm_freeze(struct drm_device *dev)
  {
        struct drm_i915_private *dev_priv = dev->dev_private;
index 0730af32afe6783e8fac7984e20c9454316777a7,d309725a7d7bcacbfb551930db9e6dc7b5f45973..bcf8783dbc2e79176dc82045e9222e395ef71490
@@@ -2194,10 -2221,7 +2221,8 @@@ extern unsigned long i915_mch_val(struc
  extern unsigned long i915_gfx_val(struct drm_i915_private *dev_priv);
  extern void i915_update_gfx_val(struct drm_i915_private *dev_priv);
  int vlv_force_gfx_clock(struct drm_i915_private *dev_priv, bool on);
 +void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
  
- extern void intel_console_resume(struct work_struct *work);
  /* i915_irq.c */
  void i915_queue_hangcheck(struct drm_device *dev);
  __printf(3, 4)
Simple merge
Simple merge
index 7f84dd263ee8966d414341a4d6471d52ca0578c3,1dcb1bed5ef8cce143a492be9774d6d90eced581..139f490d464df8ae5ac1c400c877d3cb67b23988
@@@ -35,9 -35,10 +35,10 @@@ struct i915_params i915 __read_mostly 
        .vbt_sdvo_panel_type = -1,
        .enable_rc6 = -1,
        .enable_fbc = -1,
+       .enable_execlists = 0,
        .enable_hangcheck = true,
        .enable_ppgtt = -1,
 -      .enable_psr = 1,
 +      .enable_psr = 0,
        .preliminary_hw_support = IS_ENABLED(CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT),
        .disable_power_well = 1,
        .enable_ips = 1,
@@@ -118,8 -119,13 +119,13 @@@ MODULE_PARM_DESC(enable_ppgtt
        "Override PPGTT usage. "
        "(-1=auto [default], 0=disabled, 1=aliasing, 2=full)");
  
+ module_param_named(enable_execlists, i915.enable_execlists, int, 0400);
+ MODULE_PARM_DESC(enable_execlists,
+       "Override execlists usage. "
+       "(-1=auto, 0=disabled [default], 1=enabled)");
  module_param_named(enable_psr, i915.enable_psr, int, 0600);
 -MODULE_PARM_DESC(enable_psr, "Enable PSR (default: true)");
 +MODULE_PARM_DESC(enable_psr, "Enable PSR (default: false)");
  
  module_param_named(preliminary_hw_support, i915.preliminary_hw_support, int, 0600);
  MODULE_PARM_DESC(preliminary_hw_support,
Simple merge
index 6db84bf0a92a2ca1d8b84f6adfae00ed30d38f3b,def55cdfef2547066b4e1c2a46ae79c9564cf453..6a2256cf1f2a294aa9e42e0fd8ac66af222e0f16
@@@ -4059,12 -4041,10 +4059,13 @@@ intel_dp_hpd_pulse(struct intel_digital
        if (intel_dig_port->base.type != INTEL_OUTPUT_EDP)
                intel_dig_port->base.type = INTEL_OUTPUT_DISPLAYPORT;
  
-       DRM_DEBUG_KMS("got hpd irq on port %d - %s\n", intel_dig_port->port,
+       DRM_DEBUG_KMS("got hpd irq on port %c - %s\n",
+                     port_name(intel_dig_port->port),
                      long_hpd ? "long" : "short");
  
 +      power_domain = intel_display_port_power_domain(intel_encoder);
 +      intel_display_power_get(dev_priv, power_domain);
 +
        if (long_hpd) {
                if (!ibx_digital_port_connected(dev_priv, intel_dig_port))
                        goto mst_fail;
Simple merge
Simple merge
Simple merge