[PATCH 4/5] drm/intel/dp: Try harder to get bpc of a DP sink if EDID doesn't tell.

Dave Airlie airlied at gmail.com
Wed Aug 3 03:07:12 UTC 2016


On 6 July 2016 at 20:05, Mario Kleiner <mario.kleiner.de at gmail.com> wrote:
> For DP sinks which don't expose color depth via EDID, use
> the drm_dp_sink_bpc() helper to derive the bpc of the sink.
>
> This should handle DP native sinks with the "Assume 6 bpc if EDID
> doesn't tell us" as mandated by DP spec. It gives more accurate
> values for DP->legacy converters for HDMI, DVI and VGA.

Haswell says no.

ug 03 12:58:46 tyrion-bne-redhat-com kernel: fbcon: inteldrmfb (fb0)
is primary device
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: BUG: unable to handle
kernel NULL pointer dereference at 000000000000011b
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: IP: [<ffffffffa00e6cf5>]
drm_dp_sink_bpc+0x5/0xb0 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: PGD 0
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: Oops: 0000 [#1] SMP
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: Modules linked in: i915
ccm xt_CHECKSUM ipt_MASQUERADE nf_nat_masquerade_ipv4 tun
ip6t_rpfilter ip6t_
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  videobuf2_core
snd_hda_codec videodev mei_me mei snd_hwdep snd_seq snd_hda_core
rtsx_pci media i2c_i
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: CPU: 1 PID: 752 Comm:
kworker/1:3 Not tainted 4.7.0+ #12
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: Hardware name: LENOVO
20ARS25701/20ARS25701, BIOS GJET72WW (2.22 ) 02/21/2014
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: Workqueue: events_long
drm_dp_mst_link_probe_work [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: task: ffff880308583a80
task.stack: ffff880309f20000
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: RIP:
0010:[<ffffffffa00e6cf5>]  [<ffffffffa00e6cf5>]
drm_dp_sink_bpc+0x5/0xb0 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: RSP:
0018:ffff880309f23b48  EFLAGS: 00010202
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: RAX: 000000000000000a
RBX: 0000000000000006 RCX: 0000000000000000
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: RDX: 0000000000000000
RSI: 0000000000000127 RDI: 0000000000000116
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: RBP: ffff880309f23b50
R08: ffff880309734800 R09: 0000000000000024
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: R10: 0000000000000000
R11: 0000000000000000 R12: ffff880309737800
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: R13: ffff88030a334000
R14: ffff880309737000 R15: ffff880309737800
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: FS:
0000000000000000(0000) GS:ffff88031e240000(0000)
knlGS:0000000000000000
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: CS:  0010 DS: 0000 ES:
0000 CR0: 0000000080050033
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: CR2: 000000000000011b
CR3: 0000000001c06000 CR4: 00000000001406e0
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: Stack:
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  ffffffffa09d4295
ffff880309f23bd8 ffffffffa09a7c1f ffffffff8122544d
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  ffff880306660258
ffff880306660000 0000000009737800 ffff88030a331000
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  0100880300000024
ffff880309f23bb8 ffffffff00000024 ffff880309737800
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: Call Trace:
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa09d4295>] ?
intel_dp_sink_bpc+0x25/0x30 [i915]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa09a7c1f>]
intel_atomic_check+0xacf/0x1250 [i915]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff8122544d>] ?
__kmalloc_track_caller+0x12d/0x210
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa0097ea7>]
drm_atomic_check_only+0x187/0x610 [drm]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa0098857>] ?
drm_atomic_add_affected_connectors+0x27/0xf0 [drm]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa0098347>]
drm_atomic_commit+0x17/0x60 [drm]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa00f4e0c>]
restore_fbdev_mode+0x14c/0x260 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa00f6a23>]
drm_fb_helper_restore_fbdev_mode_unlocked+0x33/0x80 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa00f6a9d>]
drm_fb_helper_set_par+0x2d/0x50 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa00f69b8>]
drm_fb_helper_hotplug_event+0x148/0x180 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa09c238a>]
intel_fbdev_output_poll_changed+0x1a/0x20 [i915]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa00e79c7>]
drm_kms_helper_hotplug_event+0x27/0x30 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa09cafa5>]
intel_dp_mst_hotplug+0x15/0x20 [i915]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa00ee31a>]
drm_dp_send_link_address+0x19a/0x220 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff810df553>] ?
put_prev_entity+0x33/0x410
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff8111280b>] ?
add_timer_on+0xdb/0x1b0
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff8102c766>] ?
__switch_to+0x2b6/0x600
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff810e361e>] ?
pick_next_task_fair+0x10e/0x4d0
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa00ee44d>]
drm_dp_check_and_send_link_address+0xad/0xc0 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffffa00ee4b7>]
drm_dp_mst_link_probe_work+0x57/0xb0 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff810c086f>]
process_one_work+0x15f/0x410
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff810c0b6e>]
worker_thread+0x4e/0x480
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff810c0b20>] ?
process_one_work+0x410/0x410
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff810c0b20>] ?
process_one_work+0x410/0x410
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff810c64c8>]
kthread+0xd8/0xf0
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff817d527f>]
ret_from_fork+0x1f/0x40
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  [<ffffffff810c63f0>] ?
kthread_worker_fn+0x170/0x170
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: Code: b8 b0 1e 04 00 48
89 e5 74 11 40 80 ff 14 ba d0 78 02 00 b8 60 3d 08 00 0f 45 c2 5d c3
66 0f 1f
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: RIP
[<ffffffffa00e6cf5>] drm_dp_sink_bpc+0x5/0xb0 [drm_kms_helper]
Aug 03 12:58:46 tyrion-bne-redhat-com kernel:  RSP <ffff880309f23b48>
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: CR2: 000000000000011b
Aug 03 12:58:46 tyrion-bne-redhat-com kernel: ---[ end trace
d3270996301ba013 ]---

Possibly MST related.

Dave.


More information about the dri-devel mailing list