On Tue, Mar 02, 2021 at 02:59:54PM +0000, Quentin Perret wrote: > Extend the memory pool allocated for the hypervisor to include enough > pages to map all of memory at page granularity for the host stage 2. > While at it, also reserve some memory for device mappings. > > Signed-off-by: Quentin Perret <qperret@xxxxxxxxxx> > --- > arch/arm64/kvm/hyp/include/nvhe/mm.h | 23 ++++++++++++++++++++++- > arch/arm64/kvm/hyp/nvhe/setup.c | 12 ++++++++++++ > arch/arm64/kvm/hyp/reserved_mem.c | 2 ++ > 3 files changed, 36 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/kvm/hyp/include/nvhe/mm.h b/arch/arm64/kvm/hyp/include/nvhe/mm.h > index ac0f7fcffd08..411a35db949c 100644 > --- a/arch/arm64/kvm/hyp/include/nvhe/mm.h > +++ b/arch/arm64/kvm/hyp/include/nvhe/mm.h > @@ -53,7 +53,7 @@ static inline unsigned long __hyp_pgtable_max_pages(unsigned long nr_pages) > return total; > } > > -static inline unsigned long hyp_s1_pgtable_pages(void) > +static inline unsigned long __hyp_pgtable_total_pages(void) > { > unsigned long res = 0, i; > > @@ -63,9 +63,30 @@ static inline unsigned long hyp_s1_pgtable_pages(void) > 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_mem_pgtable_pages(void) > +{ > + return __hyp_pgtable_total_pages() + 16; Is this 16 due to the possibility of a concatenated pgd? If so, please add a comment to that effect. With that: Acked-by: Will Deacon <will@xxxxxxxxxx> Will _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm