mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-05-04 17:58:48 +00:00
- hardcode the devices' GSI info based on the platform
- reject the passthrough if the following requirement is not met
all the PCI devices that are sharing the same GSI should be assigned
to same VM to avoid physical GSI sharing between multiple VMs.
v4 -> v5
* Move the gsi_dev_mapping_tables definition in a separate file
* Add the GSI info that might be used by GPIO
* Update the HW name
v3 - > v4
* Refine the format of raw data to improve the readability
* Remove the redundant code when adding the new dev into the gsi
sharing group
v2 -> v3
* Add the MSI/MSI-x capability check
Do not add the device which supports MSI/MSI-x to the GSI sharing
group.
v1 -> v2
* Update the GSI raw data based on SBL
* Free the resources when gsi sharing violation occurs
* Move the MACRO PCI_BDF(b, d, f) to pci_core.h since passthrough.c
and gsi_sharing.c are both using it
Signed-off-by: Shiqing Gao <shiqing.gao@intel.com>
Reviewed-by: Edwin Zhai <edwin.zhai@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
188 lines
4.9 KiB
Makefile
188 lines
4.9 KiB
Makefile
#
|
|
# ACRN-DM
|
|
#
|
|
MAJOR_VERSION=0
|
|
MINOR_VERSION=1
|
|
RC_VERSION=5
|
|
BASEDIR := $(shell pwd)
|
|
DM_OBJDIR ?= $(CURDIR)/build
|
|
|
|
CC ?= gcc
|
|
|
|
CFLAGS := -g -O0 -std=gnu11
|
|
CFLAGS += -D_GNU_SOURCE
|
|
CFLAGS += -DNO_OPENSSL
|
|
CFLAGS += -m64
|
|
CFLAGS += -Wall -ffunction-sections
|
|
CFLAGS += -Werror
|
|
CFLAGS += -O2 -D_FORTIFY_SOURCE=2
|
|
CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing
|
|
|
|
CFLAGS += -I$(BASEDIR)/include
|
|
CFLAGS += -I$(BASEDIR)/include/public
|
|
CFLAGS += -I$(TOOLS_OUT)
|
|
|
|
GCC_MAJOR=$(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1)
|
|
GCC_MINOR=$(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
|
|
|
|
#enable stack overflow check
|
|
STACK_PROTECTOR := 1
|
|
|
|
ifdef STACK_PROTECTOR
|
|
ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true))
|
|
CFLAGS += -fstack-protector-strong
|
|
else
|
|
ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true))
|
|
CFLAGS += -fstack-protector-strong
|
|
else
|
|
CFLAGS += -fstack-protector
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
LDFLAGS += -Wl,-z,noexecstack
|
|
LDFLAGS += -Wl,-z,relro,-z,now
|
|
LDFLAGS += -L$(TOOLS_OUT)
|
|
|
|
LIBS = -lrt
|
|
LIBS += -lpthread
|
|
LIBS += -lcrypto
|
|
LIBS += -lpciaccess
|
|
LIBS += -lz
|
|
LIBS += -luuid
|
|
LIBS += -lusb-1.0
|
|
LIBS += -lacrn-mngr
|
|
|
|
# hw
|
|
SRCS += hw/block_if.c
|
|
SRCS += hw/usb_core.c
|
|
SRCS += hw/uart_core.c
|
|
SRCS += hw/pci/virtio/virtio.c
|
|
SRCS += hw/pci/virtio/virtio_kernel.c
|
|
SRCS += hw/platform/usb_mouse.c
|
|
SRCS += hw/platform/usb_pmapper.c
|
|
SRCS += hw/platform/atkbdc.c
|
|
SRCS += hw/platform/ps2mouse.c
|
|
SRCS += hw/platform/rtc.c
|
|
SRCS += hw/platform/ps2kbd.c
|
|
SRCS += hw/platform/ioapic.c
|
|
SRCS += hw/platform/cmos_io.c
|
|
SRCS += hw/platform/ioc.c
|
|
SRCS += hw/platform/ioc_cbc.c
|
|
SRCS += hw/platform/acpi/acpi.c
|
|
SRCS += hw/platform/acpi/acpi_pm.c
|
|
SRCS += hw/platform/rpmb/rpmb_sim.c
|
|
SRCS += hw/platform/rpmb/rpmb_backend.c
|
|
SRCS += hw/pci/wdt_i6300esb.c
|
|
SRCS += hw/pci/lpc.c
|
|
SRCS += hw/pci/xhci.c
|
|
SRCS += hw/pci/core.c
|
|
SRCS += hw/pci/virtio/virtio_console.c
|
|
SRCS += hw/pci/virtio/virtio_block.c
|
|
SRCS += hw/pci/virtio/virtio_input.c
|
|
SRCS += hw/pci/ahci.c
|
|
SRCS += hw/pci/hostbridge.c
|
|
SRCS += hw/pci/platform_gsi_info.c
|
|
SRCS += hw/pci/gsi_sharing.c
|
|
SRCS += hw/pci/passthrough.c
|
|
SRCS += hw/pci/virtio/virtio_audio.c
|
|
SRCS += hw/pci/virtio/virtio_net.c
|
|
SRCS += hw/pci/virtio/virtio_rnd.c
|
|
SRCS += hw/pci/virtio/virtio_hyper_dmabuf.c
|
|
SRCS += hw/pci/virtio/virtio_heci.c
|
|
SRCS += hw/pci/virtio/virtio_rpmb.c
|
|
SRCS += hw/pci/irq.c
|
|
SRCS += hw/pci/uart.c
|
|
SRCS += hw/pci/gvt.c
|
|
SRCS += hw/pci/npk.c
|
|
|
|
# core
|
|
#SRCS += core/bootrom.c
|
|
SRCS += core/monitor.c
|
|
SRCS += core/sw_load_common.c
|
|
SRCS += core/sw_load_bzimage.c
|
|
SRCS += core/sw_load_vsbl.c
|
|
SRCS += core/smbiostbl.c
|
|
SRCS += core/mevent.c
|
|
SRCS += core/gc.c
|
|
SRCS += core/console.c
|
|
SRCS += core/inout.c
|
|
SRCS += core/mem.c
|
|
SRCS += core/post.c
|
|
SRCS += core/consport.c
|
|
SRCS += core/vmmapi.c
|
|
SRCS += core/mptbl.c
|
|
SRCS += core/main.c
|
|
SRCS += core/hugetlb.c
|
|
SRCS += core/vrpmb.c
|
|
|
|
# arch
|
|
SRCS += arch/x86/pm.c
|
|
|
|
|
|
OBJS := $(patsubst %.c,$(DM_OBJDIR)/%.o,$(SRCS))
|
|
|
|
HEADERS := $(shell find $(BASEDIR) -name '*.h')
|
|
DISTCLEAN_OBJS := $(shell find $(BASEDIR) -name '*.o')
|
|
|
|
PROGRAM := acrn-dm
|
|
|
|
SAMPLES_NUC := $(wildcard samples/nuc/*)
|
|
SAMPLES_MRB := $(wildcard samples/apl-mrb/*)
|
|
|
|
BIOS_BIN := $(wildcard bios/*)
|
|
|
|
all: include/version.h $(PROGRAM)
|
|
@echo -n ""
|
|
|
|
$(PROGRAM): $(OBJS)
|
|
$(CC) -o $(DM_OBJDIR)/$@ $(CFLAGS) $(LDFLAGS) $^ $(LIBS)
|
|
|
|
clean:
|
|
rm -f $(OBJS)
|
|
rm -f include/version.h
|
|
rm -f $(OBJS)
|
|
rm -rf $(DM_OBJDIR)
|
|
if test -f $(PROGRAM); then rm $(PROGRAM); fi
|
|
|
|
distclean:
|
|
rm -f $(DISTCLEAN_OBJS)
|
|
rm -f include/version.h
|
|
rm -f $(OBJS)
|
|
rm -rf $(DM_OBJDIR)
|
|
rm -f tags TAGS cscope.files cscope.in.out cscope.out cscope.po.out GTAGS GPATH GRTAGS GSYMS
|
|
|
|
include/version.h:
|
|
touch include/version.h
|
|
@COMMIT=`git rev-parse --verify --short HEAD 2>/dev/null`;\
|
|
DIRTY=`git diff-index --name-only HEAD`;\
|
|
if [ -n "$$DIRTY" ];then PATCH="$$COMMIT-dirty";else PATCH="$$COMMIT";fi;\
|
|
TIME=`date "+%Y-%m-%d %H:%M:%S"`;\
|
|
echo "/*" > include/version.h; \
|
|
sed 's/^/ * /' ../LICENSE >> include/version.h; \
|
|
echo " */" >> include/version.h; \
|
|
echo "" >> include/version.h; \
|
|
echo "#define DM_MAJOR_VERSION $(MAJOR_VERSION)" >> include/version.h;\
|
|
echo "#define DM_MINOR_VERSION $(MINOR_VERSION)" >> include/version.h;\
|
|
echo "#define DM_RC_VERSION $(RC_VERSION)" >> include/version.h;\
|
|
echo "#define DM_BUILD_VERSION "\""$$PATCH"\""" >> include/version.h;\
|
|
echo "#define DM_BUILD_TIME "\""$$TIME"\""" >> include/version.h;\
|
|
echo "#define DM_BUILD_USER "\""$(USER)"\""" >> include/version.h
|
|
|
|
$(DM_OBJDIR)/%.o: %.c $(HEADERS)
|
|
[ ! -e $@ ] && mkdir -p $(dir $@); \
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
install: $(DM_OBJDIR)/$(PROGRAM) install-samples-nuc install-samples-mrb install-bios
|
|
install -D --mode=0755 $(DM_OBJDIR)/$(PROGRAM) $(DESTDIR)/usr/bin/$(PROGRAM)
|
|
|
|
install-samples-nuc: $(SAMPLES_NUC)
|
|
install -D -t $(DESTDIR)/usr/share/acrn/samples/nuc $^
|
|
|
|
install-samples-mrb: $(SAMPLES_MRB)
|
|
install -D -t $(DESTDIR)/usr/share/acrn/samples/apl-mrb $^
|
|
|
|
install-bios: $(BIOS_BIN)
|
|
install -d $(DESTDIR)/usr/share/acrn/bios
|
|
install -D --mode=0664 -t $(DESTDIR)/usr/share/acrn/bios $^
|