Re: [Qemu-devel] [PATCH v2] spapr: make sure RMA is in first mode of first memory node

2013-11-06 Thread Thomas Huth
On Wed,  6 Nov 2013 18:54:11 +1100
Alexey Kardashevskiy a...@ozlabs.ru wrote:

 The SPAPR specification says that the RMA starts at the LPAR's logical
 address 0 and is the first logical memory block reported in
 the LPAR’s device tree.
 
 So SLOF only maps the first block and that block needs to span
 the full RMA.
 
 This makes sure that the RMA area is where SLOF expects it.
 
 Cc: Benjamin Herrenschmidt b...@kernel.crashing.org
 Signed-off-by: Alexey Kardashevskiy a...@ozlabs.ru
 ---
 
 I came up with v1 of the patch but the actual code came from
 Alexander Graf. Who should I put as author of this?
 
 ---
  hw/ppc/spapr.c | 9 -
  1 file changed, 8 insertions(+), 1 deletion(-)
 
 diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
 index 57b38cf..57473df 100644
 --- a/hw/ppc/spapr.c
 +++ b/hw/ppc/spapr.c
 @@ -1114,6 +1114,7 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args)
  MemoryRegion *sysmem = get_system_memory();
  MemoryRegion *ram = g_new(MemoryRegion, 1);
  hwaddr rma_alloc_size;
 +hwaddr node0_size = (nb_numa_nodes  1) ? node_mem[0] : ram_size;
  uint32_t initrd_base = 0;
  long kernel_size = 0, initrd_size = 0;
  long load_limit, rtas_limit, fw_size;
 @@ -1138,7 +1139,7 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args)
  if (rma_alloc_size  (rma_alloc_size  ram_size)) {
  spapr-rma_size = rma_alloc_size;
  } else {
 -spapr-rma_size = ram_size;
 +spapr-rma_size = node0_size;
 
  /* With KVM, we don't actually know whether KVM supports an
   * unbounded RMA (PR KVM) or is limited by the hash table size
 @@ -1155,6 +1156,12 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args)
  }
  }
 
 +if (spapr-rma_size  node0_size) {
 +fprintf(stderr, Error: Numa node 0 has to span the RMA 
 (%#08HWADDR_PRIx)\n,
 +spapr-rma_size);
 +exit(1);
 +}
 +

What about the if (spapr-rma_size  node0_size) at the beginning of
spapr_populate_memory()? Could/should that go away now?

 Thomas




Re: [Qemu-devel] [PATCH v2] spapr: make sure RMA is in first mode of first memory node

2013-11-06 Thread Alexander Graf

On 06.11.2013, at 12:13, Thomas Huth th...@linux.vnet.ibm.com wrote:

 On Wed,  6 Nov 2013 18:54:11 +1100
 Alexey Kardashevskiy a...@ozlabs.ru wrote:
 
 The SPAPR specification says that the RMA starts at the LPAR's logical
 address 0 and is the first logical memory block reported in
 the LPAR’s device tree.
 
 So SLOF only maps the first block and that block needs to span
 the full RMA.
 
 This makes sure that the RMA area is where SLOF expects it.
 
 Cc: Benjamin Herrenschmidt b...@kernel.crashing.org
 Signed-off-by: Alexey Kardashevskiy a...@ozlabs.ru
 ---
 
 I came up with v1 of the patch but the actual code came from
 Alexander Graf. Who should I put as author of this?
 
 ---
 hw/ppc/spapr.c | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)
 
 diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
 index 57b38cf..57473df 100644
 --- a/hw/ppc/spapr.c
 +++ b/hw/ppc/spapr.c
 @@ -1114,6 +1114,7 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args)
 MemoryRegion *sysmem = get_system_memory();
 MemoryRegion *ram = g_new(MemoryRegion, 1);
 hwaddr rma_alloc_size;
 +hwaddr node0_size = (nb_numa_nodes  1) ? node_mem[0] : ram_size;
 uint32_t initrd_base = 0;
 long kernel_size = 0, initrd_size = 0;
 long load_limit, rtas_limit, fw_size;
 @@ -1138,7 +1139,7 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args)
 if (rma_alloc_size  (rma_alloc_size  ram_size)) {
 spapr-rma_size = rma_alloc_size;
 } else {
 -spapr-rma_size = ram_size;
 +spapr-rma_size = node0_size;
 
 /* With KVM, we don't actually know whether KVM supports an
  * unbounded RMA (PR KVM) or is limited by the hash table size
 @@ -1155,6 +1156,12 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args)
 }
 }
 
 +if (spapr-rma_size  node0_size) {
 +fprintf(stderr, Error: Numa node 0 has to span the RMA 
 (%#08HWADDR_PRIx)\n,
 +spapr-rma_size);
 +exit(1);
 +}
 +
 
 What about the if (spapr-rma_size  node0_size) at the beginning of
 spapr_populate_memory()? Could/should that go away now?

It should, yes. It was very wrong in that spot from the first place, as that 
helper really should only create the fdt entries, not modify global state.


Alex




Re: [Qemu-devel] [PATCH v2] spapr: make sure RMA is in first mode of first memory node

2013-11-06 Thread Alexander Graf

On 06.11.2013, at 08:54, Alexey Kardashevskiy a...@ozlabs.ru wrote:

 The SPAPR specification says that the RMA starts at the LPAR's logical
 address 0 and is the first logical memory block reported in
 the LPAR’s device tree.
 
 So SLOF only maps the first block and that block needs to span
 the full RMA.
 
 This makes sure that the RMA area is where SLOF expects it.
 
 Cc: Benjamin Herrenschmidt b...@kernel.crashing.org
 Signed-off-by: Alexey Kardashevskiy a...@ozlabs.ru
 ---
 
 I came up with v1 of the patch but the actual code came from
 Alexander Graf. Who should I put as author of this?

Just declare it as your own ;).


Alex