[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 7/7] xen/arm: mm: Reduce the area that xen_second covers



Hi Julien,

On 24.06.2022 11:11, Julien Grall wrote:
> From: Julien Grall <jgrall@xxxxxxxxxx>
> 
> At the moment, xen_second is used to cover the first 2GB of the
> virtual address space. With the recent rework of the page-tables,
> only the first 1GB region (where Xen resides) is effectively used.
> 
> In addition to that, I would like to reshuffle the memory layout.
> So Xen mappings may not be anymore in the first 2GB of the virtual
> address space.
> 
> Therefore, rework xen_second so it only covers the 1GB region where
> Xen will reside.
> 
> With this change, xen_second doesn't cover anymore the xenheap area
> on arm32. So, we first need to add memory to the boot allocator before
> setting up the xenheap mappings.
> 
> Take the opportunity to update the comments on top of xen_fixmap and
> xen_xenmap.
> 
> Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx>
> ---
>  xen/arch/arm/mm.c    | 32 +++++++++++---------------------
>  xen/arch/arm/setup.c | 13 +++++++++++--
>  2 files changed, 22 insertions(+), 23 deletions(-)
> 
> diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
> index 74666b2e720a..f87a7c32d07d 100644
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -116,17 +116,14 @@ static DEFINE_PAGE_TABLE(cpu0_pgtable);
>  #endif
>  
>  /* Common pagetable leaves */
> -/* Second level page tables.
> - *
> - * The second-level table is 2 contiguous pages long, and covers all
> - * addresses from 0 to 0x7fffffff. Offsets into it are calculated
> - * with second_linear_offset(), not second_table_offset().
> - */
> -static DEFINE_PAGE_TABLES(xen_second, 2);
> -/* First level page table used for fixmap */
> +/* Second level page table used to cover Xen virtual address space */
> +static DEFINE_PAGE_TABLE(xen_second);
> +/* Third level page table used for fixmap */
>  DEFINE_BOOT_PAGE_TABLE(xen_fixmap);
> -/* First level page table used to map Xen itself with the XN bit set
> - * as appropriate. */
> +/*
> + * Third level page table used to map Xen itself with the XN bit set
> + * as appropriate.
> + */
>  static DEFINE_PAGE_TABLE(xen_xenmap);
>  
>  /* Non-boot CPUs use this to find the correct pagetables. */
> @@ -168,7 +165,6 @@ static void __init __maybe_unused build_assertions(void)
>      BUILD_BUG_ON(zeroeth_table_offset(XEN_VIRT_START));
>  #endif
>      BUILD_BUG_ON(first_table_offset(XEN_VIRT_START));
> -    BUILD_BUG_ON(second_linear_offset(XEN_VIRT_START) >= 
> XEN_PT_LPAE_ENTRIES);
Instead of removing this completely, shouldn't you change it to:
BUILD_BUG_ON(second_table_offset(XEN_VIRT_START)); ?

All in all:
Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>

Cheers,
Michal



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.