59 lines
1.5 KiB
Bash
59 lines
1.5 KiB
Bash
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
# Kselftest framework requirement - SKIP code is 4.
|
|
ksft_skip=4
|
|
|
|
if [ $EUID -ne 0 ]
|
|
then
|
|
echo "Run as root"
|
|
exit $ksft_skip
|
|
fi
|
|
|
|
damon_sysfs="/sys/kernel/mm/damon/admin"
|
|
if [ ! -d "$damon_sysfs" ]
|
|
then
|
|
echo "damon sysfs not found"
|
|
exit $ksft_skip
|
|
fi
|
|
|
|
# clear log
|
|
dmesg -C
|
|
|
|
# start DAMON with a scheme
|
|
echo 1 > "$damon_sysfs/kdamonds/nr_kdamonds"
|
|
echo 1 > "$damon_sysfs/kdamonds/0/contexts/nr_contexts"
|
|
echo "vaddr" > "$damon_sysfs/kdamonds/0/contexts/0/operations"
|
|
echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/targets/nr_targets"
|
|
echo $$ > "$damon_sysfs/kdamonds/0/contexts/0/targets/0/pid_target"
|
|
echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/nr_schemes"
|
|
scheme_dir="$damon_sysfs/kdamonds/0/contexts/0/schemes/0"
|
|
echo 4096000 > "$scheme_dir/access_pattern/sz/max"
|
|
echo 20 > "$scheme_dir/access_pattern/nr_accesses/max"
|
|
echo 1024 > "$scheme_dir/access_pattern/age/max"
|
|
echo "on" > "$damon_sysfs/kdamonds/0/state"
|
|
sleep 0.3
|
|
|
|
# remove scheme sysfs dir
|
|
echo 0 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/nr_schemes"
|
|
|
|
# try to update stat of already removed scheme sysfs dir
|
|
echo "update_schemes_stats" > "$damon_sysfs/kdamonds/0/state"
|
|
if dmesg | grep -q BUG
|
|
then
|
|
echo "update_schemes_stats triggers a kernel bug"
|
|
dmesg
|
|
exit 1
|
|
fi
|
|
|
|
# try to update tried regions of already removed scheme sysfs dir
|
|
echo "update_schemes_tried_regions" > "$damon_sysfs/kdamonds/0/state"
|
|
if dmesg | grep -q BUG
|
|
then
|
|
echo "update_schemes_tried_regions triggers a kernel bug"
|
|
dmesg
|
|
exit 1
|
|
fi
|
|
|
|
echo "off" > "$damon_sysfs/kdamonds/0/state"
|