1. 23 8月, 2013 9 次提交
    • P
      drm/i915: allow package C8+ states on Haswell (disabled) · c67a470b
      Paulo Zanoni 提交于
      This patch allows PC8+ states on Haswell. These states can only be
      reached when all the display outputs are disabled, and they allow some
      more power savings.
      
      The fact that the graphics device is allowing PC8+ doesn't mean that
      the machine will actually enter PC8+: all the other devices also need
      to allow PC8+.
      
      For now this option is disabled by default. You need i915.allow_pc8=1
      if you want it.
      
      This patch adds a big comment inside i915_drv.h explaining how it
      works and how it tracks things. Read it.
      
      v2: (this is not really v2, many previous versions were already sent,
           but they had different names)
          - Use the new functions to enable/disable GTIMR and GEN6_PMIMR
          - Rename almost all variables and functions to names suggested by
            Chris
          - More WARNs on the IRQ handling code
          - Also disable PC8 when there's GPU work to do (thanks to Ben for
            the help on this), so apps can run caster
          - Enable PC8 on a delayed work function that is delayed for 5
            seconds. This makes sure we only enable PC8+ if we're really
            idle
          - Make sure we're not in PC8+ when suspending
      v3: - WARN if IRQs are disabled on __wait_seqno
          - Replace some DRM_ERRORs with WARNs
          - Fix calls to restore GT and PM interrupts
          - Use intel_mark_busy instead of intel_ring_advance to disable PC8
      v4: - Use the force_wake, Luke!
      v5: - Remove the "IIR is not zero" WARNs
          - Move the force_wake chunk to its own patch
          - Only restore what's missing from RC6, not everything
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c67a470b
    • P
      drm/i915: merge HSW and SNB PM irq handlers · 1403c0d4
      Paulo Zanoni 提交于
      Because hsw_pm_irq_handler does exactly what gen6_rps_irq_handler does
      and also processes the 2 additional VEBOX bits. So merge those
      functions and wrap the VEBOX bits on a HAS_VEBOX check. This
      check isn't really necessary since the bits are reserved on
      SNB/IVB/VLV, but it's a good documentation on who uses them.
      
      v2: - Change IS_HASWELL check to HAS_VEBOX
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      1403c0d4
    • P
      drm/i915: fix how we mask PMIMR when adding work to the queue · 4d3b3d5f
      Paulo Zanoni 提交于
      It seems we've been doing this ever since we started processing the
      RPS events on a work queue, on commit "drm/i915: move gen6 rps
      handling to workqueue", 4912d041.
      
      The problem is: when we add work to the queue, instead of just masking
      the bits we queued and leaving all the others on their current state,
      we mask the bits we queued and unmask all the others. This basically
      means we'll be unmasking a bunch of interrupts we're not going to
      process. And if you look at gen6_pm_rps_work, we unmask back only
      GEN6_PM_RPS_EVENTS, which means the bits we unmasked when adding work
      to the queue will remain unmasked after we process the queue.
      
      Notice that even though we unmask those unrelated interrupts, we never
      enable them on IER, so they don't fire our interrupt handler, they
      just stay there on IIR waiting to be cleared when something else
      triggers the interrupt handler.
      
      So this patch does what seems to make more sense: mask only the bits
      we add to the queue, without unmasking anything else, and so we'll
      unmask them after we process the queue.
      
      As a side effect we also have to remove that WARN, because it is not
      only making sure we don't mask useful interrupts, it is also making
      sure we do unmask useless interrupts! That piece of code should not be
      responsible for knowing which bits should be unmasked, so just don't
      assert anything, and trust that snb_disable_pm_irq should be doing the
      right thing.
      
      With i915.enable_pc8=1 I was getting ocasional "GEN6_PMIIR is not 0"
      error messages due to the fact that we unmask those unrelated
      interrupts but don't enable them.
      
      Note: if bugs start bisecting to this patch, then it probably means
      someone was relying on the fact that we unmask everything by accident,
      then we should fix gen5_gt_irq_postinstall or whoever needs the
      accidentally unmasked interrupts. Or maybe I was just wrong and we
      need to revert this patch :)
      
      Note: This started to be a more real issue with the addition of the
      VEBOX support since now we do enable more than just the minimal set of
      RPS interrupts in the IER register. Which means after the first rps
      interrupt has happened we will never mask the VEBOX user interrupts
      again and so will blow through cpu time needlessly when running video
      workloads.
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      [danvet: Add note that this started to matter with VEBOX much more.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4d3b3d5f
    • P
      drm/i915: don't queue PM events we won't process · 60611c13
      Paulo Zanoni 提交于
      On SNB/IVB/VLV we only call gen6_rps_irq_handler if one of the IIR
      bits set is part of GEN6_PM_RPS_EVENTS, but at gen6_rps_irq_handler we
      add all the enabled IIR bits to the work queue, not only the ones that
      are part of GEN6_PM_RPS_EVENTS. But then gen6_pm_rps_work only
      processes GEN6_PM_RPS_EVENTS, so it's useless to add anything that's
      not GEN6_PM_RPS_EVENTS to the work queue.
      
      As a bonus, gen6_rps_irq_handler looks more similar to
      hsw_pm_irq_handler, so we may be able to merge them in the future.
      
      v2: - Add a WARN in case we queued something we're not going to
            process.
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: Ben Widawsky <ben@bwidawsk.net> (v1)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      60611c13
    • P
      drm/i915: don't disable/reenable IVB error interrupts when not needed · 333a8204
      Paulo Zanoni 提交于
      If the error interrupts are already disabled, don't disable and
      reenable them. This is going to be needed when we're in PC8+, where
      all the interrupts are disabled so we won't risk re-enabling
      DE_ERR_INT_IVB.
      
      v2: Use dev_priv->irq_mask (Chris)
      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>
      333a8204
    • P
      drm/i915: add dev_priv->pm_irq_mask · 605cd25b
      Paulo Zanoni 提交于
      Just like irq_mask and gt_irq_mask, use it to track the status of
      GEN6_PMIMR so we don't need to read it again every time we call
      snb_update_pm_irq.
      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>
      605cd25b
    • P
      drm/i915: don't update GEN6_PMIMR when it's not needed · f52ecbcf
      Paulo Zanoni 提交于
      I did some brief tests and the "new_val = pmimr" condition usually
      happens a few times after exiting games.
      
      Note: This is also prep work to track the GEN6_PMIMR register state in
      dev_priv->pm_imr. This happens in the next patch.
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@gmail.com>
      [danvet: Add note to explain why we want this, as per the discussion
      between Chris and Paulo.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f52ecbcf
    • P
      drm/i915: wrap GEN6_PMIMR changes · edbfdb45
      Paulo Zanoni 提交于
      Just like we're doing with the other IMR changes.
      
      One of the functional changes is that not every caller was doing the
      POSTING_READ.
      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>
      edbfdb45
    • P
      drm/i915: wrap GTIMR changes · 43eaea13
      Paulo Zanoni 提交于
      Just like the functions that touch DEIMR and SDEIMR, but for GTIMR.
      The new functions contain a POSTING_READ(GTIMR) which was not present
      at the 2 callers inside i915_irq.c.
      
      The implementation is based on ibx_display_interrupt_update.
      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>
      43eaea13
  2. 22 8月, 2013 3 次提交
  3. 09 8月, 2013 1 次提交
  4. 27 7月, 2013 1 次提交
  5. 25 7月, 2013 1 次提交
    • C
      drm/i915: Colocate all GT access routines in the same file · 907b28c5
      Chris Wilson 提交于
      Currently, the register access code is split between i915_drv.c and
      intel_pm.c. It only bares a superficial resemblance to the reset of the
      powermanagement code, so move it all into its own file. This is to ease
      further patches to enforce serialised register access.
      
      v2: Scan for random abuse of I915_WRITE_NOTRACE
      v3: Take the opportunity to rename the GT functions as uncore. Uncore is
      the term used by the hardware design (and bspec) for all functions
      outside of the GPU (and CPU) cores in what is also known as the System
      Agent.
      v4: Rebase onto SNB rc6 fixes
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      [danvet: Wrestle patch into applying and inline
      intel_uncore_early_sanitize (plus move the old comment to the new
      function). Also keep the _santize postfix for intel_uncore_sanitize.]
      [danvet: Squash in fixup spotted by Chris on irc: We need to call
      intel_pm_init before intel_uncore_sanitize since the later will call
      cancel_work on the delayed rps setup work the former initializes.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      907b28c5
  6. 20 7月, 2013 11 次提交
  7. 16 7月, 2013 3 次提交
    • M
      drm/i915: introduce i915_queue_hangcheck · 10cd45b6
      Mika Kuoppala 提交于
      To run hangcheck in near future.
      Signed-off-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      10cd45b6
    • D
      drm/i915: unify GT/PM irq postinstall code · 0a9a8c91
      Daniel Vetter 提交于
      Again extract a common helper. For the postinstall hook things are a
      bit more complicated since we have more cases on ilk-hsw/vlv here.
      
      But since vlv was clearly broken by failing to initialize
      dev_priv->gt_irq_mask correctly the shared code is clearly justified.
      
      Also kill the PMIER setting in the async rps enable work. I should
      have been save, but also clearly looked rather fragile. PMIER setup is
      now all down in the irq pre/postinstall hooks.
      
      With this we now have the usual interrupt register sequence for GT/PM
      irq registers:
      
      - IER is setup once with all the interrupts we ever need in the
        postinstall hook and never touched again. Exceptions are SDEIER,
        which is touched in the preinstall hook (when the irq handler isn't
        enabled) and then only from the irq handler. And DEIER/VLV_IER with
        is used in the irq handler but also written to once in the
        postinstall hook. But since that write is essentially what enables
        the interrupt and we should always have MSI interrupts we should be
        save. In case we ever have non-MSI interrupts we'd be screwed.
      
      - IIR is cleared in the postinstall hook before we enable/unmask the
        respective interrupt sources. Hence we can't steal an interrupt
        event an accidentally trigger the spurious interrupt logic in the
        core kernel. Note that after some discussion with Ben Widawsky we
        think that we actually should clear the IIR registers in the
        preinstall hook. But doing that is a much larger patch series.
      
      - IMR regs are (usually) all masked off. Those are the only regs
        changed at runtime, which is all protected by dev_priv->irq_lock.
      
      This unification also kills the cargo-culted read-modify-write PM
      register setup for VECS. Interrupt setup is done without userspace
      being able to interfere, so we better know what values we want to put
      into those registers. RMW cycles otoh are really good at papering over
      races, until stuff magically blows up and no one has a clue why.
      
      v2: Touch the gen6+ PM interrupt registers only on gen6+.
      
      v3: Improve the commit message to more clearly spell out why we want
      to unify the code and what exactly changes.
      
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      [danvet: Add a comment to explain why the l3 parity interrupt is
      special.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      0a9a8c91
    • D
      drm/i915: unify PM interrupt preinstall sequence · d18ea1b5
      Daniel Vetter 提交于
      Since the addition of VECS we have a slightly different enable
      sequence for PM interrupts on ivb/hsw vs snb and vlv. Usually that
      will end up in hard to track down surprises.
      
      Hence unifiy things and since we have copies of this code in 3 places
      now, extract it into its own little helper.
      
      Note that this changes the irq preinstall sequence a bit for snb and
      vlv: We now also clear the PM registers in the preinstall hook, in
      addition to the PM register clearing/setup already done when actually
      enabling rps. So this doesn't fix a bug but simply unifies the code
      across all platforms. After the postinstall hook is similarly unified
      we can rip out the then redundant PM interrupt setup from the rps
      code.
      
      v3: Rebase on top of the retained double-GTIIR clearing. Also
      resurrect the masking/disabling of the gen6+ PM interrupts as spotted
      by Ben Widaswky.
      
      v4: Move the DE interrupt reset code out of gen5_gt_irq_preinstall
      back to ironlake_irq_preinstall where it really belongs. Spotted by
      Paulo.
      
      v3: Improve the commit message to more clearly spell out why we want
      to unify the code and what exactly changes.
      
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      [danvet: s/GT/PM/ to fix up a comment which Ben spotted while
      reviewing.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d18ea1b5
  8. 13 7月, 2013 1 次提交
  9. 11 7月, 2013 9 次提交
    • D
      drm/i915: don't enable PM_VEBOX_CS_ERROR_INTERRUPT · c0d6a3dd
      Daniel Vetter 提交于
      The code to handle it is broken - there's simply no code to clear CS
      parser errors on gen5+. And behold, for all the other rings we also
      don't enable it!
      
      Leave the handling code itself in place just to be consistent with the
      existing mess though. And in case someone feels like fixing it all up.
      
      This has been errornously enabled in
      
      commit 12638c57
      Author: Ben Widawsky <ben@bwidawsk.net>
      Date:   Tue May 28 19:22:31 2013 -0700
      
          drm/i915: Enable vebox interrupts
      
      Cc: Damien Lespiau <damien.lespiau@intel.com>
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c0d6a3dd
    • D
      drm/i915: kill dev_priv->rps.lock · 59cdb63d
      Daniel Vetter 提交于
      Now that the rps interrupt locking isn't clearly separated (at elast
      conceptually) from all the other interrupt locking having a different
      lock stopped making sense: It protects much more than just the rps
      workqueue it started out with. But with the addition of VECS the
      separation started to blurr and resulted in some more complex locking
      for the ring interrupt refcount.
      
      With this we can (again) unifiy the ringbuffer irq refcounts without
      causing a massive confusion, but that's for the next patch.
      
      v2: Explain better why the rps.lock once made sense and why no longer,
      requested by Ben.
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      59cdb63d
    • D
      drm/i915: queue work outside spinlock in hsw_pm_irq_handler · 2adbee62
      Daniel Vetter 提交于
      And kill the comment about it. Queueing work is a barrier type event,
      no amount of locking will help in ordering things (as long as we queue
      the work after having updated all relevant data structures). Also, the
      queue_work works itself as a sufficient memory barrier.
      
      Again on the surface this is just a tiny micro-optimization to reduce
      the hold-time of dev_priv->irq_lock. But the better reason is that it
      reduces superficial locking and so makes it clearer what we actually
      need for correctness.
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2adbee62
    • D
      drm/i915: streamline hsw_pm_irq_handler · 41a05a3a
      Daniel Vetter 提交于
      The if (pm_iir & ~GEN6_PM_RPS_EVENTS) check was redunandant. Otoh
      adding a check for rps events allows us to avoid the spinlock grabbing
      for VECS interrupts.
      
      v2: Drop misplaced hunk which now moved to the right patch.
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      41a05a3a
    • D
      drm/i915: irq handlers don't need interrupt-safe spinlocks · d0ecd7e2
      Daniel Vetter 提交于
      Since we only have one interrupt handler and interrupt handlers are
      non-reentrant.
      
      To drive the point really home give them all an _irq_handler suffix.
      
      This is a tiny micro-optimization but even more important it makes it
      clearer what locking we actually need. And in case someone screws this
      up: lockdep will catch hardirq vs. other context deadlocks.
      
      v2: Fix up compile fail.
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d0ecd7e2
    • D
      drm/i915: kill lpt pch transcoder->crtc mapping code for fifo underruns · de28075d
      Daniel Vetter 提交于
      It's racy: There's no guarantee that we won't walk this code (due to a
      pch fifo underrun interrupt) while someone is changing the pointers
      around.
      
      The only reason we do this is to use the righ crtc for the pch fifo
      underrun accounting. But we never expose this to userspace, so
      essentially no one really cares if we use the "wrong" crtc.
      
      So let's just rip it out.
      
      With this patch fifo underrun code will always use crtc A for tracking
      underruns on the (only) pch transcoder on LPT.
      
      v2: Add a big comment explaining what's going on. Requested by Paulo.
      
      v3: Fixup spelling in comment as spotted by Paulo.
      
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      de28075d
    • D
      drm/i915: improve GEN7_ERR_INT clearing for fifo underrun reporting · 7336df65
      Daniel Vetter 提交于
      Same treatment as for SERR_INT: If we clear only the bit for the pipe
      we're enabling (but unconditionally) then we can always check for
      possible underruns after having disabled the interrupt. That way pipe
      underruns won't be lost, but at worst only get reported in a delayed
      fashion.
      
      v2: The same logic bug as in the SERR handling change also existed
      here. The same bugfix of only reporting missed underruns when the
      error interrupt was masked applies, too.
      
      v3: Do the same fixes as for the SERR handling that Paulo suggested in
      his review:
      - s/%i/%c/ fix in the debug output
      - move the DE_ERR_INT_IVB read into the respective if block
      
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      [danvet: Fix up the checkpatch bikeshed Paulo noticed.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      7336df65
    • D
      drm/i915: improve SERR_INT clearing for fifo underrun reporting · 1dd246fb
      Daniel Vetter 提交于
      The current code won't report any fifo underruns on cpt if just one
      pipe has fifo underrun reporting disabled. We can't enable the
      interrupts, but we can still check the per-transcoder bits and so
      report the underrun delayed if:
      - We always clear the transcoder's bit (and none of the other bits)
        when enabling.
      - We check the transcoder's bit after disabling (to avoid racing with
        the interrupt handler).
      
      v2: I've forgotten to actually remove the old SERR_INT clearing.
      
      v3: Use transcoder_name as suggested by Paulo Zanoni. Paulo also
      noticed a logic bug: When an underrun interrupt fires we report it
      both in the interrupt handler and when checking for underruns when
      disabling it in cpt_set_fifo_underrun_reporting. But that second check
      is only required if the interrupt is disabled and we're switching of
      underrun reporting (e.g. because we're disabling the crtc). Hence
      check for that condition.
      
      At first I wanted to rework the code to pass that bit of information
      from the uppper functions down to cpt_set_fifo_underrun_reporting. But
      that turned out too messy. Hence the quick&dirty check whether the
      south error interrupt source is masked off or not.
      
      v4: Streamline the control flow a bit.
      
      v5: s/pipe/pch transcoder/ in the dmesg output, suggested by Paulo.
      
      v6: Review from Paulo:
      - Reorder the was_enabled assignment to only read the register when we
        need it. Also add a comment that we need to do that before updating
        the register.
      - s/%i/%c/ fix for the debug output.
      - Fix the checkpath complaint in the SERR_INT_TRANS_FIFO_UNDERRUN
        #define.
      
      v7: Hopefully put that elusive SERR hunk back into this patch, spotted
      by Paulo.
      
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      1dd246fb
    • D
      drm/i915: extract ibx_display_interrupt_update · fee884ed
      Daniel Vetter 提交于
      This way all changes to SDEIMR all go through the same function, with
      the exception of the (single-threaded) setup/teardown code.
      
      For paranoia again add an assert_spin_locked.
      
      v2: For even more paranoia also sprinkle a spinlock assert over
      cpt_can_enable_serr_int since we need to have that one there, too.
      
      v3: Fix the logic of interrupt enabling, add enable/disable macros for
      the simple cases in the fifo code and add a comment. All requested by
      Paulo.
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      fee884ed
  10. 09 7月, 2013 1 次提交
    • B
      drm/i915: Getter/setter for object attributes · f343c5f6
      Ben Widawsky 提交于
      Soon we want to gut a lot of our existing assumptions how many address
      spaces an object can live in, and in doing so, embed the drm_mm_node in
      the object (and later the VMA).
      
      It's possible in the future we'll want to add more getter/setter
      methods, but for now this is enough to enable the VMAs.
      
      v2: Reworked commit message (Ben)
      Added comments to the main functions (Ben)
      sed -i "s/i915_gem_obj_set_color/i915_gem_obj_ggtt_set_color/" drivers/gpu/drm/i915/*.[ch]
      sed -i "s/i915_gem_obj_bound/i915_gem_obj_ggtt_bound/" drivers/gpu/drm/i915/*.[ch]
      sed -i "s/i915_gem_obj_size/i915_gem_obj_ggtt_size/" drivers/gpu/drm/i915/*.[ch]
      sed -i "s/i915_gem_obj_offset/i915_gem_obj_ggtt_offset/" drivers/gpu/drm/i915/*.[ch]
      (Daniel)
      
      v3: Rebased on new reserve_node patch
      Changed DRM_DEBUG_KMS to actually work (will need fixing later)
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f343c5f6