This repository has been archived by the owner on Nov 21, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
executable file
·104 lines (78 loc) · 3.18 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
LINUX ?= linux
CORES ?= $(shell getconf _NPROCESSORS_ONLN)
LOAD ?= $(CORES)
JOBS ?= $(CORES)
PWD := $(shell pwd)
BINS = test/eviction test/kvm-eviction
BINS += test/kvm-eviction-with_guest test/kvm-eviction-without_guest
BINS += test/kvm-step test/kvm-step_guest
BINS += test/kvm-targetstep test/kvm-targetstep_guest
BINS += test/kvm-pagestep test/kvm-pagestep_guest
BINS += test/qemu-pagestep
BINS += test/qemu-targetstep test/qemu-targetstep_guest
BINS += test/qemu-aes_guest test/qemu-aes
#BINS += test/qemu-poc
BINS += util/loglevel util/reset util/mainpfn
CFLAGS = -I . -I linux/usr/include
CFLAGS += -g -Wunused-variable -Wunknown-pragmas -Wunused-function
HOST_CFLAGS = $(CFLAGS) -fsanitize=address
GUEST_CFLAGS = $(CFLAGS) -static
LDLIBS = -lpthread
UTIL_HDRS = cachepc/uapi.h cachepc/const.h
UTIL_SRCS =
TEST_HDRS = cachepc/uapi.h cachepc/const.h test/util.h test/kvm.h
TEST_SRCS = test/util.c test/kvm.c
all: build $(BINS)
clean:
$(MAKE) -C $(LINUX) clean M=arch/x86/kvm
$(MAKE) -C $(LINUX) clean M=crypto
rm -f cachepc/*.o
rm -f $(BINS)
$(LINUX)/arch/x86/kvm/cachepc:
ln -sf $(PWD)/cachepc $@
linux: # build host kernel for depmod
git -C $(LINUX) add .
git -C $(LINUX) stash
git -C $(LINUX) checkout d9bd54fea4d2
rm -f $(LINUX)/arch/x86/kvm/cachepc
$(MAKE) -C $(LINUX) -j $(JOBS) -l $(LOAD) vmlinux headers
git -C $(LINUX) checkout master
git -C $(LINUX) stash pop || true
build: $(LINUX)/arch/x86/kvm/cachepc
$(MAKE) -C $(LINUX) -j $(JOBS) -l $(LOAD) M=arch/x86/kvm modules
$(MAKE) -C $(LINUX) -j $(JOBS) -l $(LOAD) M=crypto modules
load:
sudo rmmod kvm_amd || true
sudo rmmod kvm || true
sudo insmod $(LINUX)/arch/x86/kvm/kvm.ko
sudo insmod $(LINUX)/arch/x86/kvm/kvm-amd.ko
prep:
sudo sh -c "echo 0 > /proc/sys/kernel/watchdog"
sudo sh -c "echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor"
sudo sh -c "echo 1500000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq"
sudo sh -c "echo 1500000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq"
sudo sh -c "echo 1500000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq"
sudo bash -c "for f in /proc/irq/*/smp_affinity; do echo 1 > \$$f 2>/dev/null; done"
util/%: util/%.c $(UTIL_SRCS)
$(CC) -o $@ $< $(HOST_CFLAGS)
util/mainpfn: util/mainpfn.c $(UTIL_SRCS)
$(CC) -o $@ $< $(GUEST_CFLAGS)
test/%.o: test/%.c $(TEST_HDRS)
$(CC) -c -o $@ $< $(HOST_CFLAGS)
test/%.o: test/%.S $(TEST_HDRS)
$(CC) -c -o $@ $< $(HOST_CFLAGS)
test/%: test/%.c $(TEST_SRCS)
$(CC) -o $@ $(filter %.c,$^) $(HOST_CFLAGS) $(LDLIBS)
test/kvm-%_guest: test/kvm-%_guest.o test/kvm-guest.lds
$(LD) -Ttest/kvm-guest.lds -o $@ $<
test/kvm-%: test/kvm-%.c $(TEST_SRCS)
$(CC) -o $@ $(filter %.c,$^) $(filter %.S,$^) $(HOST_CFLAGS) $(LDLIBS)
test/kvm-eviction: test/kvm-eviction.c test/kvm-eviction.h $(TEST_SRCS)
$(CC) -o $@ $(filter %.c,$^) $(filter %.S,$^) $(HOST_CFLAGS) $(LDLIBS)
test/qemu-%: test/qemu-%.c $(TEST_SRCS)
$(CC) -o $@ $(filter %.c,$^) $(filter %.S,$^) $(HOST_CFLAGS) $(LDLIBS)
test/qemu-aes_guest: test/qemu-aes_guest.c test/libkcapi/.libs/libkcapi.a
$(CC) -o $@ $^ $(GUEST_CFLAGS) -I test/libkcapi/lib
test/qemu-%_guest: test/qemu-%_guest.c
$(CC) -o $@ $^ $(GUEST_CFLAGS)
.PHONY: all clean linux build load prep