[PATCH kvmtool 2/7] arm64: Consistently treat vcpu_affinity_cpuset as dynamically allocated
Alexandru Elisei
alexandru.elisei at arm.com
Thu Sep 17 08:49:27 PDT 2026
man 3 CPU_ALLOC says that for dynamically allocated cpusets, one should use
the *_S macros to manipulate the cpuset, and the example program also
demonstrates this. Use CPU_SET_S and CPU_ISSET_S to comply.
Fixes: 4639b72f61a3 ("arm64: Add --vcpu-affinity command line argument")
Signed-off-by: Alexandru Elisei <alexandru.elisei at arm.com>
---
arm64/kvm.c | 6 ++++--
arm64/pmu.c | 6 ++++--
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/arm64/kvm.c b/arm64/kvm.c
index cdd673542aea..5f3ed9f6d201 100644
--- a/arm64/kvm.c
+++ b/arm64/kvm.c
@@ -450,6 +450,7 @@ int vcpu_affinity_parser(const struct option *opt, const char *arg, int unset)
struct kvm *kvm = opt->ptr;
const char *cpulist = arg;
cpumask_t *cpumask;
+ size_t setsize;
int cpu, ret;
kvm->cfg.arch.vcpu_affinity = cpulist;
@@ -467,10 +468,11 @@ int vcpu_affinity_parser(const struct option *opt, const char *arg, int unset)
kvm->arch.vcpu_affinity_cpuset = CPU_ALLOC(NR_CPUS);
if (!kvm->arch.vcpu_affinity_cpuset)
die_perror("CPU_ALLOC");
- CPU_ZERO_S(CPU_ALLOC_SIZE(NR_CPUS), kvm->arch.vcpu_affinity_cpuset);
+ setsize = CPU_ALLOC_SIZE(NR_CPUS);
+ CPU_ZERO_S(setsize, kvm->arch.vcpu_affinity_cpuset);
for_each_cpu(cpu, cpumask)
- CPU_SET(cpu, kvm->arch.vcpu_affinity_cpuset);
+ CPU_SET_S(cpu, setsize, kvm->arch.vcpu_affinity_cpuset);
return 0;
}
diff --git a/arm64/pmu.c b/arm64/pmu.c
index 49d58ddd529b..e5a07abcd317 100644
--- a/arm64/pmu.c
+++ b/arm64/pmu.c
@@ -191,6 +191,7 @@ static int find_pmu(struct kvm *kvm)
{
cpumask_t *cpumask;
int i, this_cpu;
+ size_t setsize;
cpumask = calloc(cpumask_size(), 1);
if (!cpumask)
@@ -202,8 +203,9 @@ static int find_pmu(struct kvm *kvm)
return -errno;
cpumask_set_cpu(this_cpu, cpumask);
} else {
- for (i = 0; i < CPU_SETSIZE; i ++) {
- if (CPU_ISSET(i, kvm->arch.vcpu_affinity_cpuset))
+ setsize = CPU_ALLOC_SIZE(NR_CPUS);
+ for (i = 0; i < NR_CPUS; i ++) {
+ if (CPU_ISSET_S(i, setsize, kvm->arch.vcpu_affinity_cpuset))
cpumask_set_cpu(i, cpumask);
}
}
--
2.55.0
More information about the linux-arm-kernel
mailing list