[PATCH v4 4/9] x86/sgx: Save the size of each EPC section

Cathy Zhang
2022-04-21T11:05:47Z

SGX CPUSVN update process should check all EPC pages to ensure they are
marked as unused. For EPC pages are stored in EPC sections, it's
required to save the size of each section, as the indicator for the end
of each section's traversing to unuse EPC pages.

Signed-off-by: Cathy Zhang <cathy.zhang@intel.com>

---
Changes since v3:
- Update commit log to explain clearly why record the size. (Suggested
by Jarkko Sakkinen)
---
arch/x86/kernel/cpu/sgx/sgx.h | 1 +
arch/x86/kernel/cpu/sgx/main.c | 1 +
2 files changed, 2 insertions(+)

diff --git a/arch/x86/kernel/cpu/sgx/sgx.h b/arch/x86/kernel/cpu/sgx/sgx.h
index 4ad0e5396eef..775477e0b8af 100644
--- a/arch/x86/kernel/cpu/sgx/sgx.h
+++ b/arch/x86/kernel/cpu/sgx/sgx.h
@@ -63,6 +63,7 @@ struct sgx_epc_section {
void *virt_addr;
struct sgx_epc_page *pages;
struct sgx_numa_node *node;
+ u64 size;
};

extern struct sgx_epc_section sgx_epc_sections[SGX_MAX_EPC_SECTIONS];
diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c
index 10360f06c0df..031c1402cd7e 100644
--- a/arch/x86/kernel/cpu/sgx/main.c
+++ b/arch/x86/kernel/cpu/sgx/main.c
@@ -665,6 +665,7 @@ static bool __init sgx_setup_epc_section(u64 phys_addr, u64 size,
}

section->phys_addr = phys_addr;
+ section->size = size;
xa_store_range(&sgx_epc_address_space, section->phys_addr,
phys_addr + size - 1, section, GFP_KERNEL);

--
2.17.1