The process of applying hypervisor relocations involves patching addresses in the hypervisor object. In the existing KVM nVHE relocation procedure, the relocations are applied early enough for write-permission not to be a problem when touching e.g. the rodata section. But applying relocations on hypervisor modules embedded in a kernel module proves more challenging, as the kernel module loader will actively map text and rodata sections read-only. In order to allow patching in those sections, let's introduce a new helper function using the text fixmap to temporarily map the relevant pages writable. Bug: 244543039 Bug: 244373730 Change-Id: I9dcdade1927e5bc121db87bc950fb70a374c44cd Signed-off-by: Quentin Perret <qperret@google.com>
15 lines
415 B
C
15 lines
415 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
#ifndef __ASM_PATCHING_H
|
|
#define __ASM_PATCHING_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
int aarch64_insn_read(void *addr, u32 *insnp);
|
|
int aarch64_insn_write(void *addr, u32 insn);
|
|
int aarch64_addr_write(void *addr, u64 dst);
|
|
|
|
int aarch64_insn_patch_text_nosync(void *addr, u32 insn);
|
|
int aarch64_insn_patch_text(void *addrs[], u32 insns[], int cnt);
|
|
|
|
#endif /* __ASM_PATCHING_H */
|