Re: [libvirt] [PATCH v2 2/4] qemu: move PCI slot assignment for PIIX3, Q35 into a separate function

2015-01-23 Thread Ján Tomko
On 01/23/2015 01:17 PM, Erik Skultety wrote:
 In order to be able to test for fully reserved PCI buses, assignment of
 PCI slots for integrated devices needs to be moved to a separate function.
 This also might be a good preparation if we decide to add support for
 other chipsets as well.
 ---
  src/qemu/qemu_command.c | 47 ---
  1 file changed, 32 insertions(+), 15 deletions(-)
 
 diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
 index 336a3d3..457c777 100644
 --- a/src/qemu/qemu_command.c
 +++ b/src/qemu/qemu_command.c
 @@ -1874,6 +1874,27 @@ qemuDomainValidateDevicePCISlotsQ35(virDomainDefPtr 
 def,
  return ret;
  }
  
 +static int
 +qemuValidateDevicePCISlotsChipsets(virDomainDefPtr def,
 +   virQEMUCapsPtr qemuCaps,
 +   virDomainPCIAddressSetPtr addrs)
 +{
 +if ((STRPREFIX(def-os.machine, pc-0.) ||
 +STRPREFIX(def-os.machine, pc-1.) ||
 +STRPREFIX(def-os.machine, pc-i440) ||
 +STREQ(def-os.machine, pc) ||
 +STRPREFIX(def-os.machine, rhel)) 
 +qemuValidateDevicePCISlotsPIIX3(def, qemuCaps, addrs)  0) {
 +return -1;
 +}
 +
 +if (qemuDomainMachineIsQ35(def) 
 +qemuDomainValidateDevicePCISlotsQ35(def, qemuCaps, addrs)  0) {
 +return -1;
 +}
 +
 +return 0;
 +}
  
  int
  qemuDomainAssignPCIAddresses(virDomainDefPtr def,
 @@ -1907,6 +1928,10 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
  /* 1st pass to figure out how many PCI bridges we need */
  if (!(addrs = qemuDomainPCIAddressSetCreate(def, nbuses, true)))
  goto cleanup;
 +
 +if (qemuValidateDevicePCISlotsChipsets(def, qemuCaps, addrs)  0)
 +goto cleanup;
 +
  if (qemuAssignDevicePCISlots(def, qemuCaps, addrs)  0)
  goto cleanup;
  
 @@ -1946,6 +1971,9 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
  goto cleanup;
  
  if (qemuDomainSupportsPCI(def)) {
 +if (qemuValidateDevicePCISlotsChipsets(def, qemuCaps, addrs)  0)
 +goto cleanup;
 +
  if (qemuAssignDevicePCISlots(def, qemuCaps, addrs)  0)
  goto cleanup;
  }
 @@ -1990,6 +2018,9 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
   *  - PIIX3 ISA bridge, IDE controller, something else unknown, USB 
 controller (slot 1)
   *  - Video (slot 2)
   *
 + *  - These integrated devices were already added by
 + *qemuValidateDevicePCISlotsChipsets invoked right before this function
 + *
   * Incrementally assign slots from 3 onwards:
   *
   *  - Net
 @@ -2007,27 +2038,13 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
   */
  int
  qemuAssignDevicePCISlots(virDomainDefPtr def,
 - virQEMUCapsPtr qemuCaps,
 + virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED,

We can just remove the parameter if it's not used.

ACK and pushed with that change.

Jan




signature.asc
Description: OpenPGP digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCH v2 2/4] qemu: move PCI slot assignment for PIIX3, Q35 into a separate function

2015-01-23 Thread Erik Skultety
In order to be able to test for fully reserved PCI buses, assignment of
PCI slots for integrated devices needs to be moved to a separate function.
This also might be a good preparation if we decide to add support for
other chipsets as well.
---
 src/qemu/qemu_command.c | 47 ---
 1 file changed, 32 insertions(+), 15 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 336a3d3..457c777 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -1874,6 +1874,27 @@ qemuDomainValidateDevicePCISlotsQ35(virDomainDefPtr def,
 return ret;
 }
 
+static int
+qemuValidateDevicePCISlotsChipsets(virDomainDefPtr def,
+   virQEMUCapsPtr qemuCaps,
+   virDomainPCIAddressSetPtr addrs)
+{
+if ((STRPREFIX(def-os.machine, pc-0.) ||
+STRPREFIX(def-os.machine, pc-1.) ||
+STRPREFIX(def-os.machine, pc-i440) ||
+STREQ(def-os.machine, pc) ||
+STRPREFIX(def-os.machine, rhel)) 
+qemuValidateDevicePCISlotsPIIX3(def, qemuCaps, addrs)  0) {
+return -1;
+}
+
+if (qemuDomainMachineIsQ35(def) 
+qemuDomainValidateDevicePCISlotsQ35(def, qemuCaps, addrs)  0) {
+return -1;
+}
+
+return 0;
+}
 
 int
 qemuDomainAssignPCIAddresses(virDomainDefPtr def,
@@ -1907,6 +1928,10 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
 /* 1st pass to figure out how many PCI bridges we need */
 if (!(addrs = qemuDomainPCIAddressSetCreate(def, nbuses, true)))
 goto cleanup;
+
+if (qemuValidateDevicePCISlotsChipsets(def, qemuCaps, addrs)  0)
+goto cleanup;
+
 if (qemuAssignDevicePCISlots(def, qemuCaps, addrs)  0)
 goto cleanup;
 
@@ -1946,6 +1971,9 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
 goto cleanup;
 
 if (qemuDomainSupportsPCI(def)) {
+if (qemuValidateDevicePCISlotsChipsets(def, qemuCaps, addrs)  0)
+goto cleanup;
+
 if (qemuAssignDevicePCISlots(def, qemuCaps, addrs)  0)
 goto cleanup;
 }
@@ -1990,6 +2018,9 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
  *  - PIIX3 ISA bridge, IDE controller, something else unknown, USB controller 
(slot 1)
  *  - Video (slot 2)
  *
+ *  - These integrated devices were already added by
+ *qemuValidateDevicePCISlotsChipsets invoked right before this function
+ *
  * Incrementally assign slots from 3 onwards:
  *
  *  - Net
@@ -2007,27 +2038,13 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
  */
 int
 qemuAssignDevicePCISlots(virDomainDefPtr def,
- virQEMUCapsPtr qemuCaps,
+ virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED,
  virDomainPCIAddressSetPtr addrs)
 {
 size_t i, j;
 virDomainPCIConnectFlags flags;
 virDevicePCIAddress tmp_addr;
 
-if ((STRPREFIX(def-os.machine, pc-0.) ||
-STRPREFIX(def-os.machine, pc-1.) ||
-STRPREFIX(def-os.machine, pc-i440) ||
-STREQ(def-os.machine, pc) ||
-STRPREFIX(def-os.machine, rhel)) 
-qemuValidateDevicePCISlotsPIIX3(def, qemuCaps, addrs)  0) {
-goto error;
-}
-
-if (qemuDomainMachineIsQ35(def) 
-qemuDomainValidateDevicePCISlotsQ35(def, qemuCaps, addrs)  0) {
-goto error;
-}
-
 /* PCI controllers */
 for (i = 0; i  def-ncontrollers; i++) {
 if (def-controllers[i]-type == VIR_DOMAIN_CONTROLLER_TYPE_PCI) {
-- 
1.9.3

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list