59 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4# Kselftest framework requirement - SKIP code is 4.5ksft_skip=46 7if [ $EUID -ne 0 ]8then9 echo "Run as root"10 exit $ksft_skip11fi12 13damon_sysfs="/sys/kernel/mm/damon/admin"14if [ ! -d "$damon_sysfs" ]15then16 echo "damon sysfs not found"17 exit $ksft_skip18fi19 20# clear log21dmesg -C22 23# start DAMON with a scheme24echo 1 > "$damon_sysfs/kdamonds/nr_kdamonds"25echo 1 > "$damon_sysfs/kdamonds/0/contexts/nr_contexts"26echo "vaddr" > "$damon_sysfs/kdamonds/0/contexts/0/operations"27echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/targets/nr_targets"28echo $$ > "$damon_sysfs/kdamonds/0/contexts/0/targets/0/pid_target"29echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/nr_schemes"30scheme_dir="$damon_sysfs/kdamonds/0/contexts/0/schemes/0"31echo 4096000 > "$scheme_dir/access_pattern/sz/max"32echo 20 > "$scheme_dir/access_pattern/nr_accesses/max"33echo 1024 > "$scheme_dir/access_pattern/age/max"34echo "on" > "$damon_sysfs/kdamonds/0/state"35sleep 0.336 37# remove scheme sysfs dir38echo 0 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/nr_schemes"39 40# try to update stat of already removed scheme sysfs dir41echo "update_schemes_stats" > "$damon_sysfs/kdamonds/0/state"42if dmesg | grep -q BUG43then44 echo "update_schemes_stats triggers a kernel bug"45 dmesg46 exit 147fi48 49# try to update tried regions of already removed scheme sysfs dir50echo "update_schemes_tried_regions" > "$damon_sysfs/kdamonds/0/state"51if dmesg | grep -q BUG52then53 echo "update_schemes_tried_regions triggers a kernel bug"54 dmesg55 exit 156fi57 58echo "off" > "$damon_sysfs/kdamonds/0/state"59