I would like to update the igb driver,that it needs unload igb first.
I was setting kernel’s config below.
When I use the command “sudo rmmod igb”,I get message rmmod: ERROR: Module igb is builtin.
How do I unload the igb dirver? Thanks!
Have those relative IGB remove from below file list.
I removed igb from modules.builtin file and reboot.
But I still got ERROR: Module igb is builtin.
Did you update the Image?
Does lsmod still see the igb?
I was setting kernel’s config and flashed Xavier.After that I removed igb from /lib/modules/4.9.140-tegra/modules.builtin in Xavier,but I still got ERROR: Module igb is builtin.
is my step right?
How to check the Image binary?
I used the command cat .config > confing.txt,and checked the config.
Just use vim /boot/Image to search any symbol of the igb driver to confirm it.
lsmod doesn’t see igb,but rmmod is still see Module igb is builtin.
Please mark the driver as module in arch/arm64/config?tegra_defconfig
make DEFCONFIG_PATH=arch/arm64/configs tegra_defconfig
cp -v defconfig arch/arm64/configs/tegra_defconfig
and then build kernel.
Replace the kernel and the newly build .ko to the target and reboot
is Xavier not to use command “rmmod” to unload the igb, even I was setting the driver as module in tegra_defconfig and replace the kernel?
If the driver is integrated and not in the form of module, then rmmod will always fail. If you changed this to be module, then rmmod should work unless the kernel change you thought was installed did not really install. After any kernel change you should verify “
uname -r” is correct, and verify your change is reflected in the output of “
zcat /proc/config.gz”. An example would be “
zcat /proc/config.gz | grep IGB” (and if “
=y”, then this is integrated, not modular…if “
=m”, then the module will be somewhere under “
/lib/modules/$(uname -r)/kernel/”). “
rmmod” will also fail if something is locking the driver (if the driver is in use).