162306a36Sopenharmony_ci#!/bin/bash
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
362306a36Sopenharmony_ci#
462306a36Sopenharmony_ci# Load kernel module for FPU tests
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciuid=$(id -u)
762306a36Sopenharmony_ciif [ $uid -ne 0 ]; then
862306a36Sopenharmony_ci	echo "$0: Must be run as root"
962306a36Sopenharmony_ci	exit 1
1062306a36Sopenharmony_cifi
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciif ! which modprobe > /dev/null 2>&1; then
1362306a36Sopenharmony_ci	echo "$0: You need modprobe installed"
1462306a36Sopenharmony_ci        exit 4
1562306a36Sopenharmony_cifi
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciif ! modinfo test_fpu > /dev/null 2>&1; then
1862306a36Sopenharmony_ci	echo "$0: You must have the following enabled in your kernel:"
1962306a36Sopenharmony_ci	echo "CONFIG_TEST_FPU=m"
2062306a36Sopenharmony_ci	exit 4
2162306a36Sopenharmony_cifi
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciNR_CPUS=$(getconf _NPROCESSORS_ONLN)
2462306a36Sopenharmony_ciif [ ! $NR_CPUS ]; then
2562306a36Sopenharmony_ci	NR_CPUS=1
2662306a36Sopenharmony_cifi
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_cimodprobe test_fpu
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciif [ ! -e /sys/kernel/debug/selftest_helpers/test_fpu ]; then
3162306a36Sopenharmony_ci	mount -t debugfs none /sys/kernel/debug
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	if [ ! -e /sys/kernel/debug/selftest_helpers/test_fpu ]; then
3462306a36Sopenharmony_ci		echo "$0: Error mounting debugfs"
3562306a36Sopenharmony_ci		exit 4
3662306a36Sopenharmony_ci	fi
3762306a36Sopenharmony_cifi
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciecho "Running 1000 iterations on all CPUs... "
4062306a36Sopenharmony_cifor i in $(seq 1 1000); do
4162306a36Sopenharmony_ci	for c in $(seq 1 $NR_CPUS); do
4262306a36Sopenharmony_ci		./test_fpu &
4362306a36Sopenharmony_ci	done
4462306a36Sopenharmony_cidone
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_cirmmod test_fpu
47