qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org, Greg Kurz <groug@kaod.org>
Subject: Re: [Qemu-devel] [PATCH v4 13/14] ppc/xics: fix irq priority in ics_set_irq_type()
Date: Tue, 14 May 2019 11:54:26 +1000	[thread overview]
Message-ID: <20190514015426.GE6441@umbus.fritz.box> (raw)
In-Reply-To: <20190513084245.25755-14-clg@kaod.org>

[-- Attachment #1: Type: text/plain, Size: 2595 bytes --]

On Mon, May 13, 2019 at 10:42:44AM +0200, Cédric Le Goater wrote:
> Recent commits changed the behavior of ics_set_irq_type() to
> initialize correctly LSIs at the KVM level. ics_set_irq_type() is also
> called by the realize routine of the different devices of the machine
> when initial interrupts are claimed, before the ICSState device is
> reseted.
> 
> In the case, the ICSIRQState priority is 0x0 and the call to
> ics_set_irq_type() results in configuring the target of the
> interrupt. On P9, when using the KVM XICS-on-XIVE device, the target
> is configured to be server 0, priority 0 and the event queue 0 is
> created automatically by KVM.
> 
> With the dual interrupt mode creating the KVM device at reset, it
> leads to unexpected effects on the guest, mostly blocking IPIs. This
> is wrong, fix it by reseting the ICSIRQState structure when
> ics_set_irq_type() is called.
> 
> Fixes: commit 6cead90c5c9c ("xics: Write source state to KVM at claim time")
> Signed-off-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  hw/intc/xics.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/intc/xics.c b/hw/intc/xics.c
> index af7dc709abab..79f5a8a91665 100644
> --- a/hw/intc/xics.c
> +++ b/hw/intc/xics.c
> @@ -610,6 +610,12 @@ static const TypeInfo ics_simple_info = {
>      .class_size = sizeof(ICSStateClass),
>  };
>  
> +static void ics_reset_irq(ICSIRQState *irq)
> +{
> +    irq->priority = 0xff;
> +    irq->saved_priority = 0xff;
> +}
> +
>  static void ics_base_reset(DeviceState *dev)
>  {
>      ICSState *ics = ICS_BASE(dev);
> @@ -623,8 +629,7 @@ static void ics_base_reset(DeviceState *dev)
>      memset(ics->irqs, 0, sizeof(ICSIRQState) * ics->nr_irqs);
>  
>      for (i = 0; i < ics->nr_irqs; i++) {
> -        ics->irqs[i].priority = 0xff;
> -        ics->irqs[i].saved_priority = 0xff;
> +        ics_reset_irq(ics->irqs + i);
>          ics->irqs[i].flags = flags[i];
>      }
>  }
> @@ -760,6 +765,7 @@ void ics_set_irq_type(ICSState *ics, int srcno, bool lsi)
>          lsi ? XICS_FLAGS_IRQ_LSI : XICS_FLAGS_IRQ_MSI;
>  
>      if (kvm_irqchip_in_kernel()) {
> +        ics_reset_irq(ics->irqs + srcno);
>          ics_set_kvm_state_one(ics, srcno);
>      }
>  }

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2019-05-14  1:57 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-13  8:42 [Qemu-devel] [PATCH v4 00/14] spapr: add KVM support to the XIVE interrupt mode Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 01/14] linux-headers: update linux headers to kvm-ppc-next-5.2-1 Cédric Le Goater
2019-05-20  6:25   ` [Qemu-devel] [PATCH] linux-headers: Update linux headers to 5.2-rc1 Cédric Le Goater
2019-05-20  7:03     ` Cornelia Huck
2019-05-20  7:06       ` Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 02/14] spapr/xive: add KVM support Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 03/14] spapr/xive: add hcall support when under KVM Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 04/14] spapr/xive: add state synchronization with KVM Cédric Le Goater
2019-05-14  1:48   ` David Gibson
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 05/14] spapr/xive: introduce a VM state change handler Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 06/14] spapr/xive: add migration support for KVM Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 07/14] spapr/xive: activate KVM support Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 08/14] sysbus: add a sysbus_mmio_unmap() helper Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 09/14] spapr: introduce routines to delete the KVM IRQ device Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 10/14] spapr: check for the activation of " Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 11/14] spapr/irq: introduce a spapr_irq_init_device() helper Cédric Le Goater
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 12/14] spapr/irq: initialize the IRQ device only once Cédric Le Goater
2019-05-14  1:52   ` David Gibson
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 13/14] ppc/xics: fix irq priority in ics_set_irq_type() Cédric Le Goater
2019-05-14  1:54   ` David Gibson [this message]
2019-05-13  8:42 ` [Qemu-devel] [PATCH v4 14/14] spapr/irq: add KVM support to the 'dual' machine Cédric Le Goater
2019-05-21  1:53 ` [Qemu-devel] [PATCH v4 00/14] spapr: add KVM support to the XIVE interrupt mode David Gibson

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=20190514015426.GE6441@umbus.fritz.box \
    --to=david@gibson.dropbear.id.au \
    --cc=clg@kaod.org \
    --cc=groug@kaod.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;
as well as URLs for NNTP newsgroup(s).