All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH V6 for-2.3 00/26] hw/pc: implement multiple primary busses for pc machines
@ 2015-03-19 18:52 Marcel Apfelbaum
  2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 01/26] acpi: add aml_or() term Marcel Apfelbaum
                   ` (28 more replies)
  0 siblings, 29 replies; 61+ messages in thread
From: Marcel Apfelbaum @ 2015-03-19 18:52 UTC (permalink / raw)
  To: qemu-devel
  Cc: kraxel, mst, quintela, agraf, marcel, alex.williamson, kevin,
	hare, imammedo, amit.shah, pbonzini, leon.alrae, aurelien, rth

Notes:
 - I realize that this qualifies as a late submission, but the code was arround
   a lot of time and got lots of reviews and it also tested (by Gerd), so should be mature enough.
 - This series is not that big, patches 1-8 are really small and can be submitted
   separately, however I preferred to keep them here to get the whole picture.

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.
 - You are more than welcome to try using:
       -device pxb-device,id=pxb,bus_nr=4,numa_node=1 -device e1000,bus=pxb,addr=0x1 -bios <patched with the above series>

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.

patch 1-8 adds the necessary acpi constructs based on Igor's series
patch 9 separates the pci_bus code into a designated file 
patch 10-11 implement some supporting methods
patch 12-13 Introduces the interfaces used to bind host bridges to the snooping ones
patch 14 made i440fx a snooped host bridge
patch 15-18 acpi support for snooping buses
patch 19 a qmp fix for multiple host bridgesi
patch 20 handles the actual implementation of the PXB devices
patch 21-22 enables the device
patch 23-24 adds NUMA support
patch 25 Backward compatibility with SeaBIOS
patch 26 PXB Documentation

Marcel Apfelbaum (26):
  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: 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-host: introduce TYPE_PCI_HOST_BRIDGE_SNOOPED interface
  hw/pci-host/piix: implement TYPE_PCI_HOST_BRIDGE_SNOOPED interface
  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 busses.
  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_bus: add support for NUMA nodes
  hw/pxb: add numa_node parameter
  apci: fix PXB behaviour if used with unsupported BIOS
  docs: Add PXB documentation

 arch_init.c                         |   1 +
 docs/pci_expander_bridge.txt        |  52 ++++
 hw/acpi/aml-build.c                 |  75 ++++++
 hw/alpha/typhoon.c                  |   1 +
 hw/i386/acpi-build.c                | 377 ++++++++++++++++++++++++--
 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_expander_bridge.c | 207 +++++++++++++++
 hw/pci-host/bonito.c                |   1 +
 hw/pci-host/grackle.c               |   1 +
 hw/pci-host/piix.c                  | 128 ++++++++-
 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.c                        | 493 +---------------------------------
 hw/pci/pci_bus.c                    | 517 ++++++++++++++++++++++++++++++++++++
 hw/pci/pci_host.c                   |  42 +++
 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/aml-build.h         |   8 +
 include/hw/i386/pc.h                |   8 +-
 include/hw/pci/pci.h                |   6 +-
 include/hw/pci/pci_bus.h            |  35 +++
 include/hw/pci/pci_host.h           |  34 +++
 include/sysemu/sysemu.h             |   1 +
 32 files changed, 1508 insertions(+), 510 deletions(-)
 create mode 100644 docs/pci_expander_bridge.txt
 create mode 100644 hw/pci-bridge/pci_expander_bridge.c
 create mode 100644 hw/pci/pci_bus.c

-- 
2.1.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

end of thread, other threads:[~2015-04-28 10:45 UTC | newest]

Thread overview: 61+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-19 18:52 [Qemu-devel] [PATCH V6 for-2.3 00/26] hw/pc: implement multiple primary busses for pc machines Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 01/26] acpi: add aml_or() term Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 02/26] acpi: add aml_add() term Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 03/26] acpi: add aml_lless() term Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 04/26] acpi: add aml_index() term Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 05/26] acpi: add aml_shiftleft() term Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 06/26] acpi: add aml_shiftright() term Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 07/26] acpi: add aml_increment() term Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 08/26] acpi: add aml_while() term Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 09/26] hw/pci: move pci bus related code to separate files Marcel Apfelbaum
2015-04-27 11:14   ` Michael S. Tsirkin
2015-04-27 11:35     ` Paolo Bonzini
2015-04-27 11:49       ` Marcel Apfelbaum
2015-04-27 12:24         ` Michael S. Tsirkin
2015-04-28  7:31       ` Markus Armbruster
2015-04-28  8:25         ` Marcel Apfelbaum
2015-04-27 12:26     ` Marcel Apfelbaum
2015-04-28  8:30       ` Michael S. Tsirkin
2015-04-28  8:30         ` Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 10/26] hw/pci: made pci_bus_is_root a PCIBusClass method Marcel Apfelbaum
2015-04-27 11:37   ` Michael S. Tsirkin
2015-04-27 11:49     ` Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 11/26] hw/pci: made pci_bus_num " Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 12/26] hw/pci: introduce TYPE_PCI_MAIN_HOST_BRIDGE interface Marcel Apfelbaum
2015-04-27 11:24   ` Michael S. Tsirkin
2015-04-27 12:30     ` Marcel Apfelbaum
2015-04-27 12:48       ` Michael S. Tsirkin
2015-04-27 13:04         ` Marcel Apfelbaum
2015-04-27 20:54           ` Michael S. Tsirkin
2015-04-28  8:33             ` Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 13/26] hw/pci-host: introduce TYPE_PCI_HOST_BRIDGE_SNOOPED interface Marcel Apfelbaum
2015-04-27 12:14   ` Michael S. Tsirkin
2015-04-27 13:01     ` Marcel Apfelbaum
2015-04-27 14:45       ` Michael S. Tsirkin
2015-04-28  8:39         ` Marcel Apfelbaum
2015-04-28  8:43           ` Michael S. Tsirkin
2015-04-28 10:21             ` Marcel Apfelbaum
2015-04-28 10:44               ` Michael S. Tsirkin
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 14/26] hw/pci-host/piix: implement " Marcel Apfelbaum
2015-04-27 12:23   ` Michael S. Tsirkin
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 15/26] hw/acpi: add support for i440fx 'snooping' root busses Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 16/26] hw/apci: add _PRT method for extra PCI " Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 17/26] hw/acpi: add _CRS method for extra " Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 18/26] hw/acpi: remove from root bus 0 the crs resources used by other busses Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 19/26] hw/pci: removed 'rootbus nr is 0' assumption from qmp_pci_query Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 20/26] hw/pci: introduce PCI Expander Bridge (PXB) Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 21/26] hw/pci: inform bios if the system has extra pci root buses Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 22/26] hw/pxb: add map_irq func Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 23/26] hw/pci_bus: add support for NUMA nodes Marcel Apfelbaum
2015-03-19 18:52 ` [Qemu-devel] [PATCH V6 for-2.3 24/26] hw/pxb: add numa_node parameter Marcel Apfelbaum
2015-03-19 18:53 ` [Qemu-devel] [PATCH V6 for-2.3 25/26] apci: fix PXB behaviour if used with unsupported BIOS Marcel Apfelbaum
2015-04-27 11:19   ` Michael S. Tsirkin
2015-04-27 11:51     ` Gerd Hoffmann
2015-03-19 18:53 ` [Qemu-devel] [PATCH V6 for-2.3 26/26] docs: Add PXB documentation Marcel Apfelbaum
2015-03-19 21:45 ` [Qemu-devel] [PATCH V6 for-2.3 00/26] hw/pc: implement multiple primary busses for pc machines Paolo Bonzini
2015-03-20  8:37   ` Marcel Apfelbaum
2015-03-20 17:56     ` Paolo Bonzini
2015-03-20 18:07       ` Peter Maydell
2015-03-20  7:44 ` Gerd Hoffmann
2015-03-20  8:25   ` Marcel Apfelbaum
2015-03-21 18:49 ` Michael S. Tsirkin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.