diff --git a/arch/arm64/kernel/paravirt.c b/arch/arm64/kernel/paravirt.c index 45df16e9d8bc9d4d8d5af9a4138ed3759eee47ee..f532534eed53fffb29725aa3d245489e13e465a3 100644 --- a/arch/arm64/kernel/paravirt.c +++ b/arch/arm64/kernel/paravirt.c @@ -351,3 +351,4 @@ int __init pv_sched_init(void) return 0; } +early_initcall(pv_sched_init); diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index ddca8d27fca6f58d56265ff7dfe36a0f1a9e5a55..9a1ae1a93f63e87b20f28166cab7191a377417a7 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -407,8 +407,6 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p) smp_init_cpus(); smp_build_mpidr_hash(); - pv_sched_init(); - /* Init percpu seeds for random tags after cpus are set up. */ kasan_init_tags(); diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 469f324ce5367d7c37fee34a589cdcf02d3ba6d1..85031e6dc8996a899644d39b9cfa0fcb7e4d4e21 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -1140,6 +1140,8 @@ static int kvm_arch_vcpu_ioctl_vcpu_init(struct kvm_vcpu *vcpu, else vcpu->arch.power_off = false; + kvm_arm_pvsched_vcpu_init(&vcpu->arch); + return 0; }