blob: ae7a8e24b8456cd1d5a1840b0f6e17b70650b2b1 (
plain)
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# Open-IOV Top-Level Build System
# Builds: kernel module (open-iov-vfio.ko), userspace lib (open-iov.so), examples, tests
SHELL := /bin/bash
# Directories
KERNEL_DIR := kernel
USERSPACE_DIR := userspace
FIRMWARE_DIR := firmware/57X-GSP/570.144
# Kernel module
KERNEL_MODULE := open-iov-vfio.ko
KERNEL_MODULE_SRC := $(KERNEL_DIR)/$(KERNEL_MODULE)
# Userspace library
USERSPACE_LIB := libiov.so
USERSPACE_LIB_SRC := $(USERSPACE_DIR)/lib/$(USERSPACE_LIB)
USERSPACE_LIB_LINK := $(USERSPACE_DIR)/lib/libvgpu.so # compat symlink
# Examples
EXAMPLES := example_vgpu
# Default target
.PHONY: all kernel userspace examples tests clean install firmware-check help
all: kernel userspace examples
help:
@echo "Open-IOV Build System"
@echo ""
@echo "Targets:"
@echo " all - Build kernel module, userspace library, examples"
@echo " kernel - Build open-iov-vfio.ko"
@echo " userspace - Build open-iov.so and libvgpu.so compat link"
@echo " examples - Build example applications"
@echo " tests - Build kernel and userspace tests"
@echo " clean - Clean all build artifacts"
@echo " install - Install kernel module and userspace library"
@echo " firmware-check - Verify GSP firmware exists"
@echo ""
# Kernel module build
kernel: $(KERNEL_MODULE_SRC)
$(KERNEL_MODULE_SRC): firmware-check
$(MAKE) -C $(KERNEL_DIR)
# Userspace library build
userspace: $(USERSPACE_LIB_SRC) $(USERSPACE_LIB_LINK)
$(USERSPACE_LIB_SRC):
$(MAKE) -C $(USERSPACE_DIR)/lib
$(USERSPACE_LIB_LINK): $(USERSPACE_LIB_SRC)
@ln -sf $(USERSPACE_LIB) $(USERSPACE_DIR)/lib/libvgpu.so
@ln -sf $(USERSPACE_LIB) $(USERSPACE_DIR)/lib/libvgpu.so.1
@ln -sf $(USERSPACE_LIB) $(USERSPACE_DIR)/lib/libvgpu.so.1.0.0
# Examples build
examples: userspace
$(MAKE) -C $(USERSPACE_DIR)/examples
# Tests build
tests: kernel userspace
$(MAKE) -C $(KERNEL_DIR)/tests
$(MAKE) -C $(USERSPACE_DIR)/tests
# Firmware check
firmware-check:
@if [ ! -f $(FIRMWARE_DIR)/gsp-570.144.fwimage.bin ]; then \
echo "ERROR: GSP firmware not found at $(FIRMWARE_DIR)/gsp-570.144.fwimage.bin"; \
exit 1; \
fi
@echo "Firmware OK: $(FIRMWARE_DIR)/gsp-570.144.fwimage.bin"
# Clean
clean:
$(MAKE) -C $(KERNEL_DIR) clean
$(MAKE) -C $(USERSPACE_DIR)/lib clean
$(MAKE) -C $(USERSPACE_DIR)/examples clean
$(MAKE) -C $(USERSPACE_DIR)/tests clean
$(MAKE) -C $(KERNEL_DIR)/tests clean
@rm -f $(USERSPACE_DIR)/lib/libvgpu.so*
# Install
install: kernel userspace
# Install kernel module
$(MAKE) -C $(KERNEL_DIR) install
# Install userspace library
install -D -m 755 $(USERSPACE_DIR)/lib/$(USERSPACE_LIB) /usr/local/lib/$(USERSPACE_LIB)
ldconfig
# Install headers
install -D -m 644 $(USERSPACE_DIR)/include/libvgpu.h /usr/local/include/libvgpu.h
# Create compat symlinks
ln -sf $(USERSPACE_LIB) /usr/local/lib/libvgpu.so
ln -sf $(USERSPACE_LIB) /usr/local/lib/libvgpu.so.1
ln -sf $(USERSPACE_LIB) /usr/local/lib/libvgpu.so.1.0.0
# Install pkg-config files
install -D -m 644 $(USERSPACE_DIR)/lib/libvgpu.pc /usr/local/lib/pkgconfig/libvgpu.pc
install -D -m 644 $(USERSPACE_DIR)/lib/libiov.pc /usr/local/lib/pkgconfig/libiov.pc
# Load kernel module (requires root)
load: kernel firmware-check
sudo cp $(FIRMWARE_DIR)/gsp-570.144.fwimage.bin /lib/firmware/
sudo insmod $(KERNEL_MODULE_SRC)
# Unload kernel module
unload:
-sudo rmmod open-iov-vfio
# Reload kernel module
reload: unload load
# Run example
run-example: examples load
sudo LD_LIBRARY_PATH=$(USERSPACE_DIR)/lib ./$(USERSPACE_DIR)/examples/example_vgpu /dev/open-iov
# Debug kernel module
debug-kernel:
@echo "Kernel module info:"
@modinfo $(KERNEL_MODULE_SRC)
# Check kernel module symbols
check-symbols: kernel
@nm $(KERNEL_MODULE_SRC) | grep -E "(vgpu|gsp|bar|wpr|migration)" | head -50
.PHONY: load unload reload run-example debug-kernel check-symbols
|