1*ce732a75SAlexander Potapenko // SPDX-License-Identifier: GPL-2.0 2*ce732a75SAlexander Potapenko /* 3*ce732a75SAlexander Potapenko * x86-specific bits of KMSAN shadow implementation. 4*ce732a75SAlexander Potapenko * 5*ce732a75SAlexander Potapenko * Copyright (C) 2022 Google LLC 6*ce732a75SAlexander Potapenko * Author: Alexander Potapenko <glider@google.com> 7*ce732a75SAlexander Potapenko */ 8*ce732a75SAlexander Potapenko 9*ce732a75SAlexander Potapenko #include <asm/cpu_entry_area.h> 10*ce732a75SAlexander Potapenko #include <linux/percpu-defs.h> 11*ce732a75SAlexander Potapenko 12*ce732a75SAlexander Potapenko /* 13*ce732a75SAlexander Potapenko * Addresses within the CPU entry area (including e.g. exception stacks) do not 14*ce732a75SAlexander Potapenko * have struct page entries corresponding to them, so they need separate 15*ce732a75SAlexander Potapenko * handling. 16*ce732a75SAlexander Potapenko * arch_kmsan_get_meta_or_null() (declared in the header) maps the addresses in 17*ce732a75SAlexander Potapenko * CPU entry area to addresses in cpu_entry_area_shadow/cpu_entry_area_origin. 18*ce732a75SAlexander Potapenko */ 19*ce732a75SAlexander Potapenko DEFINE_PER_CPU(char[CPU_ENTRY_AREA_SIZE], cpu_entry_area_shadow); 20*ce732a75SAlexander Potapenko DEFINE_PER_CPU(char[CPU_ENTRY_AREA_SIZE], cpu_entry_area_origin); 21