[PATCH RFC] drm/vc4: hdmi: Fix connector detect logic

Maxime Ripard maxime at cerno.tech
Tue Jul 6 13:21:31 UTC 2021


Hi Stefan,

On Tue, Jul 06, 2021 at 12:48:05PM +0200, Stefan Wahren wrote:
> Am 06.07.21 um 11:58 schrieb Maxime Ripard:
> > Hi,
> >
> > On Mon, Jul 05, 2021 at 11:36:34PM +0200, Stefan Wahren wrote:
> >> Commit "drm/vc4: hdmi: Convert to gpiod" changes the behavior of
> >> vc4_hdmi_connector_detect() which results into CPU hangs in case there
> >> is no HDMI connected. Let's restore the old behavior.
> >>
> >> Reported-by: Nathan Chancellor <nathan at kernel.org>
> >> Reported-by: Ojaswin Mujoo <ojaswin98 at gmail.com>
> >> Fixes: 6800234ceee0 ("drm/vc4: hdmi: Convert to gpiod")
> >> Signed-off-by: Stefan Wahren <stefan.wahren at i2se.com>
> > I already sent this patch last week:
> >
> > https://lore.kernel.org/dri-devel/20210628124257.140453-3-maxime@cerno.tech/
> oops, i only looked in the July archive.
>
> > I'm not entirely sure how this could create a CPU hang though. Withouth
> > this patch, if the HPD GPIO is low, we would first try to retrieve the
> > EDID, and then if it doesn't we would read the hotplug register.
> Yes, the real issue has been revealed by the original change and this
> patch only "hides" it again.
> > The first is using a separate i2c controller (and even if it was in the
> > same power domain, we have the pm_runtime_resume call), and the register
> > read should be fine too?
> 
> Sorry, i don't have a clue and time for further investigations.
> 
> Does it mean, you are not able to reproduce this issue?

