All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Mackerras <paulus@samba.org>
To: Gleb Natapov <gleb@redhat.com>
Cc: Scott Wood <scottwood@freescale.com>,
	Alexander Graf <agraf@suse.de>,
	kvm-ppc@vger.kernel.org, kvm@vger.kernel.org,
	Christoffer Dall <cdall@cs.columbia.edu>
Subject: Re: [RFC PATCH 1/6] kvm: add device control API
Date: Mon, 25 Feb 2013 12:11:19 +1100	[thread overview]
Message-ID: <20130225011119.GB12404@drongo> (raw)
In-Reply-To: <20130218122159.GC9817@redhat.com>

On Mon, Feb 18, 2013 at 02:21:59PM +0200, Gleb Natapov wrote:
> Copying Christoffer since ARM has in kernel irq chip too.
> 
> On Wed, Feb 13, 2013 at 11:49:15PM -0600, Scott Wood wrote:
> > Currently, devices that are emulated inside KVM are configured in a
> > hardcoded manner based on an assumption that any given architecture
> > only has one way to do it.  If there's any need to access device state,
> > it is done through inflexible one-purpose-only IOCTLs (e.g.
> > KVM_GET/SET_LAPIC).  Defining new IOCTLs for every little thing is
> > cumbersome and depletes a limited numberspace.
> > 
> > This API provides a mechanism to instantiate a device of a certain
> > type, returning an ID that can be used to set/get attributes of the
> > device.  Attributes may include configuration parameters (e.g.
> > register base address), device state, operational commands, etc.  It
> > is similar to the ONE_REG API, except that it acts on devices rather
> > than vcpus.
> You are not only provide different way to create in kernel irq chip you
> also use an alternate way to trigger interrupt lines. Before going into
> interface specifics lets think about whether it is really worth it? x86
> obviously support old way and will have to for some, very long, time.
> ARM vGIC code, that is ready to go upstream, uses old way too. So it will
> be 2 archs against one. Christoffer do you think the proposed way it
> better for your needs. Are you willing to make vGIC use it?

In fact there have been two distinct interrupt controller emulations
for PPC posted recently, Scott's and mine, with quite different
interfaces.  In contrast to Scott's device control API, where the
operations you would do for different interrupt controllers are quite
different, mine attempted to define a much more abstract interface for
interrupt controller emulations, with the idea that an interrupt
controller subsystem connects a set of interrupt sources, each with
some state, to a set of interrupt delivery mechanisms, one per vcpu,
also with some state.

Thus my interface had:

- a KVM_CREATE_IRQCHIP_ARGS ioctl, with an argument structure that
  indicates the overall architecture of the interrupt subsystem,

- KVM_IRQCHIP_SET_SOURCES and KVM_IRQCHIP_GET_SOURCES ioctls, that
  return or modify the state of some set of interrupt sources

- a KVM_REG_PPC_ICP_STATE identifier in the ONE_REG register
  identifier space, that is used to save and restore the per-vcpu
  interrupt presentation state.

Alternatively, I could modify my code to use the existing
KVM_CREATE_IRQCHIP, KVM_GET_IRQCHIP, and KVM_SET_IRQCHIP ioctls.  If I
were to do that I would want to rename the 'pad' field in struct
kvm_irqchip to 'nr' and use it with 'chip_id' to identify a range of
interrupt sources to be affected.  I'd also want to keep the ONE_REG
identifier for the per-vcpu state.

Or I could change over to using Scott's device control API, though I
have some objections to doing that.

What is your advice about which interface to use?

Paul.

WARNING: multiple messages have this Message-ID (diff)
From: Paul Mackerras <paulus@samba.org>
To: Gleb Natapov <gleb@redhat.com>
Cc: Scott Wood <scottwood@freescale.com>,
	Alexander Graf <agraf@suse.de>,
	kvm-ppc@vger.kernel.org, kvm@vger.kernel.org,
	Christoffer Dall <cdall@cs.columbia.edu>
