>> a) we have to use request_module() > > Wait, why? > > module loading is async, use auto-loading when the hardware/device is > found and reported to userspace. Forcing a module to load by the kernel > is not always wise as the module is not always present in the filesystem > at that point in time at boot (think modules on the filesystem, not in > the initramfs). > > Try fixing this issue and maybe it will resolve itself as you should be > working async. It's been that way for a very long time (2015?) for HDAudio support, see sound/pci/hda/hda_bind.c. It's my understanding that it was a conscious design decision to use vendor-specific modules, if available, and fallback to generic modules if the first pass failed. Takashi, you may want to chime in...