1. 11 7月, 2014 1 次提交
  2. 08 7月, 2014 11 次提交
    • M
      drm: Remove command line guard for universal planes · c7dbc6c9
      Matt Roper 提交于
      Universal planes are ready to leave 'experimental' state so drop the
      kernel command line parameter that we've been hiding them behind.
      Userspace clients that wish to receive universal planes will still need
      to opt-in by setting the appropriate capability bit, so this should have
      no impact on existing userspace.
      Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      c7dbc6c9
    • D
      drm/helper: add Displayport multi-stream helper (v0.6) · ad7f8a1f
      Dave Airlie 提交于
      This is the initial import of the helper for displayport multistream.
      
      It consists of a topology manager, init/destroy/set mst state
      
      It supports DP 1.2 MST sideband msg protocol handler - via hpd irqs
      
      connector detect and edid retrieval interface.
      
      It supports i2c device over DP 1.2 sideband msg protocol (EDID reads only)
      
      bandwidth manager API via vcpi allocation and payload updating,
      along with a helper to check the ACT status.
      
      Objects:
      MST topology manager - one per toplevel MST capable GPU port - not sure if this should be higher level again
      MST branch unit - one instance per plugged branching unit - one at top of hierarchy - others hanging from ports
      MST port - one port per port reported by branching units, can have MST units hanging from them as well.
      
      Changes since initial posting:
      a) add a mutex responsbile for the queues, it locks the sideband and msg slots, and msgs to transmit state
      b) add worker to handle connection state change events, for MST device chaining and hotplug
      c) add a payload spinlock
      d) add path sideband msg support
      e) fixup enum path resources transmit
      f) reduce max dpcd msg to 16, as per DP1.2 spec.
      g) separate tx queue kicking from irq processing and move irq acking back to drivers.
      
      Changes since v0.2:
      a) reorganise code,
      b) drop ACT forcing code
      c) add connector naming interface using path property
      d) add topology dumper helper
      e) proper reference counting and lookup for ports and mstbs.
      f) move tx kicking into a workq
      g) add aux locking - this should be redone
      h) split teardown into two parts
      i) start working on documentation on interface.
      
      Changes since v0.3:
      a) vc payload locking and tracking fixes
      b) add hotplug callback into driver - replaces crazy return 1 scheme
      c) txmsg + mst branch device refcount fixes
      d) don't bail on mst shutdown if device is gone
      e) change irq handler to take all 4 bytes of SINK_COUNT + ESI vectors
      f) make DP payload updates timeout longer - observed on docking station redock
      g) add more info to debugfs dumper
      
      Changes since v0.4:
      a) suspend/resume support
      b) more debugging in debugfs
      
      Changes since v0.5:
      a) use byte * to avoid unnecessary stack usage
      b) fix num_sdp_streams interpretation.
      c) init payload state for unplug events
      d) remove lenovo dock sink count hack
      e) drop aux lock - post rebase
      f) call hotplug on port destroy
      
      TODO:
      misc features
      Reviewed-by: NTodd Previte <tprevite@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      ad7f8a1f
    • D
      drm: add a path blob property · 43aba7eb
      Dave Airlie 提交于
      This property will be used by the MST code to provide userspace
      with a path to parse so it can recognise connectors around hotplugs.
      Reviewed-by: NTodd Previte <tprevite@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      43aba7eb
    • D
      drm/fb_helper: allow adding/removing connectors later · 65c2a89c
      Dave Airlie 提交于
      This is required to get fbcon probing to work on new connectors,
      callers should acquire the mode config lock before calling these.
      Reviewed-by: NTodd Previte <tprevite@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      65c2a89c
    • D
      drm/crtc: add interface to reinitialise the legacy mode group · 2390cd11
      Dave Airlie 提交于
      This can be called to update things after dynamic connectors/encoders
      are created/deleted.
      Reviewed-by: NTodd Previte <tprevite@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      2390cd11
    • T
      drm: Introduce drm_fb_helper_prepare() · 10a23102
      Thierry Reding 提交于
      To implement hotplug detection in a race-free manner, drivers must call
      drm_kms_helper_poll_init() before hotplug events can be triggered. Such
      events can be triggered right after any of the encoders or connectors
      are initialized. At the same time, if the drm_fb_helper_hotplug_event()
      helper is used by a driver, then the poll helper requires some parts of
      the FB helper to be initialized to prevent a crash.
      
      At the same time, drm_fb_helper_init() requires information that is not
      necessarily available at such an early stage (number of CRTCs and
      connectors), so it cannot be used yet.
      
      Add a new helper, drm_fb_helper_prepare(), that initializes the bare
      minimum needed to allow drm_kms_helper_poll_init() to execute and any
      subsequent hotplug events to be processed properly.
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      10a23102
    • T
      drm: Constify struct drm_fb_helper_funcs · 3a493879
      Thierry Reding 提交于
      There's no need for this to be modifiable. Make it const so that it can
      be put into the .rodata section.
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      Acked-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      3a493879
    • C
      drm/ttm: fix handling of TTM_PL_FLAG_TOPDOWN v2 · e3f20279
      Christian König 提交于
      bo->mem.placement is not initialized when ttm_bo_man_get_node is called,
      so the flag had no effect at all.
      
      v2: change nouveau and vmwgfx as well
      Signed-off-by: NChristian König <christian.koenig@amd.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      e3f20279
    • D
      drm: enable render-nodes by default · 6d6dfcfb
      David Herrmann 提交于
      We introduced render-nodes about 1/2 year ago and no problems showed up.
      Remove the drm_rnodes argument and enable them by default now.
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Acked-by: NAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      6d6dfcfb
    • A
      drm/ttm: remove declaration of ttm_tt_cache_flush · 15f8f657
      Alexandre Courbot 提交于
      ttm_tt_cache_flush's implementation was removed in 2009 by commit
      c9c97b8c, but its declaration has been hiding in ttm_bo_driver.h since
      then.
      
      It has been surviving in the dark for too long now ; give it the mercy
      blow.
      Reviewed-by: NThierry Reding <treding@nvidia.com>
      Reviewed-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Signed-off-by: NAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      15f8f657
    • D
      drm/gem: remove misleading gfp parameter to get_pages() · 0cdbe8ac
      David Herrmann 提交于
      drm_gem_get_pages() currently allows passing a 'gfp' parameter that is
      passed to shmem combined with mapping_gfp_mask(). Given that the default
      mapping_gfp_mask() is GFP_HIGHUSER, it is _very_ unlikely that anyone will
      ever make use of that parameter. In fact, all drivers currently pass
      redundant flags or 0.
      
      This patch removes the 'gfp' parameter. The only reason to keep it is to
      remove flags like __GFP_WAIT. But in its current form, it can only be used
      to add flags. So to remove __GFP_WAIT, you'd have to drop it from the
      mapping_gfp_mask, which again is stupid as this mask is used by shmem-core
      for other allocations, too.
      
      If any driver ever requires that parameter, we can introduce a new helper
      that takes the raw 'gfp' parameter. The caller'd be responsible to combine
      it with mapping_gfp_mask() in a suitable way. The current
      drm_gem_get_pages() helper would then simply use mapping_gfp_mask() and
      call the new helper. This is what shmem_read_mapping_pages{_gfp,} does
      right now.
      
      Moreover, the gfp-zone flag-usage is not obvious: If you pass a modified
      zone, shmem core will WARN() or even BUG(). In other words, the following
      must be true for 'gfp' passed to shmem_read_mapping_pages_gfp():
          gfp_zone(mapping_gfp_mask(mapping)) == gfp_zone(gfp)
      Add a comment to drm_gem_read_pages() explaining that constraint.
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      0cdbe8ac
  3. 04 7月, 2014 3 次提交
  4. 03 7月, 2014 2 次提交
    • R
      component: add support for component match array · 6955b582
      Russell King 提交于
      Add support for generating a set of component matches at master probe
      time, and submitting them to the component layer.  This allows the
      component layer to perform the matches internally without needing to
      call into the master driver, and allows for further restructuring of
      the component helper.
      Acked-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      6955b582
    • T
      kernfs: kernfs_notify() must be useable from non-sleepable contexts · ecca47ce
      Tejun Heo 提交于
      d911d987 ("kernfs: make kernfs_notify() trigger inotify events
      too") added fsnotify triggering to kernfs_notify() which requires a
      sleepable context.  There are already existing users of
      kernfs_notify() which invoke it from an atomic context and in general
      it's silly to require a sleepable context for triggering a
      notification.
      
      The following is an invalid context bug triggerd by md invoking
      sysfs_notify() from IO completion path.
      
       BUG: sleeping function called from invalid context at kernel/locking/mutex.c:586
       in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/1
       2 locks held by swapper/1/0:
        #0:  (&(&vblk->vq_lock)->rlock){-.-...}, at: [<ffffffffa0039042>] virtblk_done+0x42/0xe0 [virtio_blk]
        #1:  (&(&bitmap->counts.lock)->rlock){-.....}, at: [<ffffffff81633718>] bitmap_endwrite+0x68/0x240
       irq event stamp: 33518
       hardirqs last  enabled at (33515): [<ffffffff8102544f>] default_idle+0x1f/0x230
       hardirqs last disabled at (33516): [<ffffffff818122ed>] common_interrupt+0x6d/0x72
       softirqs last  enabled at (33518): [<ffffffff810a1272>] _local_bh_enable+0x22/0x50
       softirqs last disabled at (33517): [<ffffffff810a29e0>] irq_enter+0x60/0x80
       CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.16.0-0.rc2.git2.1.fc21.x86_64 #1
       Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
        0000000000000000 f90db13964f4ee05 ffff88007d403b80 ffffffff81807b4c
        0000000000000000 ffff88007d403ba8 ffffffff810d4f14 0000000000000000
        0000000000441800 ffff880078fa1780 ffff88007d403c38 ffffffff8180caf2
       Call Trace:
        <IRQ>  [<ffffffff81807b4c>] dump_stack+0x4d/0x66
        [<ffffffff810d4f14>] __might_sleep+0x184/0x240
        [<ffffffff8180caf2>] mutex_lock_nested+0x42/0x440
        [<ffffffff812d76a0>] kernfs_notify+0x90/0x150
        [<ffffffff8163377c>] bitmap_endwrite+0xcc/0x240
        [<ffffffffa00de863>] close_write+0x93/0xb0 [raid1]
        [<ffffffffa00df029>] r1_bio_write_done+0x29/0x50 [raid1]
        [<ffffffffa00e0474>] raid1_end_write_request+0xe4/0x260 [raid1]
        [<ffffffff813acb8b>] bio_endio+0x6b/0xa0
        [<ffffffff813b46c4>] blk_update_request+0x94/0x420
        [<ffffffff813bf0ea>] blk_mq_end_io+0x1a/0x70
        [<ffffffffa00392c2>] virtblk_request_done+0x32/0x80 [virtio_blk]
        [<ffffffff813c0648>] __blk_mq_complete_request+0x88/0x120
        [<ffffffff813c070a>] blk_mq_complete_request+0x2a/0x30
        [<ffffffffa0039066>] virtblk_done+0x66/0xe0 [virtio_blk]
        [<ffffffffa002535a>] vring_interrupt+0x3a/0xa0 [virtio_ring]
        [<ffffffff81116177>] handle_irq_event_percpu+0x77/0x340
        [<ffffffff8111647d>] handle_irq_event+0x3d/0x60
        [<ffffffff81119436>] handle_edge_irq+0x66/0x130
        [<ffffffff8101c3e4>] handle_irq+0x84/0x150
        [<ffffffff818146ad>] do_IRQ+0x4d/0xe0
        [<ffffffff818122f2>] common_interrupt+0x72/0x72
        <EOI>  [<ffffffff8105f706>] ? native_safe_halt+0x6/0x10
        [<ffffffff81025454>] default_idle+0x24/0x230
        [<ffffffff81025f9f>] arch_cpu_idle+0xf/0x20
        [<ffffffff810f5adc>] cpu_startup_entry+0x37c/0x7b0
        [<ffffffff8104df1b>] start_secondary+0x25b/0x300
      
      This patch fixes it by punting the notification delivery through a
      work item.  This ends up adding an extra pointer to kernfs_elem_attr
      enlarging kernfs_node by a pointer, which is not ideal but not a very
      big deal either.  If this turns out to be an actual issue, we can move
      kernfs_elem_attr->size to kernfs_node->iattr later.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reported-by: NJosh Boyer <jwboyer@fedoraproject.org>
      Cc: Jens Axboe <axboe@kernel.dk>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ecca47ce
  5. 01 7月, 2014 1 次提交
  6. 29 6月, 2014 1 次提交
  7. 28 6月, 2014 1 次提交
  8. 27 6月, 2014 3 次提交
  9. 26 6月, 2014 1 次提交
    • E
      ipv4: fix dst race in sk_dst_get() · f8864972
      Eric Dumazet 提交于
      When IP route cache had been removed in linux-3.6, we broke assumption
      that dst entries were all freed after rcu grace period. DST_NOCACHE
      dst were supposed to be freed from dst_release(). But it appears
      we want to keep such dst around, either in UDP sockets or tunnels.
      
      In sk_dst_get() we need to make sure dst refcount is not 0
      before incrementing it, or else we might end up freeing a dst
      twice.
      
      DST_NOCACHE set on a dst does not mean this dst can not be attached
      to a socket or a tunnel.
      
      Then, before actual freeing, we need to observe a rcu grace period
      to make sure all other cpus can catch the fact the dst is no longer
      usable.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Reported-by: NDormando <dormando@rydia.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f8864972
  10. 25 6月, 2014 2 次提交
  11. 24 6月, 2014 4 次提交
  12. 23 6月, 2014 2 次提交
  13. 22 6月, 2014 1 次提交
  14. 21 6月, 2014 2 次提交
  15. 19 6月, 2014 4 次提交
  16. 18 6月, 2014 1 次提交