Vladimir Sokolovsky wrote: > > Ramachandra K wrote: > >> Moni Shoua wrote: >> >>> We already tried to go this way and found that a local >>> Module.symvers is not always generated (but we might have missed >>> something though). >>> I suggest that you check that this alternative way works under all >>> OSs compilation (SuSE and RedHat to be precise)... >>> >>> >> I think Module.symvers generation for external modules was added >> sometime >> around 2.6.16, so its not generated on the older kernels (for eg >> 2.6.9 kernels >> on RHEL) >> >> In this scenario, when there is no Module.symvers file, I guess the >> other >> option is to use a single Kbuild file to build both modules, >> as explained in section 7.3 of Documentation/kbuild/modules.txt. >> >> But this may not be feasible always. Come to think of it, why does the >> OFED installation procedure not update the kernel Module.symvers file >> when it replaces the old kernel modules present in /lib/modules/ >> with the new ones ? >> >>> BTW, Why not updating the kernel Module.symvers when kernel-ib-devel >>> is installed? This will free the developer from copying it to >>> his/hers private directory. >>> >>> >> It might be a good idea to update the Module.symvers file as part of the >> normal installation and not only kernel-ib-devel. Because if the kernel >> modules are being replaced (or new modules are being added), shouldn't >> the Module.symvers file also be updated ? >> Regards, >> Ram > > Agree, > Module.symvers should be updated by kernel-ib RPM. > So, need to implement Moni's suggestion with light changes: update > kernel-ib RPM %post and %preun sections instead of kernel-ib-devel RPM > %pre and %postun. > > Regards, > Vladimir > I agree although there is no use in updated Module.symvers when the devel RPM is not installed.
This is a part of the shell script that updates Module.symvers which you can use if you don't find a way how to generate Module.symvers in 2.4 kernels * for mod in $(find -name *.ko) ; do* * nm -o $mod |grep __crc >> /tmp/syms* * n_mods=$((n_mods+1))* * done* * n_syms=$(wc -l /tmp/syms |cut -f1 -d" ")* * echo found $n_syms InfiniBand symbols in $n_mods InfiniBand modules* * n=1* * MOD_SYMVERS_IB=./Module.symvers.ib* * MOD_SYMVERS_PATCH=./Module.symvers.patch* * if [ -f /lib/modules/$K_VER/source/Module.symvers ] ; then* * MOD_SYMVERS_KERNEL=/lib/modules/$K_VER/source/Module.symvers* * elif [ -f /lib/modules/$K_VER/build/Module.symvers ] ; then* * MOD_SYMVERS_KERNEL=/lib/modules/$K_VER/build/Module.symvers* * else* * echo file Module.symvers not found* * fi* * if [ ! -z $MOD_SYMVERS_KERNEL ] ; then * * * * rm -f $MOD_SYMVERS_IB* * while [ $n -le $n_syms ] ; do* * line=$(head -$n /tmp/syms|tail -1)* * line1=$(echo $line|cut -f1 -d:)* * line2=$(echo $line|cut -f2 -d:)* * file=$(echo $line1|cut -f6- -d/)* * file=$(echo $file|cut -f1 -d.)* * crc=$(echo $line2|cut -f1 -d" ")* * crc=${crc:8}* * sym=$(echo $line2|cut -f3 -d" ")* * sym=${sym:6}* * echo -e "0x$crc\t$sym\t$file" >> $MOD_SYMVERS_IB* * if [ -z $allsyms ] ; then* * allsyms=$sym* * else* * allsyms="$allsyms|$sym"* * fi* * n=$((n+1))* * done* * egrep -v "$allsyms" $MOD_SYMVERS_KERNEL >> $MOD_SYMVERS_IB* * diff -u $MOD_SYMVERS_KERNEL $MOD_SYMVERS_IB > $MOD_SYMVERS_PATCH* * patch -d $(dirname $MOD_SYMVERS_KERNEL) < $MOD_SYMVERS_PATCH* * mkdir -p /usr/voltaire/backup* * cp $MOD_SYMVERS_PATCH /usr/voltaire/backup* * fi* _______________________________________________ openib-general mailing list openib-general@openib.org http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general