1. 04 9月, 2013 23 次提交
    • J
      drm/i915: add more VLV IOSF sideband ports accessors · e9f882a3
      Jani Nikula 提交于
      For GPIO NC, CCK, CCU, and GPS CORE.
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NShobhit Kumar <shobhit.kumar@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      e9f882a3
    • S
    • C
      drm/i915: Always prefer CPU relocations with LLC · 2cc86b82
      Chris Wilson 提交于
      A follow-on to the update of the LLC coherency logic is that we can rely
      on the LLC being coherent with the CS for rewriting batchbuffers
      irrespective of their cache domain. (This should have no effect
      currently as all the batch buffers are expected to be I915_CACHE_LLC and
      so using the cpu relocation path anyway.)
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2cc86b82
    • D
      drm/i915: More vma fixups around unbind/destroy · b93dab6e
      Daniel Vetter 提交于
      The important bugfix here is that we must not unlink the vma when
      we keep it around as a placeholder for the execbuf code. Since then we
      won't find it again when execbuf gets interrupt and restarted and
      create a 2nd vma. And since the code as-is isn't fit yet to deal with
      more than one vma, hilarity ensues.
      
      Specifically the dma map/unmap of the sg table isn't adjusted for
      multiple vmas yet and will blow up like this:
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
      IP: [<ffffffffa008fb37>] i915_gem_gtt_finish_object+0x73/0xc8 [i915]
      PGD 56bb5067 PUD ad3dd067 PMD 0
      Oops: 0000 [#1] SMP
      Modules linked in: tcp_lp ppdev parport_pc lp parport ipv6 dm_mod dcdbas snd_hda_codec_hdmi pcspkr snd_hda_codec_realtek serio_raw i2c_i801 iTCO_wdt iTCO_vendor_support snd_hda_intel snd_hda_codec lpc_ich snd_hwdep mfd_core snd_pcm snd_page_alloc snd_timer snd soundcore acpi_cpufreq i915 video button drm_kms_helper drm mperf freq_table
      CPU: 1 PID: 16650 Comm: fbo-maxsize Not tainted 3.11.0-rc4_nightlytop_d93f59_debug_20130814_+ #6957
      Hardware name: Dell Inc. OptiPlex 9010/03JR84, BIOS A01 05/04/2012
      task: ffff8800563b3f00 ti: ffff88004bdf4000 task.ti: ffff88004bdf4000
      RIP: 0010:[<ffffffffa008fb37>]  [<ffffffffa008fb37>] i915_gem_gtt_finish_object+0x73/0xc8 [i915]
      RSP: 0018:ffff88004bdf5958  EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffff8801135e0000 RCX: ffff8800ad3bf8e0
      RDX: ffff8800ad3bf8e0 RSI: 0000000000000000 RDI: ffff8801007ee780
      RBP: ffff88004bdf5978 R08: ffff8800ad3bf8e0 R09: 0000000000000000
      R10: ffffffff86ca1810 R11: ffff880036a17101 R12: ffff8801007ee780
      R13: 0000000000018001 R14: ffff880118c4e000 R15: ffff8801007ee780
      FS:  00007f401a0ce740(0000) GS:ffff88011e280000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000008 CR3: 000000005635c000 CR4: 00000000001407e0
      Stack:
       ffff8801007ee780 ffff88005c253180 0000000000018000 ffff8801135e0000
       ffff88004bdf59a8 ffffffffa0088e55 0000000000000011 ffff8801007eec00
       0000000000018000 ffff880036a17101 ffff88004bdf5a08 ffffffffa0089026
      Call Trace:
       [<ffffffffa0088e55>] i915_vma_unbind+0xdf/0x1ab [i915]
       [<ffffffffa0089026>] __i915_gem_shrink+0x105/0x177 [i915]
       [<ffffffffa0089452>] i915_gem_object_get_pages_gtt+0x108/0x309 [i915]
       [<ffffffffa0085ba9>] i915_gem_object_get_pages+0x61/0x90 [i915]
       [<ffffffffa008f22b>] ? gen6_ppgtt_insert_entries+0x103/0x125 [i915]
       [<ffffffffa008a113>] i915_gem_object_pin+0x1fa/0x5df [i915]
       [<ffffffffa008cdfe>] i915_gem_execbuffer_reserve_object.isra.6+0x8d/0x1bc [i915]
       [<ffffffffa008d156>] i915_gem_execbuffer_reserve+0x229/0x367 [i915]
       [<ffffffffa008dbf6>] i915_gem_do_execbuffer.isra.12+0x4dc/0xf3a [i915]
       [<ffffffff810fc823>] ? might_fault+0x40/0x90
       [<ffffffffa008eb89>] i915_gem_execbuffer2+0x187/0x222 [i915]
       [<ffffffffa000971c>] drm_ioctl+0x308/0x442 [drm]
       [<ffffffffa008ea02>] ? i915_gem_execbuffer+0x3ae/0x3ae [i915]
       [<ffffffff817db156>] ? __do_page_fault+0x3dd/0x481
       [<ffffffff8112fdba>] vfs_ioctl+0x26/0x39
       [<ffffffff811306a2>] do_vfs_ioctl+0x40e/0x451
       [<ffffffff817deda7>] ? sysret_check+0x1b/0x56
       [<ffffffff8113073c>] SyS_ioctl+0x57/0x87
       [<ffffffff8135bbfe>] ? trace_hardirqs_on_thunk+0x3a/0x3f
       [<ffffffff817ded82>] system_call_fastpath+0x16/0x1b
      Code: 48 c7 c6 84 30 0e a0 31 c0 e8 d0 e9 f7 ff bf c6 a7 00 00 e8 07 af 2c e1 41 f6 84 24 03 01 00 00 10 75 44 49 8b 84 24 08 01 00 00 <8b> 50 08 48 8b 30 49 8b 86 b0 04 00 00 48 89 c7 48 81 c7 98 00
      RIP  [<ffffffffa008fb37>] i915_gem_gtt_finish_object+0x73/0xc8 [i915]
       RSP <ffff88004bdf5958>
      CR2: 0000000000000008
      
      As a consequence we need to change the "only one vma for now" check in
      vma_unbind - since vma_destroy isn't always called the obj->vma_list
      might not be empty. Instead check that the vma list is singular at the
      beginning of vma_unbind. This is also more symmetric with bind_to_vm.
      
      This fixes the igt/gem_evict_everything|alignment testcases.
      
      v2:
      - Add a paranoid WARN to mark_free in the eviction code to make sure
        we never try to evict a vma used by the execbuf code right now.
      - Move the check for a temporary execbuf vma into vma_destroy -
        otherwise the failure path cleanup in bind_to_vm will blow up.
      
      Our first attempting at fixing this was
      
      commit 1be81a2f2cfd8789a627401d470423358fba2d76
      Author: Chris Wilson <chris@chris-wilson.co.uk>
      Date:   Tue Aug 20 12:56:40 2013 +0100
      
          drm/i915: Don't destroy the vma placeholder during execbuffer reservation
      
      Squash with this when merging!
      
      v3: Improvements suggested in Chris' review:
      - Move the WARN_ON in vma_destroy that checks for vmas with an drm_mm
        allocation before the early return.
      - Bail out if we hit the WARN in mark_free to hopefully make the
        kernel survive for long enough to capture it.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68298
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68171
      Tested-by: lu hua <huax.lu@intel.com> (v2)
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b93dab6e
    • C
      drm/i915: Don't destroy the vma placeholder during execbuffer reservation · aaa05667
      Chris Wilson 提交于
      The execbuffer handle and exec_link were moved from the object into the
      vma. As the vma may be unbound and destroyed whilst attempting to
      reserve the execbuffer objects (either through a forced unbind to fix up
      a misalignment or through an evict-everything call) we need to prevent
      the free of the i915_vma itself. Otherwise not only is the list of
      objects to reserve corrupt, but we continue to reference stale vma
      entries.
      
      Fixes kernel crash with i-g-t/gem_evict_everything
      
      This regression has been introduced in
      
      commit 04038a515d6eda6dd0857c0ade0b3950d372f4c0
      Author:     Ben Widawsky <ben@bwidawsk.net>
      AuthorDate: Wed Aug 14 11:38:36 2013 +0200
      
          drm/i915: Convert execbuf code to use vmas
      Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
      References: http://www.spinics.net/lists/intel-gfx/msg32038.html
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68298Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      aaa05667
    • D
      drm/i915: inline vma_create into lookup_or_create_vma · e656a6cb
      Daniel Vetter 提交于
      In the execbuf code we don't clean up any vmas which ended up not
      getting bound for code simplicity. To make sure that we don't end up
      creating multiple vma for the same vm kill the somewhat dangerous
      vma_create function and inline it into lookup_or_create.
      
      This is just a safety measure to prevent surprises in the future.
      
      Also update the somewhat confused comment in the execbuf code and
      clarify what kind of magic is going on with a new one.
      
      v2: Keep the function separate as requested by Chris. But give it a __
      prefix for paranoia and move it tighter together with the other vma
      stuff.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Acked-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      e656a6cb
    • B
      drm/i915: Convert execbuf code to use vmas · 27173f1f
      Ben Widawsky 提交于
      In order to transition more of our code over to using a VMA instead of
      an <OBJ, VM> pair - we must have the vma accessible at execbuf time. Up
      until now, we've only had a VMA when actually binding an object.
      
      The previous patch helped handle the distinction on bound vs. unbound.
      This patch will help us catch leaks, and other issues before we actually
      shuffle a bunch of stuff around.
      
      This attempts to convert all the execbuf code to speak in vmas. Since
      the execbuf code is very self contained it was a nice isolated
      conversion.
      
      The meat of the code is about turning eb_objects into eb_vma, and then
      wiring up the rest of the code to use vmas instead of obj, vm pairs.
      
      Unfortunately, to do this, we must move the exec_list link from the obj
      structure. This list is reused in the eviction code, so we must also
      modify the eviction code to make this work.
      
      WARNING: This patch makes an already hotly profiled path slower. The cost is
      unavoidable. In reply to this mail, I will attach the extra data.
      
      v2: Release table lock early, and two a 2 phase vma lookup to avoid
      having to use a GFP_ATOMIC. (Chris)
      
      v3: s/obj_exec_list/obj_exec_link/
      Updates to address
      commit 6d2b8885
      Author: Chris Wilson <chris@chris-wilson.co.uk>
      Date:   Wed Aug 7 18:30:54 2013 +0100
      
          drm/i915: List objects allocated from stolen memory in debugfs
      
      v4: Use obj = vma->obj for neatness in some places (Chris)
      need_reloc_mappable() should return false if ppgtt (Chris)
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      [danvet: Split out prep patches. Also remove a FIXME comment which is
      now taken care of.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      27173f1f
    • D
      drm/i915: fix i9xx_crtc_clock_get for multiplied pixels · a2dc53e7
      Daniel Vetter 提交于
      The dpll actually runs at the port clock so we don't need
      to multiply it again with the pixel multiplier to get the
      adjusted_mode.clock. This is in contrast to the ironlake
      pixel clock readout code which uses the fdi dotclock: That
      one does _not_ run with multiplied pixels.
      
      This issue goes back to the original clock readout code added
      in
      
      commit f1f644dc
      Author: Jesse Barnes <jbarnes@virtuousgeek.org>
      Date:   Thu Jun 27 00:39:25 2013 +0300
      
          drm/i915: get mode clock when reading the pipe config v9
      
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      a2dc53e7
    • D
      drm/i915: handle sdvo input pixel multiplier correctly again · eeb47937
      Daniel Vetter 提交于
      The sdvo input timing needs to be the actual mode, the sdvo
      encoder automatically adjusts for the need of pixel doubling or
      quadrupling. This was lost in pipe config conversion of the
      pixel multiplier in
      
      commit 6cc5f341
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Wed Mar 27 00:44:53 2013 +0100
      
          drm/i915: add pipe_config->pixel_multiplier
      
      While at it ditch the intel_ prefix from the crtc in
      intel_sdvo_mode_set.
      
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      eeb47937
    • D
      drm/i915: fix hpd work vs. flush_work in the pageflip code deadlock · 645416f5
      Daniel Vetter 提交于
      Historically we've run our own driver hotplug handling in our own
      work-queue, which then launched the drm core hotplug handling in the
      system workqueue. This is important since we flush our own driver
      workqueue in the pageflip code while hodling modeset locks, and only
      the drm hotplug code grabbed these locks. But with
      
      commit 69787f7d
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Tue Oct 23 18:23:34 2012 +0000
      
          drm: run the hpd irq event code directly
      
      this was changed and now we could deadlock in our flip handler if
      there's a hotplug work blocking the progress of the crucial unpin
      works. So this broke the careful deadlock avoidance implemented in
      
      commit b4a98e57
      Author: Chris Wilson <chris@chris-wilson.co.uk>
      Date:   Thu Nov 1 09:26:26 2012 +0000
      
          drm/i915: Flush outstanding unpin tasks before pageflipping
      
      Since the rule thus far has been that work items on our own workqueue
      may never grab modeset locks simply restore that rule again.
      
      v2: Add a comment to the declaration of dev_priv->wq to warn readers
      about the tricky implications of using it. Suggested by Chris Wilson.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Stuart Abercrombie <sabercrombie@chromium.org>
      Reported-by: NStuart Abercrombie <sabercrombie@chromium.org>
      References: http://permalink.gmane.org/gmane.comp.freedesktop.xorg.drivers.intel/26239
      Cc: stable@vger.kernel.org
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      [danvet: Squash in a comment at the place where we schedule the work.
      Requested after-the-fact by Chris on irc since the hpd work isn't the
      only place we botch this.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      645416f5
    • D
      drm/i915: fix up the relocate_entry refactoring · d4d36014
      Daniel Vetter 提交于
      Somehow we've lost the error handling in the patch split-up between
      the internal and external patch. This regression has been introduced
      in
      
      commit 5032d871
      Author: Rafael Barbalho <rafael.barbalho@intel.com>
      Date:   Wed Aug 21 17:10:51 2013 +0100
      
          drm/i915: Cleaning up the relocate entry function
      
      This bug is exercised by igt/gem_reloc_vs_gpu/interruptible.
      
      Cc: Rafael Barbalho <rafael.barbalho@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d4d36014
    • V
      drm/i915: Fix pipe config warnings when dealing with LVDS fixed mode · 4c6df4b4
      Ville Syrjälä 提交于
      intel_fixed_panel_mode() overwrote the adjusted_mode with the fixed mode
      only partially. Notably it forgot to copy over the sync flags. The LVDS code however programmed the hardware with the sync flags from fixed mode, and then later the pipe config comparison obviously failed as we
      filled out the adjusted_mode in get_config from the real registers.
      
      Just call drm_mode_copy() in intel_fixed_panel_mode() to copy over the
      whole thing, and then just use adjusted_mode in the LVDS code to figure
      out which sync settings the hardware needs.
      
      Also constify the fixed_mode argument to intel_fixed_panel_mode().
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4c6df4b4
    • D
      drm/i915: Don't call sg_free_table() if sg_alloc_table() fails · d2933a5b
      Damien Lespiau 提交于
      One needs to call __sg_free_table() if __sg_alloc_table() fails, but
      sg_alloc_table() does that for us already.
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Reviewd-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d2933a5b
    • A
      i915: Update VGA arbiter support for newer devices · 81b5c7bc
      Alex Williamson 提交于
      This is intended to add VGA arbiter support for Intel HD graphics on
      Core processors.  The old GMCH registers no longer exist, so even
      though it appears that i915 participates in VGA arbitration, it doesn't
      work.  On Intel HD graphics we already attempt to disable VGA regions
      of the device.  This makes registering as a VGA client unnecessary since
      we don't intend to operate differently depending on how many VGA devices
      are present.  We can disable VGA memory regions by clearing the memory
      enable bit in the VGA MSR.  That only leaves VGA IO, which we update
      the VGA arbiter to know that we don't participate in VGA memory
      arbitration.  We also add a hook on unload to re-enable memory and
      reinstate VGA memory arbitration.
      
      v3: Use explicit LEGACY_IO | LEGACY_MEM when restoring rather than
          LEGACY_MASK, per Ville's comments.
      
      v2: I915_READ/WRITE accessors don't work in i915_disable_vga, use inb/outb
          directly.  Also, on the driver unbind VGA enable path, acquire legacy
          IO to re-enable VGA memory.  Correct comment.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      [danvet: Add patch changelog. Also squash in a fixup to have a dummy
      static inline for vga_set_legacy_decoding for CONFIG_VGA_ARB=n as
      reported by the 0-day kernel build bot.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      
      fixup 2
      81b5c7bc
    • A
      vgaarb: Fix VGA decodes changes · 5c0f6ee7
      Alex Williamson 提交于
      When VGA decodes change we need to do a bit more evaluation of exactly what
      has changed.  We don't necessarily give up all the old owns resources and
      we need to account for resources with locks.  The new algorithm is: If
      something is added, update decodes.  If legacy resources were added and
      none were there before, we have a new participant.  If something is
      removed, update decodes.  If we previously owned it, we no longer own it.
      If it was previously locked, invalidate all locks and release it.  If
      legacy resources were removed and none are left, remove the participant
      from VGA arbitration.
      
      Previously we updated decodes, released ownership of everything that was
      previously decoded, ignored all locks, and went off looking for another
      device to transfer VGA to.  In a test case where Intel IGD removes only
      legacy VGA memory decoding, this left the arbiter switching to discrete
      graphics without actually disabling legacy VGA IO from the IGD.  As a
      bonus, we bumped up the count of VGA arbitration participants for no
      good reason.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Acked-by: NDave Airlie <airlied@redhat.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      [danvet: Kill now unused variables, reported by the 0-day kernel
      builtbot.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5c0f6ee7
    • A
      vgaarb: Don't disable resources that are not owned · f22d776f
      Alex Williamson 提交于
      If a device does not own a resource then we don't need to disable it.
      This resolves the case where an Intel IGD device can be configured to
      disable decode of VGA memory but we still need the arbiter to handle
      VGA I/O port routing.  When the IGD device is in conflict, only
      PCI_COMMAND_IO should be disabled since VGA memory does not require
      arbitration on this device.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Acked-by: NDave Airlie <airlied@redhat.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f22d776f
    • C
      drm/i915: Pin pages whilst mapping the dma-buf · 5cfacded
      Chris Wilson 提交于
      As we attempt to kmalloc after calling get_pages, there is a possibility
      that the shrinker may reap the pages we just acquired. To prevent this
      we need to increment the pages_pin_count early, so rearrange the code
      and error paths to make it so.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5cfacded
    • P
      drm/i915: enable trickle feed on Haswell · 1f5d76db
      Paulo Zanoni 提交于
      We shouldn't disable the trickle feed bits on Haswell. Our
      documentation explicitly says the trickle feed bits of PRI_CTL and
      CUR_CTL should not be programmed to 1, and the hardware engineer also
      asked us to not program the SPR_CTL field to 1. Leaving the bits as 1
      could cause underflows.
      Reported-by: NArthur Runyan <arthur.j.runyan@intel.com>
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      1f5d76db
    • J
      x86: add early quirk for reserving Intel graphics stolen memory v5 · 814c5f1f
      Jesse Barnes 提交于
      Systems with Intel graphics controllers set aside memory exclusively for
      gfx driver use.  This memory is not always marked in the E820 as
      reserved or as RAM, and so is subject to overlap from E820 manipulation
      later in the boot process.  On some systems, MMIO space is allocated on
      top, despite the efforts of the "RAM buffer" approach, which simply
      rounds memory boundaries up to 64M to try to catch space that may decode
      as RAM and so is not suitable for MMIO.
      
      v2: use read_pci_config for 32 bit reads instead of adding a new one
          (Chris)
          add gen6 stolen size function (Chris)
      v3: use a function pointer (Chris)
          drop gen2 bits (Daniel)
      v4: call e820_sanitize_map after adding the region
      v5: fixup comments (Peter)
          simplify loop (Chris)
      Acked-by: NIngo Molnar <mingo@kernel.org>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Acked-by: NH. Peter Anvin <hpa@zytor.com>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=66726
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=66844Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      814c5f1f
    • J
      drm/i915: split PCI IDs out into i915_drm.h v4 · a0a18075
      Jesse Barnes 提交于
      For use by userspace (at some point in the future) and other kernel code.
      
      v2: move PCI IDs to uabi (Chris)
          move PCI IDs to drm/ (Dave)
      v3: fixup Quanta detection - needs to come first (Daniel)
      v4: fix up PCI match structure init for easier use by userspace (Chris)
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      a0a18075
    • J
      i915_gem: Convert kmem_cache_alloc(...GFP_ZERO) to kmem_cache_zalloc · fac15c10
      Joe Perches 提交于
      The helper exists, might as well use it instead of __GFP_ZERO.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      fac15c10
    • C
      drm/i915: Use RCS flips on Ivybridge+ · ffe74d75
      Chris Wilson 提交于
      RCS flips do work on Iybridge+ so long as we can unmask the messages
      through DERRMR. However, there are quite a few workarounds mentioned
      regarding unmasking more than one event or triggering more than one
      message through DERRMR. Those workarounds in principle prevent us from
      performing pipelined flips (and asynchronous flips across multiple
      planes) and equally apply to the "known good" BCS ring. Given that it
      already appears to work, and also appears to work with unmasking all 3
      planes at once (and queuing flips across multiple planes), be brave.
      
      Bugzlla: https://bugs.freedesktop.org/show_bug.cgi?id=67600Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Lightly-tested-by: NStephane Marchesin <marchesin@icps.u-strasbg.fr>
      Cc: Stephane Marchesin <marchesin@icps.u-strasbg.fr>
      Cc: Ben Widawsky <ben@bwidawsk.net>
      Tested-by: NStéphane Marchesin <marcheu@chromium.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ffe74d75
    • C
      drm/i915: Embed the ring->private within the struct intel_ring_buffer · 0d1aacac
      Chris Wilson 提交于
      We now have more devices using ring->private than not, and they all want
      the same structure. Worse, I would like to use a scratch page from
      outside of intel_ringbuffer.c and so for convenience would like to reuse
      ring->private. Embed the object into the struct intel_ringbuffer so that
      we can keep the code clean.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      0d1aacac
  2. 03 9月, 2013 7 次提交
  3. 02 9月, 2013 9 次提交
    • C
      drm/radeon: support render nodes · f33bcab9
      Christian König 提交于
      Enable support for drm render nodes for radeon by flagging the ioctls that
      are safe and just needed for rendering.
      Signed-off-by: NChristian König <christian.koenig@amd.com>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      f33bcab9
    • M
      drm/nouveau: Support render nodes · 7d761258
      Martin Peres 提交于
      Enable support for drm render nodes for nouveau by flagging the ioctls that
      are safe and just needed for rendering.
      
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Signed-off-by: NMartin Peres <martin.peres@labri.fr>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      7d761258
    • K
      drm/i915: Support render nodes · 10ba5012
      Kristian Høgsberg 提交于
      Enable support for drm render nodes for i915 by flagging the ioctls that
      are safe and just needed for rendering.
      
      v2: mark reg_read, set_caching and get_caching (ickle, danvet)
      Signed-off-by: NKristian Høgsberg <krh@bitplanet.net>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      10ba5012
    • D
      drm: fix DRM_IOCTL_MODE_GETFB handle-leak · 101b96f3
      David Herrmann 提交于
      DRM_IOCTL_MODE_GETFB is used to retrieve information about a given
      framebuffer ID. It is a read-only helper and was thus declassified for
      unprivileged access in:
      
        commit a14b1b42
        Author: Mandeep Singh Baines <mandeep.baines@gmail.com>
        Date:   Fri Jan 20 12:11:16 2012 -0800
      
            drm: remove master fd restriction on mode setting getters
      
      However, alongside width, height and stride information,
      DRM_IOCTL_MODE_GETFB also passes back a handle to the underlying buffer of
      the framebuffer. This handle allows users to mmap() it and read or write
      into it. Obviously, this should be restricted to DRM-Master.
      
      With the current setup, *any* process with access to /dev/dri/card0 (which
      means any process with access to hardware-accelerated rendering) can
      access the current screen framebuffer and modify it ad libitum.
      
      For backwards-compatibility reasons we want to keep the
      DRM_IOCTL_MODE_GETFB call unprivileged. Besides, it provides quite useful
      information regarding screen setup. So we simply test whether the caller
      is the current DRM-Master and if not, we return 0 as handle, which is
      always invalid. A following DRM_IOCTL_GEM_CLOSE on this handle will fail
      with EINVAL, but we accept this. Users shouldn't test for errors during
      GEM_CLOSE, anyway. And it is still better as a failing MODE_GETFB call.
      
      v2: add capable(CAP_SYS_ADMIN) check for compatibility with i-g-t
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      101b96f3
    • R
      drm/msm: convert to drm_bridge · a3376e3e
      Rob Clark 提交于
      Drop the msm_connector base class, and special calls to base class
      methods from the encoder, and use instead drm_bridge.  This allows for a
      cleaner division between the hdmi (and in future dsi) blocks, from the
      mdp block.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      a3376e3e
    • S
      drm: Add drm_bridge · 3b336ec4
      Sean Paul 提交于
      This patch adds the notion of a drm_bridge. A bridge is a chained
      device which hangs off an encoder. The drm driver using the bridge
      should provide the association between encoder and bridge. Once a
      bridge is associated with an encoder, it will participate in mode
      set, and dpms (via the enable/disable hooks).
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      3b336ec4
    • D
      drm/nouveau: fix up 32-bit ioctls and device wake up. · 2254f637
      Dave Airlie 提交于
      Noticed by kbuild test robot.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      2254f637
    • D
      drm/tegra: fix up page flip flags. · a5b6f74e
      Dave Airlie 提交于
      This was one level away from where I'd grepped.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      a5b6f74e
    • D
      Merge branch 'drm-next-3.12' of git://people.freedesktop.org/~agd5f/linux into drm-next · 9c725e5b
      Dave Airlie 提交于
      Alex writes:
      This is the radeon drm-next request.  Big changes include:
      - support for dpm on CIK parts
      - support for ASPM on CIK parts
      - support for berlin GPUs
      - major ring handling cleanup
      - remove the old 3D blit code for bo moves in favor of CP DMA or sDMA
      - lots of bug fixes
      
      [airlied: fix up a bunch of conflicts from drm_order removal]
      
      * 'drm-next-3.12' of git://people.freedesktop.org/~agd5f/linux: (898 commits)
        drm/radeon/dpm: make sure dc performance level limits are valid (CI)
        drm/radeon/dpm: make sure dc performance level limits are valid (BTC-SI) (v2)
        drm/radeon: gcc fixes for extended dpm tables
        drm/radeon: gcc fixes for kb/kv dpm
        drm/radeon: gcc fixes for ci dpm
        drm/radeon: gcc fixes for si dpm
        drm/radeon: gcc fixes for ni dpm
        drm/radeon: gcc fixes for trinity dpm
        drm/radeon: gcc fixes for sumo dpm
        drm/radeonn: gcc fixes for rv7xx/eg/btc dpm
        drm/radeon: gcc fixes for rv6xx dpm
        drm/radeon: gcc fixes for radeon_atombios.c
        drm/radeon: enable UVD interrupts on CIK
        drm/radeon: fix init ordering for r600+
        drm/radeon/dpm: only need to reprogram uvd if uvd pg is enabled
        drm/radeon: check the return value of uvd_v1_0_start in uvd_v1_0_init
        drm/radeon: split out radeon_uvd_resume from uvd_v4_2_resume
        radeon kms: fix uninitialised hotplug work usage in r100_irq_process()
        drm/radeon/audio: set up the sads on DCE3.2 asics
        drm/radeon: fix handling of variable sized arrays for router objects
        ...
      
      Conflicts:
      	drivers/gpu/drm/i915/i915_dma.c
      	drivers/gpu/drm/i915/i915_gem_dmabuf.c
      	drivers/gpu/drm/i915/intel_pm.c
      	drivers/gpu/drm/radeon/cik.c
      	drivers/gpu/drm/radeon/ni.c
      	drivers/gpu/drm/radeon/r600.c
      9c725e5b
  4. 31 8月, 2013 1 次提交