[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH v4 13/18] spapr_pci: Advertise dynamic DMA windows to
From: |
Alexey Kardashevskiy |
Subject: |
[Qemu-ppc] [PATCH v4 13/18] spapr_pci: Advertise dynamic DMA windows to guest |
Date: |
Thu, 29 Jan 2015 20:27:25 +1100 |
Signed-off-by: Alexey Kardashevskiy <address@hidden>
---
hw/ppc/spapr.c | 5 +++++
hw/ppc/spapr_pci.c | 25 +++++++++++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index b560459..f9882c1 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1760,6 +1760,11 @@ static void spapr_machine_2_1_class_init(ObjectClass
*oc, void *data)
MachineClass *mc = MACHINE_CLASS(oc);
static GlobalProperty compat_props[] = {
HW_COMPAT_2_1,
+ {
+ .driver = TYPE_SPAPR_PCI_HOST_BRIDGE,
+ .property = "ddw",
+ .value = stringify(off),
+ },
{ /* end of list */ }
};
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 3ec03be..a94bba1 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -775,6 +775,7 @@ static Property spapr_phb_properties[] = {
DEFINE_PROP_UINT64("io_win_addr", sPAPRPHBState, io_win_addr, -1),
DEFINE_PROP_UINT64("io_win_size", sPAPRPHBState, io_win_size,
SPAPR_PCI_IO_WIN_SIZE),
+ DEFINE_PROP_BOOL("ddw", sPAPRPHBState, ddw_enabled, true),
DEFINE_PROP_END_OF_LIST(),
};
@@ -993,6 +994,12 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb,
uint32_t interrupt_map_mask[] = {
cpu_to_be32(b_ddddd(-1)|b_fff(0)), 0x0, 0x0, cpu_to_be32(-1)};
uint32_t interrupt_map[PCI_SLOT_MAX * PCI_NUM_PINS][7];
+ uint32_t ddw_applicable[] = {
+ cpu_to_be32(RTAS_IBM_QUERY_PE_DMA_WINDOW),
+ cpu_to_be32(RTAS_IBM_CREATE_PE_DMA_WINDOW),
+ cpu_to_be32(RTAS_IBM_REMOVE_PE_DMA_WINDOW)
+ };
+ sPAPRPHBClass *spc = SPAPR_PCI_HOST_BRIDGE_GET_CLASS(phb);
/* Start populating the FDT */
sprintf(nodename, "address@hidden" PRIx64, phb->buid);
@@ -1022,6 +1029,24 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb,
_FDT(fdt_setprop_cell(fdt, bus_off, "ibm,pci-config-space-type", 0x1));
_FDT(fdt_setprop_cell(fdt, bus_off, "ibm,pe-total-#msi", XICS_IRQS));
+ /* Dynamic DMA window */
+ if (phb->ddw_enabled &&
+ spc->ddw_query && spc->ddw_create && spc->ddw_remove) {
+ _FDT(fdt_setprop(fdt, bus_off, "ibm,ddw-applicable", &ddw_applicable,
+ sizeof(ddw_applicable)));
+
+ if (spc->ddw_reset) {
+ uint32_t ddw_extensions[] = {
+ cpu_to_be32(1),
+ cpu_to_be32(RTAS_IBM_RESET_PE_DMA_WINDOW)
+ };
+
+ /* When enabled, the guest will remove the default 32bit window */
+ _FDT(fdt_setprop(fdt, bus_off, "ibm,ddw-extensions",
+ &ddw_extensions, sizeof(ddw_extensions)));
+ }
+ }
+
/* Build the interrupt-map, this must matches what is done
* in pci_spapr_map_irq
*/
--
2.0.0
- [Qemu-ppc] [PATCH v4 04/18] spapr_vio: Introduce a liobn number generating macros, (continued)
- [Qemu-ppc] [PATCH v4 04/18] spapr_vio: Introduce a liobn number generating macros, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 06/18] spapr_iommu: Make spapr_tce_find_by_liobn() public, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 14/18] vfio: Enable DDW ioctls to VFIO IOMMU driver, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 17/18] target-ppc: kvm: make use of KVM_CREATE_SPAPR_TCE_64, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 08/18] vfio: Add DMA memory registering, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 01/18] spapr_iommu: Disable in-kernel IOMMU tables for >4GB windows, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 11/18] spapr_pci/spapr_pci_vfio: Support Dynamic DMA Windows (DDW), Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 10/18] spapr_pci: Define DDW callbacks, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 16/18] spapr_rtas_ddw: Workaround broken LE guests, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 12/18] spapr_rtas: Add Dynamic DMA windows (DDW) RTAS handlers, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 13/18] spapr_pci: Advertise dynamic DMA windows to guest,
Alexey Kardashevskiy <=
- [Qemu-ppc] [PATCH v4 18/18] vfio: Enable in-kernel acceleration via VFIO KVM device, Alexey Kardashevskiy, 2015/01/29
- [Qemu-ppc] [PATCH v4 03/18] spapr_pci: Introduce a liobn number generating macros, Alexey Kardashevskiy, 2015/01/29
- Re: [Qemu-ppc] [PATCH v4 00/18] spapr: vfio: Enable Dynamic DMA windows (DDW), Alexey Kardashevskiy, 2015/01/29