mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 00:48:50 +00:00
e7e0545299
Although carved out of normal DRAM, enclave memory is marked in the system memory map as reserved and is not managed by the core mm. There may be several regions spread across the system. Each contiguous region is called an Enclave Page Cache (EPC) section. EPC sections are enumerated via CPUID Enclave pages can only be accessed when they are mapped as part of an enclave, by a hardware thread running inside the enclave. Parse CPUID data, create metadata for EPC pages and populate a simple EPC page allocator. Although much smaller, ‘struct sgx_epc_page’ metadata is the SGX analog of the core mm ‘struct page’. Similar to how the core mm’s page->flags encode zone and NUMA information, embed the EPC section index to the first eight bits of sgx_epc_page->desc. This allows a quick reverse lookup from EPC page to EPC section. Existing client hardware supports only a single section, while upcoming server hardware will support at most eight sections. Thus, eight bits should be enough for long term needs. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Co-developed-by: Serge Ayoun <serge.ayoun@intel.com> Signed-off-by: Serge Ayoun <serge.ayoun@intel.com> Co-developed-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Borislav Petkov <bp@suse.de> Acked-by: Jethro Beekman <jethro@fortanix.com> Link: https://lkml.kernel.org/r/20201112220135.165028-6-jarkko@kernel.org
68 lines
2 KiB
Makefile
68 lines
2 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for x86-compatible CPU details, features and quirks
|
|
#
|
|
|
|
# Don't trace early stages of a secondary CPU boot
|
|
ifdef CONFIG_FUNCTION_TRACER
|
|
CFLAGS_REMOVE_common.o = -pg
|
|
CFLAGS_REMOVE_perf_event.o = -pg
|
|
endif
|
|
|
|
# If these files are instrumented, boot hangs during the first second.
|
|
KCOV_INSTRUMENT_common.o := n
|
|
KCOV_INSTRUMENT_perf_event.o := n
|
|
|
|
# As above, instrumenting secondary CPU boot code causes boot hangs.
|
|
KCSAN_SANITIZE_common.o := n
|
|
|
|
# Make sure load_percpu_segment has no stackprotector
|
|
CFLAGS_common.o := -fno-stack-protector
|
|
|
|
obj-y := cacheinfo.o scattered.o topology.o
|
|
obj-y += common.o
|
|
obj-y += rdrand.o
|
|
obj-y += match.o
|
|
obj-y += bugs.o
|
|
obj-y += aperfmperf.o
|
|
obj-y += cpuid-deps.o
|
|
obj-y += umwait.o
|
|
|
|
obj-$(CONFIG_PROC_FS) += proc.o
|
|
obj-$(CONFIG_X86_FEATURE_NAMES) += capflags.o powerflags.o
|
|
|
|
obj-$(CONFIG_IA32_FEAT_CTL) += feat_ctl.o
|
|
ifdef CONFIG_CPU_SUP_INTEL
|
|
obj-y += intel.o intel_pconfig.o tsx.o
|
|
obj-$(CONFIG_PM) += intel_epb.o
|
|
endif
|
|
obj-$(CONFIG_CPU_SUP_AMD) += amd.o
|
|
obj-$(CONFIG_CPU_SUP_HYGON) += hygon.o
|
|
obj-$(CONFIG_CPU_SUP_CYRIX_32) += cyrix.o
|
|
obj-$(CONFIG_CPU_SUP_CENTAUR) += centaur.o
|
|
obj-$(CONFIG_CPU_SUP_TRANSMETA_32) += transmeta.o
|
|
obj-$(CONFIG_CPU_SUP_UMC_32) += umc.o
|
|
obj-$(CONFIG_CPU_SUP_ZHAOXIN) += zhaoxin.o
|
|
|
|
obj-$(CONFIG_X86_MCE) += mce/
|
|
obj-$(CONFIG_MTRR) += mtrr/
|
|
obj-$(CONFIG_MICROCODE) += microcode/
|
|
obj-$(CONFIG_X86_CPU_RESCTRL) += resctrl/
|
|
obj-$(CONFIG_X86_SGX) += sgx/
|
|
|
|
obj-$(CONFIG_X86_LOCAL_APIC) += perfctr-watchdog.o
|
|
|
|
obj-$(CONFIG_HYPERVISOR_GUEST) += vmware.o hypervisor.o mshyperv.o
|
|
obj-$(CONFIG_ACRN_GUEST) += acrn.o
|
|
|
|
ifdef CONFIG_X86_FEATURE_NAMES
|
|
quiet_cmd_mkcapflags = MKCAP $@
|
|
cmd_mkcapflags = $(CONFIG_SHELL) $(srctree)/$(src)/mkcapflags.sh $@ $^
|
|
|
|
cpufeature = $(src)/../../include/asm/cpufeatures.h
|
|
vmxfeature = $(src)/../../include/asm/vmxfeatures.h
|
|
|
|
$(obj)/capflags.c: $(cpufeature) $(vmxfeature) $(src)/mkcapflags.sh FORCE
|
|
$(call if_changed,mkcapflags)
|
|
endif
|
|
targets += capflags.c
|