From: David Gibson <david@gibson.dropbear.id.au>
To: peter.maydell@linaro.org
Cc: mdroth@linux.vnet.ibm.com, aik@ozlabs.ru, qemu-devel@nongnu.org,
agraf@suse.de, qemu-ppc@nongnu.org,
Bharata B Rao <bharata@linux.vnet.ibm.com>,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PATCH 19/25] spapr: Revert to memory@XXXX representation for non-hotplugged memory
Date: Thu, 3 Sep 2015 14:28:10 +1000 [thread overview]
Message-ID: <1441254496-16174-20-git-send-email-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <1441254496-16174-1-git-send-email-david@gibson.dropbear.id.au>
From: Bharata B Rao <bharata@linux.vnet.ibm.com>
Don't represent non-hotluggable memory under drconf node. With this
we don't have to create DRC objects for them.
The effect of this patch is that we revert back to memory@XXXX representation
for all the memory specified with -m option and represent the cold
plugged memory and hot-pluggable memory under
ibm,dynamic-reconfiguration-memory.
Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
hw/ppc/spapr.c | 47 +++++++++--------------------------------------
1 file changed, 9 insertions(+), 38 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index a762d21..8df3554 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -560,6 +560,7 @@ static int spapr_populate_memory(sPAPRMachineState *spapr, void *fdt)
}
if (!mem_start) {
/* ppc_spapr_init() checks for rma_size <= node0_size already */
+ spapr_populate_memory_node(fdt, i, 0, spapr->rma_size);
mem_start += spapr->rma_size;
node_size -= spapr->rma_size;
}
@@ -722,9 +723,7 @@ static int spapr_populate_drconf_memory(sPAPRMachineState *spapr, void *fdt)
int ret, i, offset;
uint64_t lmb_size = SPAPR_MEMORY_BLOCK_SIZE;
uint32_t prop_lmb_size[] = {0, cpu_to_be32(lmb_size)};
- uint32_t nr_rma_lmbs = spapr->rma_size/lmb_size;
- uint32_t nr_lmbs = machine->maxram_size/lmb_size - nr_rma_lmbs;
- uint32_t nr_assigned_lmbs = machine->ram_size/lmb_size - nr_rma_lmbs;
+ uint32_t nr_lmbs = (machine->maxram_size - machine->ram_size)/lmb_size;
uint32_t *int_buf, *cur_index, buf_len;
int nr_nodes = nb_numa_nodes ? nb_numa_nodes : 1;
@@ -757,15 +756,9 @@ static int spapr_populate_drconf_memory(sPAPRMachineState *spapr, void *fdt)
for (i = 0; i < nr_lmbs; i++) {
sPAPRDRConnector *drc;
sPAPRDRConnectorClass *drck;
- uint64_t addr;
+ uint64_t addr = i * lmb_size + spapr->hotplug_memory.base;;
uint32_t *dynamic_memory = cur_index;
- if (i < nr_assigned_lmbs) {
- addr = (i + nr_rma_lmbs) * lmb_size;
- } else {
- addr = (i - nr_assigned_lmbs) * lmb_size +
- spapr->hotplug_memory.base;
- }
drc = spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_LMB,
addr/lmb_size);
g_assert(drc);
@@ -840,8 +833,6 @@ int spapr_h_cas_compose_response(sPAPRMachineState *spapr,
/* Generate memory nodes or ibm,dynamic-reconfiguration-memory node */
if (memory_update && smc->dr_lmb_enabled) {
_FDT((spapr_populate_drconf_memory(spapr, fdt)));
- } else {
- _FDT((spapr_populate_memory(spapr, fdt)));
}
/* Pack resulting tree */
@@ -879,23 +870,10 @@ static void spapr_finalize_fdt(sPAPRMachineState *spapr,
/* open out the base tree into a temp buffer for the final tweaks */
_FDT((fdt_open_into(spapr->fdt_skel, fdt, FDT_MAX_SIZE)));
- /*
- * Add memory@0 node to represent RMA. Rest of the memory is either
- * represented by memory nodes or ibm,dynamic-reconfiguration-memory
- * node later during ibm,client-architecture-support call.
- *
- * If NUMA is configured, ensure that memory@0 ends up in the
- * first memory-less node.
- */
- if (nb_numa_nodes) {
- for (i = 0; i < nb_numa_nodes; ++i) {
- if (numa_info[i].node_mem) {
- spapr_populate_memory_node(fdt, i, 0, spapr->rma_size);
- break;
- }
- }
- } else {
- spapr_populate_memory_node(fdt, 0, 0, spapr->rma_size);
+ ret = spapr_populate_memory(spapr, fdt);
+ if (ret < 0) {
+ fprintf(stderr, "couldn't setup memory nodes in fdt\n");
+ exit(1);
}
ret = spapr_populate_vdevice(spapr->vio_bus, fdt);
@@ -1602,21 +1580,14 @@ static void spapr_create_lmb_dr_connectors(sPAPRMachineState *spapr)
{
MachineState *machine = MACHINE(spapr);
uint64_t lmb_size = SPAPR_MEMORY_BLOCK_SIZE;
- uint32_t nr_rma_lmbs = spapr->rma_size/lmb_size;
- uint32_t nr_lmbs = machine->maxram_size/lmb_size - nr_rma_lmbs;
- uint32_t nr_assigned_lmbs = machine->ram_size/lmb_size - nr_rma_lmbs;
+ uint32_t nr_lmbs = (machine->maxram_size - machine->ram_size)/lmb_size;
int i;
for (i = 0; i < nr_lmbs; i++) {
sPAPRDRConnector *drc;
uint64_t addr;
- if (i < nr_assigned_lmbs) {
- addr = (i + nr_rma_lmbs) * lmb_size;
- } else {
- addr = (i - nr_assigned_lmbs) * lmb_size +
- spapr->hotplug_memory.base;
- }
+ addr = i * lmb_size + spapr->hotplug_memory.base;
drc = spapr_dr_connector_new(OBJECT(spapr), SPAPR_DR_CONNECTOR_TYPE_LMB,
addr/lmb_size);
qemu_register_reset(spapr_drc_reset, drc);
--
2.4.3
next prev parent reply other threads:[~2015-09-03 4:28 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-03 4:27 [Qemu-devel] [PATCH 00/25] sPAPR (pseries) patch backlog 2015-00-03 David Gibson
2015-09-03 4:27 ` [Qemu-devel] [PATCH 01/25] spapr: Provide an error message when migration fails due to htab_shift mismatch David Gibson
2015-09-03 4:27 ` [Qemu-devel] [PATCH 02/25] spapr: Create pseries-2.5 machine David Gibson
2015-09-03 4:27 ` [Qemu-devel] [PATCH 03/25] spapr: Initialize hotplug memory address space David Gibson
2015-09-03 4:27 ` [Qemu-devel] [PATCH 04/25] spapr: Add LMB DR connectors David Gibson
2015-09-03 4:27 ` [Qemu-devel] [PATCH 05/25] spapr: Support ibm, dynamic-reconfiguration-memory David Gibson
2015-09-03 4:27 ` [Qemu-devel] [PATCH 06/25] spapr: Make hash table size a factor of maxram_size David Gibson
2015-09-03 4:27 ` [Qemu-devel] [PATCH 07/25] spapr: Memory hotplug support David Gibson
2015-09-03 4:27 ` [Qemu-devel] [PATCH 08/25] spapr: Don't allow memory hotplug to memory less nodes David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 09/25] spapr: Add /ibm,partition-name David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 10/25] spapr: Add /rtas/ibm, change-msix-capable David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 11/25] spapr: Make ibm, change-msi respect 3 return values David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 12/25] spapr: SPLPAR Characteristics David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 13/25] spapr_drc: Fix potential undefined behaviour David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 14/25] spapr: add dumpdtb support David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 15/25] ppc/spapr: Use qemu_log_mask() for hcall_dprintf() David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 16/25] spapr: Use QEMU limit for maximum CPUs number David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 17/25] spapr: Provide better error message when slots exceed max allowed David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 18/25] spapr: Populate ibm, associativity-lookup-arrays correctly for non-NUMA David Gibson
2015-09-03 4:28 ` David Gibson [this message]
2015-09-03 4:28 ` [Qemu-devel] [PATCH 20/25] spapr: Support hotplug by specifying DRC count David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 21/25] spapr: Move memory hotplug to RTAS_LOG_V6_HP_ID_DRC_COUNT type David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 22/25] spapr_rtas: Prevent QEMU crash during hotplug without a prior device_add David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 23/25] sPAPR: Introduce rtas_ldq() David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 24/25] pseries: define coldplugged devices as "configured" David Gibson
2015-09-03 4:28 ` [Qemu-devel] [PATCH 25/25] pseries: Update SLOF firmware image to qemu-slof-20150813 David Gibson
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=1441254496-16174-20-git-send-email-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=bharata@linux.vnet.ibm.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@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 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).