1. 31 10月, 2013 7 次提交
  2. 15 10月, 2013 2 次提交
    • D
      drm/i915: abstract the conversion of device->minor out to a macro · 14c8d110
      Dave Airlie 提交于
      This will make the next patch to change how this works a lot cleaner.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      14c8d110
    • D
      Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-next · 5259c522
      Dave Airlie 提交于
      New feature pile for 3.12! Highlights:
      - Stereo/3d support for hdmi from Damien, both the drm core bits and
        the i915 integration.
      - Manual boost/deboost logic for gpu turbo (Chris)
      - Fixed up clock readout support for vlv (Chris).
      - Tons of little fixes and improvements for vlv in general (Chon Minng
        Lee and Jesse Barnes).
      - Power well support for the legacy vga plane (Ville).
      - DP impromevents from Jani.
      - Improvements to the Haswell modeset sequence (Ville+Paulo).
      - Haswell DDI improvements, using the VBT for some tuning values and
        to check the configuration (Paulo).
      - Tons of other small improvements and fixups.
      
      * 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel: (92 commits)
        drm/i915: Use adjusted_mode in the fastboot hack to disable pfit
        drm/i915: Add a more detailed comment about the set_base() fastboot hack
        drm/i915/vlv: Turn off power gate for BIOS-less system.
        drm/i915/vlv: reset DPIO on load and resume v2
        drm/i915: Simplify PSR debugfs
        drm/i915: Tweak RPS thresholds to more aggressively downclock
        drm/i915: Boost RPS frequency for CPU stalls
        drm/i915: Fix __wait_seqno to use true infinite timeouts
        drm/i915: Add some missing steps to i915_driver_load error path
        drm/i915: Clean up the ring scaling calculations
        drm/i915: Don't populate pipe_src_{w,h} multiple times
        drm/i915: implement the Haswell mode set sequence workaround
        drm/i915: Disable/enable planes as the first/last thing during modeset on HSW
        i915/vlv: untangle integrated clock source handling v4
        drm/i915: fix typo s/PatherPoint/PantherPoint/
        drm/i915: Make intel_resume_power_well() static
        drm/i915: destroy connector sysfs files earlier
        drm/i915/dp: do not write DP_TRAINING_PATTERN_SET all the time
        drm/i915/dp: retry i2c-over-aux seven times on AUX DEFER
        drm/i915/vlv: reduce GT FIFO error info to a debug message
        ...
      5259c522
  3. 10 10月, 2013 1 次提交
  4. 09 10月, 2013 22 次提交
  5. 04 10月, 2013 8 次提交
    • D
      drm/i915: Use adjusted_mode in the fastboot hack to disable pfit · d7bf63f2
      Damien Lespiau 提交于
      When booting with i915.fastboot=1, we always take tha code path and end
      up undoing what we're trying to do with adjusted_mode.
      
      Hopefully, as the fastboot hardware readout code is using adjusted_mode
      as well, it should be equivalent.
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d7bf63f2
    • D
      drm/i915: Add a more detailed comment about the set_base() fastboot hack · bb2043de
      Damien Lespiau 提交于
      Instead of it just being on the mailing list, let's put Jesse's
      explanation next to the code in question.
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      bb2043de
    • C
      drm/i915/vlv: Turn off power gate for BIOS-less system. · 02f4c9e0
      Chon Ming Lee 提交于
      During system boot up, by default, the power gate for render, media and
      display well still power gated.  Normally, BIOS will turn off the power
      gate.  In the BIOS-less system, the driver need to turn off the power
      gate very early during driver load.
      
      v2: Move this to intel_uncore_sanitize to allow it to get call during
      resume path. (Daniel)
      v3: Remove redundant write 0 to DPIO_CTL, and use DPIO_RESET instead of
      just 0x1 (Ville)
          Add turn of power gate for display 2d/render well/media well.
      v4: Remove toggle cmnreset in intel_uncore_sanitize.  Cmnreset should
      toggle after CRI clock source has been selected.  Jesse DPIO reset patch
      which toggle the cmnreset in intel_modeset_init_hw() should handle it.
      (Ville)
      Signed-off-by: NChon Ming Lee <chon.ming.lee@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      02f4c9e0
    • J
      drm/i915/vlv: reset DPIO on load and resume v2 · 40e9cf64
      Jesse Barnes 提交于
      DPIO needs to have common reset de-asserted on soft resets like boot and
      S3.  In some cases, the BIOS will have done this for us, but it should
      be safe to do at runtime as well, as long as we do it when the pipes are
      otherwise off.
      
      v2: update bit name to match docs better (Ville)
          reset after CRI clock select (Ville)
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=69166Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      40e9cf64
    • R
      drm/i915: Simplify PSR debugfs · a031d709
      Rodrigo Vivi 提交于
      for igt test case.
      
      v2: remove trailing spaces and fix conflicts
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@gmail.com>
      [danvet:
      - make it comipile
      - s/IS_HASWELL/HAS_PSR/]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      a031d709
    • C
      drm/i915: Tweak RPS thresholds to more aggressively downclock · dd75fdc8
      Chris Wilson 提交于
      After applying wait-boost we often find ourselves stuck at higher clocks
      than required. The current threshold value requires the GPU to be
      continuously and completely idle for 313ms before it is dropped by one
      bin. Conversely, we require the GPU to be busy for an average of 90% over
      a 84ms period before we upclock. So the current thresholds almost never
      downclock the GPU, and respond very slowly to sudden demands for more
      power. It is easy to observe that we currently lock into the wrong bin
      and both underperform in benchmarks and consume more power than optimal
      (just by repeating the task and measuring the different results).
      
      An alternative approach, as discussed in the bspec, is to use a
      continuous threshold for upclocking, and an average value for downclocking.
      This is good for quickly detecting and reacting to state changes within a
      frame, however it fails with the common throttling method of waiting
      upon the outstanding frame - at least it is difficult to choose a
      threshold that works well at 15,000fps and at 60fps. So continue to use
      average busy/idle loads to determine frequency change.
      
      v2: Use 3 power zones to keep frequencies low in steady-state mostly
      idle (e.g. scrolling, interactive 2D drawing), and frequencies high
      for demanding games. In between those end-states, we use a
      fast-reclocking algorithm to converge more quickly on the desired bin.
      
      v3: Bug fixes - make sure we reset adj after switching power zones.
      
      v4: Tune - drop the continuous busy thresholds as it prevents us from
      choosing the right frequency for glxgears style swap benchmarks. Instead
      the goal is to be able to find the right clocks irrespective of the
      wait-boost.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Kenneth Graunke <kenneth@whitecape.org>
      Cc: Stéphane Marchesin <stephane.marchesin@gmail.com>
      Cc: Owen Taylor <otaylor@redhat.com>
      Cc: "Meng, Mengmeng" <mengmeng.meng@intel.com>
      Cc: "Zhuang, Lena" <lena.zhuang@intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      dd75fdc8
    • C
      drm/i915: Boost RPS frequency for CPU stalls · b29c19b6
      Chris Wilson 提交于
      If we encounter a situation where the CPU blocks waiting for results
      from the GPU, give the GPU a kick to boost its the frequency.
      
      This should work to reduce user interface stalls and to quickly promote
      mesa to high frequencies - but the cost is that our requested frequency
      stalls high (as we do not idle for long enough before rc6 to start
      reducing frequencies, nor are we aggressive at down clocking an
      underused GPU). However, this should be mitigated by rc6 itself powering
      off the GPU when idle, and that energy use is dependent upon the workload
      of the GPU in addition to its frequency (e.g. the math or sampler
      functions only consume power when used). Still, this is likely to
      adversely affect light workloads.
      
      In particular, this nearly eliminates the highly noticeable wake-up lag
      in animations from idle. For example, expose or workspace transitions.
      (However, given the situation where we fail to downclock, our requested
      frequency is almost always the maximum, except for Baytrail where we
      manually downclock upon idling. This often masks the latency of
      upclocking after being idle, so animations are typically smooth - at the
      cost of increased power consumption.)
      
      Stéphane raised the concern that this will punish good applications and
      reward bad applications - but due to the nature of how mesa performs its
      client throttling, I believe all mesa applications will be roughly
      equally affected. To address this concern, and to prevent applications
      like compositors from permanently boosting the RPS state, we ratelimit the
      frequency of the wait-boosts each client recieves.
      
      Unfortunately, this techinique is ineffective with Ironlake - which also
      has dynamic render power states and suffers just as dramatically. For
      Ironlake, the thermal/power headroom is shared with the CPU through
      Intelligent Power Sharing and the intel-ips module. This leaves us with
      no GPU boost frequencies available when coming out of idle, and due to
      hardware limitations we cannot change the arbitration between the CPU and
      GPU quickly enough to be effective.
      
      v2: Limit each client to receiving a single boost for each active period.
          Tested by QA to only marginally increase power, and to demonstrably
          increase throughput in games. No latency measurements yet.
      
      v3: Cater for front-buffer rendering with manual throttling.
      
      v4: Tidy up.
      
      v5: Sadly the compositor needs frequent boosts as it may never idle, but
      due to its picking mechanism (using ReadPixels) may require frequent
      waits. Those waits, along with the waits for the vrefresh swap, conspire
      to keep the GPU at low frequencies despite the interactive latency. To
      overcome this we ditch the one-boost-per-active-period and just ratelimit
      the number of wait-boosts each client can receive.
      Reported-and-tested-by: NPaul Neumann <paul104x@yahoo.de>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68716Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Kenneth Graunke <kenneth@whitecape.org>
      Cc: Stéphane Marchesin <stephane.marchesin@gmail.com>
      Cc: Owen Taylor <otaylor@redhat.com>
      Cc: "Meng, Mengmeng" <mengmeng.meng@intel.com>
      Cc: "Zhuang, Lena" <lena.zhuang@intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      [danvet: No extern for function prototypes in headers.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b29c19b6
    • C
      drm/i915: Fix __wait_seqno to use true infinite timeouts · 094f9a54
      Chris Wilson 提交于
      When we switched to always using a timeout in conjunction with
      wait_seqno, we lost the ability to detect missed interrupts. Since, we
      have had issues with interrupts on a number of generations, and they are
      required to be delivered in a timely fashion for a smooth UX, it is
      important that we do log errors found in the wild and prevent the
      display stalling for upwards of 1s every time the seqno interrupt is
      missed.
      
      Rather than continue to fix up the timeouts to work around the interface
      impedence in wait_event_*(), open code the combination of
      wait_event[_interruptible][_timeout], and use the exposed timer to
      poll for seqno should we detect a lost interrupt.
      
      v2: In order to satisfy the debug requirement of logging missed
      interrupts with the real world requirments of making machines work even
      if interrupts are hosed, we revert to polling after detecting a missed
      interrupt.
      
      v3: Throw in a debugfs interface to simulate broken hw not reporting
      interrupts.
      
      v4: s/EGAIN/EAGAIN/ (Imre)
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      [danvet: Don't use the struct typedef in new code.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      094f9a54