From: Alexander Graf <agraf@suse.de>
To: Alexey Kardashevskiy <aik@ozlabs.ru>, qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org, "Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH 2/8] xics: add flags for interrupts
Date: Thu, 10 Apr 2014 14:43:30 +0200 [thread overview]
Message-ID: <534691F2.2010507@suse.de> (raw)
In-Reply-To: <1394770689-29039-3-git-send-email-aik@ozlabs.ru>
On 14.03.14 05:18, Alexey Kardashevskiy wrote:
> We will need soon an "allocated" flag for every interrupt to support
> interrupt configuration change which may happen during migration.
>
> This replaces a separate lslsi[] array with a byte in the ICSIRQState
> struct and defines "LSI" and "MSI" flags. Neither of these flags set
> signals that the descriptor is not in use.
>
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
> hw/intc/xics.c | 17 +++++++++++------
> hw/intc/xics_kvm.c | 5 ++---
> include/hw/ppc/xics.h | 4 +++-
> 3 files changed, 16 insertions(+), 10 deletions(-)
>
> diff --git a/hw/intc/xics.c b/hw/intc/xics.c
> index 64aabe7..7eac85a 100644
> --- a/hw/intc/xics.c
> +++ b/hw/intc/xics.c
> @@ -438,7 +438,7 @@ static void ics_set_irq(void *opaque, int srcno, int val)
> {
> ICSState *ics = (ICSState *)opaque;
>
> - if (ics->islsi[srcno]) {
> + if (ics->irqs[srcno].flags & XICS_FLAGS_LSI) {
> set_irq_lsi(ics, srcno, val);
> } else {
> set_irq_msi(ics, srcno, val);
> @@ -475,7 +475,7 @@ static void ics_write_xive(ICSState *ics, int nr, int server,
>
> trace_xics_ics_write_xive(nr, srcno, server, priority);
>
> - if (ics->islsi[srcno]) {
> + if (ics->irqs[srcno].flags & XICS_FLAGS_LSI) {
> write_xive_lsi(ics, srcno);
> } else {
> write_xive_msi(ics, srcno);
> @@ -497,7 +497,7 @@ static void ics_resend(ICSState *ics)
>
> for (i = 0; i < ics->nr_irqs; i++) {
> /* FIXME: filter by server#? */
> - if (ics->islsi[i]) {
> + if (ics->irqs[i].flags & XICS_FLAGS_LSI) {
> resend_lsi(ics, i);
> } else {
> resend_msi(ics, i);
> @@ -512,7 +512,7 @@ static void ics_eoi(ICSState *ics, int nr)
>
> trace_xics_ics_eoi(nr);
>
> - if (ics->islsi[srcno]) {
> + if (ics->irqs[srcno].flags & XICS_FLAGS_LSI) {
> irq->status &= ~XICS_STATUS_SENT;
> }
> }
> @@ -609,7 +609,6 @@ static void ics_realize(DeviceState *dev, Error **errp)
> return;
> }
> ics->irqs = g_malloc0(ics->nr_irqs * sizeof(ICSIRQState));
> - ics->islsi = g_malloc0(ics->nr_irqs * sizeof(bool));
> ics->qirqs = qemu_allocate_irqs(ics_set_irq, ics, ics->nr_irqs);
> }
>
> @@ -646,11 +645,17 @@ qemu_irq xics_get_qirq(XICSState *icp, int irq)
> return icp->ics->qirqs[irq - icp->ics->offset];
> }
>
> +static void ics_set_irq_type(ICSState *ics, int irq, bool lsi)
> +{
> + ics->irqs[irq - ics->offset].flags |=
> + lsi ? XICS_FLAGS_LSI : XICS_FLAGS_MSI;
If I configure an IRQ as LSI then as MSI this doesn't work. Sure, we
probably don't do this but in general this is not how a "set" function
should behave.
Alex
next prev parent reply other threads:[~2014-04-10 12:43 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-14 4:18 [Qemu-devel] [PATCH 0/8] spapr: fix IOMMU and XICS/IRQs migration Alexey Kardashevskiy
2014-03-14 4:18 ` [Qemu-devel] [PATCH 1/8] spapr-iommu: add a bus for spapr-iommu devices Alexey Kardashevskiy
2014-04-10 12:40 ` Alexander Graf
2014-04-10 14:40 ` Alexey Kardashevskiy
2014-04-10 14:52 ` Andreas Färber
2014-04-10 15:18 ` Alexey Kardashevskiy
2014-03-14 4:18 ` [Qemu-devel] [PATCH 2/8] xics: add flags for interrupts Alexey Kardashevskiy
2014-04-10 12:43 ` Alexander Graf [this message]
2014-03-14 4:18 ` [Qemu-devel] [PATCH 3/8] xics: add find_server Alexey Kardashevskiy
2014-03-14 4:18 ` [Qemu-devel] [PATCH 4/8] xics: add pre_load() hook to ICSStateClass Alexey Kardashevskiy
2014-03-14 4:18 ` [Qemu-devel] [PATCH 5/8] xics: disable flags reset on xics reset Alexey Kardashevskiy
2014-03-14 4:18 ` [Qemu-devel] [PATCH 6/8] spapr: move interrupt allocator to xics Alexey Kardashevskiy
2014-04-10 12:51 ` Alexander Graf
2014-04-10 13:24 ` Alexey Kardashevskiy
2014-04-10 13:26 ` Alexander Graf
2014-04-10 14:43 ` Alexey Kardashevskiy
2014-04-11 9:24 ` Alexander Graf
2014-04-11 12:38 ` Alexey Kardashevskiy
2014-04-11 13:58 ` Alexander Graf
2014-04-11 14:50 ` Alexey Kardashevskiy
2014-04-11 14:58 ` Alexander Graf
2014-04-11 15:27 ` Alexey Kardashevskiy
2014-04-11 15:38 ` Alexander Graf
2014-04-11 16:01 ` Alexey Kardashevskiy
2014-04-11 16:15 ` Alexander Graf
2014-04-11 16:30 ` Alexey Kardashevskiy
2014-03-14 4:18 ` [Qemu-devel] [PATCH 7/8] spapr: remove @next_irq Alexey Kardashevskiy
2014-03-14 7:19 ` Thomas Huth
2014-03-14 4:18 ` [Qemu-devel] [PATCH 8/8] xics: enable interrupt configuration reset on migration Alexey Kardashevskiy
2014-04-10 12:55 ` Alexander Graf
2014-03-20 1:25 ` [Qemu-devel] [PATCH 0/8] spapr: fix IOMMU and XICS/IRQs migration Andreas Färber
2014-04-04 5:53 ` Alexey Kardashevskiy
2014-05-04 13:56 ` Alexey Kardashevskiy
2014-05-04 21:52 ` Paolo Bonzini
2014-05-04 23:48 ` Alexey Kardashevskiy
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=534691F2.2010507@suse.de \
--to=agraf@suse.de \
--cc=afaerber@suse.de \
--cc=aik@ozlabs.ru \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.