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 940e237009e919048bad096a2f36a977130e1402..0d6cd99f73f57c067031862219500ec3161b0115 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -424,8 +424,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 7527ac19332f83f70be7b326b86986fb635531ac..a94acb502237269bac0c48d5b828528191d2945e 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -1176,6 +1176,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; }