diff --git a/arch/arm64/kernel/paravirt.c b/arch/arm64/kernel/paravirt.c index c4f98834bf0dd05e4d5cd57f3074f3bdfadb1397..c14cc6f63cb441eaa65b5e98fd6d7c4fff8a651a 100644 --- a/arch/arm64/kernel/paravirt.c +++ b/arch/arm64/kernel/paravirt.c @@ -140,3 +140,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 12424d6818cbd99ad426d12004b926d9b44170a2..c2ccaf6fa9ed100c7d3862d6402a85d823effe06 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -395,8 +395,6 @@ void __init setup_arch(char **cmdline_p) smp_init_cpus(); smp_build_mpidr_hash(); - pv_sched_init(); - #ifdef CONFIG_ARM64_SW_TTBR0_PAN /* * Make sure init_thread_info.ttbr0 always generates translation diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c index f12efc694f9038a83818542096e24c1f47a42cbc..0ab79ed498a5a6b9e20aac3048deb89db400fbec 100644 --- a/virt/kvm/arm/arm.c +++ b/virt/kvm/arm/arm.c @@ -1121,6 +1121,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; }