Hello everyone, First time poster. If this isn't the correct forum for this kind of thing feel free to point me in the right direction.
I am attempting to build the openvswitch kernel module so that I can use the Kubernetes Weave CNI "fast data path" feature on an NVidia Xavier single board computer. I've run into a problem where the compoiled openvswitch kernel modules ends up with a number of undefined symbols of the form rpl_gre_*. I've been able to "fix" the problem (see below), but am sure the fix isn't a good one and wanted to get a better understanding of the issue. For the general setup: - Working on an NVidia Xavier with Jetpack 4.6 and kernel version `4.9.253-tegra #1 SMP PREEMPT Mon Jul 26 12:19:28 PDT 2021 aarch64`. - In particular the kernel is a custom build from NVidia and may be nonstandard. - Using Open vSwitch version 2.17.0 downloaded from main Open vSwitch site - Configured with boot.sh and ./configure --with-linux=/lib/modules/$(uname -r)/build When I run make I get the following output. In particular the missing symbols are a fatal problem. ``` make all-recursive make[1]: Entering directory '/home/nvidia/openvswitch-2.17.0' Making all in datapath make[2]: Entering directory '/home/nvidia/openvswitch-2.17.0/datapath' Making all in linux make[3]: Entering directory '/home/nvidia/openvswitch-2.17.0/datapath/linux' make -C /lib/modules/4.9.253-tegra/build M=/home/nvidia/openvswitch-2.17.0/datapath/linux modules make[4]: Entering directory '/usr/src/linux-headers-4.9.253-tegra-ubuntu18.04_aarch64/kernel-4.9' Building modules, stage 2. MODPOST 6 modules WARNING: "rpl_gre_exit" [/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined! WARNING: "rpl_gre_add_protocol" [/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined! WARNING: "rpl_gre_build_header" [/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined! WARNING: "rpl_gre_parse_header" [/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined! WARNING: "rpl_gre_del_protocol" [/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined! WARNING: "rpl_gre_init" [/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined! make[4]: Leaving directory '/usr/src/linux-headers-4.9.253-tegra-ubuntu18.04_aarch64/kernel-4.9' make[3]: Leaving directory '/home/nvidia/openvswitch-2.17.0/datapath/linux' make[3]: Entering directory '/home/nvidia/openvswitch-2.17.0/datapath' make[3]: Leaving directory '/home/nvidia/openvswitch-2.17.0/datapath' make[2]: Leaving directory '/home/nvidia/openvswitch-2.17.0/datapath' make[2]: Entering directory '/home/nvidia/openvswitch-2.17.0' make[2]: Leaving directory '/home/nvidia/openvswitch-2.17.0' make[1]: Leaving directory '/home/nvidia/openvswitch-2.17.0' ``` After some digging it seems like the missing functions are defined in the file `datapath/linux/compat/ip_gre.c` but are blocked by the macro guard ``` #if IS_ENABLED(CONFIG_NET_IPGRE_DEMUX) ``` I can confirm that "USE_UPSTREAM_TUNNEL" is not set in my build and that it is the "CONFIG_NET_IPGRE_DEMUX" flag which is blocking compilation of the missing functions. If I comment out the "IS_ENABLED(CONFIG_NET_IPGRE_DEMUX)" macro then I can successfully build and install the kernel module and it appears to work. However it seems like CONFIG_NET_IPGRE_DEMUX might be some sort of kernel flag. I'm well out of my depth with kernel stuff so its not clear if there are additional implications to this hack or what the correct solution would be. Cheers. Geoff Goehle.
_______________________________________________ discuss mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
