1. > If you trace two macro, both macro will be replace by __define_initcall(fn, *).
Hence, we can know that subsys_initcall will run earlier than module_init after INIT deamon stars ( do_initcalls ).
2. >
subsys_initcall() can only be used by a built-in (statically linked) module.
module_init can be used by either built-in or loadable modules.
For loadable *.ko modules, subsys_initcall() is mapped to the same as module_init() i.e. device_initcall()
ONLY one module_init() per driver module.
Reference,
root/include/linux/init.h
https://www.cnblogs.com/dakewei/p/10995453.html