Subject: Re: [RFC PATCH 1/6] kvm: add device control API
Date: Mon, 25 Feb 2013 01:11:19 +0000	[thread overview]
Message-ID: <20130225011119.GB12404@drongo> (raw)
In-Reply-To: <20130218122159.GC9817@redhat.com>

On Mon, Feb 18, 2013 at 02:21:59PM +0200, Gleb Natapov wrote:
> Copying Christoffer since ARM has in kernel irq chip too.
> 
> On Wed, Feb 13, 2013 at 11:49:15PM -0600, Scott Wood wrote:
> > Currently, devices that are emulated inside KVM are configured in a
> > hardcoded manner based on an assumption that any given architecture
> > only has one way to do it.  If there's any need to access device state,
> > it is done through inflexible one-purpose-only IOCTLs (e.g.
> > KVM_GET/SET_LAPIC).  Defining new IOCTLs for every little thing is
> > cumbersome and depletes a limited numberspace.
> > 
> > This API provides a mechanism to instantiate a device of a certain
> > type, returning an ID that can be used to set/get attributes of the
> > device.  Attributes may include configuration parameters (e.g.
> > register base address), device state, operational commands, etc.  It
> > is similar to the ONE_REG API, except that it acts on devices rather
> > than vcpus.
> You are not only provide different way to create in kernel irq chip you
> also use an alternate way to trigger interrupt lines. Before going into
> interface specifics lets think about whether it is really worth it? x86
> obviously support old way and will have to for some, very long, time.
> ARM vGIC code, that is ready to go upstream, uses old way too. So it will
> be 2 archs against one. Christoffer do you think the proposed way it
> better for your needs. Are you willing to make vGIC use it?

In fact there have been two distinct interrupt controller emulations
for PPC posted recently, Scott's and mine, with quite different
interfaces.  In contrast to Scott's device control API, where the
operations you would do for different interrupt controllers are quite
different, mine attempted to define a much more abstract interface for
interrupt controller emulations, with the idea that an interrupt
controller subsystem connects a set of interrupt sources, each with
some state, to a set of interrupt delivery mechanisms, one per vcpu,
also with some state.

Thus my interface had:

- a KVM_CREATE_IRQCHIP_ARGS ioctl, with an argument structure that
  indicates the overall architecture of the interrupt subsystem,

- KVM_IRQCHIP_SET_SOURCES and KVM_IRQCHIP_GET_SOURCES ioctls, that
  return or modify the state of some set of interrupt sources

- a KVM_REG_PPC_ICP_STATE identifier in the ONE_REG register
  identifier space, that is used to save and restore the per-vcpu
  interrupt presentation state.

Alternatively, I could modify my code to use the existing
KVM_CREATE_IRQCHIP, KVM_GET_IRQCHIP, and KVM_SET_IRQCHIP ioctls.  If I
were to do that I would want to rename the 'pad' field in struct
kvm_irqchip to 'nr' and use it with 'chip_id' to identify a range of
interrupt sources to be affected.  I'd also want to keep the ONE_REG
identifier for the per-vcpu state.

Or I could change over to using Scott's device control API, though I
have some objections to doing that.

What is your advice about which interface to use?

Paul.

  parent reply	other threads:[~2013-02-25  1:11 UTC|newest]

