dellomsa-drivers and local_bh_disable (RH kernel 2.4.18-27.7.xsmp)

Linda Laubenheimer LindaL at Nuasis.com
Thu Oct 23 22:50:00 CDT 2003


That pesky little esm.o module is trying to give me an ulcer!  I've had 
problems with it on other kernels, and even had to hack the source 
(malloc.h vs. slab.h).

But this time I'm stumped.  Apparently, the problem has been mentioned 
here before, but no real solution has been posted (that I can find in the 
archives).

My setup: Shiny new PowerEdge 1750, Linux 7.1 with kernel-2.4.18-27.7.xsmp, 
kernel-headers-2.4.9-34, and kernel-source-2.4.18-27.7.x

I installed my sources, made sure my config was there, did a "make 
oldconfig"  and a "make dep".  Then I went to install the drivers rpm,
so it could build esm.o and install it.  (This I then copy to production 
servers where I don't want to install sources, and for 2.4.18-17.7.x(smp) 
this worked with a well placed shove.)

The dellomsa-drivers rpm compiled the module, but failed to install it.

This happened with both dellomsa-drivers-4.90-3825 *and* 
dellomsa-drivers-4.100-3865.  The problem seems to be with local_bh_enable 
and local_bh_disable, which a little googling showed to be related to
pppd in the kernels, and has a bug that has been fixed regarding it.

The errors on the attempt were:

----------------------------
[root at sj-qal-db03 tmp]# rpm -ivh dellomsa-drivers-4.90-3825.i386.rpm
Preparing...                ########################################### [100%]
   1:dellomsa-drivers       ########################################### [100%]
 
Building device driver for running kernel:                 [  OK  ]
Loading Server Administrator Device Drivers:               [FAILED]
Running kernel is not supported.
See Dynamic Kernel Support in the Server Administrator readme.txt file.
 
Run rpm using the -e option to clean up the RPM database. Enter:
rpm -e dellomsa-drivers-4.90-3825
 
dellomsa-drivers-4.90-3825.i386.rpm: Install was NOT successful! ERROR 44
 
error: execution of %post scriptlet from dellomsa-drivers-4.90-3825 failed, exit status 44
[root at sj-qal-db03 tmp]#
----------------------------------------

The esm.map file contains:

----------------------------------------
/lib/modules/2.4.18-27.7.xsmp/misc/esm.o: unresolved symbol local_bh_enable
/lib/modules/2.4.18-27.7.xsmp/misc/esm.o: unresolved symbol local_bh_disable
/lib/modules/2.4.18-27.7.xsmp/misc/esm.o: 
Hint: You are trying to load a module without a GPL compatible license
      and it has unresolved symbols.  Contact the module supplier for
      assistance, only they can help you.
---------------------------------------

The esm_log in the /usr/lib/dell/openmanager/omsa/drivers/open_src directory 
contains the following:

----------------------------------------
KDIR=`echo  2.4.18-27.7.xsmp`; \
	KVER=`echo  2.4.18-27.7.xsmp | cut -f 1 -d '-' -`; \
	BVER=`echo  2.4.18-27.7.xsmp | cut -f 2 -d '-' -`; \
	mkdir -p ${KDIR}/modules; \
	ln -sf ../${KVER}-generic/Makefile ${KDIR}/Makefile; \
	ln -sf ../${KVER}-generic/Rules.make ${KDIR}/Rules.make; \
	ln -sf ../${KVER}-generic/arch ${KDIR}/arch; \
	ln -sf ../${KVER}-generic/scripts ${KDIR}/scripts; \
	for i in esm; do \
		ln -s ../$i ${KDIR}/$i ; \
	done; \
	if [ ! -e ${KDIR}/.config ]; then  \
		cp ${KDIR}/kernel-${KVER}-i686-smp.config ${KDIR}/.config; \
	fi; \
	make -C ${KDIR} SUBDIRS="esm" COMPILE_VERSION="-DSYSTEM_TYPE_LINUX" EXTRAVERSION=-${BVER} INSTALL_MOD_PATH=`pwd`/${KDIR} modules; \
	make -C ${KDIR} SUBDIRS="esm" COMPILE_VERSION="-DSYSTEM_TYPE_LINUX" EXTRAVERSION=-${BVER} INSTALL_MOD_PATH=`pwd`/${KDIR} modules_install; \
	for i in esm; do \
		rm ${KDIR}/$i ; \
	done; \
	rm ${KDIR}/modules/*; \
	rmdir ${KDIR}/modules; \

make[1]: Entering directory `/usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp'
make -C  esm CFLAGS="-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DSYSTEM_TYPE_LINUX -fno-strict-aliasing -D__SMP__ -pipe -mpreferred-stack-boundary=2 -march=i586 -DMODULE -include /usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp/include/linux/version.h -DMODVERSIONS -include /usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp/include/linux/modversions.h -I../common/include -I../common/include/linux -I../esm/common/include -I../esm" MAKING_MODULES=1 modules
make[2]: Entering directory `/usr/lib/dell/openmanage/omsa/drivers/open_src/esm'
gcc -D__KERNEL__ -I/usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DSYSTEM_TYPE_LINUX -fno-strict-aliasing -D__SMP__ -pipe -mpreferred-stack-boundary=2 -march=i586 -DMODULE -include /usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp/include/linux/version.h -DMODVERSIONS -include /usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp/include/linux/modversions.h -I../common/include -I../common/include/linux -I../esm/common/include -I../esm   -c -o dcesm.o dcesm.c
dcesm.c: In function `esm_ioctl':
dcesm.c:141: warning: implicit declaration of function `EsmIsDevIntUseAllowed'
dcesm.c: In function `esm_spin_lock_bh':
dcesm.c:395: warning: implicit declaration of function `local_bh_disable'
dcesm.c: In function `esm_spin_unlock_bh':
dcesm.c:402: warning: implicit declaration of function `local_bh_enable'
dcesm.c: In function `ReadPhysMem':
dcesm.c:582: warning: `pMPM' might be used uninitialized in this function
rm -f $TOPDIR/modules/ESM_MODULES
echo  dcesm.o >> $TOPDIR/modules/ESM_MODULES
echo esm/
esm/
cd $TOPDIR/modules; for i in  dcesm.o; do \
    ln -sf ../esm//$i $i; done
make[2]: Leaving directory `/usr/lib/dell/openmanage/omsa/drivers/open_src/esm'
make[1]: Leaving directory `/usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp'
make[1]: Entering directory `/usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp'
Installing modules under /usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp/lib/modules/2.4.18-27.7.xsmp/misc
make[1]: Leaving directory `/usr/lib/dell/openmanage/omsa/drivers/open_src/2.4.18-27.7.xsmp'
----------------------------------

Now, I could go in and comment out the functions "esm_spin_lock_bh" and 
"esm_spin_unlock_bh", but I have insufficient knowledge of the module architecture 
to feel comfortable with that.  

Any suggestions?  Any patches or module hacks that I can try?  I can't change the 
kernel, it's a version specific to some third party software we run, and mangling 
the stock kernel is probably out for the same kind of reason.  

Linda J Laubenheimer

P.S.: Talking to Dell support in the past has proven fruitless at best, 
infuriating at worst, especially when I can't seem to get a tech who really 
understands Linux.  So I'd rather ask you nice, experienced people.




More information about the Linux-PowerEdge mailing list