[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V7 00/24] hw/pc: implement multiple primary busses f
From: |
Marcel Apfelbaum |
Subject: |
[Qemu-devel] [PATCH V7 00/24] hw/pc: implement multiple primary busses for pc machines |
Date: |
Mon, 25 May 2015 18:33:38 +0300 |
The series is fully functional.
- Limitations:
- Pxb's bus does not support hotplug. It will be addressed on top of this
series
because is already getting to big.
- Pxb devices work only for i440fx and can be attached only to bus 0.
- You are more than welcome to try using:
-device pxb,id=pxb,bus_nr=4,numa_node=1 -device e1000,bus=pxb,addr=0x1
v6->v7:
- This version includes some refactoring requested by Michael S. Tsirking,
but no new functionality:
- Removed TYPE_PCI_MAIN_HOST_BRIDGE interface and scan only pc/q35
host-bridges when
needed, see patch 11/24.
- Removed TYPE_PCI_HOST_BRIDGE_SNOOPED interface and added PXB buses as
child buses
of i440fx. The pci configuration is changed to support PXBs, see patch
12/24.
- Removed patch "hw/pci: move pci bus related code to separate files" and
refactor
all patches that touched the new file.
- Addressed Paolo's review:
- Changed documentation to always use numa policy "bind".
v5->v6:
- This version includes a lot of refactoring requested by Michael S. Tsirking,
but no new/different functionality:
- Removed the HOST_BRIDGE_FOR_EACH loop because it too generic
- Reduced the generic "extra pci roots" aproach to a more "non-generic"
root bus having snooping buses listening to its configuration space.
Instead of going over all host bridges, we go only over the snooping
host bridges associated with the main host bridge.
- The current implementation made i440fx the only a "snooped" host bridge
- Addressed Michael S. Tsirkin's review:
- Replaced qmp queries with native pci ones.
- Squashed later patches into their places
- Tweaked a few comments
- Addressed Shannon Zhao's review:
- Used build_append_byte instead of build_append_int
- Addressed Gerd's review:
- Reduced the "Line over 80" warnings.
- Rebased on pci branch, tree:
git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git
- a few days before, I hope is enough
- Changed some patches order
v4->v5:
- Rebased on pci branch, tree:
git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git
- Added PXB documentation (patch 28/28)
- Addressed Gerd Hoffmann's review:
- fix PXB behaviour if used with unsupported BIOS (patch 27/28)
- Addressed Michael S. Tsirkin's review:
- Removed assert in aml_index (patch 5/28)
- Renamed pci_ functions to crs_ (patch 12/28)
- used uint64_t variables instead of signed ones (patch 12/28)
- Emit MEM/IO AML only for PXBs and i440fx (patch 26/28)
- Addressed Shannon Zhao's review:
- Changed build_append_int to build_append_byte in aml_or (patch 2/25)
- Thanks to Igor and Kevin for reviews
v3->v4:
- Addressed Michael S. Tsirkin's review:
- refactored build_prt method (patch 11/25)
hw/apci: add _PRT method for extra PCI root busses
- Addressed Igor Mammedov's reiew
- add assert to aml_index (patch 5/25)
- Fixed aml_equal implementation (patch 1/25)
v2->v3:
- Rebased on Michael S. Tsirkin's pci branch (that includes now all the
dependencies)
- Refactored acpi terms patch into multiple patches to match Igor's design.
v1->v2:
- Add support for multiple pxb devices.
- Attach pxb's bus to specific NUMA node.
- Got rid of the hacks from prev version.
- Tested also for Win7 and Fedora 20, and for virtio blk devices.
- Several bug-fixes resulting in a stable version ready for submission.
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.
Marcel Apfelbaum (24):
acpi: add aml_or() term
acpi: add aml_add() term
acpi: add aml_lless() term
acpi: add aml_index() term
acpi: add aml_shiftleft() term
acpi: add aml_shiftright() term
acpi: add aml_increment() term
acpi: add aml_while() term
hw/pci: made pci_bus_is_root a PCIBusClass method
hw/pci: made pci_bus_num a PCIBusClass method
hw/i386: query only for q35/pc when looking for pci host bridge
hw/pci: extend PCI config access to support devices behind PXB
hw/acpi: add support for i440fx 'snooping' root busses
hw/apci: add _PRT method for extra PCI root busses
hw/acpi: add _CRS method for extra root busses
hw/acpi: remove from root bus 0 the crs resources used by other buses.
hw/pci: removed 'rootbus nr is 0' assumption from qmp_pci_query
hw/pci: introduce PCI Expander Bridge (PXB)
hw/pci: inform bios if the system has extra pci root buses
hw/pxb: add map_irq func
hw/pci: add support for NUMA nodes
hw/pxb: add numa_node parameter
apci: fix PXB behaviour if used with unsupported BIOS
docs: Add PXB documentation
docs/pci_expander_bridge.txt | 58 ++++++
hw/acpi/aml-build.c | 75 +++++++
hw/i386/acpi-build.c | 396 ++++++++++++++++++++++++++++++++++--
hw/i386/pc.c | 20 ++
hw/pci-bridge/Makefile.objs | 1 +
hw/pci-bridge/pci_expander_bridge.c | 231 +++++++++++++++++++++
hw/pci/pci.c | 78 +++++--
include/hw/acpi/aml-build.h | 8 +
include/hw/pci/pci.h | 4 +
include/hw/pci/pci_bus.h | 10 +
include/sysemu/sysemu.h | 1 +
11 files changed, 851 insertions(+), 31 deletions(-)
create mode 100644 docs/pci_expander_bridge.txt
create mode 100644 hw/pci-bridge/pci_expander_bridge.c
--
2.1.0
- [Qemu-devel] [PATCH V7 00/24] hw/pc: implement multiple primary busses for pc machines,
Marcel Apfelbaum <=
- [Qemu-devel] [PATCH V7 01/24] acpi: add aml_or() term, Marcel Apfelbaum, 2015/05/25
- [Qemu-devel] [PATCH V7 03/24] acpi: add aml_lless() term, Marcel Apfelbaum, 2015/05/25
- [Qemu-devel] [PATCH V7 04/24] acpi: add aml_index() term, Marcel Apfelbaum, 2015/05/25
- [Qemu-devel] [PATCH V7 02/24] acpi: add aml_add() term, Marcel Apfelbaum, 2015/05/25
- [Qemu-devel] [PATCH V7 05/24] acpi: add aml_shiftleft() term, Marcel Apfelbaum, 2015/05/25
- [Qemu-devel] [PATCH V7 06/24] acpi: add aml_shiftright() term, Marcel Apfelbaum, 2015/05/25