On Mon, Jun 08, 2020 at 09:46:23PM +0200, Mark Kettenis wrote:
> > Date: Mon, 8 Jun 2020 20:27:22 +0200
> > From: Otto Moerbeek <[email protected]>
> >
> > Hi.
> >
> > a page fault trap happens if I boot my Thnkpad X1 6th generation in the dock
> > or put it in the dock afterwards. The dock has two DP monitors connected.
> >
> > If I change connector_bad_edid() to return immediately things seems to
> > work ok.
> >
> > -Otto
> >
> > summary of trace:
> >
> > connector_bad_edid+0x4d
> > drm_do_get_edid+0x382
> > drm_get_edid+0x6b
> > intel_hmi_set_edid+0xad
> > intel_hdmi_detect+0xb1
> > drm_helper_probe_detect+0x108
> > intel_encoder_hotplug+0x7f
> > intel_ddi_hotplug+0x54
> > i915_hotplug_work_func+0x245
> > tasq_thread+0x8d
> >
> > full trace:
> >
> > https://www.drijf.net/openbsd/IMG_20200608_154513.jpg
>
> Not sure what kernel you're using. But the instruction in that image
> doesn't eist in connector_bad_edid in the kernel I just built.
>
Strange, I do have it. /usr/src/sys/dev/pci/drm/drm_edid.c contains
no version marker, but it's md5 is 3d889f9e1cb3c66cdb4eb49e9319d947
objdump -d snippet:
0000000000003830 <connector_bad_edid>:
3830: 4c 8b 1d 00 00 00 00 mov 0(%rip),%r11 #
3837 <connector_bad_edid+0x7>
3837: 4c 33 1c 24 xor (%rsp),%r11
383b: 55 push %rbp
383c: 48 89 e5 mov %rsp,%rbp
383f: 57 push %rdi
3840: 56 push %rsi
3841: 52 push %rdx
3842: 57 push %rdi
3843: 41 53 push %r11
3845: 41 57 push %r15
3847: 41 56 push %r14
3849: 41 55 push %r13
384b: 41 54 push %r12
384d: 53 push %rbx
384e: 48 83 ec 20 sub $0x20,%rsp
3852: 41 89 d7 mov %edx,%r15d
3855: 0f b6 46 7e movzbl 0x7e(%rsi),%eax
3859: 48 c1 e0 07 shl $0x7,%rax
385d: 48 89 75 a8 mov %rsi,0xffffffffffffffa8(%rbp)
3861: 48 01 f0 add %rsi,%rax
3864: 31 d2 xor %edx,%edx
3866: b9 03 00 00 00 mov $0x3,%ecx
386b: eb 10 jmp 387d <connector_bad_edid+0x4d>
386d: cc int3
386e: cc int3
386f: cc int3
3870: 0f b6 34 08 movzbl (%rax,%rcx,1),%esi
3874: 01 f2 add %esi,%edx
3876: 0f b6 d2 movzbl %dl,%edx
3879: 48 83 c1 04 add $0x4,%rcx
387d: 0f b6 74 08 fd movzbl
0xfffffffffffffffd(%rax,%rcx,1),%esi
3882: 01 d6 add %edx,%esi
3884: 0f b6 54 08 fe movzbl
0xfffffffffffffffe(%rax,%rcx,1),%edx
3889: 01 f2 add %esi,%edx
388b: 0f b6 f2 movzbl %dl,%esi
388e: 0f b6 54 08 ff movzbl
0xffffffffffffffff(%rax,%rcx,1),%edx
3893: 01 f2 add %esi,%edx
3895: 48 83 f9 7f cmp $0x7f,%rcx
3899: 75 d5 jne 3870 <connector_bad_edid+0x40>
...