Thread overview: 261+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-14  5:49 [RFC PATCH 0/6] kvm/ppc/mpic: in-kernel irqchip Scott Wood
2013-02-14  5:49 ` Scott Wood
2013-02-14  5:49 ` [RFC PATCH 1/6] kvm: add device control API Scott Wood
2013-02-14  5:49   ` Scott Wood
2013-02-18 12:21   ` Gleb Natapov
2013-02-18 12:21     ` Gleb Natapov
2013-02-18 23:01     ` Scott Wood
2013-02-18 23:01       ` Scott Wood
2013-02-19  0:43       ` Christoffer Dall
2013-02-19  0:43         ` Christoffer Dall
2013-02-19 12:24       ` Gleb Natapov
2013-02-19 12:24         ` Gleb Natapov
2013-02-19 15:51         ` Christoffer Dall
2013-02-19 15:51           ` Christoffer Dall
2013-02-19 21:16         ` Scott Wood
2013-02-19 21:16           ` Scott Wood
2013-02-20 13:09           ` Gleb Natapov
2013-02-20 13:09             ` Gleb Natapov
2013-02-20 21:28             ` Marcelo Tosatti
2013-02-20 21:28               ` Marcelo Tosatti
2013-02-20 22:44               ` Marcelo Tosatti
2013-02-20 22:44                 ` Marcelo Tosatti
2013-02-20 23:53               ` Scott Wood
2013-02-20 23:53                 ` Scott Wood
2013-02-21  0:14                 ` Marcelo Tosatti
2013-02-21  0:14                   ` Marcelo Tosatti
2013-02-21  1:28                   ` Scott Wood
2013-02-21  1:28                     ` Scott Wood
2013-02-21  6:39                     ` Gleb Natapov
2013-02-21  6:39                       ` Gleb Natapov
2013-02-21 23:03                     ` Marcelo Tosatti
2013-02-21 23:03                       ` Marcelo Tosatti
2013-02-22  2:00                       ` Scott Wood
2013-02-22  2:00                         ` Scott Wood
2013-02-23 15:04                         ` Marcelo Tosatti
2013-02-23 15:04                           ` Marcelo Tosatti
2013-02-26  0:27                           ` Scott Wood
2013-02-26  0:27                             ` Scott Wood
2013-02-21  2:05             ` Scott Wood
2013-02-21  2:05               ` Scott Wood
2013-02-21  8:22               ` Gleb Natapov
2013-02-21  8:22                 ` Gleb Natapov
2013-02-22  2:17                 ` Scott Wood
2013-02-22  2:17                   ` Scott Wood
2013-02-24 15:46                   ` Gleb Natapov
2013-02-24 15:46                     ` Gleb Natapov
2013-02-25 15:23                     ` Alexander Graf
2013-02-25 15:23                       ` Alexander Graf
2013-02-26  2:38                     ` Scott Wood
2013-02-26  2:38                       ` Scott Wood
2013-02-20 21:17       ` Marcelo Tosatti
2013-02-20 21:17         ` Marcelo Tosatti
2013-02-20 23:20         ` Scott Wood
2013-02-20 23:20           ` Scott Wood
2013-02-21  0:01           ` Marcelo Tosatti
2013-02-21  0:01             ` Marcelo Tosatti
2013-02-21  0:33             ` Scott Wood
2013-02-21  0:33               ` Scott Wood
2013-02-25  1:11     ` Paul Mackerras [this message]
2013-02-25  1:11       ` Paul Mackerras
2013-02-25 13:09       ` Gleb Natapov
2013-02-25 13:09         ` Gleb Natapov
2013-02-25 15:29         ` Alexander Graf
2013-02-25 15:29           ` Alexander Graf
2013-02-19  0:44   ` Christoffer Dall
2013-02-19  0:44     ` Christoffer Dall
2013-02-19  0:53     ` Scott Wood
2013-02-19  0:53       ` Scott Wood
2013-02-19  5:50       ` Christoffer Dall
2013-02-19  5:50         ` Christoffer Dall
2013-02-19 12:45         ` Gleb Natapov
2013-02-19 12:45           ` Gleb Natapov
2013-02-19 20:16         ` Scott Wood
2013-02-19 20:16           ` Scott Wood
2013-02-20  2:16           ` Christoffer Dall
2013-02-20  2:16             ` Christoffer Dall
2013-02-24 13:12             ` Marc Zyngier
2013-02-24 13:12               ` Marc Zyngier
2013-03-06  0:59   ` Paul Mackerras
2013-03-06  0:59     ` Paul Mackerras
2013-03-06  1:20     ` Scott Wood
2013-03-06  1:20       ` Scott Wood
2013-03-06  2:48   ` Benjamin Herrenschmidt
2013-03-06  2:48     ` Benjamin Herrenschmidt
2013-03-06  3:36     ` Scott Wood
2013-03-06  3:36       ` Scott Wood
2013-03-06  4:28       ` Benjamin Herrenschmidt
2013-03-06  4:28         ` Benjamin Herrenschmidt
2013-03-06 10:18     ` Gleb Natapov
2013-03-06 10:18       ` Gleb Natapov
2013-02-14  5:49 ` [RFC PATCH 2/6] kvm/ppc: add a notifier chain for vcpu creation/destruction Scott Wood
2013-02-14  5:49   ` Scott Wood
2013-02-14  5:49 ` [RFC PATCH 3/6] kvm/ppc/mpic: import hw/openpic.c from QEMU Scott Wood
2013-02-14  5:49   ` Scott Wood
2013-02-14  5:49 ` [RFC PATCH 4/6] kvm/ppc/mpic: remove some obviously unneeded code Scott Wood
2013-02-14  5:49   ` Scott Wood
2013-02-14  5:49 ` [RFC PATCH 5/6] kvm/ppc/mpic: adapt to kernel style and environment Scott Wood
2013-02-14  5:49   ` Scott Wood
2013-02-14  5:49 ` [RFC PATCH 6/6] kvm/ppc/mpic: in-kernel MPIC emulation Scott Wood
2013-02-14  5:49   ` Scott Wood
2013-03-21  8:28   ` Alexander Graf
2013-03-21  8:28     ` Alexander Graf
2013-03-21 14:43     ` Scott Wood
2013-03-21 14:43       ` Scott Wood
2013-03-21 14:52       ` Alexander Graf
2013-03-21 14:52         ` Alexander Graf
2013-02-18 12:04 ` [RFC PATCH 0/6] kvm/ppc/mpic: in-kernel irqchip Gleb Natapov
2013-02-18 12:04   ` Gleb Natapov
2013-02-18 23:05   ` Scott Wood
2013-02-18 23:05     ` Scott Wood
2013-04-01 22:47 ` [RFC PATCH v2 0/6] device control and in-kernel MPIC Scott Wood
2013-04-01 22:47   ` Scott Wood
2013-04-01 22:47   ` [RFC PATCH v2 1/6] kvm: add device control API Scott Wood
2013-04-01 22:47     ` Scott Wood
2013-04-02  6:59     ` tiejun.chen
2013-04-02  6:59       ` tiejun.chen
     [not found]       ` <1364923807.24520.2@snotra>
