162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * x86-specific bits of KMSAN shadow implementation.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2022 Google LLC
662306a36Sopenharmony_ci * Author: Alexander Potapenko <glider@google.com>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <asm/cpu_entry_area.h>
1062306a36Sopenharmony_ci#include <linux/percpu-defs.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci/*
1362306a36Sopenharmony_ci * Addresses within the CPU entry area (including e.g. exception stacks) do not
1462306a36Sopenharmony_ci * have struct page entries corresponding to them, so they need separate
1562306a36Sopenharmony_ci * handling.
1662306a36Sopenharmony_ci * arch_kmsan_get_meta_or_null() (declared in the header) maps the addresses in
1762306a36Sopenharmony_ci * CPU entry area to addresses in cpu_entry_area_shadow/cpu_entry_area_origin.
1862306a36Sopenharmony_ci */
1962306a36Sopenharmony_ciDEFINE_PER_CPU(char[CPU_ENTRY_AREA_SIZE], cpu_entry_area_shadow);
2062306a36Sopenharmony_ciDEFINE_PER_CPU(char[CPU_ENTRY_AREA_SIZE], cpu_entry_area_origin);
21