mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
KVM: arm64: selftests: Fix thread migration in arch_timer_edge_cases
arch_timer_edge_cases tries to migrate itself across host cpus. Before the first test, it migrates to cpu 0 by setting up an affinity mask with only bit 0 set. After that it looks for the next possible cpu in the current affinity mask which still has only bit 0 set. So there is no migration at all. Fix this by reading the default mask at start and use this to find the next cpu in each iteration. Signed-off-by: Sebastian Ott <sebott@redhat.com> Link: https://lore.kernel.org/r/20250605103613.14544-3-sebott@redhat.com Signed-off-by: Marc Zyngier <maz@kernel.org>
This commit is contained in:
parent
9a9864fd09
commit
050632ae65
|
|
@ -849,17 +849,17 @@ static void guest_code(enum arch_timer timer)
|
|||
GUEST_DONE();
|
||||
}
|
||||
|
||||
static cpu_set_t default_cpuset;
|
||||
|
||||
static uint32_t next_pcpu(void)
|
||||
{
|
||||
uint32_t max = get_nprocs();
|
||||
uint32_t cur = sched_getcpu();
|
||||
uint32_t next = cur;
|
||||
cpu_set_t cpuset;
|
||||
cpu_set_t cpuset = default_cpuset;
|
||||
|
||||
TEST_ASSERT(max > 1, "Need at least two physical cpus");
|
||||
|
||||
sched_getaffinity(0, sizeof(cpuset), &cpuset);
|
||||
|
||||
do {
|
||||
next = (next + 1) % CPU_SETSIZE;
|
||||
} while (!CPU_ISSET(next, &cpuset));
|
||||
|
|
@ -1046,6 +1046,8 @@ int main(int argc, char *argv[])
|
|||
if (!parse_args(argc, argv))
|
||||
exit(KSFT_SKIP);
|
||||
|
||||
sched_getaffinity(0, sizeof(default_cpuset), &default_cpuset);
|
||||
|
||||
if (test_args.test_virtual) {
|
||||
test_vm_create(&vm, &vcpu, VIRTUAL);
|
||||
test_run(vm, vcpu);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user