qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Xiao Guangrong" <xiaoguangrong.eric@gmail.com>,
	"David Hildenbrand" <david@redhat.com>,
	"Cédric Le Goater" <clg@kaod.org>,
	"Daniel Henrique Barboza" <danielhb413@gmail.com>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"Greg Kurz" <groug@kaod.org>,
	"Harsh Prateek Bora" <harshpb@linux.ibm.com>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Song Gao" <gaosong@loongson.cn>,
	"Xiaojuan Yang" <yangxiaojuan@loongson.cn>
Subject: [PATCH 06/10] hw/i386/pc: Use memory_devices_init()
Date: Tue, 30 May 2023 13:38:34 +0200	[thread overview]
Message-ID: <20230530113838.257755-7-david@redhat.com> (raw)
In-Reply-To: <20230530113838.257755-1-david@redhat.com>

Let's use our new helper and stop always allocating ms->device_memory.
Once allcoated, we're sure that the size > 0 and that the base was
initialized.

Adjust the code in pc_memory_init() to check for machine->device_memory
instead of pcmc->has_reserved_memory and machine->device_memory->base.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Eduardo Habkost <eduardo@habkost.net>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
 hw/i386/pc.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index bb62c994fa..920aa32b53 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1039,13 +1039,11 @@ void pc_memory_init(PCMachineState *pcms,
         exit(EXIT_FAILURE);
     }
 
-    /* always allocate the device memory information */
-    machine->device_memory = g_malloc0(sizeof(*machine->device_memory));
-
     /* initialize device memory address space */
     if (pcmc->has_reserved_memory &&
         (machine->ram_size < machine->maxram_size)) {
         ram_addr_t device_mem_size;
+        hwaddr device_mem_base;
 
         if (machine->ram_slots > ACPI_MAX_RAM_SLOTS) {
             error_report("unsupported amount of memory slots: %"PRIu64,
@@ -1060,19 +1058,14 @@ void pc_memory_init(PCMachineState *pcms,
             exit(EXIT_FAILURE);
         }
 
-        pc_get_device_memory_range(pcms, &machine->device_memory->base, &device_mem_size);
+        pc_get_device_memory_range(pcms, &device_mem_base, &device_mem_size);
 
-        if ((machine->device_memory->base + device_mem_size) <
-            device_mem_size) {
+        if (device_mem_base + device_mem_size < device_mem_size) {
             error_report("unsupported amount of maximum memory: " RAM_ADDR_FMT,
                          machine->maxram_size);
             exit(EXIT_FAILURE);
         }
-
-        memory_region_init(&machine->device_memory->mr, OBJECT(pcms),
-                           "device-memory", device_mem_size);
-        memory_region_add_subregion(system_memory, machine->device_memory->base,
-                                    &machine->device_memory->mr);
+        memory_devices_init(machine, device_mem_base, device_mem_size);
     }
 
     if (pcms->cxl_devices_state.is_enabled) {
@@ -1120,7 +1113,7 @@ void pc_memory_init(PCMachineState *pcms,
 
     rom_set_fw(fw_cfg);
 
-    if (pcmc->has_reserved_memory && machine->device_memory->base) {
+    if (machine->device_memory) {
         uint64_t *val = g_malloc(sizeof(*val));
         PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
         uint64_t res_mem_end = machine->device_memory->base;
-- 
2.40.1



  parent reply	other threads:[~2023-05-30 11:41 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-30 11:38 [PATCH 00/10] memory-device: Some cleanups David Hildenbrand
2023-05-30 11:38 ` [PATCH 01/10] memory-device: Unify enabled vs. supported error messages David Hildenbrand
2023-05-30 12:30   ` Philippe Mathieu-Daudé
2023-05-30 11:38 ` [PATCH 02/10] memory-device: Introduce memory_devices_init() David Hildenbrand
2023-05-30 12:18   ` Philippe Mathieu-Daudé
2023-05-30 12:29   ` Philippe Mathieu-Daudé
2023-05-30 13:04     ` David Hildenbrand
2023-05-30 13:24       ` David Hildenbrand
2023-05-30 11:38 ` [PATCH 03/10] hw/arm/virt: Use memory_devices_init() David Hildenbrand
2023-05-30 12:19   ` Philippe Mathieu-Daudé
2023-05-30 11:38 ` [PATCH 04/10] hw/ppc/spapr: " David Hildenbrand
2023-05-30 12:32   ` Philippe Mathieu-Daudé
2023-05-30 11:38 ` [PATCH 05/10] hw/loongarch/virt: " David Hildenbrand
2023-05-30 12:20   ` Philippe Mathieu-Daudé
2023-05-30 12:29   ` Song Gao
2023-05-30 11:38 ` David Hildenbrand [this message]
2023-05-30 12:33   ` [PATCH 06/10] hw/i386/pc: " Philippe Mathieu-Daudé
2023-05-30 11:38 ` [PATCH 07/10] hw/i386/acpi-build: Rely on machine->device_memory when building SRAT David Hildenbrand
2023-05-30 12:21   ` Philippe Mathieu-Daudé
2023-05-30 11:38 ` [PATCH 08/10] hw/i386/pc: Remove PC_MACHINE_DEVMEM_REGION_SIZE David Hildenbrand
2023-05-30 12:22   ` Philippe Mathieu-Daudé
2023-05-30 13:07   ` Michael S. Tsirkin
2023-05-30 13:11     ` David Hildenbrand
2023-05-30 13:41       ` David Hildenbrand
2023-05-30 14:46         ` Michael S. Tsirkin
2023-05-30 13:43       ` Philippe Mathieu-Daudé
2023-05-30 11:38 ` [PATCH 09/10] memory-device: Refactor memory_device_pre_plug() David Hildenbrand
2023-05-30 11:38 ` [PATCH 10/10] memory-device: Track used region size in DeviceMemoryState David Hildenbrand
2023-05-30 12:23   ` Philippe Mathieu-Daudé
2023-05-30 11:41 ` [PATCH 00/10] memory-device: Some cleanups David Hildenbrand
2023-06-22 20:13 ` Michael S. Tsirkin
2023-06-23 12:39   ` David Hildenbrand

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=20230530113838.257755-7-david@redhat.com \
    --to=david@redhat.com \
    --cc=clg@kaod.org \
    --cc=danielhb413@gmail.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=eduardo@habkost.net \
    --cc=gaosong@loongson.cn \
    --cc=groug@kaod.org \
    --cc=harshpb@linux.ibm.com \
    --cc=imammedo@redhat.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=xiaoguangrong.eric@gmail.com \
    --cc=yangxiaojuan@loongson.cn \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).