On 27/07/16 18:03, Alexey Kardashevskiy wrote: > This adds a numa id property to a PHB to allow linking passed PCI device > to CPU/memory. It is up to the management stack to do CPU/memory pinning > to the node with the actual PCI device. > > Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru>
Ping? > --- > hw/ppc/spapr_pci.c | 13 +++++++++++++ > include/hw/pci-host/spapr.h | 2 ++ > 2 files changed, 15 insertions(+) > > diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c > index 949c44f..af5394a 100644 > --- a/hw/ppc/spapr_pci.c > +++ b/hw/ppc/spapr_pci.c > @@ -47,6 +47,7 @@ > #include "sysemu/device_tree.h" > #include "sysemu/kvm.h" > #include "sysemu/hostmem.h" > +#include "sysemu/numa.h" > > #include "hw/vfio/vfio.h" > > @@ -1544,6 +1545,7 @@ static Property spapr_phb_properties[] = { > DEFINE_PROP_BOOL("ddw", sPAPRPHBState, ddw_enabled, true), > DEFINE_PROP_UINT64("pgsz", sPAPRPHBState, page_size_mask, > (1ULL << 12) | (1ULL << 16)), > + DEFINE_PROP_UINT32("node", sPAPRPHBState, numa_node, -1), > DEFINE_PROP_END_OF_LIST(), > }; > > @@ -1805,6 +1807,11 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb, > cpu_to_be32(1), > cpu_to_be32(RTAS_IBM_RESET_PE_DMA_WINDOW) > }; > + uint32_t associativity[] = {cpu_to_be32(0x4), > + cpu_to_be32(0x0), > + cpu_to_be32(0x0), > + cpu_to_be32(0x0), > + cpu_to_be32(phb->numa_node)}; > sPAPRTCETable *tcet; > PCIBus *bus = PCI_HOST_BRIDGE(phb)->bus; > sPAPRFDT s_fdt; > @@ -1837,6 +1844,12 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb, > &ddw_extensions, sizeof(ddw_extensions))); > } > > + /* Advertise NUMA via ibm,associativity */ > + if (nb_numa_nodes > 1) { > + _FDT(fdt_setprop(fdt, bus_off, "ibm,associativity", associativity, > + sizeof(associativity))); > + } > + > /* Build the interrupt-map, this must matches what is done > * in pci_spapr_map_irq > */ > diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h > index 5adc603..53c4b2d 100644 > --- a/include/hw/pci-host/spapr.h > +++ b/include/hw/pci-host/spapr.h > @@ -75,6 +75,8 @@ struct sPAPRPHBState { > bool ddw_enabled; > uint64_t page_size_mask; > uint64_t dma64_win_addr; > + > + uint32_t numa_node; > }; > > #define SPAPR_PCI_MAX_INDEX 255 > -- Alexey