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

[xen staging] xen/riscv: add definition of guest RAM banks



commit 157b67ca642e7dd629d8aca0cd82dfa8005bf5c2
Author:     Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
AuthorDate: Thu May 7 10:58:49 2026 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue May 19 09:32:44 2026 +0200

    xen/riscv: add definition of guest RAM banks
    
    The dom0less solution uses defined RAM banks as compile-time constants,
    so introduce macros to describe guest RAM banks.
    
    The reason for 2 banks is that there is typically always a use case for
    low memory under 4 GB, but the bank under 4 GB ends up being small because
    there are other things under 4 GB it can conflict with (interrupt
    controller, PCI BARs, etc.). So a second bank is added above that MMIO
    region (starting at 8 GiB) to provide the remaining RAM; the gap between
    the two banks also exercises code paths handling discontiguous memory.
    For Sv32 guests (34-bit GPA, 16 GiB addressable), bank0 provides 2 GB
    (2â??4 GB) and the first 8 GB of bank1 (8â??16 GB) is accessible.
    
    Extended regions are useful for RISC-V: they could be used to provide a
    "space" for Linux to map grant mappings.
    
    Despite the fact that for every guest MMU mode the GPA could be up
    to 56 bits wide (except Sv32 whose GPA is 34 bits), the combined size
    of both banks is limited to 1018 GB as it is more than enough for most
    use cases.
    
    Add inclusion of asm/guest-layout.h to asm/domain.h to make dom0less
    common code build happy.
    
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
    Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
---
 xen/arch/riscv/include/asm/domain.h       |  1 +
 xen/arch/riscv/include/asm/guest-layout.h | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/xen/arch/riscv/include/asm/domain.h 
b/xen/arch/riscv/include/asm/domain.h
index 6c48bf1311..6044ce0fee 100644
--- a/xen/arch/riscv/include/asm/domain.h
+++ b/xen/arch/riscv/include/asm/domain.h
@@ -7,6 +7,7 @@
 #include <xen/xmalloc.h>
 #include <public/hvm/params.h>
 
+#include <asm/guest-layout.h>
 #include <asm/p2m.h>
 #include <asm/vtimer.h>
 
diff --git a/xen/arch/riscv/include/asm/guest-layout.h 
b/xen/arch/riscv/include/asm/guest-layout.h
new file mode 100644
index 0000000000..68d95a0939
--- /dev/null
+++ b/xen/arch/riscv/include/asm/guest-layout.h
@@ -0,0 +1,23 @@
+#ifndef ASM_RISCV_GUEST_LAYOUT_H
+#define ASM_RISCV_GUEST_LAYOUT_H
+
+#include <public/xen.h>
+
+#define GUEST_RAM_BANKS   2
+
+/*
+ * The way to find the extended regions (to be exposed to the guest as unused
+ * address space) relies on the fact that the regions reserved for the RAM
+ * below are big enough to also accommodate such regions.
+ */
+#define GUEST_RAM0_BASE   xen_mk_ullong(0x80000000) /* 2GB of low RAM @ 2GB */
+#define GUEST_RAM0_SIZE   xen_mk_ullong(0x80000000)
+
+#define GUEST_RAM1_BASE   xen_mk_ullong(0x0200000000) /* 1016 GB of RAM @ 8GB 
*/
+#define GUEST_RAM1_SIZE   xen_mk_ullong(0xFE00000000)
+
+/* TODO: allocate these all dynamically */
+#define GUEST_RAM_BANK_BASES   { GUEST_RAM0_BASE, GUEST_RAM1_BASE }
+#define GUEST_RAM_BANK_SIZES   { GUEST_RAM0_SIZE, GUEST_RAM1_SIZE }
+
+#endif /* ASM_RISCV_GUEST_LAYOUT_H */
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

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