Re: [libvirt] [PATCH] qemu: don't pin all the cpus

2012-09-05 Thread Michal Privoznik
On 04.09.2012 16:23, Martin Kletzander wrote:
 This is another fix for the emulator-pin series. When going through
 the cputune pinning settings, the current code is trying to pin all
 the CPUs, even when not all of them are specified. This causes error
 in the subsequent function which, of course, cannot find the cpu to
 pin. Since it's enough to pass the correct VCPU ID to the function,
 the fix is trivial.
 ---
  src/qemu/qemu_cgroup.c | 25 +
  1 file changed, 17 insertions(+), 8 deletions(-)

ACK

Michal

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


Re: [libvirt] [PATCH] qemu: don't pin all the cpus

2012-09-05 Thread Martin Kletzander
On 09/05/2012 07:11 PM, Michal Privoznik wrote:
 On 04.09.2012 16:23, Martin Kletzander wrote:
 This is another fix for the emulator-pin series. When going through
 the cputune pinning settings, the current code is trying to pin all
 the CPUs, even when not all of them are specified. This causes error
 in the subsequent function which, of course, cannot find the cpu to
 pin. Since it's enough to pass the correct VCPU ID to the function,
 the fix is trivial.
 ---
  src/qemu/qemu_cgroup.c | 25 +
  1 file changed, 17 insertions(+), 8 deletions(-)
 
 ACK
 
 Michal
 

Thanks, pushed.

Martin

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


[libvirt] [PATCH] qemu: don't pin all the cpus

2012-09-04 Thread Martin Kletzander
This is another fix for the emulator-pin series. When going through
the cputune pinning settings, the current code is trying to pin all
the CPUs, even when not all of them are specified. This causes error
in the subsequent function which, of course, cannot find the cpu to
pin. Since it's enough to pass the correct VCPU ID to the function,
the fix is trivial.
---
 src/qemu/qemu_cgroup.c | 25 +
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
index 7298e28..5b42793 100644
--- a/src/qemu/qemu_cgroup.c
+++ b/src/qemu/qemu_cgroup.c
@@ -542,7 +542,7 @@ int qemuSetupCgroupForVcpu(struct qemud_driver *driver, 
virDomainObjPtr vm)
 qemuDomainObjPrivatePtr priv = vm-privateData;
 virDomainDefPtr def = vm-def;
 int rc;
-unsigned int i;
+unsigned int i, j;
 unsigned long long period = vm-def-cputune.period;
 long long quota = vm-def-cputune.quota;

@@ -603,13 +603,22 @@ int qemuSetupCgroupForVcpu(struct qemud_driver *driver, 
virDomainObjPtr vm)
 }

 /* Set vcpupin in cgroup if vcpupin xml is provided */
-if (def-cputune.nvcpupin 
-qemuCgroupControllerActive(driver, VIR_CGROUP_CONTROLLER_CPUSET) 
-qemuSetupCgroupVcpuPin(cgroup_vcpu,
-   def-cputune.vcpupin,
-   def-cputune.nvcpupin,
-   i)  0)
-goto cleanup;
+if (qemuCgroupControllerActive(driver, VIR_CGROUP_CONTROLLER_CPUSET)) {
+/* find the right CPU to pin, otherwise
+ * qemuSetupCgroupVcpuPin will fail. */
+for (j = 0; j  def-cputune.nvcpupin; j++) {
+if (def-cputune.vcpupin[j]-vcpuid != i)
+continue;
+
+if (qemuSetupCgroupVcpuPin(cgroup_vcpu,
+   def-cputune.vcpupin,
+   def-cputune.nvcpupin,
+   i)  0)
+goto cleanup;
+
+break;
+}
+}

 virCgroupFree(cgroup_vcpu);
 }
-- 
1.7.12

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