Skip to content
  1. Nov 06, 2023
  2. Oct 27, 2023
    • Erik Kurzinger's avatar
      drm/syncobj: fix DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE · 101c9f63
      Erik Kurzinger authored
      If DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT is invoked with the
      DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE flag set but no fence has yet been
      submitted for the given timeline point the call will fail immediately
      with EINVAL. This does not match the intended behavior where the call
      should wait until the fence has been submitted (or the timeout expires).
      
      The following small example program illustrates the issue. It should
      wait for 5 seconds and then print ETIME, but instead it terminates right
      away after printing EINVAL.
      
        #include <stdio.h>
        #include <fcntl.h>
        #include <time.h>
        #include <errno.h>
        #include <xf86drm.h>
        int main(void)
        {
            int fd = open("/dev/dri/card0", O_RDWR);
            uint32_t syncobj;
            drmSyncobjCreate(fd, 0, &syncobj);
            struct timespec ts;
            clock_gettime(CLOCK_MONOTONIC, &ts);
            uint64_t point = 1;
            if (drmSyncobjTimelineWait(fd, &syncobj, &point, 1,
                                       ts.tv_sec * 1000000000 + ts.tv_nsec + 5000000000, // 5s
                                       DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE, NULL)) {
                printf("drmSyncobjTimelineWait failed %d\n", errno);
            }
        }
      
      Fixes: 01d6c357
      
       ("drm/syncobj: add support for timeline point wait v8")
      Signed-off-by: default avatarErik Kurzinger <ekurzinger@nvidia.com>
      Reviewed by: Simon Ser <contact@emersion.fd>
      Signed-off-by: default avatarSimon Ser <contact@emersion.fr>
      Link: https://patchwork.freedesktop.org/patch/msgid/1fac96f1-2f3f-f9f9-4eb0-340f27a8f6c0@nvidia.com
      101c9f63
  3. Oct 26, 2023
  4. Oct 25, 2023
  5. Oct 23, 2023
  6. Oct 22, 2023
  7. Oct 20, 2023
    • Lukasz Majczak's avatar
      drm/dp_mst: Fix NULL deref in get_mst_branch_device_by_guid_helper() · 3d887d51
      Lukasz Majczak authored
      As drm_dp_get_mst_branch_device_by_guid() is called from
      drm_dp_get_mst_branch_device_by_guid(), mstb parameter has to be checked,
      otherwise NULL dereference may occur in the call to
      the memcpy() and cause following:
      
      [12579.365869] BUG: kernel NULL pointer dereference, address: 0000000000000049
      [12579.365878] #PF: supervisor read access in kernel mode
      [12579.365880] #PF: error_code(0x0000) - not-present page
      [12579.365882] PGD 0 P4D 0
      [12579.365887] Oops: 0000 [#1] PREEMPT SMP NOPTI
      ...
      [12579.365895] Workqueue: events_long drm_dp_mst_up_req_work
      [12579.365899] RIP: 0010:memcmp+0xb/0x29
      [12579.365921] Call Trace:
      [12579.365927] get_mst_branch_device_by_guid_helper+0x22/0x64
      [12579.365930] drm_dp_mst_up_req_work+0x137/0x416
      [12579.365933] process_one_work+0x1d0/0x419
      [12579.365935] worker_thread+0x11a/0x289
      [12579.365938] kthread+0x13e/0x14f
      [12579.365941] ? process_one_work+0x419/0x419
      [12579.365943] ? kthread_blkcg+0x31/0x31
      [12579.365946] ret_from_fork+0x1f/0x30
      
      As get_mst_branch_device_by_guid_helper() is recursive, moving condition
      to the first line allow to remove a similar one for step over of NULL elements
      inside a loop.
      
      Fixes: 5e93b820
      
       ("drm/dp/mst: move GUID storage from mgr, port to only mst branch")
      Cc: <stable@vger.kernel.org> # 4.14+
      Signed-off-by: default avatarLukasz Majczak <lma@semihalf.com>
      Reviewed-by: default avatarRadoslaw Biernacki <rad@chromium.org>
      Signed-off-by: default avatarManasi Navare <navaremanasi@chromium.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230922063410.23626-1-lma@semihalf.com
      3d887d51
  8. Oct 19, 2023
  9. Oct 18, 2023
  10. Oct 16, 2023
  11. Oct 13, 2023
  12. Oct 12, 2023
  13. Oct 10, 2023
    • Simon Ser's avatar
      drm/atomic-helper: relax unregistered connector check · 2b7947bd
      Simon Ser authored
      The driver might pull connectors which weren't submitted by
      user-space into the atomic state. For instance,
      intel_dp_mst_atomic_master_trans_check() pulls in connectors
      sharing the same DP-MST stream. However, if the connector is
      unregistered, this later fails with:
      
          [  559.425658] i915 0000:00:02.0: [drm:drm_atomic_helper_check_modeset] [CONNECTOR:378:DP-7] is not registered
      
      Skip the unregistered connector check to allow user-space to turn
      off connectors one-by-one.
      
      See this wlroots issue:
      https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3407
      
      Previous discussion:
      https://lore.kernel.org/intel-gfx/Y6GX7z17WmDSKwta@ideak-desk.fi.intel.com/
      
      
      
      Signed-off-by: default avatarSimon Ser <contact@emersion.fr>
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Imre Deak <imre.deak@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20231005131623.114379-1-contact@emersion.fr
      2b7947bd
    • Ruihai Zhou's avatar
      drm/panel: boe-tv101wum-nl6: Completely pull GPW to VGL before TP term · 258dd5e6
      Ruihai Zhou authored
      The sta_himax83102 panel sometimes shows abnormally flickering
      horizontal lines. The front gate output will precharge the X point of
      the next pole circuit before TP(TouchPanel Enable) term starts, and wait
      until the end of the TP term to resume the CLK. For this reason, the X
      point must be maintained during the TP term. In abnormal case, we
      measured a slight leakage at point X. This because during the TP term,
      the GPW does not fully pull the VGL low, causing the TFT to not be
      closed tightly.
      
      To fix this, we completely pull GPW to VGL before entering the TP term.
      This will ensure that the TFT is closed tightly and prevent the abnormal
      display.
      
      Fixes: 1bc2ef06
      
       ("drm/panel: Support for Starry-himax83102-j02 TDDI MIPI-DSI panel")
      Signed-off-by: default avatarRuihai Zhou <zhouruihai@huaqin.corp-partner.google.com>
      Reviewed-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
      Link: https://lore.kernel.org/r/20231007064949.22668-1-zhouruihai@huaqin.corp-partner.google.com
      
      
      Signed-off-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20231007064949.22668-1-zhouruihai@huaqin.corp-partner.google.com
      258dd5e6
    • Zack Rusin's avatar
      drm/vmwgfx: Keep a gem reference to user bos in surfaces · 91398b41
      Zack Rusin authored
      
      
      Surfaces can be backed (i.e. stored in) memory objects (mob's) which
      are created and managed by the userspace as GEM buffers. Surfaces
      grab only a ttm reference which means that the gem object can
      be deleted underneath us, especially in cases where prime buffer
      export is used.
      
      Make sure that all userspace surfaces which are backed by gem objects
      hold a gem reference to make sure they're not deleted before vmw
      surfaces are done with them, which fixes:
      ------------[ cut here ]------------
      refcount_t: underflow; use-after-free.
      WARNING: CPU: 2 PID: 2632 at lib/refcount.c:28 refcount_warn_saturate+0xfb/0x150
      Modules linked in: overlay vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock snd_ens1371 snd_ac97_codec ac97_bus snd_pcm gameport>
      CPU: 2 PID: 2632 Comm: vmw_ref_count Not tainted 6.5.0-rc2-vmwgfx #1
      Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 11/12/2020
      RIP: 0010:refcount_warn_saturate+0xfb/0x150
      Code: eb 9e 0f b6 1d 8b 5b a6 01 80 fb 01 0f 87 ba e4 80 00 83 e3 01 75 89 48 c7 c7 c0 3c f9 a3 c6 05 6f 5b a6 01 01 e8 15 81 98 ff <0f> 0b e9 6f ff ff ff 0f b>
      RSP: 0018:ffffbdc34344bba0 EFLAGS: 00010286
      RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000027
      RDX: ffff960475ea1548 RSI: 0000000000000001 RDI: ffff960475ea1540
      RBP: ffffbdc34344bba8 R08: 0000000000000003 R09: 65646e75203a745f
      R10: ffffffffa5b32b20 R11: 72657466612d6573 R12: ffff96037d6a6400
      R13: ffff9603484805b0 R14: 000000000000000b R15: ffff9603bed06060
      FS:  00007f5fd8520c40(0000) GS:ffff960475e80000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f5fda755000 CR3: 000000010d012005 CR4: 00000000003706e0
      Call Trace:
       <TASK>
       ? show_regs+0x6e/0x80
       ? refcount_warn_saturate+0xfb/0x150
       ? __warn+0x91/0x150
       ? refcount_warn_saturate+0xfb/0x150
       ? report_bug+0x19d/0x1b0
       ? handle_bug+0x46/0x80
       ? exc_invalid_op+0x1d/0x80
       ? asm_exc_invalid_op+0x1f/0x30
       ? refcount_warn_saturate+0xfb/0x150
       drm_gem_object_handle_put_unlocked+0xba/0x110 [drm]
       drm_gem_object_release_handle+0x6e/0x80 [drm]
       drm_gem_handle_delete+0x6a/0xc0 [drm]
       ? __pfx_vmw_bo_unref_ioctl+0x10/0x10 [vmwgfx]
       vmw_bo_unref_ioctl+0x33/0x40 [vmwgfx]
       drm_ioctl_kernel+0xbc/0x160 [drm]
       drm_ioctl+0x2d2/0x580 [drm]
       ? __pfx_vmw_bo_unref_ioctl+0x10/0x10 [vmwgfx]
       ? do_vmi_munmap+0xee/0x180
       vmw_generic_ioctl+0xbd/0x180 [vmwgfx]
       vmw_unlocked_ioctl+0x19/0x20 [vmwgfx]
       __x64_sys_ioctl+0x99/0xd0
       do_syscall_64+0x5d/0x90
       ? syscall_exit_to_user_mode+0x2a/0x50
       ? do_syscall_64+0x6d/0x90
       ? handle_mm_fault+0x16e/0x2f0
       ? exit_to_user_mode_prepare+0x34/0x170
       ? irqentry_exit_to_user_mode+0xd/0x20
       ? irqentry_exit+0x3f/0x50
       ? exc_page_fault+0x8e/0x190
       entry_SYSCALL_64_after_hwframe+0x6e/0xd8
      RIP: 0033:0x7f5fda51aaff
      Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89 c0 3d 00 f0 ff ff 7>
      RSP: 002b:00007ffd536a4d30 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 00007ffd536a4de0 RCX: 00007f5fda51aaff
      RDX: 00007ffd536a4de0 RSI: 0000000040086442 RDI: 0000000000000003
      RBP: 0000000040086442 R08: 000055fa603ada50 R09: 0000000000000000
      R10: 0000000000000001 R11: 0000000000000246 R12: 00007ffd536a51b8
      R13: 0000000000000003 R14: 000055fa5ebb4c80 R15: 00007f5fda90f040
       </TASK>
      ---[ end trace 0000000000000000 ]---
      
      A lot of the analyis on the bug was done by Murray McAllister and
      Ian Forbes.
      
      Reported-by: default avatarMurray McAllister <murray.mcallister@gmail.com>
      Cc: Ian Forbes <iforbes@vmware.com>
      Signed-off-by: default avatarZack Rusin <zackr@vmware.com>
      Fixes: a950b989
      
       ("drm/vmwgfx: Do not drop the reference to the handle too soon")
      Cc: <stable@vger.kernel.org> # v6.2+
      Reviewed-by: default avatarMartin Krastev <krastevm@vmware.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230928041355.737635-1-zack@kde.org
      91398b41
    • Konstantin Meskhidze's avatar
      drm/vmwgfx: fix typo of sizeof argument · 39465cac
      Konstantin Meskhidze authored
      Since size of 'header' pointer and '*header' structure is equal on 64-bit
      machines issue probably didn't cause any wrong behavior. But anyway,
      fixing typo is required.
      
      Fixes: 7a73ba74
      
       ("drm/vmwgfx: Use TTM handles instead of SIDs as user-space surface handles.")
      Co-developed-by: default avatarIvanov Mikhail <ivanov.mikhail1@huawei-partners.com>
      Signed-off-by: default avatarKonstantin Meskhidze <konstantin.meskhidze@huawei.com>
      Reviewed-by: default avatarZack Rusin <zackr@vmware.com>
      Signed-off-by: default avatarZack Rusin <zackr@vmware.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230905100203.1716731-1-konstantin.meskhidze@huawei.com
      39465cac
  14. Oct 05, 2023
  15. Oct 04, 2023
  16. Oct 03, 2023
  17. Sep 30, 2023
  18. Sep 27, 2023
  19. Sep 25, 2023
  20. Sep 21, 2023
    • Thomas Zimmermann's avatar
      fbdev/sh7760fb: Depend on FB=y · f75f71b2
      Thomas Zimmermann authored
      
      
      Fix linker error if FB=m about missing fb_io_read and fb_io_write. The
      linker's error message suggests that this config setting has already
      been broken for other symbols.
      
        All errors (new ones prefixed by >>):
      
           sh4-linux-ld: drivers/video/fbdev/sh7760fb.o: in function `sh7760fb_probe':
           sh7760fb.c:(.text+0x374): undefined reference to `framebuffer_alloc'
           sh4-linux-ld: sh7760fb.c:(.text+0x394): undefined reference to `fb_videomode_to_var'
           sh4-linux-ld: sh7760fb.c:(.text+0x39c): undefined reference to `fb_alloc_cmap'
           sh4-linux-ld: sh7760fb.c:(.text+0x3a4): undefined reference to `register_framebuffer'
           sh4-linux-ld: sh7760fb.c:(.text+0x3ac): undefined reference to `fb_dealloc_cmap'
           sh4-linux-ld: sh7760fb.c:(.text+0x434): undefined reference to `framebuffer_release'
           sh4-linux-ld: drivers/video/fbdev/sh7760fb.o: in function `sh7760fb_remove':
           sh7760fb.c:(.text+0x800): undefined reference to `unregister_framebuffer'
           sh4-linux-ld: sh7760fb.c:(.text+0x804): undefined reference to `fb_dealloc_cmap'
           sh4-linux-ld: sh7760fb.c:(.text+0x814): undefined reference to `framebuffer_release'
        >> sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0xc): undefined reference to `fb_io_read'
        >> sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0x10): undefined reference to `fb_io_write'
           sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0x2c): undefined reference to `cfb_fillrect'
           sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0x30): undefined reference to `cfb_copyarea'
           sh4-linux-ld: drivers/video/fbdev/sh7760fb.o:(.rodata+0x34): undefined reference to `cfb_imageblit'
      
      Suggested-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Closes: https://lore.kernel.org/oe-kbuild-all/202309130632.LS04CPWu-lkp@intel.com/
      
      
      Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
      Acked-by: default avatarJohn Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230918090400.13264-1-tzimmermann@suse.de
      f75f71b2