1. 09 Oct, 2019 1 commit
  2. 08 Oct, 2019 8 commits
    • Oleg Vasilev's avatar
      drm/vkms: prime import support · 94e2ec3f
      Oleg Vasilev authored
      Bring dmabuf sharing through implementing prime_import_sg_table callback.
      This will help to validate userspace conformance in prime configurations
      without using any actual hardware (e.g. in the cloud).
      
      This enables kms_prime IGT testcase on vkms.
      
      V3:
       - Rodrigo: remove redundant vkms_gem_create_private
      V2:
       - Rodrigo: styleguide + return code check
      
      Cc: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
      Cc: Haneen Mohammed <hamohammed.sa@gmail.com>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Simon Ser <simon.ser@intel.com>
      Tested-by: default avatarRodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
      Reviewed-by: default avatarRodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
      Signed-off-by: default avatarOleg Vasilev <oleg.vasilev@intel.com>
      Signed-off-by: default avatarOleg Vasilev <omrigann@gmail.com>
      Signed-off-by: default avatarRodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190930155924.21845-1-oleg.vasilev@intel.com
      94e2ec3f
    • Rodrigo Siqueira's avatar
      drm/drm_vblank: Change EINVAL by the correct errno · aed6105b
      Rodrigo Siqueira authored
      For historical reasons, the function drm_wait_vblank_ioctl always return
      -EINVAL if something gets wrong. This scenario limits the flexibility
      for the userspace to make detailed verification of any problem and take
      some action. In particular, the validation of “if (!dev->irq_enabled)”
      in the drm_wait_vblank_ioctl is responsible for checking if the driver
      support vblank or not. If the driver does not support VBlank, the
      function drm_wait_vblank_ioctl returns EINVAL, which does not represent
      the real issue; this patch changes this behavior by return EOPNOTSUPP.
      Additionally, drm_crtc_get_sequence_ioctl and
      drm_crtc_queue_sequence_ioctl, also returns EINVAL if vblank is not
      supported; this patch also changes the return value to EOPNOTSUPP in
      these functions. Lastly, these functions are invoked by libdrm, which is
      used by many compositors; because of this, it is important to check if
      this change breaks any compositor. In this sense, the following projects
      were examined:
      
      * Drm-hwcomposer
      * Kwin
      * Sway
      * Wlroots
      * Wayland
      * Weston
      * Mutter
      * Xorg (67 different drivers)
      
      For each repository the verification happened in three steps:
      
      * Update the main branch
      * Look for any occurrence of "drmCrtcQueueSequence",
        "drmCrtcGetSequence", and "drmWaitVBlank" with the command git grep -n
        "STRING".
      * Look in the git history of the project with the command
      git log -S<STRING>
      
      None of the above projects validate the use of EINVAL when using
      drmWaitVBlank(), which make safe, at least for these projects, to change
      the return values. On the other hand, mesa and xserver project uses
      drmCrtcQueueSequence() and drmCrtcGetSequence(); this change is harmless
      for both projects.
      
      Change since V5 (Pekka Paalanen):
       - Check if the change also affects Mutter
      
      Change since V4 (Daniel):
       - Also return EOPNOTSUPP in drm_crtc_[get|queue]_sequence_ioctl
      
      Change since V3:
       - Return EINVAL for _DRM_VBLANK_SIGNAL (Daniel)
      
      Change since V2:
       Daniel Vetter and Chris Wilson
       - Replace ENOTTY by EOPNOTSUPP
       - Return EINVAL if the parameters are wrong
      
      Cc: Keith Packard <keithp@keithp.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Pekka Paalanen <pekka.paalanen@collabora.com>
      Signed-off-by: default avatarRodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
      Reviewed-by: default avatarDaniel Vetter <daniel@ffwll.ch>
      Acked-by: default avatarPekka Paalanen <pekka.paalanen@collabora.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191002140516.adeyj3htylimmlmg@smtp.gmail.com
      aed6105b
    • Rodrigo Siqueira's avatar
      drm: Add link training repeaters addresses · 55fd0e20
      Rodrigo Siqueira authored
      DP 1.3 specification introduces the Link Training-tunable PHY Repeater,
      and DP 1.4* supplemented it with new features. In the 1.4a spec, it was
      introduced some innovations to make handy to add support for systems
      with Thunderbolt or other repeater devices.
      
      It is important to highlight that DP specification had some updates from
      1.3 through 1.4a. In particular, DP 1.4 defines Repeater_FEC_CAPABILITY
      at the address 0xf0004, and DP 1.4a redefined the address 0xf0004 to
      DP_MAX_LANE_COUNT_PHY_REPEATER.
      
      Changes since V4:
      - Update commit message
      - Fix misleading comments related to the spec version
      Changes since V3:
      - Replace spaces by tabs
      Changes since V2:
      - Drop the kernel-doc comment
      - Reorder LTTPR according to register offset
      Changes since V1:
      - Adjusts registers names to be aligned with spec and the rest of the
        file
      - Update spec comment from 1.4 to 1.4a
      
      Cc: Abdoulaye Berthe <Abdoulaye.Berthe@amd.com>
      Cc: Harry Wentland <harry.wentland@amd.com>
      Cc: Leo Li <sunpeng.li@amd.com>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Manasi Navare <manasi.d.navare@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
      Signed-off-by: default avatarAbdoulaye Berthe <Abdoulaye.Berthe@amd.com>
      Reviewed-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
      Signed-off-by: default avatarRodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190909212144.deeomlsqihwg4l3y@outlook.office365.com
      55fd0e20
    • Sam Ravnborg's avatar
      drm: delete drmP.h + drm_os_linux.h · 4e98f871
      Sam Ravnborg authored
      There is finally no more users left in the kernel of drmP.h
      and drm_os_linux.h (drmP.h was the only user left).
      Delete the header files and delete the corresponding todo entry.
      
      When we started this quest there was more than 700 users of drmP.h.
      And drmP.h was a huge cover-it-all header file.
      
      Daniel Vetter is the one that followed the work from start
      to the end and in between many people have contributed to the
      removal process - thanks to everyone!
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Reviewed-by: default avatarSean Paul <sean@poorly.run>
      Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Maxime Ripard <mripard@kernel.org>
      Cc: Sean Paul <sean@poorly.run>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191007171224.1581-3-sam@ravnborg.org
      4e98f871
    • Sam Ravnborg's avatar
      drm_dp_cec: drop use of drmP.h · 0aa32f8e
      Sam Ravnborg authored
      drmP.h is deprecated and will be deleted.
      Replace use with proper header.
      
      Divide header includes in blocks while touching these.
      
      Build tested with various archtectures and configs.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Fixes: ae85b0df ("drm_dp_cec: add connector info support.")
      Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
      Reviewed-by: default avatarSean Paul <sean@poorly.run>
      Acked-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
      Cc: Dariusz Marcinkiewicz <darekm@google.com>
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191007171224.1581-2-sam@ravnborg.org
      0aa32f8e
    • Wen He's avatar
      drm/arm/mali-dp: Add display QoS interface configuration for Mali DP500 · d298e6a2
      Wen He authored
      Configure the display Quality of service (QoS) levels priority if the
      optional property node "arm,malidp-aqros-value" is defined in DTS file.
      
      QoS signaling using AQROS and AWQOS AXI interface signals, the AQROS is
      driven from the "RQOS" register, so needed to program the RQOS register
      to avoid the high resolutions flicker issue on the LS1028A platform.
      Signed-off-by: default avatarWen He <wen.he_1@nxp.com>
      Signed-off-by: default avatarLiviu Dudau <liviu.dudau@arm.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190910075913.17650-2-wen.he_1@nxp.com
      d298e6a2
    • Sean Paul's avatar
      drm: damage_helper: Fix race checking plane->state->fb · 354c2d31
      Sean Paul authored
      Since the dirtyfb ioctl doesn't give us any hints as to which plane is
      scanning out the fb it's marking as damaged, we need to loop through
      planes to find it.
      
      Currently we just reach into plane state and check, but that can race
      with another commit changing the fb out from under us. This patch locks
      the plane before checking the fb and will release the lock if the plane
      is not displaying the dirty fb.
      
      Fixes: b9fc5e01 ("drm: Add helper to implement legacy dirtyfb")
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Deepak Rawat <drawat@vmware.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Thomas Hellstrom <thellstrom@vmware.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Maxime Ripard <maxime.ripard@bootlin.com>
      Cc: Sean Paul <sean@poorly.run>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: dri-devel@lists.freedesktop.org
      Cc: <stable@vger.kernel.org> # v5.0+
      Reported-by: default avatarDaniel Vetter <daniel@ffwll.ch>
      Reviewed-by: default avatarDaniel Vetter <daniel@ffwll.ch>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190904202938.110207-1-sean@poorly.run
      354c2d31
    • Jagan Teki's avatar
      drm/sun4i: dsi: Fix video start delay computation · 9a197c86
      Jagan Teki authored
      The LCD timing definitions between Linux DRM vs Allwinner are different,
      below diagram shows this clear differences.
      
                 Active                 Front           Sync           Back
                 Region                 Porch                          Porch
      <-----------------------><----------------><--------------><-------------->
        //////////////////////|
       ////////////////////// |
      //////////////////////  |..................                ................
                                                 ________________
      <----- [hv]display ----->
      <------------- [hv]sync_start ------------>
      <--------------------- [hv]sync_end ---------------------->
      <-------------------------------- [hv]total ------------------------------>
      
      <----- lcd_[xy] -------->		  <- lcd_[hv]spw ->
      					  <---------- lcd_[hv]bp --------->
      <-------------------------------- lcd_[hv]t ------------------------------>
      
      The DSI driver misinterpreted the vbp term from the BSP code to refer
      only to the backporch, when in fact it was backporch + sync. Thus the
      driver incorrectly used the vertical front porch plus sync in its
      calculation of the DRQ set bit value, when it should not have included
      the sync timing.
      
      Including additional sync timings leads to flip_done timed out as:
      
      WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
      [CRTC:46:crtc-0] vblank wait timed out
      Modules linked in:
      CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00029-g09e5b0ed0a58 #18
      Hardware name: Allwinner sun8i Family
      Workqueue: events deferred_probe_work_func
      [<c010ed54>] (unwind_backtrace) from [<c010b76c>] (show_stack+0x10/0x14)
      [<c010b76c>] (show_stack) from [<c0688c70>] (dump_stack+0x84/0x98)
      [<c0688c70>] (dump_stack) from [<c011d9e4>] (__warn+0xfc/0x114)
      [<c011d9e4>] (__warn) from [<c011da40>] (warn_slowpath_fmt+0x44/0x68)
      [<c011da40>] (warn_slowpath_fmt) from [<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
      [<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1) from [<c040e694>] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c)
      [<c040e694>] (drm_atomic_helper_commit_tail_rpm) from [<c040e4dc>] (commit_tail+0x40/0x6c)
      [<c040e4dc>] (commit_tail) from [<c040e5cc>] (drm_atomic_helper_commit+0xbc/0x128)
      [<c040e5cc>] (drm_atomic_helper_commit) from [<c0411b64>] (restore_fbdev_mode_atomic+0x1cc/0x1dc)
      [<c0411b64>] (restore_fbdev_mode_atomic) from [<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
      [<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0415774>] (drm_fb_helper_set_par+0x30/0x54)
      [<c0415774>] (drm_fb_helper_set_par) from [<c03ad450>] (fbcon_init+0x560/0x5ac)
      [<c03ad450>] (fbcon_init) from [<c03eb8a0>] (visual_init+0xbc/0x104)
      [<c03eb8a0>] (visual_init) from [<c03ed1b8>] (do_bind_con_driver+0x1b0/0x390)
      [<c03ed1b8>] (do_bind_con_driver) from [<c03ed780>] (do_take_over_console+0x13c/0x1c4)
      [<c03ed780>] (do_take_over_console) from [<c03ad800>] (do_fbcon_takeover+0x74/0xcc)
      [<c03ad800>] (do_fbcon_takeover) from [<c013c9c8>] (notifier_call_chain+0x44/0x84)
      [<c013c9c8>] (notifier_call_chain) from [<c013cd20>] (__blocking_notifier_call_chain+0x48/0x60)
      [<c013cd20>] (__blocking_notifier_call_chain) from [<c013cd50>] (blocking_notifier_call_chain+0x18/0x20)
      [<c013cd50>] (blocking_notifier_call_chain) from [<c03a6e44>] (register_framebuffer+0x1e0/0x2f8)
      [<c03a6e44>] (register_framebuffer) from [<c04153c0>] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c)
      [<c04153c0>] (__drm_fb_helper_initial_config_and_unlock) from [<c04158c8>] (drm_fbdev_client_hotplug+0xe8/0x1b8)
      [<c04158c8>] (drm_fbdev_client_hotplug) from [<c0415a20>] (drm_fbdev_generic_setup+0x88/0x118)
      [<c0415a20>] (drm_fbdev_generic_setup) from [<c043f060>] (sun4i_drv_bind+0x128/0x160)
      [<c043f060>] (sun4i_drv_bind) from [<c044b598>] (try_to_bring_up_master+0x164/0x1a0)
      [<c044b598>] (try_to_bring_up_master) from [<c044b668>] (__component_add+0x94/0x140)
      [<c044b668>] (__component_add) from [<c0445e1c>] (sun6i_dsi_probe+0x144/0x234)
      [<c0445e1c>] (sun6i_dsi_probe) from [<c0452ef4>] (platform_drv_probe+0x48/0x9c)
      [<c0452ef4>] (platform_drv_probe) from [<c04512cc>] (really_probe+0x1dc/0x2c8)
      [<c04512cc>] (really_probe) from [<c0451518>] (driver_probe_device+0x60/0x160)
      [<c0451518>] (driver_probe_device) from [<c044f7a4>] (bus_for_each_drv+0x74/0xb8)
      [<c044f7a4>] (bus_for_each_drv) from [<c045107c>] (__device_attach+0xd0/0x13c)
      [<c045107c>] (__device_attach) from [<c0450474>] (bus_probe_device+0x84/0x8c)
      [<c0450474>] (bus_probe_device) from [<c0450900>] (deferred_probe_work_func+0x64/0x90)
      [<c0450900>] (deferred_probe_work_func) from [<c0135970>] (process_one_work+0x204/0x420)
      [<c0135970>] (process_one_work) from [<c013690c>] (worker_thread+0x274/0x5a0)
      [<c013690c>] (worker_thread) from [<c013b3d8>] (kthread+0x11c/0x14c)
      [<c013b3d8>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
      Exception stack(0xde539fb0 to 0xde539ff8)
      9fa0:                                     00000000 00000000 00000000 00000000
      9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
      ---[ end trace 495200a78b24980e ]---
      random: fast init done
      [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out
      [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out
      [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out
      
      With the terms(as described in above diagram) fixed, the panel
      displays correctly without any timeouts.
      Tested-by: default avatarMerlijn Wajer <merlijn@wizzup.org>
      Signed-off-by: default avatarJagan Teki <jagan@amarulasolutions.com>
      Signed-off-by: default avatarIcenowy Zheng <icenowy@aosc.io>
      Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191006160303.24413-2-icenowy@aosc.io
      9a197c86
  3. 07 Oct, 2019 5 commits
  4. 05 Oct, 2019 2 commits
  5. 04 Oct, 2019 24 commits