[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