[XEN v2 00/11] Add support for 32 bit physical address

Ayan Kumar Halder posted 11 patches 1 year, 3 months ago
Test gitlab-ci failed
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/20230117174358.15344-1-ayan.kumar.halder@amd.com
There is a newer version of this series
xen/arch/arm/Kconfig                   |  9 ++++
xen/arch/arm/bootfdt.c                 | 23 ++++++----
xen/arch/arm/domain_build.c            | 32 +++++++-------
xen/arch/arm/gic-v2.c                  | 17 ++++----
xen/arch/arm/gic-v3.c                  | 11 ++---
xen/arch/arm/guest_walk.c              |  2 +
xen/arch/arm/include/asm/device_tree.h | 59 ++++++++++++++++++++++++++
xen/arch/arm/include/asm/lpae.h        |  4 ++
xen/arch/arm/include/asm/page-bits.h   |  2 +
xen/arch/arm/include/asm/setup.h       |  2 +-
xen/arch/arm/include/asm/types.h       |  7 +++
xen/arch/arm/mm.c                      |  9 +---
xen/arch/arm/p2m.c                     | 10 +++--
xen/arch/arm/platforms/exynos5.c       | 33 +++++++-------
xen/arch/arm/platforms/sunxi.c         |  3 +-
xen/arch/arm/setup.c                   | 14 +++---
xen/arch/arm/smpboot.c                 |  2 +-
xen/drivers/char/exynos4210-uart.c     |  5 ++-
xen/drivers/char/ns16550.c             | 16 +++----
xen/drivers/char/omap-uart.c           |  5 ++-
xen/drivers/char/pl011.c               |  7 +--
xen/drivers/char/scif-uart.c           |  5 ++-
xen/drivers/passthrough/arm/smmu.c     | 24 ++++++-----
23 files changed, 199 insertions(+), 102 deletions(-)
create mode 100644 xen/arch/arm/include/asm/device_tree.h
[XEN v2 00/11] Add support for 32 bit physical address
Posted by Ayan Kumar Halder 1 year, 3 months ago
Hi All,

Please have a look at https://lists.xenproject.org/archives/html/xen-devel/2022-11/msg01465.html
for the context.

The benefits of using 32 bit physical addresses are as follows :-

1. It helps to use Xen on platforms (for eg R52) which supports 32 bit
physical addresses and has no support for large page address extension.
On 32 bit MPU systems which supports flat-mapping (for eg R52), it helps
to translate 32 bit VA into 32 bit PA.

2. It also helps in code optimization when the underlying platform does not
use large page address extension.


The following points are to be noted :-
1. Device tree always use u64 for address and size. The caller needs to
translate between u64 and u32 (when 32 bit physical addressing is used).
2. Currently, we have enabled this option for Arm_32 as the MMU for Arm_64
uses 48 bit physical addressing.
3. https://lists.xenproject.org/archives/html/xen-devel/2022-12/msg00117.html
has been added to this series.

Changes from :

v1 - 1. Reordered the patches such that the first three patches fixes issues in
the existing codebase. These can be applied independent of the remaining patches
in this serie,

2. Dropped translate_dt_address_size() for the address/size translation between
paddr_t and u64 (as parsed from the device tree). Also, dropped the check for
truncation (while converting u64 to paddr_t).
Instead now we have modified device_tree_get_reg() and typecasted the return for
dt_read_number(), to obtain paddr_t. Also, introduced wrappers for
fdt_get_mem_rsv() and dt_device_get_address() for the same purpose. These can be
found in patch 4/11 and patch 6/11.

3. Split "Other adaptations required to support 32bit paddr" into the following
individual patches for each adaptation :
  xen/arm: smmu: Use writeq_relaxed_non_atomic() for writing to
    SMMU_CBn_TTBR0
  xen/arm: guest_walk: LPAE specific bits should be enclosed within
    "ifndef CONFIG_ARM_PA_32"

4. Introduced "xen/arm: p2m: Enable support for 32bit IPA".

Ayan Kumar Halder (11):
  xen/ns16550: Remove unneeded truncation check in the DT init code
  xen/arm: Use the correct format specifier
  xen/arm: domain_build: Replace use of paddr_t in find_domU_holes()
  xen/arm: Typecast the DT values into paddr_t
  xen/arm: Use paddr_t instead of u64 for address/size
  xen/arm: Introduce a wrapper for dt_device_get_address() to handle
    paddr_t
  xen/arm: smmu: Use writeq_relaxed_non_atomic() for writing to
    SMMU_CBn_TTBR0
  xen/arm: guest_walk: LPAE specific bits should be enclosed within
    "ifndef CONFIG_ARM_PA_32"
  xen/arm: Introduce ARM_PA_32 to support 32 bit physical address
  xen/arm: Restrict zeroeth_table_offset for ARM_64
  xen/arm: p2m: Enable support for 32bit IPA

 xen/arch/arm/Kconfig                   |  9 ++++
 xen/arch/arm/bootfdt.c                 | 23 ++++++----
 xen/arch/arm/domain_build.c            | 32 +++++++-------
 xen/arch/arm/gic-v2.c                  | 17 ++++----
 xen/arch/arm/gic-v3.c                  | 11 ++---
 xen/arch/arm/guest_walk.c              |  2 +
 xen/arch/arm/include/asm/device_tree.h | 59 ++++++++++++++++++++++++++
 xen/arch/arm/include/asm/lpae.h        |  4 ++
 xen/arch/arm/include/asm/page-bits.h   |  2 +
 xen/arch/arm/include/asm/setup.h       |  2 +-
 xen/arch/arm/include/asm/types.h       |  7 +++
 xen/arch/arm/mm.c                      |  9 +---
 xen/arch/arm/p2m.c                     | 10 +++--
 xen/arch/arm/platforms/exynos5.c       | 33 +++++++-------
 xen/arch/arm/platforms/sunxi.c         |  3 +-
 xen/arch/arm/setup.c                   | 14 +++---
 xen/arch/arm/smpboot.c                 |  2 +-
 xen/drivers/char/exynos4210-uart.c     |  5 ++-
 xen/drivers/char/ns16550.c             | 16 +++----
 xen/drivers/char/omap-uart.c           |  5 ++-
 xen/drivers/char/pl011.c               |  7 +--
 xen/drivers/char/scif-uart.c           |  5 ++-
 xen/drivers/passthrough/arm/smmu.c     | 24 ++++++-----
 23 files changed, 199 insertions(+), 102 deletions(-)
 create mode 100644 xen/arch/arm/include/asm/device_tree.h

-- 
2.17.1
Re: [XEN v2 00/11] Add support for 32 bit physical address
Posted by Michal Orzel 1 year, 3 months ago
Hi Ayan,

On 17/01/2023 18:43, Ayan Kumar Halder wrote:
> 
> 
> Hi All,
> 
> Please have a look at https://lists.xenproject.org/archives/html/xen-devel/2022-11/msg01465.html
> for the context.
> 
> The benefits of using 32 bit physical addresses are as follows :-
> 
> 1. It helps to use Xen on platforms (for eg R52) which supports 32 bit
> physical addresses and has no support for large page address extension.
Looking at your entire series, you keep using "large page address extension".
LPAE is ARMv7A thing and it is defined as "large *physical* address extension".
So it would be good to stick to the proper naming.

~Michal