On next-20210706 at least it works fine for me without an HDMI monitor
connected, yes:

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.13.0-next-20210706-v7l (max at gilmour) (arm-linux-gnu-gcc (GCC) 10.2.1 20200826 (Red Hat Cross 10.2.1-3), GNU ld version 2.35.1-5.fc34) #329 SMP Tue Jul 6 14:42:41 CEST 2021
[    0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=30c5383d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Raspberry Pi 3 Model B Plus Rev 1.3
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] Ignoring RAM at 0x0000000030000000-0x0000000038000000
[    0.000000] Consider using a HIGHMEM enabled kernel.
[    0.000000] Reserved memory: bypass linux,cma node, using cmdline CMA params instead
[    0.000000] OF: reserved mem: node linux,cma compatible matching fail
[    0.000000] cma: Reserved 512 MiB at 0x000000000ec00000
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000000000-0x000000002fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000002fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000002fffffff]
[    0.000000] percpu: Embedded 1040 pages/cpu s4230284 r8192 d21364 u4259840
[    0.000000] pcpu-alloc: s4230284 r8192 d21364 u4259840 alloc=1040*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 194880
[    0.000000] Kernel command line: video=HDMI-A-1:640x480M at 60 dma.dmachans=0x7f35 bcm2709.boardrev=0xa020d3 bcm2709.serial=0xa5669abe bcm2709.uart_clock=48000000 bcm2709.disk_led_gpio=29 bcm2709.disk_led_active_low=0 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  console=ttyS0,115200 root=/dev/nfs nfsroot=192.168.3.21:/srv/nfs/rpi/raspbian rw ip=dhcp rootwait cma=512M
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 77316K/786432K available (12288K kernel code, 103370K rwdata, 3380K rodata, 6144K init, 33450K bss, 184828K reserved, 524288K cma-reserved)
[    0.000000] ftrace: allocating 34375 entries in 101 pages
[    0.000000] ftrace: allocated 101 pages with 4 groups
[    0.000000] trace event string verifier disabled
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] [Firmware Bug]: Bootloader left irq enabled: bank 1 irq 9
[    0.000000] random: get_random_bytes called from start_kernel+0x854/0xa34 with crng_init=0
[    0.000002] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 2147483647500ns
[    0.000036] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
[    0.000102] bcm2835: system timer (irq = 60)
[    0.000586] arch_timer: cp15 timer(s) running at 19.20MHz (phys).
[    0.000612] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
[    0.000637] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[    0.000659] Switching to timer-based delay loop, resolution 52ns
[    0.002278] Console: colour dummy device 80x30
[    0.002356] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000)
[    0.002392] pid_max: default: 32768 minimum: 301
[    0.008533] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.008593] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.010791] CPU: Testing write buffer coherency: ok
[    0.011349] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.012866] Setting up static identity map for 0x200000 - 0x20003c
[    0.013106] rcu: Hierarchical SRCU implementation.
[    0.014484] smp: Bringing up secondary CPUs ...
[    0.016723] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.018995] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.021242] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.021394] smp: Brought up 1 node, 4 CPUs
[    0.021440] SMP: Total of 4 processors activated (153.60 BogoMIPS).
[    0.021462] CPU: All CPU(s) started in HYP mode.
[    0.021478] CPU: Virtualization extensions available.
[    0.022580] devtmpfs: initialized
[    0.042479] VFP support v0.3: implementor 41 architecture 3 part 40 variant 3 rev 4
[    0.042836] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.042876] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.070352] pinctrl core: initialized pinctrl subsystem
[    0.072424] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.076209] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.083372] thermal_sys: Registered thermal governor 'step_wise'
[    0.084048] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.084080] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.084446] Serial: AMBA PL011 UART driver
[    0.134684] Kprobes globally optimized
[    0.139699] vgaarb: loaded
[    0.140676] SCSI subsystem initialized
[    0.141141] usbcore: registered new interface driver usbfs
[    0.141260] usbcore: registered new interface driver hub
[    0.141400] usbcore: registered new device driver usb
[    0.141892] usb_phy_generic phy: supply vcc not found, using dummy regulator
[    0.143169] Advanced Linux Sound Architecture Driver Initialized.
[    0.144991] clocksource: Switched to clocksource arch_sys_counter
[    0.246109] VFS: Disk quotas dquot_6.6.0
[    0.246313] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.246696] FS-Cache: Loaded
[    0.247040] CacheFiles: Loaded
[    0.262951] NET: Registered PF_INET protocol family
[    0.263263] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.264926] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
[    0.265014] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
[    0.265144] TCP bind hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.265345] TCP: Hash tables configured (established 8192 bind 8192)
[    0.265559] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.265628] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.266349] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.276322] RPC: Registered named UNIX socket transport module.
[    0.276344] RPC: Registered udp transport module.
[    0.276361] RPC: Registered tcp transport module.
[    0.276378] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.276403] PCI: CLS 0 bytes, default 64
[    1.889804] Initialise system trusted keyrings
[    1.890178] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[    1.892377] FS-Cache: Netfs 'nfs' registered for caching
[    1.893112] NFS: Registering the id_resolver key type
[    1.893179] Key type id_resolver registered
[    1.893198] Key type id_legacy registered
[    1.893230] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    1.893250] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    1.894766] Key type asymmetric registered
[    1.894788] Asymmetric key parser 'x509' registered
[    1.894870] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
[    1.895185] io scheduler mq-deadline registered
[    1.895218] io scheduler kyber registered
[    1.908714] Serial: 8250/16550 driver, 1 ports, IRQ sharing enabled
[    1.910464] printk: console [ttyS0] disabled
[    1.910660] 3f215040.serial: ttyS0 at MMIO 0x3f215040 (irq = 86, base_baud = 31250000) is a 16550
[    2.635497] printk: console [ttyS0] enabled
[    2.642296] bcm2835-rng 3f104000.rng: hwrng registered
[    2.680335] brd: module loaded
[    2.709631] loop: module loaded
[    2.714089] bcm2835-power bcm2835-power: Broadcom BCM2835 power domains driver
[    2.721800] Loading iSCSI transport class v2.0-870.
[    2.730956] libphy: Fixed MDIO Bus: probed
[    2.736321] usbcore: registered new interface driver r8152
[    2.741968] usbcore: registered new interface driver lan78xx
[    2.747837] usbcore: registered new interface driver smsc75xx
[    2.753762] usbcore: registered new interface driver smsc95xx
[    2.761074] usbcore: registered new interface driver uas
[    2.766610] usbcore: registered new interface driver usb-storage
[    2.773025] mousedev: PS/2 mouse device common for all mice
[    2.778712] i2c /dev entries driver
[    2.784908] i2c-bcm2835 3f805000.i2c: Could not read clock-frequency property
[    2.794748] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
[    2.802175] sdhci: Secure Digital Host Controller Interface driver
[    2.808468] sdhci: Copyright(c) Pierre Ossman
[    2.813153] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.820377] ledtrig-cpu: registered to indicate activity on CPUs
[    2.826870] hid: raw HID events driver (C) Jiri Kosina
[    2.832536] usbcore: registered new interface driver usbhid
[    2.838217] usbhid: USB HID core driver
[    2.843092] bcm2835-mbox 3f00b880.mailbox: mailbox enabled
[    2.850455] Initializing XFRM netlink socket
[    2.854827] NET: Registered PF_PACKET protocol family
[    2.860175] Key type dns_resolver registered
[    2.864668] Registering SWP/SWPB emulation handler
[    2.870514] registered taskstats version 1
[    2.874709] Loading compiled-in X.509 certificates
[    2.892551] 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 114, base_baud = 0) is a PL011 rev2
[    2.906745] raspberrypi-firmware soc:firmware: Attached to firmware from 2020-04-15T11:43:08
[    2.910656] sdhost-bcm2835 3f202000.mmc: loaded - DMA enabled (>1)
[    3.055481] dwc2 3f980000.usb: supply vusb_d not found, using dummy regulator
[    3.063053] dwc2 3f980000.usb: supply vusb_a not found, using dummy regulator
[    3.122075] dwc2 3f980000.usb: DWC OTG Controller
[    3.126936] dwc2 3f980000.usb: new USB bus registered, assigned bus number 1
[    3.134143] dwc2 3f980000.usb: irq 66, io mem 0x3f980000
[    3.140048] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.13
[    3.148466] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.155825] usb usb1: Product: DWC OTG Controller
[    3.160608] usb usb1: Manufacturer: Linux 5.13.0-next-20210706-v7l dwc2_hsotg
[    3.167873] usb usb1: SerialNumber: 3f980000.usb
[    3.173581] hub 1-0:1.0: USB hub found
[    3.177489] hub 1-0:1.0: 1 port detected
[    3.215472] sdhci-iproc 3f300000.mmc: allocated mmc-pwrseq
[    3.254154] mmc1: SDHCI controller on 3f300000.mmc [3f300000.mmc] using PIO
[    3.277835] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[    3.285199] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    3.292556] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    3.301324] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[    3.364820] random: fast init done
[    3.380119] mmc1: new high speed SDIO card at address 0001
[    3.525019] usb 1-1: new high-speed USB device number 2 using dwc2
[    3.775356] usb 1-1: New USB device found, idVendor=0424, idProduct=2514, bcdDevice= b.b3
[    3.783673] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.791866] hub 1-1:1.0: USB hub found
[    3.795836] hub 1-1:1.0: 4 ports detected
[    4.115020] usb 1-1.1: new high-speed USB device number 3 using dwc2
[    4.245462] usb 1-1.1: New USB device found, idVendor=0424, idProduct=2514, bcdDevice= b.b3
[    4.253953] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    4.262423] hub 1-1.1:1.0: USB hub found
[    4.266572] hub 1-1.1:1.0: 3 ports detected
[    5.045034] usb 1-1.1.1: new high-speed USB device number 4 using dwc2
[    5.175708] usb 1-1.1.1: New USB device found, idVendor=0424, idProduct=7800, bcdDevice= 3.00
[    5.184386] usb 1-1.1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    5.459454] lan78xx 1-1.1.1:1.0 (unnamed net_device) (uninitialized): No External EEPROM. Setting MAC Speed
[    5.471946] libphy: lan78xx-mdiobus: probed
[    5.587085] random: crng init done
[    7.855008] Sending DHCP requests ., OK
[    7.899003] IP-Config: Got DHCP answer from 192.168.3.254, my address is 192.168.3.77
[    7.906990] IP-Config: Complete:
[    7.910271]      device=eth0, hwaddr=b8:27:eb:66:9a:be, ipaddr=192.168.3.77, mask=255.255.255.0, gw=192.168.3.254
[    7.920721]      host=192.168.3.77, domain=lan, nis-domain=(none)
[    7.926923]      bootserver=192.168.3.254, rootserver=192.168.3.21, rootpath=
[    7.926940]      nameserver0=1.1.1.1
[    7.948448] ALSA device list:
[    7.951468]   No soundcards found.
[    7.967337] VFS: Mounted root (nfs filesystem) on device 0:15.
[    7.973938] devtmpfs: mounted
[    7.999153] Freeing unused kernel image (initmem) memory: 6144K
[    8.045659] Run /sbin/init as init process
[    8.049824]   with arguments:
[    8.049835]     /sbin/init
[    8.049847]   with environment:
[    8.049857]     HOME=/
[    8.049868]     TERM=linux
[    8.605849] systemd[1]: System time before build time, advancing clock.
[    8.732583] NET: Registered PF_INET6 protocol family
[    8.740903] Segment Routing with IPv6
[    8.841895] systemd[1]: systemd 241 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[    8.865535] systemd[1]: Detected architecture arm.
[    8.976749] systemd[1]: Set hostname to <raspberrypi>.
[   10.302081] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
[   10.311035] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[   10.365266] systemd[1]: Reached target Swap.
[   10.397365] systemd[1]: Listening on Syslog Socket.
[   10.436723] systemd[1]: Listening on udev Kernel Socket.
[   10.485690] systemd[1]: Created slice system-getty.slice.
[   10.528802] systemd[1]: Created slice system-serial\x2dgetty.slice.
[   12.177636] systemd-journald[119]: Received request to flush runtime journal from PID 1
[   13.810728] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.
[   13.853684] mc: Linux media interface: v0.10
[   13.947159] bcm2835_audio bcm2835_audio: card created with 8 channels
[   13.985444] videodev: Linux video capture interface: v2.00
[   14.432430] bcm2835_v4l2: module is from the staging directory, the quality is unknown, you have been warned.
[   15.083811] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[   15.159342] vc4-drm soc:gpu: bound 3f400000.hvs (ops vc4_hvs_ops [vc4])
[   15.182681] debugfs: Directory '3f902000.hdmi' with parent 'vc4-hdmi' already present!
[   15.211008] vc4-drm soc:gpu: bound 3f902000.hdmi (ops vc4_hdmi_ops [vc4])
[   15.214764] vc4-drm soc:gpu: bound 3f806000.vec (ops vc4_vec_ops [vc4])
[   15.215857] vc4-drm soc:gpu: bound 3f004000.txp (ops vc4_txp_ops [vc4])
[   15.216392] vc4-drm soc:gpu: bound 3f206000.pixelvalve (ops vc4_crtc_ops [vc4])
[   15.216855] vc4-drm soc:gpu: bound 3f207000.pixelvalve (ops vc4_crtc_ops [vc4])
[   15.217315] vc4-drm soc:gpu: bound 3f807000.pixelvalve (ops vc4_crtc_ops [vc4])
[   15.217710] vc4-drm soc:gpu: bound 3fc00000.v3d (ops vc4_v3d_ops [vc4])
[   15.256447] [drm] Initialized vc4 0.0.0 20140616 for soc:gpu on minor 0
[   15.321317] Console: switching to colour frame buffer device 90x30
[   15.330456] vc4-drm soc:gpu: [drm] fb0: vc4 frame buffer device
[   15.530230] Adding 102396k swap on /var/swap.  Priority:-2 extents:1 across:102396k FS
[   15.552819] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[   15.649196] brcmfmac: F1 signature read @0x18000000=0x15264345
[   15.696912] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
[   15.710077] usbcore: registered new interface driver brcmfmac
[   15.752286] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt failed with error -2
[   15.977214] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
[   15.990975] 8021q: 802.1Q VLAN Support v1.8
[   15.991042] 8021q: adding VLAN 0 to HW filter on device eth0
[   15.997628] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Mar 23 2020 02:19:54 version 7.45.206 (r725000 CY) FWID 01-88ee44ea


Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210706/cba216b4/attachment-0001.sig>


More information about the dri-devel mailing list