Hi Christian.


If possible give the below try.
(Note: Didn;t replicate your issue)

---

diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 7667563fb9ff..bf0ca49c9915 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -4825,10 +4825,13 @@ static int kvmppc_run_vcpu(struct kvm_vcpu *vcpu)
         vc->runner = vcpu;
         if (n_ceded == vc->n_runnable) {
             kvmppc_vcore_blocked(vc);
-        } else if (need_resched()) {
+        } else if (need_resched() || spin_needbreak(&vc->lock)) {
             kvmppc_vcore_preempt(vc);
             /* Let something else run */
-            cond_resched_lock(&vc->lock);
+            spin_unlock(&vc->lock);
+            schedule();
+            //cond_resched_lock(&vc->lock);
+            spin_lock(&vc->lock);
             if (vc->vcore_state == VCORE_PREEMPT)
                 kvmppc_vcore_end_preempt(vc);
         } else {
@@ -4901,7 +4904,7 @@ int kvmhv_run_single_vcpu(struct kvm_vcpu *vcpu, u64 time_limit,
     }

     if (need_resched())
-        cond_resched();
+        schedule();

     kvmppc_update_vpas(vcpu);

diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 9a89a6d98f97..54963c1d8b58 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -86,7 +86,7 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
     while (true) {
         if (need_resched()) {
             local_irq_enable();
-            cond_resched();
+            schedule();
             hard_irq_disable();
             continue;
         }

Hello Shrikanth,
t
I tested your patch today. The patched preempt kernel boots on my e5500 host and in an e5500 VM. Unfortunately my guest and host freeze after loading the VirtIO-GPU.

Thanks for your help,

Christian

Glad it helps you to boot into.

Since you said even host freezes, host maybe crashing.
Do you have the console log when you load the VirtIO-GPU?

Reply via email to