From: Avi Kivity <avi@redhat.com>
To: michael@ellerman.id.au
Cc: Alexander Graf <agraf@suse.de>, Arnd Bergmann <arnd@arndb.de>,
KVM list <kvm@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
qemu-devel@nongnu.org, Eric Northup <digitaleric@google.com>,
Scott Wood <scottwood@freescale.com>
Subject: Re: [RFC] Next gen kvm api
Date: Sat, 18 Feb 2012 12:03:48 +0200 [thread overview]
Message-ID: <4F3F7784.9040709@redhat.com> (raw)
In-Reply-To: <1329437356.6991.8.camel@concordia>
On 02/17/2012 02:09 AM, Michael Ellerman wrote:
> On Thu, 2012-02-16 at 21:28 +0200, Avi Kivity wrote:
> > On 02/16/2012 03:04 AM, Michael Ellerman wrote:
> > > >
> > > > ioctl is good for hardware devices and stuff that you want to enumerate
> > > > and/or control permissions on. For something like KVM that is really a
> > > > core kernel service, a syscall makes much more sense.
> > >
> > > Yeah maybe. That distinction is at least in part just historical.
> > >
> > > The first problem I see with using a syscall is that you don't need one
> > > syscall for KVM, you need ~90. OK so you wouldn't do that, you'd use a
> > > multiplexed syscall like epoll_ctl() - or probably several
> > > (vm/vcpu/etc).
> >
> > No. Many of our ioctls are for state save/restore - we reduce that to
> > two. Many others are due to the with/without irqchip support - we slash
> > that as well. The device assignment stuff is relegated to vfio.
> >
> > I still have to draw up a concrete proposal, but I think we'll end up
> > with 10-15.
>
> That's true, you certainly could reduce it, though by how much I'm not
> sure. On powerpc I'm working on moving the irq controller emulation into
> the kernel, and some associated firmware emulation, so that's at least
> one new ioctl. And there will always be more, whatever scheme you have
> must be easily extensible - ie. not requiring new syscalls for each new
> weird platform.
Most of it falls into read/write state, which is covered by two
syscalls. There's probably need for configuration (wiring etc.); we
could call that pseudo-state with fake registers but I don't like that
very much.
> > > Secondly you still need a handle/context for those syscalls, and I think
> > > the most sane thing to use for that is an fd.
> >
> > The context is the process (for vm-wide calls) and thread (for vcpu
> > local calls).
>
> Yeah OK I forgot you'd mentioned that. But isn't that change basically
> orthogonal to how you get into the kernel? ie. we could have the
> kvm/vcpu pointers in mm_struct/task_struct today?
>
> I guess it wouldn't win you much though because you still have the fd
> and ioctl overhead as well.
>
Yes. I also dislike bypassing ioctl semantics (though we already do
that by requiring vcpus to stay on the same thread and vms on the same
process).
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
WARNING: multiple messages have this Message-ID (diff)
From: Avi Kivity <avi@redhat.com>
To: michael@ellerman.id.au
Cc: Arnd Bergmann <arnd@arndb.de>,
qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>,
KVM list <kvm@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Eric Northup <digitaleric@google.com>,
Scott Wood <scottwood@freescale.com>
Subject: Re: [Qemu-devel] [RFC] Next gen kvm api
Date: Sat, 18 Feb 2012 12:03:48 +0200 [thread overview]
Message-ID: <4F3F7784.9040709@redhat.com> (raw)
In-Reply-To: <1329437356.6991.8.camel@concordia>
On 02/17/2012 02:09 AM, Michael Ellerman wrote:
> On Thu, 2012-02-16 at 21:28 +0200, Avi Kivity wrote:
> > On 02/16/2012 03:04 AM, Michael Ellerman wrote:
> > > >
> > > > ioctl is good for hardware devices and stuff that you want to enumerate
> > > > and/or control permissions on. For something like KVM that is really a
> > > > core kernel service, a syscall makes much more sense.
> > >
> > > Yeah maybe. That distinction is at least in part just historical.
> > >
> > > The first problem I see with using a syscall is that you don't need one
> > > syscall for KVM, you need ~90. OK so you wouldn't do that, you'd use a
> > > multiplexed syscall like epoll_ctl() - or probably several
> > > (vm/vcpu/etc).
> >
> > No. Many of our ioctls are for state save/restore - we reduce that to
> > two. Many others are due to the with/without irqchip support - we slash
> > that as well. The device assignment stuff is relegated to vfio.
> >
> > I still have to draw up a concrete proposal, but I think we'll end up
> > with 10-15.
>
> That's true, you certainly could reduce it, though by how much I'm not
> sure. On powerpc I'm working on moving the irq controller emulation into
> the kernel, and some associated firmware emulation, so that's at least
> one new ioctl. And there will always be more, whatever scheme you have
> must be easily extensible - ie. not requiring new syscalls for each new
> weird platform.
Most of it falls into read/write state, which is covered by two
syscalls. There's probably need for configuration (wiring etc.); we
could call that pseudo-state with fake registers but I don't like that
very much.
> > > Secondly you still need a handle/context for those syscalls, and I think
> > > the most sane thing to use for that is an fd.
> >
> > The context is the process (for vm-wide calls) and thread (for vcpu
> > local calls).
>
> Yeah OK I forgot you'd mentioned that. But isn't that change basically
> orthogonal to how you get into the kernel? ie. we could have the
> kvm/vcpu pointers in mm_struct/task_struct today?
>
> I guess it wouldn't win you much though because you still have the fd
> and ioctl overhead as well.
>
Yes. I also dislike bypassing ioctl semantics (though we already do
that by requiring vcpus to stay on the same thread and vms on the same
process).
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
WARNING: multiple messages have this Message-ID (diff)
From: Avi Kivity <avi@redhat.com>
To: michael@ellerman.id.au
Cc: Alexander Graf <agraf@suse.de>, Arnd Bergmann <arnd@arndb.de>,
KVM list <kvm@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
qemu-devel@nongnu.org, Eric Northup <digitaleric@google.com>,
Scott Wood <scottwood@freescale.com>
Subject: Re: [Qemu-devel] [RFC] Next gen kvm api
Date: Sat, 18 Feb 2012 12:03:48 +0200 [thread overview]
Message-ID: <4F3F7784.9040709@redhat.com> (raw)
In-Reply-To: <1329437356.6991.8.camel@concordia>
On 02/17/2012 02:09 AM, Michael Ellerman wrote:
> On Thu, 2012-02-16 at 21:28 +0200, Avi Kivity wrote:
> > On 02/16/2012 03:04 AM, Michael Ellerman wrote:
> > > >
> > > > ioctl is good for hardware devices and stuff that you want to enumerate
> > > > and/or control permissions on. For something like KVM that is really a
> > > > core kernel service, a syscall makes much more sense.
> > >
> > > Yeah maybe. That distinction is at least in part just historical.
> > >
> > > The first problem I see with using a syscall is that you don't need one
> > > syscall for KVM, you need ~90. OK so you wouldn't do that, you'd use a
> > > multiplexed syscall like epoll_ctl() - or probably several
> > > (vm/vcpu/etc).
> >
> > No. Many of our ioctls are for state save/restore - we reduce that to
> > two. Many others are due to the with/without irqchip support - we slash
> > that as well. The device assignment stuff is relegated to vfio.
> >
> > I still have to draw up a concrete proposal, but I think we'll end up
> > with 10-15.
>
> That's true, you certainly could reduce it, though by how much I'm not
> sure. On powerpc I'm working on moving the irq controller emulation into
> the kernel, and some associated firmware emulation, so that's at least
> one new ioctl. And there will always be more, whatever scheme you have
> must be easily extensible - ie. not requiring new syscalls for each new
> weird platform.
Most of it falls into read/write state, which is covered by two
syscalls. There's probably need for configuration (wiring etc.); we
could call that pseudo-state with fake registers but I don't like that
very much.
> > > Secondly you still need a handle/context for those syscalls, and I think
> > > the most sane thing to use for that is an fd.
> >
> > The context is the process (for vm-wide calls) and thread (for vcpu
> > local calls).
>
> Yeah OK I forgot you'd mentioned that. But isn't that change basically
> orthogonal to how you get into the kernel? ie. we could have the
> kvm/vcpu pointers in mm_struct/task_struct today?
>
> I guess it wouldn't win you much though because you still have the fd
> and ioctl overhead as well.
>
Yes. I also dislike bypassing ioctl semantics (though we already do
that by requiring vcpus to stay on the same thread and vms on the same
process).
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
next prev parent reply other threads:[~2012-02-18 10:03 UTC|newest]
Thread overview: 236+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-02 16:09 [RFC] Next gen kvm api Avi Kivity
2012-02-02 16:09 ` [Qemu-devel] " Avi Kivity
2012-02-02 22:13 ` Rob Earhart
2012-02-02 22:13 ` [Qemu-devel] " Rob Earhart
2012-02-02 22:16 ` Rob Earhart
2012-02-02 22:16 ` Rob Earhart
2012-02-05 13:14 ` Avi Kivity
2012-02-05 13:14 ` [Qemu-devel] " Avi Kivity
2012-02-06 17:41 ` Rob Earhart
2012-02-06 19:11 ` Anthony Liguori
2012-02-06 19:11 ` [Qemu-devel] " Anthony Liguori
2012-02-06 19:11 ` Anthony Liguori
2012-02-07 12:03 ` Avi Kivity
2012-02-07 12:03 ` [Qemu-devel] " Avi Kivity
2012-02-07 15:17 ` Anthony Liguori
2012-02-07 16:02 ` Avi Kivity
2012-02-07 16:18 ` Jan Kiszka
2012-02-07 16:18 ` [Qemu-devel] " Jan Kiszka
2012-02-07 16:18 ` Jan Kiszka
2012-02-07 16:21 ` Anthony Liguori
2012-02-07 16:21 ` Anthony Liguori
2012-02-07 16:29 ` Jan Kiszka
2012-02-07 16:29 ` Jan Kiszka
2012-02-15 13:41 ` Avi Kivity
2012-02-15 13:41 ` Avi Kivity
2012-02-07 16:19 ` Anthony Liguori
2012-02-15 13:47 ` Avi Kivity
2012-02-07 12:01 ` Avi Kivity
2012-02-03 2:09 ` Anthony Liguori
2012-02-03 2:09 ` [Qemu-devel] " Anthony Liguori
2012-02-03 2:09 ` Anthony Liguori
2012-02-04 2:08 ` Takuya Yoshikawa
2012-02-04 2:08 ` [Qemu-devel] " Takuya Yoshikawa
2012-02-04 2:08 ` Takuya Yoshikawa
2012-02-22 13:06 ` Peter Zijlstra
2012-02-22 13:06 ` Peter Zijlstra
2012-02-05 9:24 ` Avi Kivity
2012-02-05 9:24 ` [Qemu-devel] " Avi Kivity
2012-02-05 9:24 ` Avi Kivity
2012-02-07 1:08 ` Alexander Graf
2012-02-07 1:08 ` Alexander Graf
2012-02-07 1:08 ` Alexander Graf
2012-02-07 1:08 ` Alexander Graf
2012-02-07 12:24 ` [Qemu-devel] " Avi Kivity
2012-02-07 12:24 ` Avi Kivity
2012-02-07 12:24 ` Avi Kivity
2012-02-07 12:51 ` Alexander Graf
2012-02-07 12:51 ` Alexander Graf
2012-02-07 12:51 ` Alexander Graf
2012-02-07 13:16 ` Avi Kivity
2012-02-07 13:16 ` Avi Kivity
2012-02-07 13:16 ` Avi Kivity
2012-02-07 13:40 ` Alexander Graf
2012-02-07 13:40 ` Alexander Graf
2012-02-07 13:40 ` Alexander Graf
2012-02-07 14:21 ` Avi Kivity
2012-02-07 14:21 ` Avi Kivity
2012-02-07 14:21 ` Avi Kivity
2012-02-07 14:21 ` Avi Kivity
2012-02-07 14:39 ` [Qemu-devel] " Alexander Graf
2012-02-07 14:39 ` Alexander Graf
2012-02-07 14:39 ` Alexander Graf
2012-02-15 11:18 ` Avi Kivity
2012-02-15 11:18 ` Avi Kivity
2012-02-15 11:18 ` Avi Kivity
2012-02-15 11:57 ` Alexander Graf
2012-02-15 11:57 ` Alexander Graf
2012-02-15 11:57 ` Alexander Graf
2012-02-15 13:29 ` Avi Kivity
2012-02-15 13:29 ` Avi Kivity
2012-02-15 13:29 ` Avi Kivity
2012-02-15 13:37 ` Alexander Graf
2012-02-15 13:37 ` Alexander Graf
2012-02-15 13:37 ` Alexander Graf
2012-02-15 13:57 ` Avi Kivity
2012-02-15 13:57 ` Avi Kivity
2012-02-15 13:57 ` Avi Kivity
2012-02-15 14:08 ` Alexander Graf
2012-02-15 14:08 ` Alexander Graf
2012-02-15 14:08 ` Alexander Graf
2012-02-16 19:24 ` Avi Kivity
2012-02-16 19:24 ` Avi Kivity
2012-02-16 19:24 ` Avi Kivity
2012-02-16 19:24 ` Avi Kivity
2012-02-16 19:34 ` [Qemu-devel] " Alexander Graf
2012-02-16 19:34 ` Alexander Graf
2012-02-16 19:34 ` Alexander Graf
2012-02-16 19:38 ` Avi Kivity
2012-02-16 19:38 ` Avi Kivity
2012-02-16 19:38 ` Avi Kivity
2012-02-16 20:41 ` Scott Wood
2012-02-16 20:41 ` Scott Wood
2012-02-16 20:41 ` Scott Wood
2012-02-17 0:23 ` Alexander Graf
2012-02-17 0:23 ` Alexander Graf
2012-02-17 0:23 ` Alexander Graf
2012-02-17 18:27 ` Scott Wood
2012-02-17 18:27 ` Scott Wood
2012-02-17 18:27 ` Scott Wood
2012-02-18 9:49 ` Avi Kivity
2012-02-18 9:49 ` Avi Kivity
2012-02-18 9:49 ` Avi Kivity
2012-02-18 9:49 ` Avi Kivity
2012-02-17 0:19 ` [Qemu-devel] " Alexander Graf
2012-02-17 0:19 ` Alexander Graf
2012-02-17 0:19 ` Alexander Graf
2012-02-18 10:00 ` Avi Kivity
2012-02-18 10:00 ` Avi Kivity
2012-02-18 10:00 ` Avi Kivity
2012-02-18 10:00 ` Avi Kivity
2012-02-18 10:43 ` [Qemu-devel] " Alexander Graf
2012-02-18 10:43 ` Alexander Graf
2012-02-18 10:43 ` Alexander Graf
2012-02-15 19:17 ` Scott Wood
2012-02-15 19:17 ` Scott Wood
2012-02-15 19:17 ` Scott Wood
2012-02-12 7:10 ` Takuya Yoshikawa
2012-02-12 7:10 ` Takuya Yoshikawa
2012-02-12 7:10 ` Takuya Yoshikawa
2012-02-12 7:10 ` Takuya Yoshikawa
2012-02-15 13:32 ` [Qemu-devel] " Avi Kivity
2012-02-15 13:32 ` Avi Kivity
2012-02-15 13:32 ` Avi Kivity
2012-02-07 15:23 ` Anthony Liguori
2012-02-07 15:23 ` Anthony Liguori
2012-02-07 15:23 ` Anthony Liguori
2012-02-07 15:28 ` Alexander Graf
2012-02-07 15:28 ` Alexander Graf
2012-02-07 15:28 ` Alexander Graf
2012-02-08 17:20 ` Alan Cox
2012-02-08 17:20 ` Alan Cox
2012-02-08 17:20 ` Alan Cox
2012-02-15 13:33 ` Avi Kivity
2012-02-15 13:33 ` Avi Kivity
2012-02-15 13:33 ` Avi Kivity
2012-02-15 22:14 ` Arnd Bergmann
2012-02-15 22:14 ` Arnd Bergmann
2012-02-10 3:07 ` Jamie Lokier
2012-02-10 3:07 ` Jamie Lokier
2012-02-03 18:07 ` Eric Northup
2012-02-03 18:07 ` [Qemu-devel] " Eric Northup
2012-02-03 18:07 ` Eric Northup
2012-02-03 22:52 ` Anthony Liguori
2012-02-03 22:52 ` [Qemu-devel] " Anthony Liguori
2012-02-03 22:52 ` Anthony Liguori
2012-02-06 19:46 ` Scott Wood
2012-02-06 19:46 ` Scott Wood
2012-02-07 6:58 ` Michael Ellerman
2012-02-07 6:58 ` [Qemu-devel] " Michael Ellerman
2012-02-07 6:58 ` Michael Ellerman
2012-02-07 10:04 ` Alexander Graf
2012-02-07 10:04 ` Alexander Graf
2012-02-15 22:21 ` Arnd Bergmann
2012-02-15 22:21 ` Arnd Bergmann
2012-02-16 1:04 ` Michael Ellerman
2012-02-16 1:04 ` [Qemu-devel] " Michael Ellerman
2012-02-16 1:04 ` Michael Ellerman
2012-02-16 19:28 ` Avi Kivity
2012-02-16 19:28 ` Avi Kivity
2012-02-17 0:09 ` Michael Ellerman
2012-02-17 0:09 ` [Qemu-devel] " Michael Ellerman
2012-02-17 0:09 ` Michael Ellerman
2012-02-18 10:03 ` Avi Kivity [this message]
2012-02-18 10:03 ` Avi Kivity
2012-02-18 10:03 ` Avi Kivity
2012-02-16 10:26 ` Avi Kivity
2012-02-16 10:26 ` [Qemu-devel] " Avi Kivity
2012-02-16 10:26 ` Avi Kivity
2012-02-07 12:28 ` Anthony Liguori
2012-02-07 12:28 ` Anthony Liguori
2012-02-07 12:40 ` Avi Kivity
2012-02-07 12:40 ` Avi Kivity
2012-02-07 12:51 ` Anthony Liguori
2012-02-07 12:51 ` Anthony Liguori
2012-02-07 13:18 ` Avi Kivity
2012-02-07 13:18 ` [Qemu-devel] " Avi Kivity
2012-02-07 13:18 ` Avi Kivity
2012-02-07 15:15 ` Anthony Liguori
2012-02-07 15:15 ` Anthony Liguori
2012-02-07 18:28 ` Chris Wright
2012-02-07 18:28 ` Chris Wright
2012-02-08 17:02 ` Scott Wood
2012-02-08 17:02 ` Scott Wood
2012-02-08 17:12 ` Alan Cox
2012-02-08 17:12 ` [Qemu-devel] " Alan Cox
2012-02-08 17:12 ` Alan Cox
2012-02-05 9:37 ` Gleb Natapov
2012-02-05 9:37 ` [Qemu-devel] " Gleb Natapov
2012-02-05 9:37 ` Gleb Natapov
2012-02-05 9:44 ` Avi Kivity
2012-02-05 9:44 ` [Qemu-devel] " Avi Kivity
2012-02-05 9:44 ` Avi Kivity
2012-02-05 9:51 ` Gleb Natapov
2012-02-05 9:51 ` [Qemu-devel] " Gleb Natapov
2012-02-05 9:51 ` Gleb Natapov
2012-02-05 9:56 ` Avi Kivity
2012-02-05 9:56 ` [Qemu-devel] " Avi Kivity
2012-02-05 9:56 ` Avi Kivity
2012-02-05 10:58 ` Gleb Natapov
2012-02-05 10:58 ` [Qemu-devel] " Gleb Natapov
2012-02-05 10:58 ` Gleb Natapov
2012-02-05 13:16 ` Avi Kivity
2012-02-05 13:16 ` [Qemu-devel] " Avi Kivity
2012-02-05 13:16 ` Avi Kivity
2012-02-05 16:36 ` Anthony Liguori
2012-02-05 16:36 ` [Qemu-devel] " Anthony Liguori
2012-02-05 16:36 ` Anthony Liguori
2012-02-06 9:34 ` Avi Kivity
2012-02-06 9:34 ` [Qemu-devel] " Avi Kivity
2012-02-06 9:34 ` Avi Kivity
2012-02-06 13:33 ` Anthony Liguori
2012-02-06 13:33 ` Anthony Liguori
2012-02-06 13:54 ` Avi Kivity
2012-02-06 13:54 ` Avi Kivity
2012-02-06 14:00 ` Anthony Liguori
2012-02-06 14:00 ` Anthony Liguori
2012-02-06 14:08 ` Avi Kivity
2012-02-06 14:08 ` Avi Kivity
2012-02-07 18:12 ` Rusty Russell
2012-02-07 18:12 ` [Qemu-devel] " Rusty Russell
2012-02-07 18:12 ` Rusty Russell
2012-02-15 13:39 ` Avi Kivity
2012-02-15 13:39 ` Avi Kivity
2012-02-15 21:59 ` Anthony Liguori
2012-02-15 21:59 ` Anthony Liguori
2012-02-16 8:57 ` Gleb Natapov
2012-02-16 8:57 ` [Qemu-devel] " Gleb Natapov
2012-02-16 8:57 ` Gleb Natapov
2012-02-16 14:46 ` Anthony Liguori
2012-02-16 14:46 ` Anthony Liguori
2012-02-16 19:34 ` Avi Kivity
2012-02-16 19:34 ` [Qemu-devel] " Avi Kivity
2012-02-16 19:34 ` Avi Kivity
2012-02-15 23:08 ` Rusty Russell
2012-02-15 23:08 ` [Qemu-devel] " Rusty Russell
2012-02-15 23:08 ` Rusty Russell
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=4F3F7784.9040709@redhat.com \
--to=avi@redhat.com \
--cc=agraf@suse.de \
--cc=arnd@arndb.de \
--cc=digitaleric@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael@ellerman.id.au \
--cc=qemu-devel@nongnu.org \
--cc=scottwood@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 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.