// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (C) 2022, Oracle and/or its affiliates. */ #include #include #include #include void __init ktext_replication_init(void) { int kidx = pgd_index((phys_addr_t)KERNEL_START); /* * If we've messed up and the kernel shares a L0 entry with the * module or vmalloc area, then don't even attempt to use text * replication. */ if (pgd_index(MODULES_VADDR) == kidx) { pr_warn("Kernel is located in the same L0 index as modules - text replication disabled\n"); return; } if (pgd_index(VMALLOC_START) == kidx) { pr_warn("Kernel is located in the same L0 index as vmalloc - text replication disabled\n"); return; } }