[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [Qemu-devel] [PATCH RFC 00/17] implement multiple primary bus
From: |
Marcel Apfelbaum |
Subject: |
[Qemu-ppc] [Qemu-devel] [PATCH RFC 00/17] implement multiple primary busses for pc machines |
Date: |
Thu, 22 Jan 2015 21:52:26 +0200 |
This series depends on:
- [SeaBIOS] [PATCH 0/2] fw/pci: better support for multiple host bridges
(https://www.mail-archive.com/address@hidden/msg07103.html)
- Not yet final, comments need to be adressed
- [Qemu-devel] [PATCH v2 00/47] ACPI refactoring: replace template patching
with C ASL API
(http://lists.gnu.org/archive/html/qemu-devel/2015-01/msg02895.html)
Reasoning:
We need multiple primary busess for a few reasons, the most important one
is to be able to associate a pass-trough device with a guest NUMA node.
The OS-es are able to associate a NUMA node only to a primary bus, not to
a specific PCI device or a pci-2-pci bridge.
PC machines support multiple NUMA nodes for CPUs and memory, however the IO
was not yet supported.
Series status:
The series is fully functional but tested only with Windows2012 server/Fedora
19 and e1000/virtio-net-pci.
You are more than welcome to try using:
-device pxb-device,id=bridge1,bus_nr=4 -device e1000,bus=bridge1,addr=0x1
-bios <patched with the above series>
patch 1 adds the necessary acpi constructs based on Igor's series
patch 2-5 implements acpi code needed to expose the pxb's primary bus to guests
patch 6 separates the pci_bus code into a designated file
patch 7-11 handles the implicit assumptions in code that only one primary bus
can exist
patch 12 handles the actual implementation of the PXB devices
patch 13-14 enables the device
patch 15 implements PXB map_irq function, (can be squashed into the actual PXB)
patch 16-17 hacks that need to be addressed before removing the "RFC" status.
Todo:
- Solve the little hacks (patches 16/17)
- Resend the SeaBios series after the comments are addressed
- More testing with other OS-es and other pci devices
- Implement the association of a root bus with a NUMA node (acpi proximity)
- Think of migration implications and missing code (Ideas?)
Any comments will be welcomed and appreciated.
I will not be able to respond next week, but after that
I'll answer to all questions/comments.
Thanks,
Marcel
Marcel Apfelbaum (17):
acpi: added needed acpi constructs
hw/acpi: add support for multiple root busses
hw/apci: add _PRT method for extra root busses
hw/acpi: add _CRS method for extra root busses
hw/acpi: remove from root bus 0 the crs resources used by other busses.
hw/pci: move pci bus related code to separate files
hw/pci: made pci_bus_is_root a PCIBusClass method
hw/pci: made pci_bus_num a PCIBusClass method
hw/pci: introduce TYPE_PCI_MAIN_HOST_BRIDGE interface
hw/pci: removed 'rootbus nr is 0' assumption from qmp_pci_query
hw/pci: implement iteration over multiple host bridges
hw/pci: introduce PCI Expander Bridge (PXB)
hw/pci: inform bios if the system has more than one pci bridge
hw/pci: piix - suport multiple host bridges
hw/pxb: add map_irq func
hw/pci-bridge: hack - disable shpc bar (will be removed from the
series)
hw/acpi: hack - generate dummy region ranges for first acpi-build
(will be removed from the series)
arch_init.c | 1 +
hw/acpi/acpi-build-utils.c | 107 +++++++-
hw/alpha/typhoon.c | 1 +
hw/i386/acpi-build.c | 305 ++++++++++++++++++++-
hw/i386/kvm/pci-assign.c | 1 +
hw/i386/pc.c | 13 +
hw/mips/gt64xxx_pci.c | 1 +
hw/pci-bridge/Makefile.objs | 1 +
hw/pci-bridge/pci_bridge_dev.c | 2 +
hw/pci-bridge/pci_expander_bridge.c | 191 ++++++++++++++
hw/pci-host/bonito.c | 1 +
hw/pci-host/grackle.c | 1 +
hw/pci-host/piix.c | 63 ++++-
hw/pci-host/ppce500.c | 1 +
hw/pci-host/q35.c | 5 +
hw/pci-host/uninorth.c | 1 +
hw/pci/Makefile.objs | 2 +-
hw/pci/pci-hotplug-old.c | 1 +
hw/pci/pci.c | 501 +----------------------------------
hw/pci/pci_bus.c | 510 ++++++++++++++++++++++++++++++++++++
hw/pci/pci_host.c | 6 +
hw/ppc/ppc4xx_pci.c | 1 +
hw/scsi/megasas.c | 1 +
hw/sh4/r2d.c | 1 +
hw/sh4/sh_pci.c | 1 +
hw/vfio/pci.c | 1 +
hw/xen/xen_pt.c | 1 +
include/hw/acpi/acpi-build-utils.h | 12 +
include/hw/pci/pci.h | 6 +-
include/hw/pci/pci_bus.h | 29 ++
include/hw/pci/pci_host.h | 11 +
31 files changed, 1267 insertions(+), 512 deletions(-)
create mode 100644 hw/pci-bridge/pci_expander_bridge.c
create mode 100644 hw/pci/pci_bus.c
--
2.1.0
- [Qemu-ppc] [Qemu-devel] [PATCH RFC 00/17] implement multiple primary busses for pc machines,
Marcel Apfelbaum <=
- [Qemu-ppc] [Qemu-devel] [PATCH RFC 02/17] hw/acpi: add support for multiple root busses, Marcel Apfelbaum, 2015/01/22
- [Qemu-ppc] [Qemu-devel] [PATCH RFC 01/17] acpi: added needed acpi constructs, Marcel Apfelbaum, 2015/01/22
- [Qemu-ppc] [Qemu-devel] [PATCH RFC 03/17] hw/apci: add _PRT method for extra root busses, Marcel Apfelbaum, 2015/01/22
- [Qemu-ppc] [Qemu-devel] [PATCH RFC 04/17] hw/acpi: add _CRS method for extra root busses, Marcel Apfelbaum, 2015/01/22
- [Qemu-ppc] [Qemu-devel] [PATCH RFC 05/17] hw/acpi: remove from root bus 0 the crs resources used by other busses., Marcel Apfelbaum, 2015/01/22
- [Qemu-ppc] [Qemu-devel] [PATCH RFC 07/17] hw/pci: made pci_bus_is_root a PCIBusClass method, Marcel Apfelbaum, 2015/01/22
- [Qemu-ppc] [Qemu-devel] [PATCH RFC 09/17] hw/pci: introduce TYPE_PCI_MAIN_HOST_BRIDGE interface, Marcel Apfelbaum, 2015/01/22
- [Qemu-ppc] [Qemu-devel] [PATCH RFC 10/17] hw/pci: removed 'rootbus nr is 0' assumption from qmp_pci_query, Marcel Apfelbaum, 2015/01/22