2021-09-07 00:44:30

by Denis 'GNUtoo' Carikli

[permalink] [raw]
Subject: Delaying probe of firmwares with builtin drivers?

Hi,

The brcmfmac driver needs a firmware to work.

With a Samsung Galaxy SIII (GT-I9300) that runs GNU/Linux (and an out of
tree u-boot), when the brcmfmac is builtin the kernel (=y), when
brcmfmac is probed, the root filesystem (that is on a partition of the
internal eMMC) isn't mounted yet.

So the brcmfmac driver fails to find its firmware, even if a firmware
is present at the right location in the root filesystem.

I've tried to set brcmfmac_module_init to late_initcall and
late_initcall_sync but that didn't change much.

I also looked a bit in init/main.c and init/do_mount.c and I didn't find
any generic way that would already be used in drivers/ to wait for the
rootfs to be mounted.

I've attached the dmesg, .config (as config) and defconfig used to
reproduce the bug if needed.

For testing I used the following commit linux/master[1]:
> commit 4b93c544e90e2b28326182d31ee008eb80e02074 (thunderbolt: test:
> split up test cases in tb_test_credit_alloc_all)

What would be the proper way of fixing that?

References:
-----------
[1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Denis.


Attachments:
(No filename) (1.13 kB)
defconfig (9.94 kB)
config (135.64 kB)
dmesg (34.67 kB)
(No filename) (849.00 B)
OpenPGP digital signature
Download all attachments