From: Bernhard Beschow <shentey@gmail.com>
To: qemu-devel@nongnu.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <richard.henderson@linaro.org>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Eduardo Habkost <eduardo@habkost.net>,
Bernhard Beschow <shentey@gmail.com>
Subject: [PATCH 12/15] hw/pci-host/i440fx: Add PCI_HOST_{ABOVE, BELOW}_4G_MEM_SIZE properties
Date: Sun, 11 Jun 2023 12:34:09 +0200 [thread overview]
Message-ID: <20230611103412.12109-13-shentey@gmail.com> (raw)
In-Reply-To: <20230611103412.12109-1-shentey@gmail.com>
Introduce the properties in anticipation of QOM'ification; Q35 has the same
properties.
Note that we want to avoid a "ram size" property in the QOM interface since it
seems redundant to both properties introduced in this change. Thus the removal
of the ram_size parameter. We assume the invariant of both properties to sum up
to "ram size" which is already asserted in pc_memory_init(). Under Xen the
invariant seems to hold as well, so we now also check it there.
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
---
include/hw/pci-host/i440fx.h | 1 -
hw/i386/pc_piix.c | 5 ++++-
hw/pci-host/i440fx.c | 12 ++++++++++--
3 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/include/hw/pci-host/i440fx.h b/include/hw/pci-host/i440fx.h
index e3a550021e..7e38456ebb 100644
--- a/include/hw/pci-host/i440fx.h
+++ b/include/hw/pci-host/i440fx.h
@@ -36,7 +36,6 @@ PCIBus *i440fx_init(const char *pci_type,
DeviceState *dev,
MemoryRegion *address_space_mem,
MemoryRegion *address_space_io,
- ram_addr_t ram_size,
ram_addr_t below_4g_mem_size,
ram_addr_t above_4g_mem_size,
MemoryRegion *pci_memory,
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 42af03dbb4..f9141536cf 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -227,6 +227,9 @@ static void pc_init1(MachineState *machine,
if (!xen_enabled()) {
pc_memory_init(pcms, system_memory, rom_memory, hole64_size);
} else {
+ assert(machine->ram_size == x86ms->below_4g_mem_size +
+ x86ms->above_4g_mem_size);
+
pc_system_flash_cleanup_unused(pcms);
if (machine->kernel_filename != NULL) {
/* For xen HVM direct kernel boot, load linux here */
@@ -242,7 +245,7 @@ static void pc_init1(MachineState *machine,
pci_bus = i440fx_init(pci_type,
i440fx_host,
- system_memory, system_io, machine->ram_size,
+ system_memory, system_io,
x86ms->below_4g_mem_size,
x86ms->above_4g_mem_size,
pci_memory, ram_memory);
diff --git a/hw/pci-host/i440fx.c b/hw/pci-host/i440fx.c
index 67eeffb421..3c44f24d2a 100644
--- a/hw/pci-host/i440fx.c
+++ b/hw/pci-host/i440fx.c
@@ -54,6 +54,8 @@ struct I440FXState {
MemoryRegion *pci_address_space;
MemoryRegion *ram_memory;
Range pci_hole;
+ uint64_t below_4g_mem_size;
+ uint64_t above_4g_mem_size;
uint64_t pci_hole64_size;
bool pci_hole64_fix;
uint32_t short_root_bus;
@@ -266,7 +268,6 @@ PCIBus *i440fx_init(const char *pci_type,
DeviceState *dev,
MemoryRegion *address_space_mem,
MemoryRegion *address_space_io,
- ram_addr_t ram_size,
ram_addr_t below_4g_mem_size,
ram_addr_t above_4g_mem_size,
MemoryRegion *pci_address_space,
@@ -283,6 +284,8 @@ PCIBus *i440fx_init(const char *pci_type,
s->address_space_io = address_space_io;
s->pci_address_space = pci_address_space;
s->ram_memory = ram_memory;
+ s->below_4g_mem_size = below_4g_mem_size;
+ s->above_4g_mem_size = above_4g_mem_size;
b = pci_root_bus_new(dev, NULL, s->pci_address_space,
s->address_space_io, 0, TYPE_PCI_BUS);
@@ -293,7 +296,7 @@ PCIBus *i440fx_init(const char *pci_type,
d = pci_create_simple(b, 0, pci_type);
f = I440FX_PCI_DEVICE(d);
- range_set_bounds(&s->pci_hole, below_4g_mem_size,
+ range_set_bounds(&s->pci_hole, s->below_4g_mem_size,
IO_APIC_DEFAULT_ADDRESS - 1);
/* setup pci memory mapping */
@@ -324,6 +327,7 @@ PCIBus *i440fx_init(const char *pci_type,
PAM_EXPAN_BASE + i * PAM_EXPAN_SIZE, PAM_EXPAN_SIZE);
}
+ ram_addr_t ram_size = s->below_4g_mem_size + s->above_4g_mem_size;
ram_size = ram_size / 8 / 1024 / 1024;
if (ram_size > 255) {
ram_size = 255;
@@ -383,6 +387,10 @@ static Property i440fx_props[] = {
DEFINE_PROP_SIZE(PCI_HOST_PROP_PCI_HOLE64_SIZE, I440FXState,
pci_hole64_size, I440FX_PCI_HOST_HOLE64_SIZE_DEFAULT),
DEFINE_PROP_UINT32("short_root_bus", I440FXState, short_root_bus, 0),
+ DEFINE_PROP_SIZE(PCI_HOST_BELOW_4G_MEM_SIZE, I440FXState,
+ below_4g_mem_size, 0),
+ DEFINE_PROP_SIZE(PCI_HOST_ABOVE_4G_MEM_SIZE, I440FXState,
+ above_4g_mem_size, 0),
DEFINE_PROP_BOOL("x-pci-hole64-fix", I440FXState, pci_hole64_fix, true),
DEFINE_PROP_END_OF_LIST(),
};
--
2.41.0
next prev parent reply other threads:[~2023-06-11 10:35 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-11 10:33 [PATCH 00/15] Q35 and I440FX host bridge QOM cleanup Bernhard Beschow
2023-06-11 10:33 ` [PATCH 01/15] hw/i386/pc_q35: Resolve redundant q35_host variable Bernhard Beschow
2023-06-11 10:33 ` [PATCH 02/15] hw/pci-host/q35: Fix double, contradicting .endianness assignment Bernhard Beschow
2023-06-12 13:01 ` Igor Mammedov
2023-06-13 7:46 ` Bernhard Beschow
2023-06-13 8:51 ` Michael S. Tsirkin
2023-06-13 11:07 ` BALATON Zoltan
2023-06-13 13:05 ` Igor Mammedov
2023-06-13 13:40 ` Philippe Mathieu-Daudé
2023-06-13 15:01 ` Michael S. Tsirkin
2023-06-13 15:28 ` Bernhard Beschow
2023-06-11 10:34 ` [PATCH 03/15] hw/pci-host/q35: Initialize PCMachineState::bus in board code Bernhard Beschow
2023-06-12 10:28 ` Philippe Mathieu-Daudé
2023-06-12 13:42 ` Igor Mammedov
2023-06-11 10:34 ` [PATCH 04/15] hw/pci/pci_host: Introduce PCI_HOST_BYPASS_IOMMU macro Bernhard Beschow
2023-06-12 13:45 ` Igor Mammedov
2023-06-11 10:34 ` [PATCH 05/15] hw/pci-host/q35: Initialize PCI_HOST_BYPASS_IOMMU property from board code Bernhard Beschow
2023-06-12 10:27 ` Philippe Mathieu-Daudé
2023-06-12 13:51 ` Igor Mammedov
2023-06-11 10:34 ` [PATCH 06/15] hw/pci-host/q35: Make some property name macros reusable by i440fx Bernhard Beschow
2023-06-11 10:34 ` [PATCH 07/15] hw/pci-host/i440fx: Replace magic values by existing constants Bernhard Beschow
2023-06-12 10:25 ` Philippe Mathieu-Daudé
2023-06-12 13:55 ` Igor Mammedov
2023-06-11 10:34 ` [PATCH 08/15] hw/pci-host/i440fx: Have common names for some local variables Bernhard Beschow
2023-06-12 10:25 ` Philippe Mathieu-Daudé
2023-06-11 10:34 ` [PATCH 09/15] hw/pci-host/i440fx: Move i440fx_realize() into PCII440FXState section Bernhard Beschow
2023-06-12 10:24 ` Philippe Mathieu-Daudé
2023-06-11 10:34 ` [PATCH 10/15] hw/pci-host/i440fx: Make MemoryRegion pointers accessible as properties Bernhard Beschow
2023-06-12 10:19 ` Philippe Mathieu-Daudé
2023-06-11 10:34 ` [PATCH 11/15] hw/pci-host/i440fx: Add PCI_HOST_PROP_IO_MEM property Bernhard Beschow
2023-06-12 10:31 ` Philippe Mathieu-Daudé
2023-06-12 17:54 ` Bernhard Beschow
2023-06-11 10:34 ` Bernhard Beschow [this message]
2023-06-11 10:34 ` [PATCH 13/15] hw/pci-host/i440fx: Add I440FX_HOST_PROP_PCI_TYPE property Bernhard Beschow
2023-06-11 10:34 ` [PATCH 14/15] hw/pci-host/i440fx: Resolve i440fx_init() Bernhard Beschow
2023-06-11 10:34 ` [PATCH 15/15] hw/i386/pc_piix: Move i440fx' realize near its qdev_new() Bernhard Beschow
2023-06-12 9:40 ` Philippe Mathieu-Daudé
2023-06-12 14:51 ` Igor Mammedov
2023-06-12 15:21 ` Igor Mammedov
2023-06-12 17:49 ` Bernhard Beschow
2023-06-13 9:52 ` Igor Mammedov
2023-06-26 6:50 ` Bernhard Beschow
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=20230611103412.12109-13-shentey@gmail.com \
--to=shentey@gmail.com \
--cc=eduardo@habkost.net \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.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 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).