2013-04-03  1:28         ` tiejun.chen
2013-04-03  1:28           ` tiejun.chen
     [not found]           ` <1364952853.8690.3@snotra>
2013-04-03  1:42             ` tiejun.chen
2013-04-03  1:42               ` tiejun.chen
2013-04-03  1:02     ` Paul Mackerras
2013-04-03  1:02       ` Paul Mackerras
2013-04-03  1:19       ` Scott Wood
2013-04-03  1:19         ` Scott Wood
2013-04-03  2:17         ` Paul Mackerras
2013-04-03  2:17           ` Paul Mackerras
2013-04-03 13:22           ` Alexander Graf
2013-04-03 13:22             ` Alexander Graf
2013-04-03 17:37             ` Scott Wood
2013-04-03 17:37               ` Scott Wood
2013-04-03 17:39               ` Alexander Graf
2013-04-03 17:39                 ` Alexander Graf
2013-04-04  9:58                 ` Gleb Natapov
2013-04-04  9:58                   ` Gleb Natapov
2013-04-03 21:03           ` Scott Wood
2013-04-03 21:03             ` Scott Wood
2013-04-01 22:47   ` [RFC PATCH v2 2/6] kvm/ppc/mpic: import hw/openpic.c from QEMU Scott Wood
2013-04-01 22:47     ` Scott Wood
2013-04-01 22:47   ` [RFC PATCH v2 3/6] kvm/ppc/mpic: remove some obviously unneeded code Scott Wood
2013-04-01 22:47     ` Scott Wood
2013-04-01 22:47   ` [RFC PATCH v2 4/6] kvm/ppc/mpic: adapt to kernel style and environment Scott Wood
2013-04-01 22:47     ` Scott Wood
2013-04-01 22:47   ` [RFC PATCH v2 5/6] kvm/ppc/mpic: in-kernel MPIC emulation Scott Wood
2013-04-01 22:47     ` Scott Wood
2013-04-01 22:47   ` [RFC PATCH v2 6/6] kvm/ppc/mpic: add KVM_CAP_IRQ_MPIC Scott Wood
2013-04-01 22:47     ` Scott Wood
2013-04-03  1:57   ` [RFC PATCH v3 0/6] device control and in-kernel MPIC Scott Wood
2013-04-03  1:57     ` Scott Wood
2013-04-03  1:57     ` [RFC PATCH v3 1/6] kvm: add device control API Scott Wood
2013-04-03  1:57       ` Scott Wood
2013-04-03 15:13       ` Alexander Graf
2013-04-03 15:13         ` Alexander Graf
2013-04-04 10:41       ` Gleb Natapov
2013-04-04 10:41         ` Gleb Natapov
2013-04-04 23:47         ` Scott Wood
2013-04-04 23:47           ` Scott Wood
2013-04-08 10:34           ` Gleb Natapov
2013-04-08 10:34             ` Gleb Natapov
2013-04-05  1:02         ` Paul Mackerras
2013-04-05  1:02           ` Paul Mackerras
2013-04-08 10:37           ` Gleb Natapov
2013-04-08 10:37             ` Gleb Natapov
2013-04-08  5:33       ` Paul Mackerras
2013-04-08  5:33         ` Paul Mackerras
2013-04-09  0:50         ` Scott Wood
2013-04-09  0:50           ` Scott Wood
2013-04-03  1:57     ` [RFC PATCH v3 2/6] kvm/ppc/mpic: import hw/openpic.c from QEMU Scott Wood
2013-04-03  1:57       ` Scott Wood
2013-04-03  1:57     ` [RFC PATCH v3 3/6] kvm/ppc/mpic: remove some obviously unneeded code Scott Wood
2013-04-03  1:57       ` Scott Wood
2013-04-03  1:57     ` [RFC PATCH v3 4/6] kvm/ppc/mpic: adapt to kernel style and environment Scott Wood
2013-04-03  1:57       ` Scott Wood
2013-04-03  1:57     ` [RFC PATCH v3 5/6] kvm/ppc/mpic: in-kernel MPIC emulation Scott Wood
2013-04-03  1:57       ` Scott Wood
2013-04-03 15:55       ` Gleb Natapov
2013-04-03 15:55         ` Gleb Natapov
2013-04-03 20:58         ` Scott Wood
2013-04-03 20:58           ` Scott Wood
2013-04-04  5:59           ` Gleb Natapov
2013-04-04  5:59             ` Gleb Natapov
2013-04-04 23:33             ` Scott Wood
2013-04-04 23:33               ` Scott Wood
2013-04-08 10:39               ` Gleb Natapov
2013-04-08 10:39                 ` Gleb Natapov
2013-04-03 16:19       ` Alexander Graf
2013-04-03 16:19         ` Alexander Graf
2013-04-03 21:38         ` Scott Wood
2013-04-03 21:38           ` Scott Wood
2013-04-03 21:58           ` Alexander Graf
2013-04-03 21:58             ` Alexander Graf
2013-04-03 22:07             ` Scott Wood
2013-04-03 22:07               ` Scott Wood
2013-04-03 22:12               ` Alexander Graf
2013-04-03 22:12                 ` Alexander Graf
2013-04-03 22:54                 ` Scott Wood
2013-04-03 22:54                   ` Scott Wood
2013-04-04  9:42                   ` Alexander Graf
2013-04-04  9:42                     ` Alexander Graf
2013-04-03 23:23               ` Scott Wood
2013-04-03 23:23                 ` Scott Wood
2013-04-03 23:23                 ` Scott Wood
2013-04-08  6:30       ` Paul Mackerras
2013-04-08  6:30         ` Paul Mackerras
2013-04-09  0:49         ` Scott Wood
2013-04-09  0:49           ` Scott Wood
2013-04-03  1:57     ` [RFC PATCH v3 6/6] kvm/ppc/mpic: add KVM_CAP_IRQ_MPIC Scott Wood
2013-04-03  1:57       ` Scott Wood
2013-04-04 12:54       ` Alexander Graf
2013-04-04 12:54         ` Alexander Graf
2013-04-04 18:41         ` Scott Wood
2013-04-04 18:41           ` Scott Wood
2013-04-04 22:30           ` Alexander Graf
2013-04-04 22:30             ` Alexander Graf
2013-04-04 22:35             ` Scott Wood
2013-04-04 22:35               ` Scott Wood
2013-04-05  6:09               ` Alexander Graf
2013-04-05  6:09                 ` Alexander Graf
2013-04-05 17:11                 ` Scott Wood
2013-04-05 17:11                   ` Scott Wood
2013-04-13  0:08     ` [PATCH v4 0/6] device-control and in-kernel MPIC Scott Wood
2013-04-13  0:08       ` Scott Wood
2013-04-13  0:08       ` [PATCH v4 1/6] kvm: add device control API Scott Wood
2013-04-13  0:08         ` Scott Wood
2013-04-25  9:43         ` Gleb Natapov
2013-04-25  9:43           ` Gleb Natapov
2013-04-25 10:47           ` Alexander Graf
2013-04-25 10:47             ` Alexander Graf
2013-04-25 12:07             ` Gleb Natapov
2013-04-25 12:07               ` Gleb Natapov
2013-04-25 13:45               ` Alexander Graf
2013-04-25 13:45                 ` Alexander Graf
2013-04-25 13:51                 ` Gleb Natapov
2013-04-25 13:51                   ` Gleb Natapov
2013-04-25 16:51             ` Scott Wood
2013-04-25 16:51               ` Scott Wood
2013-04-25 18:22               ` Gleb Natapov
2013-04-25 18:22                 ` Gleb Natapov
2013-04-25 18:59                 ` Scott Wood
2013-04-25 18:59                   ` Scott Wood
2013-04-26  9:53                   ` Gleb Natapov
2013-04-26  9:53                     ` Gleb Natapov
2013-04-26  9:55                     ` Alexander Graf
2013-04-26  9:55                       ` Alexander Graf
2013-04-26  9:57                       ` Gleb Natapov
2013-04-26  9:57                         ` Gleb Natapov
2013-04-13  0:08       ` [PATCH v4 2/6] kvm/ppc/mpic: import hw/openpic.c from QEMU Scott Wood
2013-04-13  0:08         ` Scott Wood
2013-04-13  0:08       ` [PATCH v4 3/6] kvm/ppc/mpic: remove some obviously unneeded code Scott Wood
2013-04-13  0:08         ` Scott Wood
2013-04-13  0:08       ` [PATCH v4 4/6] kvm/ppc/mpic: adapt to kernel style and environment Scott Wood
2013-04-13  0:08         ` Scott Wood
2013-04-13  0:08       ` [PATCH v4 5/6] kvm/ppc/mpic: in-kernel MPIC emulation Scott Wood
2013-04-13  0:08         ` Scott Wood
2013-04-13  0:08       ` [PATCH v4 6/6] kvm/ppc/mpic: add KVM_CAP_IRQ_MPIC Scott Wood
2013-04-13  0:08         ` Scott Wood
2013-04-15  5:23         ` Paul Mackerras
2013-04-15  5:23           ` Paul Mackerras
2013-04-15 17:52           ` Scott Wood
2013-04-15 17:52             ` Scott Wood
2013-04-16  3:59             ` Paul Mackerras
2013-04-16  3:59               ` Paul Mackerras

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=20130225011119.GB12404@drongo \
    --to=paulus@samba.org \
    --cc=agraf@suse.de \
    --cc=cdall@cs.columbia.edu \
    --cc=gleb@redhat.com \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.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.