Let's move the discussion to opensuse-arm list.
Am 23.11.2017 um 12:07 schrieb Daniel Molkentin:
On 11/22/2017 06:31 PM, Andreas Färber wrote:
Am 22.11.2017 um 04:25 schrieb Dominique Leuenberger:
==== kernel-source ==== Version update (4.13.12 -> 4.14.0) Subpackages: kernel-default kernel-default-devel kernel-devel kernel-docs kernel-macros kernel-syms
- Update to 4.14-final.
On the aarch64 based Pine64 board it has been observed that the updated dtb-allwinner package now requires the axp20x-regulator module in the initrd for using the MMC driver, and its parent module axp20x-rsb does not get loaded automatically even if added to the initrd.
I would prefer if that would be fixed in the kernel by adding the proper dependencies. Is there any chance for that?
There's multiple issues at play here:
1) This is not a module compile-time dependency issue, but rather a run-time dependency issue, which AFAIU dracut is not resolving today.
As a result the JeOS images in openSUSE:Factory:ARM etc. contain a number of add_drivers entries to load such extra modules: https://build.opensuse.org/package/view_file/openSUSE:Factory:ARM/JeOS/confi... That is of course ugly and would be nice to get resolved differently.
Dracut would need to parse the Device Tree in /sys/firmware/ to discover what regulator, clock, power domain, etc. nodes are being referenced, then read their "compatible" strings and resolve them to the modules to add. The kernel uses generic API calls such as clk_get() and regulator_get(), thus no compile-time dependency for e.g. mmc modules.
However when updating from 4.13 to 4.14 or from 4.14-rc4 to -rc8 it would've still read the current Device Tree and not discovered this new dependency for next boot. And Kiwi images get built in KVM, which will have a different Device Tree than the user's system or even ACPI. So I don't see a full solution yet.
Let me know if I should report this somewhere upstream - it didn't seem a distro-specific issue for our Bugzilla. https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html#_troubleshoot... explains what info to include in a bug report, but not actually where to file it. ;) No link on dracut.wiki.kernel.org either.
2) axp20x-rsb driver does have MODULE_DEVICE_TABLE(of, ...), so it is unclear to me why the DT -> module resolution for auto-loading is not working here.
It is almost certainly an upstream kernel issue, possibly in sunxi-rsb bus driver. Stefan has already reported this on #linux-sunxi.
Otherwise, the "proper" dracut patch would looks something like the attached one.
Hm, instmod is just the equivalent of "add_drivers", is it? That would not be enough here. Also not all ARM systems need this driver, it's an extra chip on some boards only.
What you could do is more generally add all =drivers/mfd drivers. But if we keep adding drivers by category instead of addressing the underlying discovery issue, we risk at some point the initrd getting too large for low-RAM systems.