"disagrees about version of symbol" after changing struct spi_device.
by sheld from LinuxQuestions.org on (#5A5Y5)
Hi,
I am studying SPI device driver using my RPi4.
I added a member variable in struct spi_device in spi.h to see
if the variable I added in .dts (Device Tree) comes in spi.c as intended:
***********************************************
struct spi_device {
struct device dev;
struct spi_controller *controller;
struct spi_controller *master;
u32 max_speed_hz;
u32 debug_sheld; // ---------> for testing
...
}
***********************************************
Then I compiled the kernel to see what happens in spi.c and spidev.c like this,
rebooted my RPi4, and tried to load spidev.ko module.
But, this error happens:
***********************************************
pi@raspberrypi:~/git_repository/Kernel/linux-5.4.59/drivers/spi $ sudo insmod spidev.ko
insmod: ERROR: could not insert module spidev.ko: Invalid parameters
***********************************************
I checked kernel log using dmesg :
***********************************************
[ 81.717199] spidev: disagrees about version of symbol spi_sync
[ 81.717211] spidev: Unknown symbol spi_sync (err -22)
[ 81.717248] spidev: disagrees about version of symbol spi_setup
[ 81.717257] spidev: Unknown symbol spi_setup (err -22)
[ 81.717278] spidev: disagrees about version of symbol __spi_register_driver
[ 81.717287] spidev: Unknown symbol __spi_register_driver (err -22)
[ 81.717311] spidev: disagrees about version of symbol spi_slave_abort
[ 81.717320] spidev: Unknown symbol spi_slave_abort (err -22)
[ 310.352225] spidev: disagrees about version of symbol spi_sync
[ 310.352237] spidev: Unknown symbol spi_sync (err -22)
[ 310.352274] spidev: disagrees about version of symbol spi_setup
[ 310.352283] spidev: Unknown symbol spi_setup (err -22)
[ 310.352305] spidev: disagrees about version of symbol __spi_register_driver
[ 310.352314] spidev: Unknown symbol __spi_register_driver (err -22)
[ 310.352338] spidev: disagrees about version of symbol spi_slave_abort
[ 310.352347] spidev: Unknown symbol spi_slave_abort (err -22)
[ 649.449228] spidev: disagrees about version of symbol spi_sync
[ 649.449244] spidev: Unknown symbol spi_sync (err -22)
[ 649.449291] spidev: disagrees about version of symbol spi_setup
[ 649.449303] spidev: Unknown symbol spi_setup (err -22)
[ 649.449332] spidev: disagrees about version of symbol __spi_register_driver
[ 649.449343] spidev: Unknown symbol __spi_register_driver (err -22)
[ 649.449375] spidev: disagrees about version of symbol spi_slave_abort
[ 649.449386] spidev: Unknown symbol spi_slave_abort (err -22)
***********************************************
There hasn't been any problem when I change something in spi.c or spidev.c,
but I don't know why it happens with a modification to struct spi_device.
Can somebody help me to solve this, please?
Thanks.


I am studying SPI device driver using my RPi4.
I added a member variable in struct spi_device in spi.h to see
if the variable I added in .dts (Device Tree) comes in spi.c as intended:
***********************************************
struct spi_device {
struct device dev;
struct spi_controller *controller;
struct spi_controller *master;
u32 max_speed_hz;
u32 debug_sheld; // ---------> for testing
...
}
***********************************************
Then I compiled the kernel to see what happens in spi.c and spidev.c like this,
rebooted my RPi4, and tried to load spidev.ko module.
But, this error happens:
***********************************************
pi@raspberrypi:~/git_repository/Kernel/linux-5.4.59/drivers/spi $ sudo insmod spidev.ko
insmod: ERROR: could not insert module spidev.ko: Invalid parameters
***********************************************
I checked kernel log using dmesg :
***********************************************
[ 81.717199] spidev: disagrees about version of symbol spi_sync
[ 81.717211] spidev: Unknown symbol spi_sync (err -22)
[ 81.717248] spidev: disagrees about version of symbol spi_setup
[ 81.717257] spidev: Unknown symbol spi_setup (err -22)
[ 81.717278] spidev: disagrees about version of symbol __spi_register_driver
[ 81.717287] spidev: Unknown symbol __spi_register_driver (err -22)
[ 81.717311] spidev: disagrees about version of symbol spi_slave_abort
[ 81.717320] spidev: Unknown symbol spi_slave_abort (err -22)
[ 310.352225] spidev: disagrees about version of symbol spi_sync
[ 310.352237] spidev: Unknown symbol spi_sync (err -22)
[ 310.352274] spidev: disagrees about version of symbol spi_setup
[ 310.352283] spidev: Unknown symbol spi_setup (err -22)
[ 310.352305] spidev: disagrees about version of symbol __spi_register_driver
[ 310.352314] spidev: Unknown symbol __spi_register_driver (err -22)
[ 310.352338] spidev: disagrees about version of symbol spi_slave_abort
[ 310.352347] spidev: Unknown symbol spi_slave_abort (err -22)
[ 649.449228] spidev: disagrees about version of symbol spi_sync
[ 649.449244] spidev: Unknown symbol spi_sync (err -22)
[ 649.449291] spidev: disagrees about version of symbol spi_setup
[ 649.449303] spidev: Unknown symbol spi_setup (err -22)
[ 649.449332] spidev: disagrees about version of symbol __spi_register_driver
[ 649.449343] spidev: Unknown symbol __spi_register_driver (err -22)
[ 649.449375] spidev: disagrees about version of symbol spi_slave_abort
[ 649.449386] spidev: Unknown symbol spi_slave_abort (err -22)
***********************************************
There hasn't been any problem when I change something in spi.c or spidev.c,
but I don't know why it happens with a modification to struct spi_device.
Can somebody help me to solve this, please?
Thanks.