Skip to content

Commit

Permalink
Created a Daemon to modprobe/rmmod vdu drivers based on request. (Xil…
Browse files Browse the repository at this point in the history
…inx#6916)

* adding a daemon which modprobes vdu modules

* removing unneccessary locks

* changing the method to modprobe and rmmod of vdu

* removing zocl logic

* removing zocl logic

* changing names

* removed unused functionalities

Co-authored-by: root <[email protected]>
  • Loading branch information
chvamshi-xilinx and root authored Aug 18, 2022
1 parent 35d7eef commit b46719c
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 0 deletions.
15 changes: 15 additions & 0 deletions build/build_edge.sh
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,21 @@ config_versal_project()
cp $BB_FILE $VERSAL_PROJECT_DIR/project-spec/meta-user/recipes-apps/skd
cp $INIT_SCRIPT $VERSAL_PROJECT_DIR/project-spec/meta-user/recipes-apps/skd/files

# Create daemon to modprobe/rmmod vdu modules after xclbin load
# This daemon probes vdu drivers on first xclbin load and exit
SERVICE_FILE=$APU_RECIPES_DIR/vdu-init.service
BB_FILE=$APU_RECIPES_DIR/vdu-init.bb
INIT_SCRIPT=$APU_RECIPES_DIR/vdu-init

if [ ! -d $VERSAL_PROJECT_DIR/project-spec/meta-user/recipes-apps/vdu-init ]; then
$PETA_BIN/petalinux-config --silentconfig
$PETA_BIN/petalinux-create -t apps --template install -n vdu-init --enable
fi

cp $SERVICE_FILE $VERSAL_PROJECT_DIR/project-spec/meta-user/recipes-apps/vdu-init/files
cp $BB_FILE $VERSAL_PROJECT_DIR/project-spec/meta-user/recipes-apps/vdu-init
cp $INIT_SCRIPT $VERSAL_PROJECT_DIR/project-spec/meta-user/recipes-apps/vdu-init/files

# Generate vdu modules and add them to apu package

# Enable VDU kernel module
Expand Down
44 changes: 44 additions & 0 deletions src/runtime_src/tools/scripts/apu_recipes/vdu-init
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/sh
# This script is used for probing and removing vdu modules

log_file="/var/log/vdu_daemon_logs"
vdu_init_dir="/etc/"
vdu_init_file=$vdu_init_dir/vdu_init

function write_log() {
now_time='['$(date +"%Y-%m-%d %H:%M:%S")']'
echo $now_time $1 | tee -a "$log_file"
}

function vdu_probe() {

write_log 'modprobing vdu modules ...'

modprobe allegro ; modprobe al5d ;
if [ $? == 0 ]
then
write_log 'modprobe successful'
else
write_log 'modprobe failed'
fi
echo 0 > $vdu_init_file
}

write_log 'Daemon script started. this script is used for probing/removing vdu modules'

mkdir -p $vdu_init_dir
touch $vdu_init_file
chmod 666 $vdu_init_file
while true
do
action=$(cat $vdu_init_file)
#action :0 -> dont do anything
#action :1 -> modprobe the modules

if [ "$action" == 1 ]
then
vdu_probe
fi

sleep 5
done
34 changes: 34 additions & 0 deletions src/runtime_src/tools/scripts/apu_recipes/vdu-init.bb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
SUMMARY = "modprobe/rmmod of vdu modules"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"

LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://vdu-init file://vdu-init.service "

S = "${WORKDIR}"

FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

inherit update-rc.d systemd

INITSCRIPT_NAME = "vdu-init"
INITSCRIPT_PARAMS = "start 99 S ."

SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE:${PN} = "vdu-init.service"
SYSTEMD_AUTO_ENABLE:${PN}="enable"

do_install() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/vdu-init ${D}${sysconfdir}/init.d/
fi

install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/vdu-init ${D}${bindir}/
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/vdu-init.service ${D}${systemd_system_unitdir}
}

FILES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','${sysconfdir}/*', '', d)}"
9 changes: 9 additions & 0 deletions src/runtime_src/tools/scripts/apu_recipes/vdu-init.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Unit]
Description=vdu-init

[Service]
ExecStart=/usr/bin/vdu-init
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

0 comments on commit b46719c

Please sign in to comment.