From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40057) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wx82u-0000P9-0S for qemu-devel@nongnu.org; Wed, 18 Jun 2014 01:04:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wx82m-0003vS-FK for qemu-devel@nongnu.org; Wed, 18 Jun 2014 01:04:27 -0400 Received: from mail-pd0-f174.google.com ([209.85.192.174]:51890) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wx82m-0003vD-9w for qemu-devel@nongnu.org; Wed, 18 Jun 2014 01:04:20 -0400 Received: by mail-pd0-f174.google.com with SMTP id y10so300944pdj.33 for ; Tue, 17 Jun 2014 22:04:19 -0700 (PDT) Message-ID: <53A11DCA.4040808@ozlabs.ru> Date: Wed, 18 Jun 2014 15:04:10 +1000 From: Alexey Kardashevskiy MIME-Version: 1.0 References: <1402905233-26510-1-git-send-email-aik@ozlabs.ru> <1402905233-26510-4-git-send-email-aik@ozlabs.ru> In-Reply-To: <1402905233-26510-4-git-send-email-aik@ozlabs.ru> Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 7bit Subject: Re: [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: Nishanth Aravamudan , "qemu-ppc@nongnu.org" , Alexander Graf On 06/16/2014 05:53 PM, Alexey Kardashevskiy wrote: > 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++) { No NUMA, no memory nodes at all. Embarrassing bug :) > + 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; > } > -- Alexey