mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-26 21:55:36 +07:00
d2bf793237
This adds a test to verify proper functioning of the rfi flush capability implemented to mitigate meltdown. The test works by measuring the number of L1d cache misses encountered while loading data from memory. Across a system call, since the L1d cache is flushed when rfi_flush is enabled, the number of cache misses is expected to be relative to the number of cachelines corresponding to the data being loaded. The current system setting is reflected via powerpc/rfi_flush under debugfs (assumed to be /sys/kernel/debug/). This test verifies the expected result with rfi_flush enabled as well as when it is disabled. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> [mpe: Add SPDX tags, clang format, skip if the debugfs is missing, use __u64 and SANE_USERSPACE_TYPES to avoid printf() build errors.] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
76 lines
1.6 KiB
Makefile
76 lines
1.6 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# Makefile for powerpc selftests
|
|
|
|
# ARCH can be overridden by the user for cross compiling
|
|
ARCH ?= $(shell uname -m)
|
|
ARCH := $(shell echo $(ARCH) | sed -e s/ppc.*/powerpc/)
|
|
|
|
ifeq ($(ARCH),powerpc)
|
|
|
|
GIT_VERSION = $(shell git describe --always --long --dirty || echo "unknown")
|
|
|
|
CFLAGS := -std=gnu99 -O2 -Wall -Werror -DGIT_VERSION='"$(GIT_VERSION)"' -I$(CURDIR)/include $(CFLAGS)
|
|
|
|
export CFLAGS
|
|
|
|
SUB_DIRS = alignment \
|
|
benchmarks \
|
|
cache_shape \
|
|
copyloops \
|
|
dscr \
|
|
mm \
|
|
pmu \
|
|
signal \
|
|
primitives \
|
|
stringloops \
|
|
switch_endian \
|
|
syscalls \
|
|
tm \
|
|
vphn \
|
|
math \
|
|
ptrace \
|
|
security
|
|
|
|
endif
|
|
|
|
all: $(SUB_DIRS)
|
|
|
|
$(SUB_DIRS):
|
|
BUILD_TARGET=$(OUTPUT)/$@; mkdir -p $$BUILD_TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -k -C $@ all
|
|
|
|
include ../lib.mk
|
|
|
|
override define RUN_TESTS
|
|
@for TARGET in $(SUB_DIRS); do \
|
|
BUILD_TARGET=$(OUTPUT)/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
|
|
done;
|
|
endef
|
|
|
|
override define INSTALL_RULE
|
|
@for TARGET in $(SUB_DIRS); do \
|
|
BUILD_TARGET=$(OUTPUT)/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install;\
|
|
done;
|
|
endef
|
|
|
|
override define EMIT_TESTS
|
|
@for TARGET in $(SUB_DIRS); do \
|
|
BUILD_TARGET=$(OUTPUT)/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET emit_tests;\
|
|
done;
|
|
endef
|
|
|
|
override define CLEAN
|
|
@for TARGET in $(SUB_DIRS); do \
|
|
BUILD_TARGET=$(OUTPUT)/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean; \
|
|
done;
|
|
rm -f tags
|
|
endef
|
|
|
|
tags:
|
|
find . -name '*.c' -o -name '*.h' | xargs ctags
|
|
|
|
.PHONY: tags $(SUB_DIRS)
|