Summary: | radeon/drm: Hotplug udev events stop working | ||
---|---|---|---|
Product: | DRI | Reporter: | Harald Judt <h.judt> |
Component: | DRM/Radeon | Assignee: | Default DRI bug account <dri-devel> |
Status: | RESOLVED MOVED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | ||
Version: | XOrg git | ||
Hardware: | All | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Harald Judt
2012-05-15 02:00:47 UTC
Ok, I've run radeonreg, here is the output: Before HDMI connected: 0x601c 0x00000000 (0) 0x6028 0x06000012 (100663314) 0x6034 0x00000012 (18) 0x6040 0x00000000 (0) 0x604c 0x00000000 (0) 0x6058 0x00000000 (0) HDMI connected: 0x601c 0x00000000 (0) 0x6028 0x06000012 (100663314) 0x6034 0x00000012 (18) 0x6040 0x00000000 (0) 0x604c 0x00000000 (0) 0x6058 0xff000012 (-16777198) HDMI disconnected: 0x601c 0x00000000 (0) 0x6028 0x06000012 (100663314) 0x6034 0x00000012 (18) 0x6040 0x00000000 (0) 0x604c 0x00000000 (0) 0x6058 0xff0ff000 (-15732736) The value of reg 0x6058 changes (HDMI-0). As you can see, after HDMI has been disconnected, it is different from the original value (0). I suspect that there is some problem with this? BTW: Connecting HDMI again shows the following values: HDMI connected: 0x601c 0x00000000 (0) 0x6028 0x06000012 (100663314) 0x6034 0x00000012 (18) 0x6040 0x00000000 (0) 0x604c 0x00000000 (0) 0x6058 0xff0ff012 (-15732718) HDMI disconnected: 0x601c 0x00000000 (0) 0x6028 0x06000012 (100663314) 0x6034 0x00000012 (18) 0x6040 0x00000000 (0) 0x604c 0x00000000 (0) 0x6058 0xff0ff000 (-15732736) Changing the register value using radeonreg also doesn't work: radeonreg regset 0x6058 0x00000000 OLD: 0x6058 (6058) 0xff0ff000 (-15732736) NEW: 0x6058 (6058) 0xff0ff000 (-15732736) Ok, tried again with 3.4.0 final. First, no HDMI monitor connected: Evergreen HDMI regs: 0x601c 0x00000000 (0) 0x6028 0x050ff012 (84930578) 0x6034 0x00000012 (18) 0x6040 0x00000000 (0) 0x604c 0x00000000 (0) 0x6058 0x00000000 (0) Connecting HDMI monitor: udevadm monitor --property monitor will print the received events for: UDEV - the event which udev sends out after rule processing KERNEL - the kernel uevent KERNEL[115260.630569] change /devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0 (drm) ACTION=change DEVNAME=/dev/dri/card0 DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0 DEVTYPE=drm_minor HOTPLUG=1 MAJOR=226 MINOR=0 SEQNUM=1815 SUBSYSTEM=drm UDEV [115260.638205] change /devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0 (drm) ACTION=change DEVNAME=/dev/dri/card0 DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0 DEVTYPE=drm_minor HOTPLUG=1 MAJOR=226 MINOR=0 SEQNUM=1815 SUBSYSTEM=drm USEC_INITIALIZED=115260630528 Evergreen HDMI regs: 0x601c 0x00000000 (0) 0x6028 0x050ff012 (84930578) 0x6034 0x00000012 (18) 0x6040 0x00000000 (0) 0x604c 0x00000000 (0) 0x6058 0xff000012 (-16777198) Disconnecting HDMI monitor: << No events reported by udevadm >> Evergreen HDMI regs: 0x601c 0x00000000 (0) 0x6028 0x050ff012 (84930578) 0x6034 0x00000012 (18) 0x6040 0x00000000 (0) 0x604c 0x00000000 (0) 0x6058 0xff0ff000 (-15732736) Nothing improved, event notification still doesn't work :-( Can you see if the hw is still generating interrupts? Enable drm debugging (boot with drm.debug=1 on the kernel command line in grub or as root: echo 1 > /sys/module/drm/parameters/debug Then plug and unplug your monitor and check your dmesg output. You should see HPD messages each time you plug or unplug. I'd suggest doing this without X running otherwise there will be too much other stuff in your dmesg output. Yes, the computer prints these everytime I plug or unplug the HDMI monitor: [drm:evergreen_irq_process], IH: HPD6 There are exactly 6 such messages to be found in dmesg, that would exactly correspond to connecting and disconnecting the monitor 3 times. More data, perhaps useful: [drm] Connector 2: [drm] HDMI-A [drm] HPD6 [drm] DDC: 0x6460 0x6460 0x6464 0x6464 0x6468 0x6468 0x646c 0x646c [drm] Encoders: [drm] DFP3: INTERNAL_UNIPHY1 .... [drm:evergreen_irq_set], evergreen_irq_set: sw int cp1 [drm:evergreen_irq_set], evergreen_irq_set: sw int cp2 [drm:evergreen_irq_set], evergreen_irq_set: vblank 2 [drm:evergreen_irq_set], evergreen_irq_set: vblank 3 [drm:evergreen_irq_set], evergreen_irq_set: vblank 4 [drm:evergreen_irq_set], evergreen_irq_set: vblank 5 [drm:evergreen_irq_set], evergreen_irq_set: hpd 1 [drm:evergreen_irq_set], evergreen_irq_set: hpd 3 [drm:evergreen_irq_set], evergreen_irq_set: hpd 4 [drm:evergreen_irq_set], evergreen_irq_set: hpd 5 [drm:evergreen_irq_set], evergreen_irq_set: hpd 6 [drm:drm_calc_vbltimestamp_from_scanoutpos], crtc 1 : v 5 p(2174,501)@ 1339714655.238103 -> 1339714655.230668 [e 1 us, 0 rep] [drm:evergreen_irq_process], r600_irq_process start: rptr 19552, wptr 19568 [drm:evergreen_irq_process], IH: HPD6 [drm:evergreen_irq_process], r600_irq_process start: rptr 19568, wptr 19584 [drm:evergreen_irq_process], IH: HPD6 [drm:evergreen_irq_process], r600_irq_process start: rptr 19584, wptr 19600 [drm:evergreen_irq_process], IH: HPD6 [drm:evergreen_irq_process], r600_irq_process start: rptr 19600, wptr 19616 [drm:evergreen_irq_process], IH: HPD6 [drm:evergreen_irq_process], r600_irq_process start: rptr 19616, wptr 19632 [drm:evergreen_irq_process], IH: HPD6 ok, so the hw is working fine, the event is just not getting propagated to userspace properly. Might be a duplicate of bug 51042. Reproducible with linux-3.6.0-rc6. If it is a duplicate of bug 51042, shouldn't this be fixed now, or have the patches referenced in that bug not been committed yet (http://comments.gmane.org/gmane.comp.freedesktop.xorg.drivers.ati/22107, or more specific the patches by Daniel Vetter: http://lists.freedesktop.org/archives/dri-devel/2012-May/023407.html)? I still get only two events when monitoring with udevadm: monitor will print the received events for: UDEV - the event which udev sends out after rule processing KERNEL - the kernel uevent KERNEL[601.731162] change /devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0 (drm) ACTION=change DEVNAME=/dev/dri/card0 DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0 DEVTYPE=drm_minor HOTPLUG=1 MAJOR=226 MINOR=0 SEQNUM=1407 SUBSYSTEM=drm UDEV [601.731859] change /devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0 (drm) ACTION=change DEVNAME=/dev/dri/card0 DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0 DEVTYPE=drm_minor HOTPLUG=1 MAJOR=226 MINOR=0 SEQNUM=1407 SUBSYSTEM=drm After that, no more events on plug/unplug. (In reply to comment #8) > Reproducible with linux-3.6.0-rc6. If it is a duplicate of bug 51042, > shouldn't this be fixed now, or have the patches referenced in that bug not > been committed yet > (http://comments.gmane.org/gmane.comp.freedesktop.xorg.drivers.ati/22107, or > more specific the patches by Daniel Vetter: > http://lists.freedesktop.org/archives/dri-devel/2012-May/023407.html)? If you disable polling, it also disables hotplug propagation since they share the same infrastructure in the common drm code. Daniel's patches have not been merged upstream yet. I didn't disable polling. However, if the patches haven't been merged upstream yet, then it's clear that it will not work. Thanks for clarification. -- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/drm/amd/issues/272. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.