diff --git a/Makefile b/Makefile index 7fcc7b2..70d5a3b 100644 --- a/Makefile +++ b/Makefile @@ -12,14 +12,19 @@ #CFLAGS_msr_batch.o := -DDEBUG #CFLAGS_msr-smp.o := -DDEBUG +KERNELVER ?= $(shell uname -r) + obj-m += msr-safe.o msr-safe-objs := msr_entry.o msr_allowlist.o msr-smp.o msr_batch.o msr_version.o -all: msrsave/msrsave - make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules +all: module msrsave/msrsave + make -C /lib/modules/$(KERNELVER)/build M=$(PWD) modules + +module: + make -C /lib/modules/$(KERNELVER)/build M=$(PWD) modules clean: - make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean + make -C /lib/modules/$(KERNELVER)/build M=$(PWD) clean rm -f msrsave/msrsave.o msrsave/msrsave msrsave/msrsave_test msrsave/spank_msrsafe.o msrsave/libspank_msrsafe.so check: msrsave/msrsave_test @@ -84,4 +89,4 @@ spack-install: $(INSTALL) msr_safe.h $(DESTDIR)/include .SUFFIXES: .c .o -.PHONY: all clean install spank install-spank +.PHONY: all module clean install spank install-spank diff --git a/README.md b/README.md index 97f760d..d28e00c 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ cd msr-safe make sudo insmod ./msr-safe.ko sudo chmod g+rw /dev/cpu/*/msr_safe /dev/cpu/msr_* -sudo chgrp msr-user /dev/cpu/*/msr_safe /dev/cpu/msr_batch /dev/cpu/msr_version +sudo chgrp msr-user /dev/cpu/*/msr_safe /dev/cpu/msr_batch /dev/cpu/msr_safe_version sudo chgrp msr-admin /dev/cpu/msr_allowlist ``` @@ -54,6 +54,50 @@ Use **rmmod(8)** to unload msr-safe. sudo rmmod msr-safe ``` +# DKMS + +Copy or clone the repo into /usr/src as the specific directory `msr-safe-git` + +```console +$ sudo git clone https://github.com/LLNL/msr-safe /usr/src/msr-safe-git +``` + +Than add it to DKMS: + +```console +$ sudo dkms add -m msr-safe -v git +``` + +Try to build and install it: + +```console +$ sudo dkms build -m msr-safe -v git +$ sudo dkms install -m msr-safe -v git +``` + +Remove it with: + +```console +$ sudo dkms remove -m msr-safe -v git --all +``` + +# Udev + +Rules to adjust permissions on the device files and restore default allowlist: + +```console +$ cat </dev/null +# Rules to adjust group and permission for all device files. +SUBSYSTEM=="msr_safe", ACTION=="add", GROUP="msr-user", MODE="0660" +SUBSYSTEM=="msr_batch", ACTION=="add", GROUP="msr-user", MODE="0660" +SUBSYSTEM=="msr_safe_version", ACTION=="add", GROUP="msr-user", MODE="0440" +SUBSYSTEM=="msr_allowlist", ACTION=="add", GROUP="msr-admin", MODE="0660" + +# Restore default allowlist +SUBSYSTEM=="msr_allowlist", ACTION=="add", RUN+="/bin/sh -c 'cat /etc/msr-safe/default_allowlist >/dev/cpu/msr_allowlist'" +EOR +``` + # DESCRIPTION ## /dev/cpu/msr_allowlist diff --git a/dkms.conf b/dkms.conf new file mode 100644 index 0000000..9a4888e --- /dev/null +++ b/dkms.conf @@ -0,0 +1,6 @@ +PACKAGE_NAME="msr-safe" +PACKAGE_VERSION="git" +MAKE[0]="KERNELVER=$kernelver make module" +BUILT_MODULE_NAME[0]="msr-safe" +DEST_MODULE_LOCATION[0]="/updates" +AUTOINSTALL="yes"