From 69d3d839308779fc7fd049541eac94638e5ad0a1 Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Tue, 9 May 2023 18:00:46 +0200 Subject: [PATCH] lx_emul: set minimum alignment of allocations to 16 byte FPU allocations on x86/ARM require a minimum alignment or may raise faults (#GP or general protection in the x86 case). --- repos/dde_linux/lib/import/import-lx_emul_common.inc | 2 +- repos/dde_linux/lib/import/import-virt_lx_emul.mk | 5 +++++ repos/pc/lib/import/import-pc_lx_emul.mk | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/repos/dde_linux/lib/import/import-lx_emul_common.inc b/repos/dde_linux/lib/import/import-lx_emul_common.inc index 52582622f7..42cbebbac5 100644 --- a/repos/dde_linux/lib/import/import-lx_emul_common.inc +++ b/repos/dde_linux/lib/import/import-lx_emul_common.inc @@ -64,6 +64,7 @@ LX_ARCH := x86 GEN_ARCH := x86 SPEC_ARCH := x86_64 + SRC_C += lx_emul/shadow/arch/x86/kernel/irq.c SRC_C += lx_emul/shadow/arch/x86/kernel/setup_percpu.c endif @@ -101,7 +102,6 @@ INC_DIR += $(SHADOW_INC_DIR) vpath % $(DDE_LINUX_DIR)/src/lib - # # Linux kernel definitions # diff --git a/repos/dde_linux/lib/import/import-virt_lx_emul.mk b/repos/dde_linux/lib/import/import-virt_lx_emul.mk index 76a762dd2c..5ffee25531 100644 --- a/repos/dde_linux/lib/import/import-virt_lx_emul.mk +++ b/repos/dde_linux/lib/import/import-virt_lx_emul.mk @@ -31,6 +31,11 @@ SRC_CC += lx_kit/memory_non_dma.cc ifeq ($(filter-out $(SPECS),x86),) SRC_C += lx_emul/virt/spec/x86/dummies_arch.c + + # + # Align memory allocations to 16 byte (because we allow FPU use in drivers) + # + CC_DEF += -DARCH_DMA_MINALIGN=16 -DARCH_SLAB_MINALIGN=1 endif ifeq ($(filter-out $(SPECS),arm_64),) SRC_C += lx_emul/virt/spec/arm_64/dummies_arch.c diff --git a/repos/pc/lib/import/import-pc_lx_emul.mk b/repos/pc/lib/import/import-pc_lx_emul.mk index d1041e5b5e..bb49158009 100644 --- a/repos/pc/lib/import/import-pc_lx_emul.mk +++ b/repos/pc/lib/import/import-pc_lx_emul.mk @@ -9,6 +9,11 @@ LX_GEN_DIR := $(LIB_CACHE_DIR)/pc_linux_generated include $(call select_from_repositories,lib/import/import-lx_emul_common.inc) +# +# Align memory allocations to 16 byte (because we allow FPU use in drivers) +# +CC_DEF += -DARCH_DMA_MINALIGN=16 -DARCH_SLAB_MINALIGN=16 + INC_DIR += $(REP_DIR)/src/include # Handle specific source requirements