From: Gleb Natapov <gleb@redhat.com>
To: Avi Kivity <avi@redhat.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH] Move irq sharing information to irqchip level.
Date: Sun, 23 Aug 2009 14:36:57 +0300 [thread overview]
Message-ID: <20090823113657.GA30093@redhat.com> (raw)
In-Reply-To: <4A9127D8.7060709@redhat.com>
On Sun, Aug 23, 2009 at 02:28:24PM +0300, Avi Kivity wrote:
> On 08/21/2009 09:16 PM, Gleb Natapov wrote:
> >On Mon, Aug 17, 2009 at 12:35:47PM +0300, Avi Kivity wrote:
> >>On 08/13/2009 08:19 PM, Gleb Natapov wrote:
> >>>This removes assumptions that max GSIs is smaller than number of pins.
> >>>Sharing is tracked on pin level not GSI level.
> >>>
> >>>Signed-off-by: Gleb Natapov<gleb@redhat.com>
> >>>diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> >>>index b17d845..4c15bdd 100644
> >>>--- a/arch/x86/include/asm/kvm_host.h
> >>>+++ b/arch/x86/include/asm/kvm_host.h
> >>>@@ -413,7 +413,6 @@ struct kvm_arch{
> >>> gpa_t ept_identity_map_addr;
> >>>
> >>> unsigned long irq_sources_bitmap;
> >>>- unsigned long irq_states[KVM_IOAPIC_NUM_PINS];
> >>> u64 vm_init_tsc;
> >>> };
> >>>
> >>>diff --git a/arch/x86/kvm/irq.h b/arch/x86/kvm/irq.h
> >>>index 7d6058a..c025a23 100644
> >>>--- a/arch/x86/kvm/irq.h
> >>>+++ b/arch/x86/kvm/irq.h
> >>>@@ -71,6 +71,7 @@ struct kvm_pic {
> >>> int output; /* intr from master PIC */
> >>> struct kvm_io_device dev;
> >>> void (*ack_notifier)(void *opaque, int irq);
> >>>+ unsigned long irq_states[16];
> >>> };
> >>>
> >>I think it's cleaner to move this into the routing table to avoid
> >>duplication. Currently there is no object which is unique to a gsi,
> >>but after your array patch, it can be placed next to the hlist_head.
> >>
> >The problem is that at this level it is not known if GSI is MSI or not.
> >Current code dials with this by arbitrary assuming that GSI is MSI if it
> >is greater then KVM_IOAPIC_NUM_PINS, but this is not enforced when
> >routing table is installed and userspace is free to use any GSI as MSI.
> >Of cause this problem would not exist if MSIs were not linked to GSIs
> >in the first place.
>
> Does msi actually care about the states? I don't think it does.
>
That is the point. MSI doesn't care, but we don't know if GSI is MSI or
not.
> >The code duplication is very small (one line of code) and logically it
> >is more correct to track duplications at irqchip level. Theoretically
> >GSI may be shared when PIC is used and not shared when IOAPIC is used.
> >
>
> No, it's more correct at the GSI level, since all interrupt lines
> connected to one GSI are shared.
>
Why? All interrupts connected to the same irqchip pin (through pci irq
router or other onboard logic) are shared. GSI is pure logical
abstraction.
--
Gleb.
next prev parent reply other threads:[~2009-08-23 11:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-13 17:19 [PATCH] Move irq sharing information to irqchip level Gleb Natapov
2009-08-17 9:35 ` Avi Kivity
2009-08-21 18:16 ` Gleb Natapov
2009-08-23 11:28 ` Avi Kivity
2009-08-23 11:36 ` Gleb Natapov [this message]
2009-08-23 11:46 ` Avi Kivity
2009-08-23 11:56 ` Gleb Natapov
2009-08-23 12:02 ` Avi Kivity
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=20090823113657.GA30093@redhat.com \
--to=gleb@redhat.com \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.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.