1. 25 1月, 2014 4 次提交
  2. 10 1月, 2014 1 次提交
  3. 18 12月, 2013 1 次提交
  4. 17 12月, 2013 1 次提交
  5. 16 12月, 2013 1 次提交
  6. 14 12月, 2013 2 次提交
  7. 13 12月, 2013 1 次提交
  8. 12 12月, 2013 2 次提交
  9. 11 12月, 2013 1 次提交
    • P
      drm/i915: add initial Runtime PM functions · 8a187455
      Paulo Zanoni 提交于
      This patch adds the initial infrastructure to allow a Runtime PM
      implementation that sets the device to its D3 state. The patch just
      adds the necessary callbacks and the initial infrastructure.
      
      We still don't have any platform that actually uses this
      infrastructure, we still don't call get/put in all the places we need
      to, and we don't have any function to save/restore the state of the
      registers. This is not a problem since no platform uses the code added
      by this patch. We have a few people simultaneously working on runtime
      PM, so this initial code could help everybody make their plans.
      
      V2: - Move some functions to intel_pm.c
          - Remove useless pm_runtime_allow() call at init
          - Remove useless pm_runtime_mark_last_busy() call at get
          - Use pm_runtime_get_sync() instead of 2 calls
          - Add a WARN to check if we're really awake
      
      V3: - Rebase.
      
      V4: - Don't need to call pci_{save,restore}_state and
            pci_set_power_sate, since they're already called by the PCI
            layer
          - Remove wrong pm_runtime_enable() call at init_runtime_pm
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      8a187455
  10. 06 12月, 2013 1 次提交
  11. 28 11月, 2013 3 次提交
    • I
      drm/i915: add intel_display_power_enabled_sw() for use in atomic ctx · ddf9c536
      Imre Deak 提交于
      Atm we call intel_display_power_enabled() from
      i915_capture_error_state() in IRQ context and then take a mutex. To fix
      this add a new intel_display_power_enabled_sw() which returns the domain
      state based on software tracking as opposed to reading the actual HW
      state.
      
      Since we use domain_use_count for this without locking on the reader
      side make sure we increase the counter only after enabling all required
      power wells and decrease it before disabling any of these power wells.
      
      Regression introduced in
      commit 1b02383464b4a915627ef3b8fd0ad7f07168c54c
      Author: Imre Deak <imre.deak@intel.com>
      Date:   Tue Sep 24 16:17:09 2013 +0300
      
          drm/i915: support for multiple power wells
      
      Note that atm we depend on the value returned by
      intel_display_power_enabled_sw() in i915_capture_error_state() to avoid
      unclaimed register access reports. This was never guaranteed though,
      since another thread can disable the power concurrently. If this is a
      problem we need another explicit way to disable the reporting during
      error captures.
      
      v2:
      - remove barriers as the caller can't depend on the value
        returned from i915_capture_error_state_sw() anyway (Ville)
      - dump the state of pipe/transcoder power domain state (Daniel)
      Reported-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ddf9c536
    • D
      drm/i915/vlv: Valleyview support for forcewake Individual power wells. · 940aece4
      Deepak S 提交于
      Split vlv force wake routines to help individually control Media/Render
      well based on the register access.
      
      We've seen power savings in the lower sub-1W range on workloads that
      only need on of the power wells, e.g. glbenchmark, media playback
      
      Note: The same split isn't there for the forcewake queue, only the
      forcwake domains are split.
      Signed-off-by: NDeepak S <deepak.s@intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      [danvet: Rebase on top of the removed forcewake hack in the ring irq
      get/put code and add a note to add Deepak's answer to Chris question.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      940aece4
    • D
      drm/i915: Add power well arguments to force wake routines. · c8d9a590
      Deepak S 提交于
      Added power well arguments to all the force wake routines
      to help us individually control power well based on the
      scenario.
      Signed-off-by: NDeepak S <deepak.s@intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      [danvet: Resolve conflict with the removed forcewake hack and drop one
      spurious hunk Jesse noticed.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c8d9a590
  12. 27 11月, 2013 5 次提交
  13. 19 11月, 2013 2 次提交
  14. 14 11月, 2013 4 次提交
  15. 13 11月, 2013 2 次提交
  16. 12 11月, 2013 2 次提交
    • M
      drm/i915: add i915_get_reset_stats_ioctl · b6359918
      Mika Kuoppala 提交于
      This ioctl returns reset stats for specified context.
      
      The struct returned contains context loss counters.
      
      reset_count:    all resets across all contexts
      batch_active:   active batches lost on resets
      batch_pending:  pending batches lost on resets
      
      v2: get rid of state tracking completely and deliver only counts. Idea
          from Chris Wilson.
      
      v3: fix commit message
      
      v4: default context handled inside i915_gem_context_get_hang_stats
      
      v5: reset_count only for priviledged process
      
      v6: ctx=0 needs CAP_SYS_ADMIN for batch_* counters (Chris Wilson)
      
      v7: context hang stats never returns NULL
      
      v8: rebased on top of reworked context hang stats
          DRM_RENDER_ALLOW for ioctl
      
      v9: use DEFAULT_CONTEXT_ID. Improve comments for ioctl struct members
      Signed-off-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Cc: Ian Romanick <idr@freedesktop.org>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Reviewed-by: NIan Romanick <ian.d.romanick@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b6359918
    • M
      drm/i915: add i915_reset_count · 2ac0f450
      Mika Kuoppala 提交于
      reset_counter will be incremented twice per successful
      reset. Odd values mean reset is in progress and even values
      mean that reset has completed.
      
      Reset status ioctl introduced in following commit
      needs to deliver global reset count to userspace so
      use reset_counter to derive the actual reset count
      for the gpu
      
      Note that reset in progress is enough to increment
      the counter.
      
      v2: wedged equals reset in progress (Daniel Vetter)
      
      v3: Fixed stale comments (Damien Lespiau)
      Signed-off-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2ac0f450
  17. 11 11月, 2013 1 次提交
  18. 09 11月, 2013 6 次提交
    • B
      drm/i915/bdw: Support eDP PSR · ed8546ac
      Ben Widawsky 提交于
      Broadwell PSR support is a superset of Haswell. With this simple
      register base calculation, everything that worked on HSW for eDP PSR
      should work on BDW.
      
      Note that Broadwell provides additional PSR support. This is not
      addressed at this time.
      
      v2: Make the HAS_PSR include BDW
      
      v3: Use the correct offset (I had incorrectly used one from my faulty
      brain) (Art!)
      
      v4: It helps if you git add
      
      v5: Be explicit about not setting min link entry time for BDW. This
      should be no functional change over v4 (Jani)
      Reviewed-by: NArt Runyan <arthur.j.runyan@intel.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ed8546ac
    • B
      drm/i915/bdw: Use The GT mailbox for IPS enable/disable · 2a114cc1
      Ben Widawsky 提交于
      v2: Squash in fixup from Ben to synchronize the GT mailbox commands.
      
      CC: Art Runyan <arthur.j.runyan@intel.com>
      Reviewed-by: NArt Runyan <arthur.j.runyan@intel.com>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2a114cc1
    • P
      drm/i915/bdw: Broadwell also has the "power down well" · 6745a2ce
      Paulo Zanoni 提交于
      Just like Haswell, but with the small twist that the panel fitter for pipe A is
      now also in the always-on power well.
      
      v2: Use the new HAS_POWER_WELL macro.
      
      v3: Rebase on top of intel_using_power_well patches.
      
      v4: This time actually update the PFIT check correctly so that the
      pipe A pfit is in the always-on domain.
      
      v5: Rebase on top of the VGA power domain addition.
      
      v6: Rebase on top of the new power domain infrastructure. Also pimp the commit
      message a bit while at it.
      
      v7: Use IS_BROADWELL instead of IS_GEN8 (Ville).
      
      Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> (v1)
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6745a2ce
    • P
      drm/i915/bdw: add IS_BROADWELL macro · 4e8058a2
      Paulo Zanoni 提交于
      For now it's just equivalent to IS_GEN8, but in the future we might
      want to change that (e.g., on Gen 7 we have IS_VALLEYVIEW,
      IS_IVYBRIDGE and IS_HASWELL).
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4e8058a2
    • B
      drm/i915/bdw: PPGTT init & cleanup · 37aca44a
      Ben Widawsky 提交于
      Aside from the potential size increase of the PPGTT, the primary
      difference from previous hardware is the Page Directories are no longer
      carved out of the Global GTT.
      
      Note that the PDE allocation is done as a 8MB contiguous allocation,
      this needs to be eventually fixed (since driver reloading will be a
      pain otherwise). Also, this will be a no-go for real PPGTT support.
      
      v2: Move vtable initialization
      
      v3: Resolve conflicts due to patch series reordering.
      
      v4: Rebase on top of the address space refactoring of the PPGTT
      support. Drop Imre's r-b tag for v2, too outdated by now.
      
      v5: Free the correct amount of memory, "get_order takes size not a page
      count." (Imre)
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      37aca44a
    • B
      drm/i915/bdw: Implement interrupt changes · abd58f01
      Ben Widawsky 提交于
      The interrupt handling implementation remains the same as previous
      generations with the 4 types of registers, status, identity, mask, and
      enable. However the layout of where the bits go have changed entirely.
      To address these changes, all of the interrupt vfuncs needed special
      gen8 code.
      
      The way it works is there is a top level status register now which
      informs the interrupt service routine which unit caused the interrupt,
      and therefore which interrupt registers to read to process the
      interrupt. For display the division is quite logical, a set of interrupt
      registers for each pipe, and in addition to those, a set each for "misc"
      and port.
      
      For GT the things get a bit hairy, as seen by the code. Each of the GT
      units has it's own bits defined. They all look *very similar* and
      resides in 16 bits of a GT register. As an example, RCS and BCS share
      register 0. To compact the code a bit, at a slight expense to
      complexity, this is exactly how the code works as well. 2 structures are
      added to the ring buffer so that our ring buffer interrupt handling code
      knows which ring shares the interrupt registers, and a shift value (ie.
      the top or bottom 16 bits of the register).
      
      The above allows us to kept the interrupt register caching scheme, the
      per interrupt enables, and the code to mask and unmask interrupts
      relatively clean (again at the cost of some more complexity).
      
      Most of the GT units mentioned above are command streamers, and so the
      symmetry should work quite well for even the yet to be implemented rings
      which Broadwell adds.
      
      v2: Fixes up a couple of bugs, and is more verbose about errors in the
      Broadwell interrupt handler.
      
      v3: fix DE_MISC IER offset
      
      v4: Simplify interrupts:
      I totally misread the docs the first time I implemented interrupts, and
      so this should greatly simplify the mess. Unlike GEN6, we never touch
      the regular mask registers in irq_get/put.
      
      v5: Rebased on to of recent pch hotplug setup changes.
      
      v6: Fixup on top of moving num_pipes to intel_info.
      
      v7: Rebased on top of Egbert Eich's hpd irq handling rework. Also
      wired up ibx_hpd_irq_setup for gen8.
      
      v8: Rebase on top of Jani's asle handling rework.
      
      v9: Rebase on top of Ben's VECS enabling for Haswell, where he
      unfortunately went OCD on the gt irq #defines. Not that they're still
      not yet fully consistent:
      - Used the GT_RENDER_ #defines + bdw shifts.
      - Dropped the shift from the L3_PARITY stuff, seemed clearer.
      - s/irq_refcount/irq_refcount.gt/
      
      v10: Squash in VECS enabling patches and the gen8_gt_irq_handler
      refactoring from Zhao Yakui <yakui.zhao@intel.com>
      
      v11: Rebase on top of the interrupt cleanups in upstream.
      
      v12: Rebase on top of Ben's DPF changes in upstream.
      
      v13: Drop bdw from the HAS_L3_DPF feature flag for now, it's unclear what
      exactly needs to be done. Requested by Ben.
      
      v14: Fix the patch.
      - Drop the mask of reserved bits and assorted logic, it doesn't match
        the spec.
      - Do the posting read inconditionally instead of commenting it out.
      - Add a GEN8_MASTER_IRQ_CONTROL definition and use it.
      - Fix up the GEN8_PIPE interrupt defines and give the GEN8_ prefixes -
        we actually will need to use them.
      - Enclose macros in do {} while (0) (checkpatch).
      - Clear DE_MISC interrupt bits only after having processed them.
      - Fix whitespace fail (checkpatch).
      - Fix overtly long lines where appropriate (checkpatch).
      - Don't use typedef'ed private_t (maintainer-scripts).
      - Align the function parameter list correctly.
      
      Signed-off-by: Ben Widawsky <ben@bwidawsk.net> (v4)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      
      bikeshed
      abd58f01