
On 11.11.2016 12:26, Nitesh Konkar wrote:
Currently when the vcpu placement is static and cpuset is not specified, CPU Affinity under virsh vcpupin shows 0..CPUMAX. This patchset will result in display of only online CPU's under CPU Affinity on linux.
Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com> --- src/conf/domain_conf.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 74efe8c..6f81903 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -55,6 +55,7 @@ #include "virtpm.h" #include "virstring.h" #include "virnetdev.h" +#include "virhostcpu.h"
#define VIR_FROM_THIS VIR_FROM_DOMAIN
@@ -1543,8 +1544,13 @@ virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def, { int maxvcpus = virDomainDefGetVcpusMax(def); virBitmapPtr allcpumap = NULL; + virBitmapPtr staticCpuset = NULL; size_t i;
+#ifdef __linux__ + staticCpuset = virHostCPUGetOnlineBitmap(); +#endif + if (hostcpus < 0) return -1;
@@ -1562,6 +1568,9 @@ virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def, else if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO && autoCpuset) bitmap = autoCpuset; + else if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC && + staticCpuset) + bitmap = staticCpuset; I wonder whether you suggest this to reconcile the results of virsh vcpupin and virsh vcpuinfo for a running domain? If so, this will not work because then you would rather have to query the process' cpu affinity, but this can obviously not be done here. else if (def->cpumask) bitmap = def->cpumask; else @@ -1571,6 +1580,7 @@ virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def, }
virBitmapFree(allcpumap); + virBitmapFree(staticCpuset); return i; }
-- Mit freundlichen Grüßen/Kind Regards Viktor Mihajlovski IBM Deutschland Research & Development GmbH Vorsitzender des Aufsichtsrats: Martina Köderitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294