All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org
Subject: [PATCH for-8.0 v4 21/21] NOTFORMERGE hw/arm/virt: Add some memory for Realm Management Monitor
Date: Mon, 27 Feb 2023 13:01:22 -1000	[thread overview]
Message-ID: <20230227230122.816702-22-richard.henderson@linaro.org> (raw)
In-Reply-To: <20230227230122.816702-1-richard.henderson@linaro.org>

This is arbitrary, but used by the Huawei TF-A test code.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/hw/arm/virt.h |  2 ++
 hw/arm/virt.c         | 43 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)

diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
index e1ddbea96b..5c0c8a67e4 100644
--- a/include/hw/arm/virt.h
+++ b/include/hw/arm/virt.h
@@ -86,6 +86,7 @@ enum {
     VIRT_ACPI_GED,
     VIRT_NVDIMM_ACPI,
     VIRT_PVTIME,
+    VIRT_RMM_MEM,
     VIRT_LOWMEMMAP_LAST,
 };
 
@@ -159,6 +160,7 @@ struct VirtMachineState {
     bool virt;
     bool ras;
     bool mte;
+    bool rmm;
     bool dtb_randomness;
     OnOffAuto acpi;
     VirtGICType gic_version;
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index ac626b3bef..067f16cd77 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -159,6 +159,7 @@ static const MemMapEntry base_memmap[] = {
     /* ...repeating for a total of NUM_VIRTIO_TRANSPORTS, each of that size */
     [VIRT_PLATFORM_BUS] =       { 0x0c000000, 0x02000000 },
     [VIRT_SECURE_MEM] =         { 0x0e000000, 0x01000000 },
+    [VIRT_RMM_MEM] =            { 0x0f000000, 0x00100000 },
     [VIRT_PCIE_MMIO] =          { 0x10000000, 0x2eff0000 },
     [VIRT_PCIE_PIO] =           { 0x3eff0000, 0x00010000 },
     [VIRT_PCIE_ECAM] =          { 0x3f000000, 0x01000000 },
@@ -1602,6 +1603,25 @@ static void create_secure_ram(VirtMachineState *vms,
     g_free(nodename);
 }
 
+static void create_rmm_ram(VirtMachineState *vms,
+                           MemoryRegion *sysmem,
+                           MemoryRegion *tag_sysmem)
+{
+    MemoryRegion *rmm_ram = g_new(MemoryRegion, 1);
+    hwaddr base = vms->memmap[VIRT_RMM_MEM].base;
+    hwaddr size = vms->memmap[VIRT_RMM_MEM].size;
+
+    memory_region_init_ram(rmm_ram, NULL, "virt.rmm-ram", size,
+                           &error_fatal);
+    memory_region_add_subregion(sysmem, base, rmm_ram);
+
+    /* do not fill in fdt to hide rmm from normal world guest */
+
+    if (tag_sysmem) {
+        create_tag_ram(tag_sysmem, base, size, "mach-virt.rmm-tag");
+    }
+}
+
 static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size)
 {
     const VirtMachineState *board = container_of(binfo, VirtMachineState,
@@ -2283,6 +2303,10 @@ static void machvirt_init(MachineState *machine)
                        machine->ram_size, "mach-virt.tag");
     }
 
+    if (vms->rmm) {
+        create_rmm_ram(vms, sysmem, tag_sysmem);
+    }
+
     vms->highmem_ecam &= (!firmware_loaded || aarch64);
 
     create_rtc(vms);
@@ -2562,6 +2586,20 @@ static void virt_set_mte(Object *obj, bool value, Error **errp)
     vms->mte = value;
 }
 
+static bool virt_get_rmm(Object *obj, Error **errp)
+{
+    VirtMachineState *vms = VIRT_MACHINE(obj);
+
+    return vms->rmm;
+}
+
+static void virt_set_rmm(Object *obj, bool value, Error **errp)
+{
+    VirtMachineState *vms = VIRT_MACHINE(obj);
+
+    vms->rmm = value;
+}
+
 static char *virt_get_gic_version(Object *obj, Error **errp)
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
@@ -3115,6 +3153,11 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
                                           "guest CPU which implements the ARM "
                                           "Memory Tagging Extension");
 
+    object_class_property_add_bool(oc, "rmm", virt_get_rmm, virt_set_rmm);
+    object_class_property_set_description(oc, "rmm",
+                                          "Set on/off to enable/disable ram "
+                                          "for the Realm Management Monitor");
+
     object_class_property_add_bool(oc, "its", virt_get_its,
                                    virt_set_its);
     object_class_property_set_description(oc, "its",
-- 
2.34.1



  parent reply	other threads:[~2023-02-27 23:02 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-27 23:01 [PATCH for-8.0 v4 00/21] target/arm: Implement FEAT_RME Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 01/21] target/arm: Add isar_feature_aa64_rme Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 02/21] target/arm: Update SCR and HCR for RME Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 03/21] target/arm: SCR_EL3.NS may be RES1 Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 04/21] target/arm: Add RME cpregs Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 05/21] target/arm: Introduce ARMSecuritySpace Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 06/21] include/exec/memattrs: Add two bits of space to MemTxAttrs Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 07/21] target/arm: Adjust the order of Phys and Stage2 ARMMMUIdx Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 08/21] target/arm: Introduce ARMMMUIdx_Phys_{Realm, Root} Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 09/21] target/arm: Remove __attribute__((nonnull)) from ptw.c Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 10/21] target/arm: Pipe ARMSecuritySpace through ptw.c Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 11/21] target/arm: NSTable is RES0 for the RME EL3 regime Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 12/21] target/arm: Handle Block and Page bits for security space Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 13/21] target/arm: Handle no-execute for Realm and Root regimes Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 14/21] target/arm: Use get_phys_addr_with_struct in S1_ptw_translate Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 15/21] target/arm: Move s1_is_el0 into S1Translate Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 16/21] target/arm: Use get_phys_addr_with_struct for stage2 Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 17/21] target/arm: Add GPC syndrome Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 18/21] target/arm: Implement GPC exceptions Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 19/21] target/arm: Implement the granule protection check Richard Henderson
2023-02-27 23:01 ` [PATCH for-8.0 v4 20/21] NOTFORMERGE target/arm: Enable RME for -cpu max Richard Henderson
2023-02-27 23:01 ` Richard Henderson [this message]
2023-02-27 23:09 ` [PATCH for-8.0 v4 00/21] target/arm: Implement FEAT_RME Richard Henderson
2023-03-03 14:29   ` Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230227230122.816702-22-richard.henderson@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.