Bug 210213

Summary: vCPUs >= 64 can't be online and hotplugged in some scenarios
Product: Virtualization Reporter: Zelin Deng (zelin.deng)
Component: kvmAssignee: virtualization_kvm
Status: NEW ---    
Severity: normal    
Priority: P1    
Hardware: x86-64   
OS: Linux   
Kernel Version: 5.10-rc4 Subsystem:
Regression: No Bisected commit-id:
Attachments: Here is a workaround to fix this issue

Description Zelin Deng 2020-11-16 03:27:36 UTC
Created attachment 293685 [details]
Here is a workaround to fix this issue

In VM, if no-kvmclock-vsyscall is set, lscpu shows online 0-63 vcpus are online vcpus >= 64 are offline and if we attempting to hotplug them, they will return -ENOMEM.
This issue also happened in VM which are on TSC unstable host.
 bash-14295 [040] .... 64209.953702: cpuhp_enter: cpu: 0064 target: 199 step:  64 (kvmclock_setup_percpu)
            bash-14295 [040] .... 64209.953702: cpuhp_exit:  cpu: 0064  state:  64 step:  64 ret: -12
----------------------------

[root@iZwz9208df47apaoyvbmm3Z processor]# cat /sys/kernel/debug/tracing/trace
# tracer: nop
#
# entries-in-buffer/entries-written: 166/166   #P:49
#
#                              _-----=> irqs-off
#                             / _----=> need-resched
#                            | / _---=> hardirq/softirq
#                            || / _--=> preempt-depth
#                            ||| /     delay
#           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
#              | |       |   ||||       |         |
            bash-14295 [040] .... 64209.953675: cpuhp_enter: cpu: 0064 target: 199 step:   1 (smpboot_create_threads)
            bash-14295 [040] .... 64209.953676: cpuhp_exit:  cpu: 0064  state:   1 step:   1 ret: 0
            bash-14295 [040] .... 64209.953676: cpuhp_enter: cpu: 0064 target: 199 step:   2 (perf_event_init_cpu)
            bash-14295 [040] .... 64209.953677: cpuhp_exit:  cpu: 0064  state:   2 step:   2 ret: 0
            bash-14295 [040] .... 64209.953678: cpuhp_enter: cpu: 0064 target: 199 step:  35 (workqueue_prepare_cpu)
            bash-14295 [040] .... 64209.953678: cpuhp_exit:  cpu: 0064  state:  35 step:  35 ret: 0
            bash-14295 [040] .... 64209.953678: cpuhp_enter: cpu: 0064 target: 199 step:  37 (hrtimers_prepare_cpu)
            bash-14295 [040] .... 64209.953679: cpuhp_exit:  cpu: 0064  state:  37 step:  37 ret: 0
            bash-14295 [040] .... 64209.953679: cpuhp_enter: cpu: 0064 target: 199 step:  40 (smpcfd_prepare_cpu)
            bash-14295 [040] .... 64209.953692: cpuhp_exit:  cpu: 0064  state:  40 step:  40 ret: 0
            bash-14295 [040] .... 64209.953693: cpuhp_enter: cpu: 0064 target: 199 step:  41 (relay_prepare_cpu)
            bash-14295 [040] .... 64209.953693: cpuhp_exit:  cpu: 0064  state:  41 step:  41 ret: 0
            bash-14295 [040] .... 64209.953693: cpuhp_enter: cpu: 0064 target: 199 step:  44 (rcutree_prepare_cpu)
            bash-14295 [040] .... 64209.953694: cpuhp_exit:  cpu: 0064  state:  44 step:  44 ret: 0
            bash-14295 [040] .... 64209.953694: cpuhp_enter: cpu: 0064 target: 199 step:  53 (topology_add_dev)
            bash-14295 [040] .... 64209.953699: cpuhp_exit:  cpu: 0064  state:  53 step:  53 ret: 0
            bash-14295 [040] .... 64209.953700: cpuhp_multi_enter: cpu: 0064 target: 199 step:  56 (trace_rb_cpu_prepare)
            bash-14295 [040] .... 64209.953700: cpuhp_exit:  cpu: 0064  state:  56 step:  56 ret: 0
            bash-14295 [040] .... 64209.953700: cpuhp_multi_enter: cpu: 0064 target: 199 step:  56 (trace_rb_cpu_prepare)
            bash-14295 [040] .... 64209.953700: cpuhp_exit:  cpu: 0064  state:  56 step:  56 ret: 0
            bash-14295 [040] .... 64209.953701: cpuhp_multi_enter: cpu: 0064 target: 199 step:  56 (trace_rb_cpu_prepare)
            bash-14295 [040] .... 64209.953701: cpuhp_exit:  cpu: 0064  state:  56 step:  56 ret: 0
            bash-14295 [040] .... 64209.953701: cpuhp_enter: cpu: 0064 target: 199 step:  62 (timers_prepare_cpu)
            bash-14295 [040] .... 64209.953701: cpuhp_exit:  cpu: 0064  state:  62 step:  62 ret: 0
            bash-14295 [040] .... 64209.953702: cpuhp_enter: cpu: 0064 target: 199 step:  64 (kvmclock_setup_percpu)
            bash-14295 [040] .... 64209.953702: cpuhp_exit:  cpu: 0064  state:  64 step:  64 ret: -12