All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ефимов Василий" <real@ispras.ru>
To: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 2/3] ich9: clean up ich9_lpc_update_pic/ich9_lpc_update_apic and callers
Date: Wed, 22 Jun 2016 14:03:01 +0300	[thread overview]
Message-ID: <576A7065.8040802@ispras.ru> (raw)
In-Reply-To: <1466433559-30930-3-git-send-email-pbonzini@redhat.com>

20.06.2016 17:39, Paolo Bonzini wrote:
> Make ich9_lpc_update_pic take care only of GSIs 0-15, and
> ich9_lpc_update_apic take care only of GSIs 16-23.  Assert
> that they are called with the correct GSI indices.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   hw/isa/lpc_ich9.c | 39 ++++++++++++++++-----------------------
>   1 file changed, 16 insertions(+), 23 deletions(-)
>
> diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
> index b116e1b..446797b 100644
> --- a/hw/isa/lpc_ich9.c
> +++ b/hw/isa/lpc_ich9.c
> @@ -204,38 +204,28 @@ static void ich9_lpc_pic_irq(ICH9LPCState *lpc, int pirq_num,
>       abort();
>   }
>
> -/* pic_irq: i8254 irq 0-15 */
> -static void ich9_lpc_update_pic(ICH9LPCState *lpc, int pic_irq)
> +/* gsi: i8259 irq 0-15, otherwise ignored */
> +static void ich9_lpc_update_pic(ICH9LPCState *lpc, int gsi)
>   {
>       int i, pic_level;
>
> +    assert(gsi < ICH9_LPC_PIC_NUM_PINS);
> +
>       /* The pic level is the logical OR of all the PCI irqs mapped to it */
>       pic_level = 0;
>       for (i = 0; i < ICH9_LPC_NB_PIRQS; i++) {
>           int tmp_irq;
>           int tmp_dis;
>           ich9_lpc_pic_irq(lpc, i, &tmp_irq, &tmp_dis);
> -        if (!tmp_dis && pic_irq == tmp_irq) {
> +        if (!tmp_dis && tmp_irq == gsi) {
>               pic_level |= pci_bus_get_irq_level(lpc->d.bus, i);
>           }
>       }
> -    if (pic_irq == ich9_lpc_sci_irq(lpc)) {
> +    if (gsi == ich9_lpc_sci_irq(lpc)) {
>           pic_level |= lpc->sci_level;
>       }
>
> -    qemu_set_irq(lpc->pic[pic_irq], pic_level);
> -}
> -
> -/* pirq: pirq[A-H] 0-7*/
> -static void ich9_lpc_update_by_pirq(ICH9LPCState *lpc, int pirq)
> -{
> -    int pic_irq;
> -    int pic_dis;
> -
> -    ich9_lpc_pic_irq(lpc, pirq, &pic_irq, &pic_dis);
> -    assert(pic_irq < ICH9_LPC_PIC_NUM_PINS);
> -
> -    ich9_lpc_update_pic(lpc, pic_irq);
> +    qemu_set_irq(lpc->pic[gsi], pic_level);
>   }
>
>   /* APIC mode: GSIx: PIRQ[A-H] -> GSI 16, ... no pirq shares same APIC pins. */
> @@ -253,9 +243,9 @@ static void ich9_lpc_update_apic(ICH9LPCState *lpc, int gsi)
>   {
>       int level = 0;
>
> -    if (gsi >= ICH9_LPC_PIC_NUM_PINS) {
> -        level |= pci_bus_get_irq_level(lpc->d.bus, ich9_gsi_to_pirq(gsi));
> -    }
> +    assert(gsi >= ICH9_LPC_PIC_NUM_PINS);
> +
> +    level |= pci_bus_get_irq_level(lpc->d.bus, ich9_gsi_to_pirq(gsi));
>       if (gsi == ich9_lpc_sci_irq(lpc)) {
>           level |= lpc->sci_level;
>       }
> @@ -266,12 +256,14 @@ static void ich9_lpc_update_apic(ICH9LPCState *lpc, int gsi)
>   void ich9_lpc_set_irq(void *opaque, int pirq, int level)
>   {
>       ICH9LPCState *lpc = opaque;
> +    int pic_irq, pic_dis;
>
>       assert(0 <= pirq);
>       assert(pirq < ICH9_LPC_NB_PIRQS);
>
>       ich9_lpc_update_apic(lpc, ich9_pirq_to_gsi(pirq));
> -    ich9_lpc_update_by_pirq(lpc, pirq);
> +    ich9_lpc_pic_irq(lpc, pirq, &pic_irq, &pic_dis);
> +    ich9_lpc_update_pic(lpc, pic_irq);
>   }
>
>   /* return the pirq number (PIRQ[A-H]:0-7) corresponding to
> @@ -362,8 +354,9 @@ static void ich9_set_sci(void *opaque, int irq_num, int level)
>           return;
>       }
>
> -    ich9_lpc_update_apic(lpc, irq);
> -    if (irq < ICH9_LPC_PIC_NUM_PINS) {
> +    if (irq >= ICH9_LPC_PIC_NUM_PINS) {
> +        ich9_lpc_update_apic(lpc, irq);
> +    } else {
>           ich9_lpc_update_pic(lpc, irq);
>       }
>   }
>
Reviewed-by: Efimov Vasily <real@ispras.ru>

  reply	other threads:[~2016-06-22 11:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-20 14:39 [Qemu-devel] [PATCH 0/3] ich9: clean up handling of output interrupt pins Paolo Bonzini
2016-06-20 14:39 ` [Qemu-devel] [PATCH 1/3] ich9: call ich9_lpc_update_pic for disabled pirqs Paolo Bonzini
2016-06-22 11:07   ` Ефимов Василий
2016-06-20 14:39 ` [Qemu-devel] [PATCH 2/3] ich9: clean up ich9_lpc_update_pic/ich9_lpc_update_apic and callers Paolo Bonzini
2016-06-22 11:03   ` Ефимов Василий [this message]
2016-06-20 14:39 ` [Qemu-devel] [PATCH 3/3] ich9: unify pic and ioapic IRQ vectors Paolo Bonzini
2016-06-22 11:03   ` Ефимов Василий

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=576A7065.8040802@ispras.ru \
    --to=real@ispras.ru \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@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.