xref: /openbmc/linux/arch/x86/mm/kmsan_shadow.c (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
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