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