From: Gleb Natapov <gleb@redhat.com>
To: Alexander Graf <agraf@suse.de>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"kvm-ppc@vger.kernel.org" <kvm-ppc@vger.kernel.org>,
Stuart Yoder <stuart.yoder@freescale.com>,
Scott Wood <scottwood@freescale.com>,
Paul Mackerras <paulus@samba.org>,
Peter Maydell <peter.maydell@linaro.org>
Subject: Re: in-kernel interrupt controller steering
Date: Wed, 6 Mar 2013 12:12:38 +0200 [thread overview]
Message-ID: <20130306101238.GA8288@redhat.com> (raw)
In-Reply-To: <5F668D22-CB10-4313-B419-9B542F4184F3@suse.de>
On Wed, Mar 06, 2013 at 11:04:21AM +0100, Alexander Graf wrote:
>
>
> Am 06.03.2013 um 10:58 schrieb Gleb Natapov <gleb@redhat.com>:
>
> > On Wed, Mar 06, 2013 at 10:40:18AM +0100, Paolo Bonzini wrote:
> >> Il 05/03/2013 16:25, Gleb Natapov ha scritto:
> >>>> 1) We need to set the generic interrupt type of the system before we create vcpus.
> >>>>
> >>>> This is a new ioctl that sets the overall system interrupt controller type to a specific model. This used so that when we create vcpus, we can create the appended "local interrupt controller" state without the actual interrupt controller device available yet. It is also used later to switch between interrupt controller implementations.
> >>>>
> >>>> This interrupt type is write once and frozen after the first vcpu got created.
> >>>
> >>> Why explicit ioctl is needed? Why not require specific irqchip to be
> >>> created before first vcpu. The device created determines system interrupt
> >>> controller type.
> >>
> >> QEMU creates CPUs before devices, and CPUs need to know what kind of
> >> local interrupt controller to create. Similar to how in-kernel LAPIC
> >> state is created long before the userspace device that proxies the LAPIC.
> > So what is the difference between calling this special ioctl before
> > creating vcpus and calling create device ioctl instead and create QEMU
> > proxy device at whatever point in time QEMU wants to create it?
>
> I don't understand the question really. What proxy device?
>
That's how Paolo called the QEMU part of the kernel irqchip device.
So the question is this. You propose special ioctl to set "irqchip
architecture". Lets call it SET_IRQCHIP_ARCH. QEMU suppose to do that:
ioctl(SET_IRQCHIP_ARCH, MPIC)
create_vcpus()
create_devices()
create_irqchips()
ioctl(CREATE_DEVICE, MPIC)
ioctl(SET_ATTR, attr1)
ioctl(SET_ATTR, attr2)
Why can't it do:
ioctl(CREATE_DEVICE, MPIC)
create_vcpus()
create_irqchips()
ioctl(SET_ATTR, attr1)
ioctl(SET_ATTR, attr2)
The question is rhetorical though because I know it can, it does that
for x86. So the real question is what is the disadvantages that warrant
separate ioctl?
--
Gleb.
next prev parent reply other threads:[~2013-03-06 10:12 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-04 22:20 in-kernel interrupt controller steering Alexander Graf
2013-03-05 0:59 ` Scott Wood
2013-03-05 5:44 ` Paul Mackerras
2013-03-05 15:25 ` Gleb Natapov
2013-03-06 9:40 ` Paolo Bonzini
2013-03-06 9:58 ` Gleb Natapov
2013-03-06 10:04 ` Alexander Graf
2013-03-06 10:12 ` Gleb Natapov [this message]
2013-03-06 10:38 ` Paolo Bonzini
2013-03-06 10:38 ` Paolo Bonzini
2013-03-06 11:26 ` Gleb Natapov
2013-03-06 11:44 ` Paolo Bonzini
2013-03-06 11:46 ` Alexander Graf
2013-03-06 11:59 ` Gleb Natapov
2013-03-06 12:02 ` Alexander Graf
2013-03-06 12:14 ` Paolo Bonzini
2013-03-06 12:20 ` Alexander Graf
2013-03-06 12:28 ` Paolo Bonzini
2013-03-06 13:14 ` Gleb Natapov
2013-03-06 13:22 ` Alexander Graf
2013-03-06 13:56 ` Gleb Natapov
2013-03-06 14:03 ` Alexander Graf
2013-03-06 14:12 ` Paolo Bonzini
2013-03-06 14:30 ` Alexander Graf
2013-03-06 14:37 ` Paolo Bonzini
2013-03-06 14:40 ` Alexander Graf
2013-03-06 14:41 ` Gleb Natapov
2013-03-06 14:48 ` Alexander Graf
2013-03-06 14:59 ` Alexander Graf
2013-03-06 15:02 ` Paolo Bonzini
2013-03-06 15:30 ` Gleb Natapov
2013-03-06 16:33 ` Alexander Graf
2013-03-07 0:32 ` Paul Mackerras
2013-03-07 7:43 ` Paolo Bonzini
2013-03-06 13:41 ` Paolo Bonzini
2013-03-06 14:11 ` Gleb Natapov
2013-03-06 14:31 ` Alexander Graf
2013-03-06 18:46 ` Peter Maydell
2013-03-06 19:20 ` Alexander Graf
2013-03-06 11:44 ` Alexander Graf
2013-03-06 11:46 ` Paolo Bonzini
2013-03-06 11:47 ` Alexander Graf
2013-03-06 11:57 ` Paolo Bonzini
2013-03-06 11:58 ` Alexander Graf
2013-03-06 13:16 ` Gleb Natapov
2013-03-06 0:23 ` Benjamin Herrenschmidt
2013-03-06 0:33 ` Alexander Graf
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=20130306101238.GA8288@redhat.com \
--to=gleb@redhat.com \
--cc=agraf@suse.de \
--cc=kvm-ppc@vger.kernel.org \
--cc=kvm@vger.kernel.org \
--cc=paulus@samba.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=scottwood@freescale.com \
--cc=stuart.yoder@freescale.com \
/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