VME
VME controller BIOS important settings
Make sure VME memry size is set to 512M
It can be several network ports in BIOS, find right one by using 'blinking', remember MAC address.
JVME driver installation
Following information should be considered as reference, do not follow those steps exactly. JVME-related modules maybe already installed in kernel, so only CODA-related part should be done.
old gefvme removal
yum remove kmod-gefvme gefvme-library
If failed on 'gefvme-library', do
rpm -e --noscripts gefvme-library
If file /etc/modules-load.d/gefvme.conf was not removed by above commands, remove it manually (if working from chroot ... then everything is done in root area, but gefvme.conf may survive in snapshot area, in that case remove it on controller and not in chroot).
File /etc/modules-load.d/vme.conf with contents
cmem_rcc jvme vme_vivo vme_ca91cx42 vme_tsi148 vme
may not be needed (if modules already in kernel ?).
new jvme (not sure if module installation is needed, maybe in kernel already ?)
Project git link: https://code.jlab.org/fedaq/drivers/jvme/-/tree/release-3.0
On vme controller as boiarino, copy jvme-release-3.0.tar to $CODA/src and untar it.
Create two environment scripts:
jvme_bash:
#!/bin/bash
export LINUXVME=${CODA}/src/jvme-release-3.0/linuxvme
export LINUXVME_INC=${LINUXVME}/include
export LINUXVME_LIB=${LINUXVME}/Linux_`uname -m`_vme/lib
export LINUXVME_BIN=${LINUXVME}/Linux_`uname -m`_vme/bin
export LD_LIBRARY_PATH=${LINUXVME_LIB}:${LD_LIBRARY_PATH}
export KERNELRELEASE=3.10.0-1062.9.1.el7.x86_64
jvme_tcsh:
#!/bin/tcsh
setenv LINUXVME ${CODA}/src/jvme-release-3.0/linuxvme
setenv LINUXVME_INC ${LINUXVME}/include
setenv LINUXVME_LIB ${LINUXVME}/Linux_`uname -m`_vme/lib
setenv LINUXVME_BIN ${LINUXVME}/Linux_`uname -m`_vme/bin
setenv LD_LIBRARY_PATH ${LINUXVME_LIB}:${LD_LIBRARY_PATH}
setenv KERNELRELEASE 3.10.0-1062.9.1.el7.x86_64
Run source jvme_tcsh. Go inside jvme-release-3.0. In two files CMakeLists.txt and src/CMakeLists.txt, change
set(libpath Linux-${CMAKE_SYSTEM_PROCESSOR}/lib)
set(libpath Linux-${CMAKE_SYSTEM_PROCESSOR}/bin)
to
set(libpath Linux_${CMAKE_SYSTEM_PROCESSOR}_vme/lib)
set(libpath Linux_${CMAKE_SYSTEM_PROCESSOR}_vme/bin)
Type cmake -B build -S . -DCMAKE_INSTALL_PREFIX=$LINUXVME
Fix Makefile in kernel_driver and three it's subdirectories, it must have following in the beginning:
KVERSION := $(KERNELRELEASE) ifeq ($(origin KERNELRELEASE), undefined) KVERSION := $(shell uname -r) endif
In directory jvme-release-3.0, type make and make install,
Do cd kernel_driver and make (do NOT do make install).
On the server, do
mount -o bind /usr/clas12 /diskless/CentOS7/x86_64/root/usr/clas12 mount -o bind /usr/local /diskless/CentOS7/x86_64/root/usr/local mount -o bind /home /diskless/CentOS7/x86_64/root/home chroot /diskless/CentOS7/x86_64/root cd /usr/clas12/release/2.0.0/coda/src source jvme_bash cd jvme-release-3.0/kernel_driver make install
Still on server, add two files to /etc/udev/rules.d directory:
99-cmem.rules:
KERNEL=="cmem_rcc", MODE="0666"
99-vme.rules:
KERNEL=="bus/vme/ctl", MODE="0666" KERNEL=="bus/vme/m_a16", MODE="0666" KERNEL=="bus/vme/m_a24", MODE="0666" KERNEL=="bus/vme/m_a32", MODE="0666" KERNEL=="bus/vme/m_crcsr", MODE="0666" KERNEL=="bus/vme/s_a32", MODE="0666" KERNEL=="bus/vme/s_rsvd1", MODE="0666" KERNEL=="bus/vme/s_rsvd2", MODE="0666" KERNEL=="bus/vme/s_rsvd3", MODE="0666"
Reboot controller, check if everything is good.
NOTE: if changing something in kernel module(s), it is not needed to reboot every time after make/make install is done in jvme-release-3.0/kernel_driver directory. Just run ./load_driver.sh as root on controller, and all modules will be reloaded.
NOTE: to add /et to snapshot area: on server, create /et directories in both root and snapshot areas, then add line '/et' to /etc/statetab file in root area, then reboot controller.