From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35310) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WwRkI-0001A3-Da for qemu-devel@nongnu.org; Mon, 16 Jun 2014 03:54:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WwRjx-00062e-06 for qemu-devel@nongnu.org; Mon, 16 Jun 2014 03:54:26 -0400 Received: from e23smtp06.au.ibm.com ([202.81.31.148]:41252) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WwRjw-00061U-7e for qemu-devel@nongnu.org; Mon, 16 Jun 2014 03:54:04 -0400 Received: from /spool/local by e23smtp06.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 16 Jun 2014 17:54:00 +1000 From: Alexey Kardashevskiy Date: Mon, 16 Jun 2014 17:53:49 +1000 Message-Id: <1402905233-26510-4-git-send-email-aik@ozlabs.ru> In-Reply-To: <1402905233-26510-1-git-send-email-aik@ozlabs.ru> References: <1402905233-26510-1-git-send-email-aik@ozlabs.ru> Subject: [Qemu-devel] [PATCH 3/7] spapr: Refactor spapr_populate_memory() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Alexey Kardashevskiy , Nishanth Aravamudan , qemu-ppc@nongnu.org, Alexander Graf Current QEMU does not support memoryless NUMA nodes. This prepares SPAPR for that. This moves 2 calls of spapr_populate_memory_node() into the existing loop which handles nodes other than than the first one. Signed-off-by: Alexey Kardashevskiy --- hw/ppc/spapr.c | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index cb3a10a..666b676 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -689,28 +689,13 @@ static void spapr_populate_memory_node(void *fdt, int nodeid, hwaddr start, static int spapr_populate_memory(sPAPREnvironment *spapr, void *fdt) { - hwaddr node0_size, mem_start, node_size; + hwaddr mem_start, node_size; int i; - /* memory node(s) */ - if (nb_numa_nodes > 1 && node_mem[0] < ram_size) { - node0_size = node_mem[0]; - } else { - node0_size = ram_size; - } - - /* RMA */ - spapr_populate_memory_node(fdt, 0, 0, spapr->rma_size); - - /* RAM: Node 0 */ - if (node0_size > spapr->rma_size) { - spapr_populate_memory_node(fdt, 0, spapr->rma_size, - node0_size - spapr->rma_size); - } - - /* RAM: Node 1 and beyond */ - mem_start = node0_size; - for (i = 1; i < nb_numa_nodes; i++) { + for (i = 0, mem_start = 0; i < nb_numa_nodes; ++i) { + if (!node_mem[i]) { + continue; + } if (mem_start >= ram_size) { node_size = 0; } else { @@ -719,6 +704,12 @@ static int spapr_populate_memory(sPAPREnvironment *spapr, void *fdt) node_size = ram_size - mem_start; } } + 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; + } spapr_populate_memory_node(fdt, i, mem_start, node_size); mem_start += node_size; } -- 2.0.0