From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55901) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X2XPp-0006L4-5A for qemu-devel@nongnu.org; Wed, 02 Jul 2014 23:10:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X2XPg-0006yX-9D for qemu-devel@nongnu.org; Wed, 02 Jul 2014 23:10:29 -0400 Received: from e23smtp06.au.ibm.com ([202.81.31.148]:33311) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X2XPf-0006x4-JX for qemu-devel@nongnu.org; Wed, 02 Jul 2014 23:10:20 -0400 Received: from /spool/local by e23smtp06.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 3 Jul 2014 13:10:15 +1000 From: Alexey Kardashevskiy Date: Thu, 3 Jul 2014 13:10:02 +1000 Message-Id: <1404357007-29507-2-git-send-email-aik@ozlabs.ru> In-Reply-To: <1404357007-29507-1-git-send-email-aik@ozlabs.ru> References: <1404357007-29507-1-git-send-email-aik@ozlabs.ru> Subject: [Qemu-devel] [PATCH v3 1/6] spapr: Move DT memory node rendering to a helper 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 This moves recurring bits of code related to memory@xxx nodes creation to a helper. This makes use of the new helper for node@0. Signed-off-by: Alexey Kardashevskiy --- hw/ppc/spapr.c | 48 ++++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 506d4fc..a5ffcba 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -605,6 +605,31 @@ int spapr_h_cas_compose_response(target_ulong addr, target_ulong size) return 0; } +static void spapr_populate_memory_node(void *fdt, int nodeid, hwaddr start, + hwaddr size) +{ + uint32_t associativity[] = { + cpu_to_be32(0x4), /* length */ + cpu_to_be32(0x0), cpu_to_be32(0x0), + cpu_to_be32(nodeid), cpu_to_be32(nodeid) + }; + char mem_name[32]; + uint64_t mem_reg_property[2]; + int off; + + mem_reg_property[0] = cpu_to_be64(start); + mem_reg_property[1] = cpu_to_be64(size); + + sprintf(mem_name, "memory@" TARGET_FMT_lx, start); + off = fdt_add_subnode(fdt, 0, mem_name); + _FDT(off); + _FDT((fdt_setprop_string(fdt, off, "device_type", "memory"))); + _FDT((fdt_setprop(fdt, off, "reg", mem_reg_property, + sizeof(mem_reg_property)))); + _FDT((fdt_setprop(fdt, off, "ibm,associativity", associativity, + sizeof(associativity)))); +} + static int spapr_populate_memory(sPAPREnvironment *spapr, void *fdt) { uint32_t associativity[] = {cpu_to_be32(0x4), cpu_to_be32(0x0), @@ -623,29 +648,12 @@ static int spapr_populate_memory(sPAPREnvironment *spapr, void *fdt) } /* RMA */ - mem_reg_property[0] = 0; - mem_reg_property[1] = cpu_to_be64(spapr->rma_size); - off = fdt_add_subnode(fdt, 0, "memory@0"); - _FDT(off); - _FDT((fdt_setprop_string(fdt, off, "device_type", "memory"))); - _FDT((fdt_setprop(fdt, off, "reg", mem_reg_property, - sizeof(mem_reg_property)))); - _FDT((fdt_setprop(fdt, off, "ibm,associativity", associativity, - sizeof(associativity)))); + spapr_populate_memory_node(fdt, 0, 0, spapr->rma_size); /* RAM: Node 0 */ if (node0_size > spapr->rma_size) { - mem_reg_property[0] = cpu_to_be64(spapr->rma_size); - mem_reg_property[1] = cpu_to_be64(node0_size - spapr->rma_size); - - sprintf(mem_name, "memory@" TARGET_FMT_lx, spapr->rma_size); - off = fdt_add_subnode(fdt, 0, mem_name); - _FDT(off); - _FDT((fdt_setprop_string(fdt, off, "device_type", "memory"))); - _FDT((fdt_setprop(fdt, off, "reg", mem_reg_property, - sizeof(mem_reg_property)))); - _FDT((fdt_setprop(fdt, off, "ibm,associativity", associativity, - sizeof(associativity)))); + spapr_populate_memory_node(fdt, 0, spapr->rma_size, + node0_size - spapr->rma_size); } /* RAM: Node 1 and beyond */ -- 2.0.0