cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

psample.sh (4114B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0
      3#
      4# This test is for checking the psample module. It makes use of netdevsim
      5# which periodically generates "sampled" packets.
      6
      7lib_dir=$(dirname $0)/../../../net/forwarding
      8
      9ALL_TESTS="
     10	psample_enable_test
     11	psample_group_num_test
     12	psample_md_test
     13"
     14NETDEVSIM_PATH=/sys/bus/netdevsim/
     15DEV_ADDR=1337
     16DEV=netdevsim${DEV_ADDR}
     17SYSFS_NET_DIR=/sys/bus/netdevsim/devices/$DEV/net/
     18PSAMPLE_DIR=/sys/kernel/debug/netdevsim/$DEV/psample/
     19CAPTURE_FILE=$(mktemp)
     20NUM_NETIFS=0
     21source $lib_dir/lib.sh
     22
     23DEVLINK_DEV=
     24source $lib_dir/devlink_lib.sh
     25DEVLINK_DEV=netdevsim/${DEV}
     26
     27# Available at https://github.com/Mellanox/libpsample
     28require_command psample
     29
     30psample_capture()
     31{
     32	rm -f $CAPTURE_FILE
     33
     34	timeout 2 ip netns exec testns1 psample &> $CAPTURE_FILE
     35}
     36
     37psample_enable_test()
     38{
     39	RET=0
     40
     41	echo 1 > $PSAMPLE_DIR/enable
     42	check_err $? "Failed to enable sampling when should not"
     43
     44	echo 1 > $PSAMPLE_DIR/enable 2>/dev/null
     45	check_fail $? "Sampling enablement succeeded when should fail"
     46
     47	psample_capture
     48	if [ $(cat $CAPTURE_FILE | wc -l) -eq 0 ]; then
     49		check_err 1 "Failed to capture sampled packets"
     50	fi
     51
     52	echo 0 > $PSAMPLE_DIR/enable
     53	check_err $? "Failed to disable sampling when should not"
     54
     55	echo 0 > $PSAMPLE_DIR/enable 2>/dev/null
     56	check_fail $? "Sampling disablement succeeded when should fail"
     57
     58	psample_capture
     59	if [ $(cat $CAPTURE_FILE | wc -l) -ne 0 ]; then
     60		check_err 1 "Captured sampled packets when should not"
     61	fi
     62
     63	log_test "psample enable / disable"
     64}
     65
     66psample_group_num_test()
     67{
     68	RET=0
     69
     70	echo 1234 > $PSAMPLE_DIR/group_num
     71	echo 1 > $PSAMPLE_DIR/enable
     72
     73	psample_capture
     74	grep -q -e "group 1234" $CAPTURE_FILE
     75	check_err $? "Sampled packets reported with wrong group number"
     76
     77	# New group number should only be used after disable / enable.
     78	echo 4321 > $PSAMPLE_DIR/group_num
     79
     80	psample_capture
     81	grep -q -e "group 4321" $CAPTURE_FILE
     82	check_fail $? "Group number changed while sampling is active"
     83
     84	echo 0 > $PSAMPLE_DIR/enable && echo 1 > $PSAMPLE_DIR/enable
     85
     86	psample_capture
     87	grep -q -e "group 4321" $CAPTURE_FILE
     88	check_err $? "Group number did not change after restarting sampling"
     89
     90	log_test "psample group number"
     91
     92	echo 0 > $PSAMPLE_DIR/enable
     93}
     94
     95psample_md_test()
     96{
     97	RET=0
     98
     99	echo 1 > $PSAMPLE_DIR/enable
    100
    101	echo 1234 > $PSAMPLE_DIR/in_ifindex
    102	echo 4321 > $PSAMPLE_DIR/out_ifindex
    103	psample_capture
    104
    105	grep -q -e "in-ifindex 1234" $CAPTURE_FILE
    106	check_err $? "Sampled packets reported with wrong in-ifindex"
    107
    108	grep -q -e "out-ifindex 4321" $CAPTURE_FILE
    109	check_err $? "Sampled packets reported with wrong out-ifindex"
    110
    111	echo 5 > $PSAMPLE_DIR/out_tc
    112	psample_capture
    113
    114	grep -q -e "out-tc 5" $CAPTURE_FILE
    115	check_err $? "Sampled packets reported with wrong out-tc"
    116
    117	echo $((2**16 - 1)) > $PSAMPLE_DIR/out_tc
    118	psample_capture
    119
    120	grep -q -e "out-tc " $CAPTURE_FILE
    121	check_fail $? "Sampled packets reported with out-tc when should not"
    122
    123	echo 1 > $PSAMPLE_DIR/out_tc
    124	echo 10000 > $PSAMPLE_DIR/out_tc_occ_max
    125	psample_capture
    126
    127	grep -q -e "out-tc-occ " $CAPTURE_FILE
    128	check_err $? "Sampled packets not reported with out-tc-occ when should"
    129
    130	echo 0 > $PSAMPLE_DIR/out_tc_occ_max
    131	psample_capture
    132
    133	grep -q -e "out-tc-occ " $CAPTURE_FILE
    134	check_fail $? "Sampled packets reported with out-tc-occ when should not"
    135
    136	echo 10000 > $PSAMPLE_DIR/latency_max
    137	psample_capture
    138
    139	grep -q -e "latency " $CAPTURE_FILE
    140	check_err $? "Sampled packets not reported with latency when should"
    141
    142	echo 0 > $PSAMPLE_DIR/latency_max
    143	psample_capture
    144
    145	grep -q -e "latency " $CAPTURE_FILE
    146	check_fail $? "Sampled packets reported with latency when should not"
    147
    148	log_test "psample metadata"
    149
    150	echo 0 > $PSAMPLE_DIR/enable
    151}
    152
    153setup_prepare()
    154{
    155	modprobe netdevsim &> /dev/null
    156
    157	echo "$DEV_ADDR 1" > ${NETDEVSIM_PATH}/new_device
    158	while [ ! -d $SYSFS_NET_DIR ] ; do :; done
    159
    160	set -e
    161
    162	ip netns add testns1
    163	devlink dev reload $DEVLINK_DEV netns testns1
    164
    165	set +e
    166}
    167
    168cleanup()
    169{
    170	pre_cleanup
    171	rm -f $CAPTURE_FILE
    172	ip netns del testns1
    173	echo "$DEV_ADDR" > ${NETDEVSIM_PATH}/del_device
    174	modprobe -r netdevsim &> /dev/null
    175}
    176
    177trap cleanup EXIT
    178
    179setup_prepare
    180
    181tests_run
    182
    183exit $EXIT_STATUS