KVM: arm64: Keep hyp and host headers separate where possible
Will Deacon
maintainercover KVM: arm64: Keep hyp and host headers separate where possible
Hi folks,
This series tidies up the header file usage for the nvhe hyp object so that header files under arch/arm64/kvm/hyp/include are not included by host code running at EL1.
For definitions that are shared between the host and hypervisor, these are either moved to headers under arch/arm64/include/asm/ or are generated by kbuild along similar lines to asm-offsets.h. For now, this allows us to tidy up some of the pKVM reserved memory handling, but in future this will also allow the pKVM EL2 data structures to avoid polluting the host namespace.
Cheers,
Will
--->8
Will Deacon (3):
arm64: Add missing include of asm/cpufeature.h to asm/mmu.h
KVM: arm64: Generate hyp_constants.h for the host
KVM: arm64: Move host EL1 code out of hyp/ directory
arch/arm64/include/asm/kvm_pkvm.h | 71 +++++++++++++++++++
arch/arm64/include/asm/mmu.h | 1 +
arch/arm64/kvm/.gitignore | 2 +
arch/arm64/kvm/Makefile | 18 ++++-
arch/arm64/kvm/hyp/Makefile | 2 +-
arch/arm64/kvm/hyp/hyp-constants.c | 10 +++
arch/arm64/kvm/hyp/include/nvhe/mm.h | 57 ---------------
arch/arm64/kvm/hyp/nvhe/mem_protect.c | 1 +
arch/arm64/kvm/hyp/nvhe/mm.c | 1 +
arch/arm64/kvm/hyp/nvhe/setup.c | 1 +
arch/arm64/kvm/{hyp/reserved_mem.c => pkvm.c} | 8 +--
11 files changed, 109 insertions(+), 63 deletions(-)
create mode 100644 arch/arm64/include/asm/kvm_pkvm.h
create mode 100644 arch/arm64/kvm/.gitignore
create mode 100644 arch/arm64/kvm/hyp/hyp-constants.c
rename arch/arm64/kvm/{hyp/reserved_mem.c => pkvm.c} (94%)Signature · 6 lines
2.34.0.rc2.393.gf8c9666880-goog _______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Will Deacon
maintainerPATCH 1/3 arm64: Add missing include of asm/cpufeature.h to asm/mmu.h
asm/mmu.h refers to cpus_have_const_cap() in the definition of arm64_kernel_unmapped_at_el0() so include asm/cpufeature.h directly rather than force all users of the header to do it themselves.
--- arch/arm64/include/asm/mmu.h | 1 + 1 file changed, 1 insertion(+)
arch/arm64/include/asm/mmu.h +1 -0
@@ -15,6 +15,7 @@ #ifndef __ASSEMBLY__ #include <linux/refcount.h> +#include <asm/cpufeature.h> typedef struct { atomic64_t id;
Signature · 6 lines
2.34.0.rc2.393.gf8c9666880-goog _______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Re: [PATCH 1/3] arm64: Add missing include of asm/cpufeature.h to asm/mmu.h
Hi Will,
Quoted 4 lines · Will Deacon
asm/mmu.hrefers tocpus_have_const_cap()in the definition ofarm64_kernel_unmapped_at_el0()so includeasm/cpufeature.hdirectly rather than force all users of the header to do it themselves.
Simplifies the code and makes it cleaner.
I tested this code (the complete patch series) as well and it ran fine.
Cheers,
/fuad
Quoted 18 lines
Signed-off-by Will Deacon <[email protected]>--- arch/arm64/include/asm/mmu.h | 1 + 1 file changed, 1 insertion(+)arch/arm64/include/asm/mmu.h +1
-1@@ -15,6 +15,7 @@ #ifndef __ASSEMBLY__ #include <linux/refcount.h> +#include <asm/cpufeature.h> typedef struct { atomic64_t id; --
Quoted 2 lines
2.34.0.rc2.393.gf8c9666880-goog
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Will Deacon
maintainerPATCH 2/3 KVM: arm64: Generate hyp_constants.h for the host
In reply to Will DeaconIn order to avoid exposing hypervisor (EL2) data structures directly to the host, generate hyp_constants.h to provide constants such as structure sizes to the host without dragging in the definitions themselves.
--- arch/arm64/kvm/.gitignore | 2 ++ arch/arm64/kvm/Makefile | 16 ++++++++++++++++ arch/arm64/kvm/hyp/hyp-constants.c | 10 ++++++++++ 3 files changed, 28 insertions(+) create mode 100644 arch/arm64/kvm/.gitignore create mode 100644 arch/arm64/kvm/hyp/hyp-constants.c
arch/arm64/kvm/.gitignore new file +2 -0
@@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +hyp_constants.h
arch/arm64/kvm/Makefile +16 -0
@@ -25,3 +25,19 @@ kvm-y := $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o \ vgic/vgic-its.o vgic/vgic-debug.o kvm-$(CONFIG_HW_PERF_EVENTS) += pmu-emul.o + +always-y := hyp_constants.h hyp-constants.s + +define rule_gen_hyp_constants + $(call filechk,offsets,__HYP_CONSTANTS_H__) +endef + +CFLAGS_hyp-constants.o = -I $(srctree)/$(src)/hyp/include +$(obj)/hyp-constants.s: $(src)/hyp/hyp-constants.c FORCE + $(call if_changed_dep,cc_s_c) + +$(obj)/hyp_constants.h: $(obj)/hyp-constants.s FORCE + $(call if_changed_rule,gen_hyp_constants) + +obj-kvm := $(addprefix $(obj)/, $(kvm-y)) +$(obj-kvm): $(obj)/hyp_constants.h
arch/arm64/kvm/hyp/hyp-constants.c new file +10 -0
@@ -0,0 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include <linux/kbuild.h> +#include <nvhe/memory.h> + +int main (void ) +{ +DEFINE (STRUCT_HYP_PAGE_SIZE ,sizeof (struct hyp_page )); +return 0 ; +}
Signature · 6 lines
2.34.0.rc2.393.gf8c9666880-goog _______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Re: [PATCH 2/3] KVM: arm64: Generate hyp_constants.h for the host
Hi Will,
Quoted 4 lines · Will Deacon
In order to avoid exposing hypervisor (EL2) data structures directly to the host, generate
hyp_constants.hto provide constants such as structure sizes to the host without dragging in the definitions themselves.
That's some fine kbuild wizardry right there! :)
Cheers,
/fuad
Quoted 58 lines
Signed-off-by Will Deacon <[email protected]>--- arch/arm64/kvm/.gitignore | 2 ++ arch/arm64/kvm/Makefile | 16 ++++++++++++++++ arch/arm64/kvm/hyp/hyp-constants.c | 10 ++++++++++ 3 files changed, 28 insertions(+) create mode 100644 arch/arm64/kvm/.gitignore create mode 100644 arch/arm64/kvm/hyp/hyp-constants.carch/arm64/kvm/.gitignore new file +2
-0@@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +hyp_constants.harch/arm64/kvm/Makefile +16
-0@@ -25,3 +25,19 @@ kvm-y := $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o \ vgic/vgic-its.o vgic/vgic-debug.o kvm-$(CONFIG_HW_PERF_EVENTS) += pmu-emul.o + +always-y := hyp_constants.h hyp-constants.s + +define rule_gen_hyp_constants + $(call filechk,offsets,__HYP_CONSTANTS_H__) +endef + +CFLAGS_hyp-constants.o = -I $(srctree)/$(src)/hyp/include +$(obj)/hyp-constants.s: $(src)/hyp/hyp-constants.c FORCE + $(call if_changed_dep,cc_s_c) + +$(obj)/hyp_constants.h: $(obj)/hyp-constants.s FORCE + $(call if_changed_rule,gen_hyp_constants) + +obj-kvm := $(addprefix $(obj)/, $(kvm-y)) +$(obj-kvm): $(obj)/hyp_constants.harch/arm64/kvm/hyp/hyp-constants.c new file +10
-1@@ -0,0 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include <linux/kbuild.h> +#include <nvhe/memory.h> + +int main (void ) +{ +DEFINE (STRUCT_HYP_PAGE_SIZE ,sizeof (struct hyp_page )); +return 0 ; +} --
Quoted 2 lines
2.34.0.rc2.393.gf8c9666880-goog
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Will Deacon
maintainerPATCH 3/3 KVM: arm64: Move host EL1 code out of hyp/ directory
In reply to Will Deaconkvm/hyp/reserved_mem.c contains host code executing at EL1 and is not linked into the hypervisor object. Move the file into kvm/pkvm.c and rework the headers so that the definitions shared between the host and the hypervisor live in asm/kvm_pkvm.h.
---
arch/arm64/include/asm/kvm_pkvm.h | 71 +++++++++++++++++++
arch/arm64/kvm/Makefile | 2 +-
arch/arm64/kvm/hyp/Makefile | 2 +-
arch/arm64/kvm/hyp/include/nvhe/mm.h | 57 ---------------
arch/arm64/kvm/hyp/nvhe/mem_protect.c | 1 +
arch/arm64/kvm/hyp/nvhe/mm.c | 1 +
arch/arm64/kvm/hyp/nvhe/setup.c | 1 +
arch/arm64/kvm/{hyp/reserved_mem.c => pkvm.c} | 8 +--
8 files changed, 80 insertions(+), 63 deletions(-)
create mode 100644 arch/arm64/include/asm/kvm_pkvm.h
rename arch/arm64/kvm/{hyp/reserved_mem.c => pkvm.c} (94%)arch/arm64/include/asm/kvm_pkvm.h new file +71 -0
@@ -0,0 +1,71 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (C) 2020 - Google LLC +* Author: Quentin Perret <[email protected]> +*/ +#ifndef __ARM64_KVM_PKVM_H__ +#define __ARM64_KVM_PKVM_H__ + +#include <linux/memblock.h> +#include <asm/kvm_pgtable.h> + +#define HYP_MEMBLOCK_REGIONS 128 + +extern struct memblock_region kvm_nvhe_sym (hyp_memory )[]; +extern unsigned int kvm_nvhe_sym (hyp_memblock_nr ); + +static inline unsigned long __hyp_pgtable_max_pages (unsigned long nr_pages) +{ +unsigned long total =0 , i; + +/* Provision the worst case scenario */ +for (i =0 ; i <KVM_PGTABLE_MAX_LEVELS ; i++) { + nr_pages =DIV_ROUND_UP (nr_pages,PTRS_PER_PTE ); + total += nr_pages; + } + +return total; +} + +static inline unsigned long __hyp_pgtable_total_pages (void ) +{ +unsigned long res =0 , i; + +/* Cover all of memory with page-granularity */ +for (i =0 ; i <kvm_nvhe_sym (hyp_memblock_nr); i++) { +struct memblock_region *reg = &kvm_nvhe_sym (hyp_memory)[i]; + res +=__hyp_pgtable_max_pages (reg->size >>PAGE_SHIFT ); + } + +return res; +} + +static inline unsigned long hyp_s1_pgtable_pages (void ) +{ +unsigned long res; + + res =__hyp_pgtable_total_pages (); + +/* Allow 1 GiB for private mappings */ + res +=__hyp_pgtable_max_pages (SZ_1G >>PAGE_SHIFT ); + +return res; +} + +static inline unsigned long host_s2_pgtable_pages (void ) +{ +unsigned long res; + +/* +* Include an extra 16 pages to safely upper-bound the worst case of +* concatenated pgds. +*/ + res =__hyp_pgtable_total_pages () +16 ; + +/* Allow 1 GiB for MMIO mappings */ + res +=__hyp_pgtable_max_pages (SZ_1G >>PAGE_SHIFT ); + +return res; +} + +#endif /* __ARM64_KVM_PKVM_H__ */
arch/arm64/kvm/Makefile +1 -1
@@ -15,7 +15,7 @@ kvm-y := $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o \ arm.o mmu.o mmio.o psci.o perf.o hypercalls.o pvtime.o \ inject_fault.o va_layout.o handle_exit.o \ guest.o debug.o reset.o sys_regs.o \ - vgic-sys-reg-v3.o fpsimd.o pmu.o \ + vgic-sys-reg-v3.o fpsimd.o pmu.o pkvm.o \ arch_timer.o trng.o\ vgic/vgic.o vgic/vgic-init.o \ vgic/vgic-irqfd.o vgic/vgic-v2.o \
arch/arm64/kvm/hyp/Makefile +1 -1
@@ -10,4 +10,4 @@ subdir-ccflags-y := -I$(incdir) \ -DDISABLE_BRANCH_PROFILING \ $(DISABLE_STACKLEAK_PLUGIN) -obj-$(CONFIG_KVM) += vhe/ nvhe/ pgtable.o reserved_mem.o +obj-$(CONFIG_KVM) += vhe/ nvhe/ pgtable.o
arch/arm64/kvm/hyp/include/nvhe/mm.h +0 -57
67 lines not on this page · raw message
arch/arm64/kvm/hyp/nvhe/mem_protect.c +1 -0
@@ -9,6 +9,7 @@#include <asm/kvm_hyp.h> #include <asm/kvm_mmu.h> #include <asm/kvm_pgtable.h> +#include <asm/kvm_pkvm.h> #include <asm/stage2_pgtable.h> #include <hyp/fault.h>
arch/arm64/kvm/hyp/nvhe/mm.c +1 -0
@@ -8,6 +8,7 @@#include <asm/kvm_hyp.h> #include <asm/kvm_mmu.h> #include <asm/kvm_pgtable.h> +#include <asm/kvm_pkvm.h> #include <asm/spectre.h> #include <nvhe/early_alloc.h>
arch/arm64/kvm/hyp/nvhe/setup.c +1 -0
@@ -8,6 +8,7 @@#include <asm/kvm_hyp.h> #include <asm/kvm_mmu.h> #include <asm/kvm_pgtable.h> +#include <asm/kvm_pkvm.h> #include <nvhe/early_alloc.h> #include <nvhe/fixed_config.h>
arch/arm64/kvm/pkvm.c renamed from arch/arm64/kvm/hyp/reserved_mem.c +4 -4
@@ -8,10 +8,9 @@#include <linux/memblock.h> #include <linux/sort.h> -#include <asm/kvm_host.h> +#include <asm/kvm_pkvm.h> -#include <nvhe/memory.h> -#include <nvhe/mm.h> +#include "hyp_constants.h" static struct memblock_region *hyp_memory =kvm_nvhe_sym (hyp_memory);static unsigned int *hyp_memblock_nr_ptr = &kvm_nvhe_sym (hyp_memblock_nr);
@@ -82,7 +81,8 @@ void __init kvm_hyp_reserve(void)do { prev = nr_pages; nr_pages = hyp_mem_pages + prev; - nr_pages =DIV_ROUND_UP (nr_pages *sizeof (struct hyp_page ),PAGE_SIZE ); + nr_pages =DIV_ROUND_UP (nr_pages *STRUCT_HYP_PAGE_SIZE , +PAGE_SIZE ); nr_pages +=__hyp_pgtable_max_pages (nr_pages); }while (nr_pages != prev); hyp_mem_pages += nr_pages;
Signature · 6 lines
2.34.0.rc2.393.gf8c9666880-goog _______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Re: [PATCH 3/3] KVM: arm64: Move host EL1 code out of hyp/ directory
Hi Will,
Quoted 5 lines · Will Deacon
kvm/hyp/reserved_mem.ccontains host code executing at EL1 and is not linked into the hypervisor object. Move the file intokvm/pkvm.cand rework the headers so that the definitions shared between the host and the hypervisor live inasm/kvm_pkvm.h.
It's good to have only hyp code in hyp.
Cheers,
/fuad
Quoted 254 lines
Signed-off-by Will Deacon <[email protected]>--- arch/arm64/include/asm/kvm_pkvm.h | 71 +++++++++++++++++++ arch/arm64/kvm/Makefile | 2 +- arch/arm64/kvm/hyp/Makefile | 2 +- arch/arm64/kvm/hyp/include/nvhe/mm.h | 57 --------------- arch/arm64/kvm/hyp/nvhe/mem_protect.c | 1 + arch/arm64/kvm/hyp/nvhe/mm.c | 1 + arch/arm64/kvm/hyp/nvhe/setup.c | 1 + arch/arm64/kvm/{hyp/reserved_mem.c => pkvm.c} | 8 +-- 8 files changed, 80 insertions(+), 63 deletions(-) create mode 100644 arch/arm64/include/asm/kvm_pkvm.h rename arch/arm64/kvm/{hyp/reserved_mem.c => pkvm.c} (94%)arch/arm64/include/asm/kvm_pkvm.h new file +71
-0@@ -0,0 +1,71 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (C) 2020 - Google LLC +* Author: Quentin Perret <[email protected]> +*/ +#ifndef __ARM64_KVM_PKVM_H__ +#define __ARM64_KVM_PKVM_H__ + +#include <linux/memblock.h> +#include <asm/kvm_pgtable.h> + +#define HYP_MEMBLOCK_REGIONS 128 + +extern struct memblock_region kvm_nvhe_sym (hyp_memory )[]; +extern unsigned int kvm_nvhe_sym (hyp_memblock_nr ); + +static inline unsigned long __hyp_pgtable_max_pages (unsigned long nr_pages) +{ +unsigned long total =0 , i; + +/* Provision the worst case scenario */ +for (i =0 ; i <KVM_PGTABLE_MAX_LEVELS ; i++) { + nr_pages =DIV_ROUND_UP (nr_pages,PTRS_PER_PTE ); + total += nr_pages; + } + +return total; +} + +static inline unsigned long __hyp_pgtable_total_pages (void ) +{ +unsigned long res =0 , i; + +/* Cover all of memory with page-granularity */ +for (i =0 ; i <kvm_nvhe_sym (hyp_memblock_nr); i++) { +struct memblock_region *reg = &kvm_nvhe_sym (hyp_memory)[i]; + res +=__hyp_pgtable_max_pages (reg->size >>PAGE_SHIFT ); + } + +return res; +} + +static inline unsigned long hyp_s1_pgtable_pages (void ) +{ +unsigned long res; + + res =__hyp_pgtable_total_pages (); + +/* Allow 1 GiB for private mappings */ + res +=__hyp_pgtable_max_pages (SZ_1G >>PAGE_SHIFT ); + +return res; +} + +static inline unsigned long host_s2_pgtable_pages (void ) +{ +unsigned long res; + +/* +* Include an extra 16 pages to safely upper-bound the worst case of +* concatenated pgds. +*/ + res =__hyp_pgtable_total_pages () +16 ; + +/* Allow 1 GiB for MMIO mappings */ + res +=__hyp_pgtable_max_pages (SZ_1G >>PAGE_SHIFT ); + +return res; +} + +#endif /* __ARM64_KVM_PKVM_H__ */ arch/arm64/kvm/Makefile +1
-1@@ -15,7 +15,7 @@ kvm-y := $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o \ arm.o mmu.o mmio.o psci.o perf.o hypercalls.o pvtime.o \ inject_fault.o va_layout.o handle_exit.o \ guest.o debug.o reset.o sys_regs.o \ - vgic-sys-reg-v3.o fpsimd.o pmu.o \ + vgic-sys-reg-v3.o fpsimd.o pmu.o pkvm.o \ arch_timer.o trng.o\ vgic/vgic.o vgic/vgic-init.o \ vgic/vgic-irqfd.o vgic/vgic-v2.o \arch/arm64/kvm/hyp/Makefile +1
-1@@ -10,4 +10,4 @@ subdir-ccflags-y := -I$(incdir) \ -DDISABLE_BRANCH_PROFILING \ $(DISABLE_STACKLEAK_PLUGIN) -obj-$(CONFIG_KVM) += vhe/ nvhe/ pgtable.o reserved_mem.o +obj-$(CONFIG_KVM) += vhe/ nvhe/ pgtable.oarch/arm64/kvm/hyp/include/nvhe/mm.h +0
-57@@ -10,9 +10,6 @@#include <nvhe/memory.h> #include <nvhe/spinlock.h> -#define HYP_MEMBLOCK_REGIONS 128 -extern struct memblock_region kvm_nvhe_sym (hyp_memory )[]; -extern unsigned int kvm_nvhe_sym (hyp_memblock_nr );extern struct kvm_pgtable pkvm_pgtable;extern hyp_spinlock_t pkvm_pgd_lock;extern struct hyp_pool hpool;@@ -39,58 +36,4 @@ static inline void hyp_vmemmap_range(phys_addr_t phys, unsigned long size, *end = ALIGN(*end, PAGE_SIZE); } -static inline unsigned long __hyp_pgtable_max_pages (unsigned long nr_pages) -{ -unsigned long total =0 , i; - -/* Provision the worst case scenario */ -for (i =0 ; i <KVM_PGTABLE_MAX_LEVELS ; i++) { - nr_pages =DIV_ROUND_UP (nr_pages,PTRS_PER_PTE ); - total += nr_pages; - } - -return total; -} - -static inline unsigned long __hyp_pgtable_total_pages (void ) -{ -unsigned long res =0 , i; - -/* Cover all of memory with page-granularity */ -for (i =0 ; i <kvm_nvhe_sym (hyp_memblock_nr); i++) { -struct memblock_region *reg = &kvm_nvhe_sym (hyp_memory)[i]; - res +=__hyp_pgtable_max_pages (reg->size >>PAGE_SHIFT ); - } - -return res; -} - -static inline unsigned long hyp_s1_pgtable_pages (void ) -{ -unsigned long res; - - res =__hyp_pgtable_total_pages (); - -/* Allow 1 GiB for private mappings */ - res +=__hyp_pgtable_max_pages (SZ_1G >>PAGE_SHIFT ); - -return res; -} - -static inline unsigned long host_s2_pgtable_pages (void ) -{ -unsigned long res; - -/* -* Include an extra 16 pages to safely upper-bound the worst case of -* concatenated pgds. -*/ - res =__hyp_pgtable_total_pages () +16 ; - -/* Allow 1 GiB for MMIO mappings */ - res +=__hyp_pgtable_max_pages (SZ_1G >>PAGE_SHIFT ); - -return res; -} -#endif /* __KVM_HYP_MM_H */ arch/arm64/kvm/hyp/nvhe/mem_protect.c +1
-0@@ -9,6 +9,7 @@#include <asm/kvm_hyp.h> #include <asm/kvm_mmu.h> #include <asm/kvm_pgtable.h> +#include <asm/kvm_pkvm.h> #include <asm/stage2_pgtable.h> #include <hyp/fault.h> arch/arm64/kvm/hyp/nvhe/mm.c +1
-0@@ -8,6 +8,7 @@#include <asm/kvm_hyp.h> #include <asm/kvm_mmu.h> #include <asm/kvm_pgtable.h> +#include <asm/kvm_pkvm.h> #include <asm/spectre.h> #include <nvhe/early_alloc.h> arch/arm64/kvm/hyp/nvhe/setup.c +1
-0@@ -8,6 +8,7 @@#include <asm/kvm_hyp.h> #include <asm/kvm_mmu.h> #include <asm/kvm_pgtable.h> +#include <asm/kvm_pkvm.h> #include <nvhe/early_alloc.h> #include <nvhe/fixed_config.h> arch/arm64/kvm/pkvm.c renamed from arch/arm64/kvm/hyp/reserved_mem.c +4
-5@@ -8,10 +8,9 @@#include <linux/memblock.h> #include <linux/sort.h> -#include <asm/kvm_host.h> +#include <asm/kvm_pkvm.h> -#include <nvhe/memory.h> -#include <nvhe/mm.h> +#include "hyp_constants.h" static struct memblock_region *hyp_memory =kvm_nvhe_sym (hyp_memory);static unsigned int *hyp_memblock_nr_ptr = &kvm_nvhe_sym (hyp_memblock_nr);@@ -82,7 +81,8 @@ void __init kvm_hyp_reserve(void)do { prev = nr_pages; nr_pages = hyp_mem_pages + prev; - nr_pages =DIV_ROUND_UP (nr_pages *sizeof (struct hyp_page ),PAGE_SIZE ); + nr_pages =DIV_ROUND_UP (nr_pages *STRUCT_HYP_PAGE_SIZE , +PAGE_SIZE ); nr_pages +=__hyp_pgtable_max_pages (nr_pages); }while (nr_pages != prev); hyp_mem_pages += nr_pages; --
Quoted 2 lines
2.34.0.rc2.393.gf8c9666880-goog
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Quoted 4 lines · Will Deacon
This series tidies up the header file usage for the nvhe hyp object so that header files under
arch/arm64/kvm/hyp/includeare not included by host code running at EL1.
Quoted 8 lines
For definitions that are shared between the host and hypervisor, these are either moved to headers under
arch/arm64/include/asm/or are generated by kbuild along similar lines toasm-offsets.h. For now, this allows us to tidy up some of the pKVM reserved memory handling, but in future this will also allow the pKVM EL2 data structures to avoid polluting the host namespace.[...]
Applied to next, thanks!
[1/3] arm64: Add missing include of asm/cpufeature.h to asm/mmu.h
commit: 7e04f05984dd03edad7daaa4fa97958b7133c62a
[2/3] KVM: arm64: Generate hyp_constants.h for the host
commit: ed4ed15d571065eb66ea718d7f6050553586417d
[3/3] KVM: arm64: Move host EL1 code out of hyp/ directory
commit: 9429f4b0412d05243237c7695c59d0a7b1174492Cheers,
M.
Signature · 7 lines
Without deviation from the norm, progress is not possible. _______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm