1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4source _common.sh 5 6# Kselftest framework requirement - SKIP code is 4. 7ksft_skip=4 8 9check_dependencies 10 11damon_sysfs="/sys/kernel/mm/damon/admin" 12if [ ! -d "$damon_sysfs" ] 13then 14 echo "damon sysfs not found" 15 exit $ksft_skip 16fi 17 18# clear log 19dmesg -C 20 21# start DAMON with a scheme 22echo 1 > "$damon_sysfs/kdamonds/nr_kdamonds" 23echo 1 > "$damon_sysfs/kdamonds/0/contexts/nr_contexts" 24echo "vaddr" > "$damon_sysfs/kdamonds/0/contexts/0/operations" 25echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/targets/nr_targets" 26echo $$ > "$damon_sysfs/kdamonds/0/contexts/0/targets/0/pid_target" 27echo 1 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/nr_schemes" 28scheme_dir="$damon_sysfs/kdamonds/0/contexts/0/schemes/0" 29echo 4096000 > "$scheme_dir/access_pattern/sz/max" 30echo 20 > "$scheme_dir/access_pattern/nr_accesses/max" 31echo 1024 > "$scheme_dir/access_pattern/age/max" 32echo "on" > "$damon_sysfs/kdamonds/0/state" 33sleep 0.3 34 35# remove scheme sysfs dir 36echo 0 > "$damon_sysfs/kdamonds/0/contexts/0/schemes/nr_schemes" 37 38# try to update stat of already removed scheme sysfs dir 39echo "update_schemes_stats" > "$damon_sysfs/kdamonds/0/state" 40if dmesg | grep -q BUG 41then 42 echo "update_schemes_stats triggers a kernel bug" 43 dmesg 44 exit 1 45fi 46 47# try to update tried regions of already removed scheme sysfs dir 48echo "update_schemes_tried_regions" > "$damon_sysfs/kdamonds/0/state" 49if dmesg | grep -q BUG 50then 51 echo "update_schemes_tried_regions triggers a kernel bug" 52 dmesg 53 exit 1 54fi 55 56echo "off" > "$damon_sysfs/kdamonds/0/state" 57