Re: [PATCH v2 2/2] drm/msm/dp: attach the DP subconnector property

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 11/15/2023 12:06 AM, Johan Hovold wrote:
On Wed, Oct 25, 2023 at 12:23:10PM +0300, Dmitry Baryshkov wrote:
While developing and testing the commit bfcc3d8f94f4 ("drm/msm/dp:
support setting the DP subconnector type") I had the patch [1] in my
tree. I haven't noticed that it was a dependency for the commit in
question. Mea culpa.

This also broke boot on the Lenovo ThinkPad X13s.

Would be nice to get this fixed ASAP so that further people don't have
to debug this known regression.

I will queue this patch for -fixes rightaway.

Since the patch has not landed yet (and even was not reviewed)
and since one of the bridges erroneously uses USB connector type instead
of DP, attach the property directly from the MSM DP driver.

This fixes the following oops on DP HPD event:

  drm_object_property_set_value (drivers/gpu/drm/drm_mode_object.c:288)
  dp_display_process_hpd_high (drivers/gpu/drm/msm/dp/dp_display.c:402)
  dp_hpd_plug_handle.isra.0 (drivers/gpu/drm/msm/dp/dp_display.c:604)
  hpd_event_thread (drivers/gpu/drm/msm/dp/dp_display.c:1110)
  kthread (kernel/kthread.c:388)
  ret_from_fork (arch/arm64/kernel/entry.S:858)

This only says where the oops happened, it doesn't necessarily in itself
indicate an oops at all or that in this case it's a NULL pointer
dereference.

On the X13s I'm seeing the NULL deref in a different path during boot,
and when this happens after a deferred probe (due to the panel lookup
mess) it hangs the machine, which makes it a bit of a pain to debug:

    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000060
    ...
    CPU: 4 PID: 57 Comm: kworker/u16:1 Not tainted 6.7.0-rc1 #4
    Hardware name: Qualcomm QRD, BIOS 6.0.220110.BOOT.MXF.1.1-00470-MAKENA-1 01/10/2022
    ...
    Call trace:
     drm_object_property_set_value+0x0/0x88 [drm]
     dp_display_process_hpd_high+0xa0/0x14c [msm]
     dp_hpd_plug_handle.constprop.0.isra.0+0x90/0x110 [msm]
     dp_bridge_atomic_enable+0x184/0x21c [msm]
     edp_bridge_atomic_enable+0x60/0x94 [msm]
     drm_atomic_bridge_chain_enable+0x54/0xc8 [drm]
     drm_atomic_helper_commit_modeset_enables+0x194/0x26c [drm_kms_helper]
     msm_atomic_commit_tail+0x204/0x804 [msm]
     commit_tail+0xa4/0x18c [drm_kms_helper]
     drm_atomic_helper_commit+0x19c/0x1b0 [drm_kms_helper]
     drm_atomic_commit+0xa4/0x104 [drm]
     drm_client_modeset_commit_atomic+0x22c/0x298 [drm]
     drm_client_modeset_commit_locked+0x60/0x1c0 [drm]
     drm_client_modeset_commit+0x30/0x58 [drm]
     __drm_fb_helper_restore_fbdev_mode_unlocked+0xbc/0xfc [drm_kms_helper]
     drm_fb_helper_set_par+0x30/0x4c [drm_kms_helper]
     fbcon_init+0x224/0x49c
     visual_init+0xb0/0x108
     do_bind_con_driver.isra.0+0x19c/0x38c
     do_take_over_console+0x140/0x1ec
     do_fbcon_takeover+0x6c/0xe4
     fbcon_fb_registered+0x180/0x1f0
     register_framebuffer+0x19c/0x228
     __drm_fb_helper_initial_config_and_unlock+0x2e8/0x4e8 [drm_kms_helper]
     drm_fb_helper_initial_config+0x3c/0x4c [drm_kms_helper]
     msm_fbdev_client_hotplug+0x84/0xcc [msm]
     drm_client_register+0x5c/0xa0 [drm]
     msm_fbdev_setup+0x94/0x148 [msm]
     msm_drm_bind+0x3d0/0x42c [msm]
     try_to_bring_up_aggregate_device+0x1ec/0x2f4
     __component_add+0xa8/0x194
     component_add+0x14/0x20
     dp_display_probe+0x278/0x41c [msm]

[1] https://patchwork.freedesktop.org/patch/555530/

Fixes: bfcc3d8f94f4 ("drm/msm/dp: support setting the DP subconnector type")
Reviewed-by: Abhinav Kumar <quic_abhinavk@xxxxxxxxxxx>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>

Reviewed-by: Johan Hovold <johan+linaro@xxxxxxxxxx>
Tested-by: Johan Hovold <johan+linaro@xxxxxxxxxx>


Thanks !

Johan



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux