1. 06 Sep, 2016 2 commits
    • Xie XiuQi's avatar
      drm: fix signed integer overflow · ae0119f5
      Xie XiuQi authored
      Use 1UL for unsigned long, or we'll meet a overflow issue with UBSAN.
      
      [   15.589489] UBSAN: Undefined behaviour in drivers/gpu/drm/drm_hashtab.c:145:35
      [   15.589500] signed integer overflow:
      [   15.589999] -2147483648 - 1 cannot be represented in type 'int'
      [   15.590434] CPU: 2 PID: 294 Comm: plymouthd Not tainted 3.10.0-327.28.3.el7.x86_64 #1
      [   15.590653] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 01/07/2011
      [   15.591001]  1ffff1000670fe83 000000000d6b385e ffff88003387f3e0 ffffffff81ee3140
      [   15.591028]  ffff88003387f3f8 ffffffff81ee31fd ffffffffa032f460 ffff88003387f560
      [   15.591044]  ffffffff81ee46e2 0000002d00000009 0000000000000001 0000000041b58ab3
      [   15.591059] Call Trace:
      [   15.591078]  [<ffffffff81ee3140>] dump_stack+0x1e/0x20
      [   15.591093]  [<ffffffff81ee31fd>] ubsan_epilogue+0x12/0x55
      [   15.591109]  [<ffffffff81ee46e2>] handle_overflow+0x1ba/0x215
      [   15.591126]  [<ffffffff81ee4528>] ? __ubsan_handle_negate_overflow+0x162/0x162
      [   15.591146]  [<ffffffff8103416c>] ? print_context_stack+0x9c/0x160
      [   15.591163]  [<ffffffff81031df2>] ? dump_trace+0x252/0x750
      [   15.591181]  [<ffffffff81739023>] ? __list_add+0x93/0x160
      [   15.591197]  [<ffffffff81ee4798>] __ubsan_handle_sub_overflow+0x2a/0x31
      [   15.591261]  [<ffffffffa0282140>] drm_ht_just_insert_please+0x1e0/0x200 [drm]
      [   15.591290]  [<ffffffffa0528c7a>] ttm_base_object_init+0x10a/0x270 [ttm]
      [   15.591316]  [<ffffffffa052a34c>] ttm_vt_lock+0x28c/0x3a0 [ttm]
      [   15.591343]  [<ffffffffa052a0c0>] ? ttm_write_lock+0x180/0x180 [ttm]
      [   15.591362]  [<ffffffff81419526>] ? kasan_unpoison_shadow+0x36/0x50
      [   15.591379]  [<ffffffff81419526>] ? kasan_unpoison_shadow+0x36/0x50
      [   15.591396]  [<ffffffff81419526>] ? kasan_unpoison_shadow+0x36/0x50
      [   15.591413]  [<ffffffff81419526>] ? kasan_unpoison_shadow+0x36/0x50
      [   15.591442]  [<ffffffffa061cbe1>] vmw_master_set+0x121/0x470 [vmwgfx]
      [   15.591459]  [<ffffffff811773a5>] ? __init_waitqueue_head+0x45/0x70
      [   15.591487]  [<ffffffffa061cac0>] ? vmw_master_drop+0x310/0x310 [vmwgfx]
      [   15.591535]  [<ffffffffa026946a>] drm_open+0x92a/0xc00 [drm]
      [   15.591563]  [<ffffffffa0619ff0>] ? vmw_driver_open+0x170/0x170 [vmwgfx]
      [   15.591610]  [<ffffffffa0268b40>] ? drm_poll+0xe0/0xe0 [drm]
      [   15.591661]  [<ffffffffa02797b4>] drm_stub_open+0x224/0x330 [drm]
      [   15.591711]  [<ffffffffa0279590>] ? drm_minor_acquire+0x240/0x240 [drm]
      [   15.591727]  [<ffffffff8145fa8a>] chrdev_open+0x1fa/0x3f0
      [   15.591742]  [<ffffffff8145f890>] ? cdev_put+0x50/0x50
      [   15.591761]  [<ffffffff814f6dc3>] ? __fsnotify_parent+0x53/0x210
      [   15.591778]  [<ffffffff8144fde1>] do_dentry_open+0x351/0x670
      [   15.591792]  [<ffffffff8145f890>] ? cdev_put+0x50/0x50
      [   15.591807]  [<ffffffff814503c2>] vfs_open+0xa2/0x170
      [   15.591824]  [<ffffffff8147b5df>] do_last+0xccf/0x2c80
      [   15.591842]  [<ffffffff8147a910>] ? filename_create+0x320/0x320
      [   15.591858]  [<ffffffff81472549>] ? path_init+0x1b9/0xa90
      [   15.591875]  [<ffffffff81472390>] ? mountpoint_last+0x9a0/0x9a0
      [   15.591894]  [<ffffffff815f9ccf>] ? selinux_file_alloc_security+0xcf/0x130
      [   15.591911]  [<ffffffff8147d777>] path_openat+0x1e7/0xcc0
      [   15.591927]  [<ffffffff81031df2>] ? dump_trace+0x252/0x750
      [   15.591943]  [<ffffffff8147d590>] ? do_last+0x2c80/0x2c80
      [   15.591959]  [<ffffffff81739023>] ? __list_add+0x93/0x160
      [   15.591974]  [<ffffffff8104b48d>] ? save_stack_trace+0x7d/0xb0
      [   15.591989]  [<ffffffff81480824>] do_filp_open+0xa4/0x160
      [   15.592004]  [<ffffffff81480780>] ? user_path_mountpoint_at+0x50/0x50
      [   15.592022]  [<ffffffff8149d755>] ? __alloc_fd+0x175/0x300
      [   15.592039]  [<ffffffff81453127>] do_sys_open+0x1b7/0x3f0
      [   15.592054]  [<ffffffff81452f70>] ? filp_open+0x80/0x80
      [   15.592070]  [<ffffffff81453392>] SyS_open+0x32/0x40
      [   15.592088]  [<ffffffff81f08989>] system_call_fastpath+0x16/0x1b
      Signed-off-by: default avatarXie XiuQi <xiexiuqi@huawei.com>
      [seanpaul tweaked subject to remove "gpu/"]
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Link: http://patchwork.freedesktop.org/patch/msgid/1473152138-25335-1-git-send-email-xiexiuqi@huawei.com
      ae0119f5
    • Maarten Lankhorst's avatar
      drm/atomic: Reject properties not part of the object. · 4e9951d9
      Maarten Lankhorst authored
      The legacy setprop ioctl doesn't attempt to set properties
      that are not enumerated on the object. The atomic ioctl does,
      fix this by validating first.
      Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Link: http://patchwork.freedesktop.org/patch/msgid/1473062773-5045-1-git-send-email-maarten.lankhorst@linux.intel.com
      4e9951d9
  2. 01 Sep, 2016 1 commit
  3. 31 Aug, 2016 3 commits
    • Dave Airlie's avatar
      Revert "drm: make DRI1 drivers depend on BROKEN" · 2b2fd56d
      Dave Airlie authored
      This reverts commit d10571fc.
      
      This isn't how we get to do this unfortunately.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      2b2fd56d
    • Dave Airlie's avatar
      Merge tag 'topic/drm-misc-2016-08-31' of git://anongit.freedesktop.org/drm-intel into drm-next · 5e7a1d01
      Dave Airlie authored
      More -misc stuff
      - moar drm_crtc.c split up&documentation
      - some fixes for the simple kms helpers (Andrea)
      - I included all the dri1 patches from David - we're not removing any code
        or drivers, and it seems to have worked as a wake-up call to motivate a
        few more people to upstream kms conversions for these. Feel free to
        revert if you disagree strongly.
      - a few other single patches
      
      * tag 'topic/drm-misc-2016-08-31' of git://anongit.freedesktop.org/drm-intel: (24 commits)
        drm: drm_probe_helper: Fix output_poll_work scheduling
        drm: bridge/dw-hdmi: Fix colorspace and scan information registers values
        drm/doc: Polish docs for drm_property&drm_property_blob
        drm: Unify handling of blob and object properties
        drm: Extract drm_property.[hc]
        drm: move drm_mode_legacy_fb_format to drm_fourcc.c
        drm/doc: Polish docs for drm_mode_object
        drm: Remove drm_mode_object->atomic_count
        drm: Extract drm_mode_object.[hc]
        drm/doc: Polish kerneldoc for encoders
        drm: Extract drm_encoder.[hc]
        drm/fb-helper: don't call remove_conflicting_framebuffers for FB=m && DRM=y
        drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit
        drm/atomic-helper: Disable appropriate planes in disable_planes_on_crtc()
        drm/atomic-helper: Add atomic_disable CRTC helper callback
        drm: simple_kms_helper: add support for bridges
        drm: simple_kms_helper: make connector optional at init time
        drm/bridge: introduce bridge detaching mechanism
        drm/simple-helpers: Always add planes to the state update
        drm: reduce GETCLIENT to a minimum
        ...
      5e7a1d01
    • Peter Ujfalusi's avatar
      drm: drm_probe_helper: Fix output_poll_work scheduling · 339fd362
      Peter Ujfalusi authored
      drm_kms_helper_poll_enable_locked() should check if we have delayed event
      pending and if we have, schedule the work to run without delay.
      
      Currently the output_poll_work is only scheduled if any of the connectors
      have DRM_CONNECTOR_POLL_CONNECT or DRM_CONNECTOR_POLL_DISCONNECT with
      DRM_OUTPUT_POLL_PERIOD delay. It does not matter if we have delayed event
      already registered to be handled. The detection will be delayd by
      DRM_OUTPUT_POLL_PERIOD in any case.
      Furthermore if none of the connectors are marked as POLL_CONNECT or
      POLL_DISCONNECT because all connectors are either POLL_HPD or they are
      always connected: the output_poll_work will not run at all even if we
      have delayed event marked.
      
      When none of the connectors require polling, their initial status change
      from unknown to connected/disconnected is not going to be handled until
      the first kms application starts or if we have fb console enabled.
      
      Note that in general the output poll work should be enabled already
      when this happens, but at driver load usually the first probe happens
      before the output polling is enabled. This patch fixes this case.
      Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
      [danvet: Note when exactly this is an issue, since the probe code
      schedules the poll work itself already.]
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20160831110905.31289-1-peter.ujfalusi@ti.com
      339fd362
  4. 30 Aug, 2016 1 commit
  5. 29 Aug, 2016 16 commits
  6. 25 Aug, 2016 7 commits
    • Daniel Vetter's avatar
      drm/simple-helpers: Always add planes to the state update · 6dcf0de7
      Daniel Vetter authored
      Our update function is hooked to the single plane, which might not get
      called for crtc-only updates. Which is surprising, so fix this by
      always adding the plane.
      
      While at it document how&when the event should be sent out better in
      the kerneldoc.
      
      Cc: Noralf Trønnes <noralf@tronnes.org>
      Cc: andrea.merello@gmail.com
      Tested-and-Reported-by: andrea.merello@gmail.com
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Reviewed-by: default avatarNoralf Trønnes <noralf@tronnes.org>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1471933540-31131-1-git-send-email-daniel.vetter@ffwll.ch
      6dcf0de7
    • David Herrmann's avatar
      drm: reduce GETCLIENT to a minimum · a8c79818
      David Herrmann authored
      The *only* known user of GETCLIENT is libva, which uses it to check
      whether its own context is authenticated. It used to iterate all clients,
      look for one that matches its own pid and then check its state.
      
      The entire purpose for us to still have a GETCLIENT implementation is to
      serve libva. So lets not pretend we do anything else: Make this function
      return information on the caller's context only, fake the PID to the
      caller's pid so they always match, and just fill in the "authenticated"
      bit, nothing else.
      
      This patch reduces the complexity of GETCLIENT to a bare minimum, avoids
      any dependency on priv->uid or priv->pid (allows us to get rid of them),
      and makes libva happy by always *exactly* returning the information it
      wants.
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20160825143505.7447-1-dh.herrmann@gmail.com
      a8c79818
    • David Herrmann's avatar
      drm: make DRI1 drivers depend on BROKEN · d10571fc
      David Herrmann authored
      The legacy DRI1 drivers expose highly broken interfaces to user-space. No
      modern system should enable them, or you will effectively allow user-space
      to circumvent most of your kernel security measures. The DRI1 kernel APIs
      are simply broken.
      
      User-space can always use vesafb/efifb/simplefb and friends to get working
      graphics.
      
      Lets hide the old drivers behind CONFIG_BROKEN. In case they turn out to
      be still used (really?), we can easily revert this and figure out a way to
      move them out of sight (e.g., moving all DRI1 drivers to
      drivers/gpu/dri1/).
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      Acked-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20160804080657.9664-2-dh.herrmann@gmail.com
      d10571fc
    • David Herrmann's avatar
      drm: hide legacy drivers with CONFIG_DRM_LEGACY · d92d9c3a
      David Herrmann authored
      Lets move forward and hide the remaining DRI1 drivers behind a config
      option, so we have a central place to disable them all. Furthermore, we
      can provide a clear warning to anyone enabling them.
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20160804080657.9664-1-dh.herrmann@gmail.com
      d92d9c3a
    • Dave Airlie's avatar
      Merge branch 'drm-next-4.9' of git://people.freedesktop.org/~agd5f/linux into drm-next · e9c3ddee
      Dave Airlie authored
      First drm-next pull for radeon and amdgpu for 4.9.  Highlights:
      - powerplay support for iceland asics
      - improved GPU reset (both full asic and per block)
      - UVD and VCE powergating for CZ and ST
      - VCE clockgating for CZ and ST
      - Support for pre-initialized (e.g., zeroed) vram buffers
      - ttm cleanups
      - virtual display support
      - core and radeon/amdgpu support for page_flip_target
      - lots of bug fixes and clean ups
      
      * 'drm-next-4.9' of git://people.freedesktop.org/~agd5f/linux: (171 commits)
        drm/amdgpu: use memcpy_toio for VCE firmware upload
        drm/amdgpu: use memcpy_to/fromio for UVD fw upload
        drm/amd/powerplay: delete useless code in iceland_hwmgr.c.
        drm/radeon: switch UVD code to use UVD_NO_OP for padding
        drm/amdgpu: switch UVD code to use UVD_NO_OP for padding
        drm/radeon: add support for UVD_NO_OP register
        drm/amdgpu: add support for UVD_NO_OP register
        drm/amdgpu: fix VCE ib alignment value
        drm/amdgpu: fix IB alignment for UVD
        drm/amd/amdgpu: Print ring name in amdgpu_ib_schedule()
        drm/radeon: remove dead code, si_mc_load_microcode (v2)
        drm/radeon/cik: remove dead code (v2)
        drm/amd/powerplay: avoid NULL dereference, cz_hwmgr.c
        drm/amd/powerplay: avoid NULL pointer dereference
        drm/amdgpu/gmc8: remove dead code (v2)
        drm/amdgpu/gmc7: remove dead code (v2)
        drm/amdgpu: Fix indentation in dce_v8_0_audio_write_sad_regs()
        drm/amdgpu: Use correct mask in dce_v8_0_afmt_setmode() and fix comment typos.
        drm/amdgpu: cleanup amdgpu_vm_bo_update params
        drm/amdgpu: stop adding dummy entry in amdgpu_ttm_placement_init
        ...
      e9c3ddee
    • Dave Airlie's avatar
      Merge branch 'drm-intel-next' of git://anongit.freedesktop.org/drm-intel into drm-next · 51d61207
      Dave Airlie authored
      drm-intel-next-2016-08-22:
      - bugfixes and cleanups for rcu-protected requests (Chris)
      - atomic modeset fixes for gpu reset on pre-g4x (Maarten&Ville)
      - guc submission improvements (Dave Gordon)
      - panel power sequence cleanup (Imre)
      - better use of stolen and unmappable ggtt (Chris), plus prep work to make that
        happen
      - rework of framebuffer offsets, prep for multi-plane framebuffers (Ville)
      - fully partial ggtt vmaps, including fenced ones (Chris)
      - move lots more of the gem tracking from the object to the vma (Chris)
      - tune the command parser (Chris)
      - allow fbc without fences on recent platforms (Chris)
      - fbc frontbuffer tracking fixes (Chris)
      - fast prefaulting using io-mappping.h pgprot caching (Chris)
      
      * 'drm-intel-next' of git://anongit.freedesktop.org/drm-intel: (141 commits)
        io-mapping: Fixup for different names of writecombine
        io-mapping.h: s/PAGE_KERNEL_IO/PAGE_KERNEL/
        drm/i915: Update DRIVER_DATE to 20160822
        drm/i915: Use remap_io_mapping() to prefault all PTE in a single pass
        drm/i915: Embed the io-mapping struct inside drm_i915_private
        io-mapping: Always create a struct to hold metadata about the io-mapping
        drm/i915/fbc: Allow on unfenced surfaces, for recent gen
        drm/i915/fbc: Don't set an illegal fence if unfenced
        drm/i915: Flush delayed fence releases after reset
        drm/i915: Reattach comment, complete type specification
        drm/i915/cmdparser: Accelerate copies from WC memory
        drm/i915/cmdparser: Use binary search for faster register lookup
        drm/i915/cmdparser: Check for SKIP descriptors first
        drm/i915/cmdparser: Compare against the previous command descriptor
        drm/i915/cmdparser: Improve hash function
        drm/i915/cmdparser: Only cache the dst vmap
        drm/i915/cmdparser: Use cached vmappings
        drm/i915/cmdparser: Add the TIMESTAMP register for the other engines
        drm/i915/cmdparser: Make initialisation failure non-fatal
        drm/i915: Stop discarding GTT cache-domain on unbind vma
        ...
      51d61207
    • Dave Airlie's avatar
      Merge branch 'for-next' of git://people.freedesktop.org/~seanpaul/dogwood into drm-next · 78acdd4a
      Dave Airlie authored
      This pull request contains the following rockchip drm changes:
      
        - Introduce support for rk3399 vop/crtc
        - Add PSR framework to the rockchip driver
        - Implement PSR in the rockchip analogix edp driver
        - Fix panel on/off in analogix to avoid damaging panels
        - Some miscellaneous fixes to clean up logs and code readability
      
      * 'for-next' of git://people.freedesktop.org/~seanpaul/dogwood:
        drm/rockchip: analogix_dp: drop unnecessary probe deferral "error" print
        drm/rockchip: Enable vblank without event
        drm/rockchip: Improve analogix-dp psr handling
        drm/rockchip: A couple small fixes to psr
        drm/rockchip: Use a spinlock to protect psr state
        drm/rockchip: Don't use a delayed worker for psr state changes
        drm/rockchip: Convert psr_list_mutex to spinlock and use it
        drm/rockchip: analogix_dp: implement PSR function
        drm/bridge: analogix_dp: add the PSR function support
        drm/rockchip: add an common abstracted PSR driver
        drm/rockchip: vop: export line flag function
        drm/bridge: analogix_dp: Ensure the panel is properly prepared/unprepared
        dt-bindings: add compatible strings for big/little rockchip vops
        dt-bindings: sort Rockchip vop compatible by chip's number
        drm/rockchip: vop: add rk3399 vop support
        drm/rockchip: vop: introduce VOP_REG_MASK
        drm/rockchip: sort registers define by chip's number
      78acdd4a
  7. 24 Aug, 2016 10 commits