Skip to content
Snippets Groups Projects
Commit 8c01de98 authored by Keith Thorne's avatar Keith Thorne
Browse files

Enable kernel module versioning - Rev2

Closes #14 - Restore support for kernel module versioning
patches/kernel-4.19-cs/config-4.19.67-cs - change to MODVERSIONS=y
patches/kernel-4.19-cs/README - Update note on config file
-- changes for mbuf, gpstime symbol versions --
Update RCG autotools - remove configure, move configure.in to configure.ac
bootstrap - add to generate configure from configure.ac
configure.ac - rename from configure.in, add tests to find path to mbuf, gpstime
Module.symvers files - either /var/lib/dkms/$MODNAME/$MODVERS/$KVERS/$ARCH/
for DKMS package or /var/cache/$MODNAME from local build
src/drv/ExtraSymbols.symvers - Remove mbuf, gpstime symbols
src/drv/gpstime/Makefile - Add caching of Module.symvers in /var/cache/gpstime on install
src/drv/mbuf/Makefile - Add caching of Module.symvers in /var/cache/mbuf on install
src/epics/util/Makefile.in  - Add mbuf,gpstime Module.symvers paths
src/epics/util/feCodeGen.pl - Add KBUILD_EXTRA_SYMBOLS statements to front-end make file
-- changes to front-end kernel module symbol versions --
src/drv/ExtraSymbols.symvers - Remove need_to_load_IOP_first
src/epics/util/Makefile.in - Add caching of need_to_load_IOP_first symbol version, copy of cache for builds
src/epics/util/feCodeGen.pl - Add KBUILD_EXTRA_SYMBOLS for this
parent e10b6064
No related branches found
No related tags found
1 merge request!40Enable kernel module versioning - Rev2
......@@ -47,7 +47,14 @@ DEVFLAGS=@DEVFLAGS@
@/bin/mv -f build/$@epics-config build/$@epics/config
@echo Building front-end Linux kernel module $@...
@make -sC src/fe/$@ clean
# @cp $(srcdir)/src/drv/gpstime/Module.symvers src/fe/$@
# copy IOP symbol file to build area if found
@cp src/fe/ModuleIOP.symvers src/fe/$@ > /dev/null 2>&1 || /bin/true
# build it
@make -C src/fe/$@ >> $@.log 2>>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
# save IOP symbol to file
@grep IOP src/fe/$@/Module.symvers > /tmp/tmp.symvers
@awk -vOFS='\t' '{$$3 = "/"; print}' /tmp/tmp.symvers > src/fe/ModuleIOP.symvers
@rm /tmp/tmp.symvers
@make -C src/fe/$@ >> $@.log 2>>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
@$(srcdir)/src/epics/util/checkUndefined.pl $@_error.log >> $@.log 2>>$@_error.log || (tail $@.log; cat $@_error.log && /bin/false)
@echo Done
......
#! /bin/sh
# Use this script to initiate RCG builds
# Auther: Keith Thorne
aclocal
autoconf
This diff is collapsed.
#dnl Process this file with autoconf to produce a configure script.
AC_INIT(NEWS)
# find mbuf symvers file
foundmbuf=
mbufsym=
mbufdkms=
AC_MSG_CHECKING([for mbuf Module.symvers])
if test -x /sbin/dkms
then
mbufstat=`/sbin/dkms status -m mbuf`
if test x"${mbufstat}" = "x"
then
mbufdkms="no"
else
mbufdkms="yes"
mmodvers=`echo ${mbufstat} | awk '{print $2}' | sed 's/.$//'`
mkvers=`echo ${mbufstat} | awk '{print $3}' | sed 's/.$//'`
march=`echo ${mbufstat} | awk '{print $4}' | sed 's/.$//'`
mtestpath="/var/lib/dkms/mbuf/${mmodvers}/${mkvers}/${march}/Module.symvers"
if test -f $mtestpath
then
mbufsym=$mtestpath
foundmbuf="yes"
fi
fi
else
mbufdkms="no"
fi
if test x$foundmbuf = "x"
then
mtestpath="/var/cache/mbuf/Module.symvers"
if test -f $mtestpath
then
mbufsym=$mtestpath
foundmbuf="yes"
else
foundmbuf="no"
fi
fi
if test x$foundmbuf = "xyes"
then
AC_MSG_RESULT([${mbufsym}])
else
AC_MSG_RESULT([no])
fi
# look for gpstime symvers
foundgpstime=
gpstimesym=
gpstimedkms=
AC_MSG_CHECKING([for gpstime Module.symvers])
if test -x /sbin/dkms
then
gbufstat=`/sbin/dkms status -m gpstime `
if test x"${gbufstat}" = "x"
then
gpstimedkms="no"
else
gpstimedkms="yes"
gmodvers=`echo ${gbufstat} | awk '{print $2}' | sed 's/.$//'`
gkvers=`echo ${gbufstat} | awk '{print $3}' | sed 's/.$//'`
garch=`echo ${gbufstat} | awk '{print $4}' | sed 's/.$//'`
gtestpath="/var/lib/dkms/gpstime/$gmodvers/$gkvers/$garch/Module.symvers"
if test -f $gtestpath
then
gpstimesym=$gtestpath
foundgpstime="yes"
fi
fi
else
gpstimedkms="no"
fi
if test x$foundgpstime = "x"
then
gtestpath="/var/cache/gpstime/Module.symvers"
if test -f $gtestpath
then
gpstimesym=$gtestpath
foundgpstime="yes"
else
foundgpstime="no"
fi
fi
if test x$foundgpstime = "xyes"
then
AC_MSG_RESULT([${gpstimesym}])
else
AC_MSG_RESULT([no])
fi
# set paths if they are found
MBUFSYMBOLPATH=
if test "$foundmbuf" = "yes"; then
MBUFSYMBOLPATH="$mbufsym"
fi
GPSSYMBOLPATH=
if test "$foundgpstime" = "yes"; then
GPSSYMBOLPATH="$gpstimesym"
fi
AC_SUBST([MBUFSYMBOLPATH])
AC_SUBST([GPSSYMBOLPATH])
AC_OUTPUT( Makefile )
AC_OUTPUT( src/epics/util/Makefile )
AC_OUTPUT( doc/doxygen.cfg )
AC_OUTPUT( doc/doxScript )
dnl Process this file with autoconf to produce a configure script.
AC_INIT(NEWS)
dnl Check for configuration options
dnl ==========================
AC_OUTPUT( Makefile )
AC_OUTPUT( src/epics/util/Makefile )
AC_OUTPUT( doc/doxygen.cfg )
AC_OUTPUT( doc/doxScript )
......@@ -12,6 +12,7 @@ config-4.19.37-aei-cs
- Custom kernel config file for Debian 10 - derived from AEI work but updated to newer kernel
-- Has fix for nomodeset on AST VGA chips
-- Re-enables kernel module versioning
config-4.19.67-cs
......@@ -712,7 +712,7 @@ CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
# CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set
......
0x00000000 need_to_load_IOP_first / EXPORT_SYMBOL
0x00000000 mbuf_allocate_area / EXPORT_SYMBOL
0x00000000 kmalloc_area / EXPORT_SYMBOL
0x00000000 sci_register_session_cb / EXPORT_SYMBOL
0x00000000 sci_kernel_virtual_address_of_mapping / EXPORT_SYMBOL
0x00000000 sci_map_segment / EXPORT_SYMBOL
0x00000000 sci_create_segment / EXPORT_SYMBOL
0x00000000 iop_rfm_valid / EXPORT_SYMBOL
0x00000000 sci_connect_segment / EXPORT_SYMBOL
0x00000000 sci_local_kernel_virtual_address / EXPORT_SYMBOL
0x00000000 sci_export_segment / EXPORT_SYMBOL
......@@ -17,4 +13,3 @@
0x00000000 sci_disconnect_segment / EXPORT_SYMBOL
0x00000000 sci_unmap_segment / EXPORT_SYMBOL
0x00000000 vprintkl / EXPORT_SYMBOL
0x00000000 ligo_get_gps_driver_offset / EXPORT_SYMBOL
......@@ -22,6 +22,8 @@ CC := gcc -Wall -g
TARGET := gpstime.ko
INSTDIR := /lib/modules/$(KVER)/extra
SYMVERSDIR := /var/cache/$(MODULENAME)
ifeq ($(KERNELRELEASE),)
#all: $(MODULENAME)_test
all:
......@@ -48,7 +50,10 @@ install:
rm -f /dev/$(MODULENAME) ; \
fi
mknod /dev/$(MODULENAME) c `grep $(MODULENAME) /proc/devices|awk '{print $$1}'` 0
chown controls /dev/$(MODULENAME)
chown controls /dev/$(MODULENAME)
# save Module.symvers if possible
mkdir -p $(SYMVERSDIR) || true
if [ -w $(SYMVERSDIR) ]; then cp Module.symvers $(SYMVERSDIR); fi
uninstall:
/sbin/rmmod $(MODULENAME) || true
......
......@@ -22,6 +22,8 @@ CC := gcc -Wall -g
TARGET := mbuf.ko
INSTDIR := /lib/modules/$(KVER)/extra
SYMVERSDIR := /var/cache/$(MODULENAME)
ifeq ($(KERNELRELEASE),)
#all: $(MODULENAME)_test
all:
......@@ -48,7 +50,10 @@ install:
rm -f /dev/$(MODULENAME) ; \
fi
mknod /dev/$(MODULENAME) c `grep $(MODULENAME) /proc/devices|awk '{print $$1}'` 0
chown controls /dev/$(MODULENAME)
chown controls /dev/$(MODULENAME)
# save Module.symvers if possible
mkdir -p $(SYMVERSDIR) || true
if [ -w $(SYMVERSDIR) ]; then cp Module.symvers $(SYMVERSDIR); fi
uninstall:
/sbin/rmmod $(MODULENAME) || true
......
......@@ -23,8 +23,10 @@ PERFORMANCEFLAGS=-DNDEBUG -g -O5
RELEASEFLAGS=-DNDEBUG -DNPROBE -g -O5
#DEBUGFLAGS=-DNDEBUG -O5 -unroll=16
DEVFLAGS=@DEVFLAGS@
mbuf_sym_file=@MBUFSYMBOLPATH@
gps_sym_file=@GPSSYMBOLPATH@
%:
env RCG_SRC_DIR=$(top_srcdir) PERL5LIB=$(srcdir) $(srcdir)/feCodeGen.pl $@.mdl $@
env RCG_SRC_DIR=$(top_srcdir) PERL5LIB=$(srcdir) MBUFSYM=$(mbuf_sym_file) GPSSYM=$(gps_sym_file) $(srcdir)/feCodeGen.pl $@.mdl $@
all:
......@@ -72,6 +72,8 @@ $lrpciefile = $rcg_src_dir . "/src/include/USE_LR_PCIE";
$pciegenfile = $rcg_src_dir . "/src/include/USE_DOLPHIN_GEN2";
$zmqfile = $rcg_src_dir . "/src/include/USE_ZMQ";
$usezmq = 0;
$mbufsymfile = $ENV{"MBUFSYM"};
$gpssymfile = $ENV{"GPSSYM"};
if (-e "$zmqfile") {
print "Using ZMQ for DAQ\n";
......@@ -2494,6 +2496,9 @@ open(OUTM,">./".$mFile) || die "cannot open Makefile file for writing";
print OUTM "# CPU-Shutdown Real Time Linux\n";
print OUTM "KBUILD_EXTRA_SYMBOLS=$rcg_src_dir/src/drv/ExtraSymbols.symvers\n";
print OUTM "KBUILD_EXTRA_SYMBOLS += $mbufsymfile\n";
print OUTM "KBUILD_EXTRA_SYMBOLS += $gpssymfile\n";
print OUTM "KBUILD_EXTRA_SYMBOLS += \$(PWD)/ModuleIOP.symvers\n";
print OUTM "ALL \+= user_mmap \$(TARGET_RTL)\n";
print OUTM "EXTRA_CFLAGS += -O -w -I../../include\n";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment