Re: fw_devlink.strict=1 breaks sound card probe ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Geert, Saravana
Cc: Wolfram

> > > This devices_deferred file (which I didn't know) helped my issue.
> > > It was my fault. My .config had been missing necessary driver
> > > (= CONFIG_REGULATOR_FIXED_VOLTAGE).
> > >
> > > ... but... why it had been working without it before... ?
> 
> Hi Morimoto-san,
> 
> Hmmm... even if you didn't have the driver compiled in, fw_devlink
> should have stopped blocking the probe after deferred_probe_timeout
> expires and that value is defaulted to 10s (it extends on every
> successful driver registration). Can you help figure out if that's
> happening and if not, why not?

It is very deep and difficult to understand / trace.
I'm still not yet find the core point.

But something found. I hope it can be hint.

I'm using this DT

	linux/arch/arm64/boot/dts/renesas/r8a77950-ulcb-kf.dts

The key config was "CONFIG_REGULATOR" (not "CONFIG_REGULATOR_FIXED_VOLTAGE").
If .config doesn't have "CONFIG_REGULATOR" and "fw_devlink_strict = true",
some drivers probe will be deferd.
No issue will be happend if it has "CONFIG_REGULATOR".

Below is my .config case.
(It will be more drivers if I used renesas_defconfig).

	# cat /sys/kernel/debug/devices_deferred
	16-0044 i2c: supplier regulator-snd_vcc5v not ready
	sound   asoc-audio-graph-card: parse error

If you can use "renesas_defconfig", you can reproduce it
if you remove CONFIG_REGULATOR from it.

Here, "16-0044" is "pcm3168a" which needs "snd_vcc5v" and "snd_3p3v",
and "sound" needs "pcm3168a".
"pcm3168a" connection is like this

	-- linux/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi --

	i2c2
	 - i2c-switch@71 (pca9548)
	   - i2c@7
=>	     - pcm3168a

In this case, it will get -EPROBE_DEFER forever.

	driver_probe_device()
	 - __driver_probe_device()
	  - really_probe()
	    -  device_links_check_suppliers() :: return -EPROBE_DEFER

Thus, pcm3168a's probe function itself is not (never) called.

One thing I have noticed is that I2C numbering is changed somehow.
I'm not sure this is related to the issue.

	fw_devlink_strict = true	: 16-0044
	fw_devlink_strict		: 15-0044

If you can indicate something to check, I'm happy to investigate it.

Thank you for your help !!

Best regards
---
Kuninori Morimoto



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux