public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Misbah Anjum N <misanjum@linux.ibm.com>
To: Ani Sinha <anisinha@redhat.com>, Pbonzini <pbonzini@redhat.com>,
	peter.maydell@linaro.org, Harshpb <harshpb@linux.ibm.com>
Cc: Gautam Menghani <gautam@linux.ibm.com>,
	Fabiano Rosas <farosas@suse.de>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	kvm@vger.kernel.org, Qemu Devel <qemu-devel@nongnu.org>,
	Qemu Ppc <qemu-ppc@nongnu.org>
Subject: Re: [PATCH for-11.0] accel/kvm: return early from kvm_irqchip_create if kvm does not support irqchip
Date: Mon, 13 Apr 2026 22:39:37 +0530	[thread overview]
Message-ID: <d91f22b1e74f8159c0ab4ac0aea44ef3@linux.ibm.com> (raw)
In-Reply-To: <20260413090010.60339-1-anisinha@redhat.com>

Hi Ani,
I've tested the v1 patch: [PATCH for-11.0] accel/kvm: return early from 
kvm_irqchip_create if kvm does not support irqchip, on PowerPC machine 
and it resolves the boot hang issue seen when booting KVM guest with >1 
smp value.

Regression Details:
Commit 98884e0cc1 ("accel/kvm: add changes required to support KVM VM 
file descriptor change") led to a regression which caused KVM guests on 
ppc64le to hang indefinitely during boot when SMP was configured. Single 
vCPU guests booted successfully, but any configuration with more than 
one vCPU would hang.
The hang occurred at bql_lock() in qemu_default_main() 
(system/main.c:49), where the system would become completely 
unresponsive after successfully completing qemu_system_reset().
Reference: 
https://lists.nongnu.org/archive/html/qemu-ppc/2026-03/msg00035.html

Test Environment:
- Host Arch: ppc64le
- Host and Guest OS: Fedora 42
- Machine Type: pseries with KVM acceleration
- QEMU: Latest master with this patch applied

Test Results:
All the following SMP topologies now boot successfully:

Single and simple multi-CPU:
- -smp 1
- -smp 2
- -smp 4
- -smp 32

Various socket/core/thread combinations (8 vCPUs):
- -smp 8,sockets=8,cores=1,threads=1
- -smp 8,sockets=1,cores=8,threads=1
- -smp 8,sockets=1,cores=1,threads=8
- -smp 8,sockets=2,cores=4,threads=1
- -smp 8,sockets=1,cores=4,threads=2
- -smp 8,sockets=2,cores=1,threads=4
- -smp 8,sockets=2,cores=2,threads=2

Higher vCPU count:
- -smp 16,sockets=2,cores=4,threads=2
- -smp 32,sockets=1,cores=8,threads=4

Tested-by: Misbah Anjum N <misanjum@linux.ibm.com>

Thanks,
Misbah Anjum N <misanjum@linux.ibm.com>

On 2026-04-13 14:30, Ani Sinha wrote:
> During refactoring of kvm_irqchip_create(), the refactored code was 
> returning
> early from do_kvm_irqchip_create() function if the required 
> capabilities were
> not present in KVM. This was not translating to an early return from
> kvm_irqchip_create() as was the case before refactoring. This is 
> because,
> do_kvm_irqchip_create() did not have a means to notify the caller of 
> the lack
> of kvm capabilities. Fix this by making do_notify_irqchip_create() 
> return
> EOPNOTSUPP error when required capabilities are absent and then the 
> caller
> can check the return code and return early.
> 
> Fixes: 98884e0cc1 ("accel/kvm: add changes required to support KVM VM
> file descriptor change")
> Reported-by: Misbah Anjum N <misanjum@linux.ibm.com>
> Reported-by: Gautam Menghani <gautam@linux.ibm.com>
> Suggested-by: Fabiano Rosas <farosas@suse.de>
> Suggested-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
> Signed-off-by: Ani Sinha <anisinha@redhat.com>
> ---
>  accel/kvm/kvm-all.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> index 774499d34f..92af42503b 100644
> --- a/accel/kvm/kvm-all.c
> +++ b/accel/kvm/kvm-all.c
> @@ -2575,7 +2575,7 @@ void kvm_irqchip_set_qemuirq_gsi(KVMState *s,
> qemu_irq irq, int gsi)
>      g_hash_table_insert(s->gsimap, irq, GINT_TO_POINTER(gsi));
>  }
> 
> -static void do_kvm_irqchip_create(KVMState *s)
> +static int do_kvm_irqchip_create(KVMState *s)
>  {
>      int ret;
>      if (kvm_check_extension(s, KVM_CAP_IRQCHIP)) {
> @@ -2587,7 +2587,7 @@ static void do_kvm_irqchip_create(KVMState *s)
>              exit(1);
>          }
>      } else {
> -        return;
> +        return -EOPNOTSUPP;
>      }
> 
>      if (kvm_check_extension(s, KVM_CAP_IRQFD) <= 0) {
> @@ -2610,13 +2610,17 @@ static void do_kvm_irqchip_create(KVMState *s)
>          fprintf(stderr, "Create kernel irqchip failed: %s\n", 
> strerror(-ret));
>          exit(1);
>      }
> +
> +    return 0;
>  }
> 
>  static void kvm_irqchip_create(KVMState *s)
>  {
>      assert(s->kernel_irqchip_split != ON_OFF_AUTO_AUTO);
> 
> -    do_kvm_irqchip_create(s);
> +    if (do_kvm_irqchip_create(s) < 0) {
> +        return;
> +    }
>      kvm_kernel_irqchip = true;
>      /* If we have an in-kernel IRQ chip then we must have asynchronous
>       * interrupt delivery (though the reverse is not necessarily true)
> @@ -2835,6 +2839,7 @@ static int kvm_reset_vmfd(MachineState *ms)
>      }
> 
>      if (s->kernel_irqchip_allowed) {
> +        /* ignore return from this function */
>          do_kvm_irqchip_create(s);
>      }

      parent reply	other threads:[~2026-04-13 17:10 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-13  9:00 [PATCH for-11.0] accel/kvm: return early from kvm_irqchip_create if kvm does not support irqchip Ani Sinha
2026-04-13  9:33 ` Peter Maydell
2026-04-13  9:47   ` Ani Sinha
2026-04-13 12:10 ` Peter Maydell
2026-04-13 12:20   ` Ani Sinha
2026-04-13 17:09 ` Misbah Anjum N [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d91f22b1e74f8159c0ab4ac0aea44ef3@linux.ibm.com \
    --to=misanjum@linux.ibm.com \
    --cc=anisinha@redhat.com \
    --cc=farosas@suse.de \
    --cc=gautam@linux.ibm.com \
    --cc=harshpb@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox