All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott Wood <scottwood@freescale.com>
To: Paul Mackerras <paulus@samba.org>
Cc: Alexander Graf <agraf@suse.de>,
	kvm@vger.kernel.org, kvm-ppc@vger.kernel.org
Subject: Re: [PATCH 3/9] KVM: PPC: Book3S: Add kernel emulation for the XICS interrupt controller
Date: Fri, 15 Feb 2013 20:05:41 +0000	[thread overview]
Message-ID: <1360958741.6960.4@snotra> (raw)
In-Reply-To: <20130215000108.GD17099@iris.ozlabs.ibm.com> (from paulus@samba.org on Thu Feb 14 18:01:08 2013)

On 02/14/2013 06:01:08 PM, Paul Mackerras wrote:
> From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> 
> This adds in-kernel emulation of the XICS (eXternal Interrupt
> Controller Specification) interrupt controller specified by PAPR, for
> both HV and PR KVM guests.
> 
> This adds a new KVM_CREATE_IRQCHIP_ARGS ioctl, which is like
> KVM_CREATE_IRQCHIP in that it indicates that the virtual machine
> should use in-kernel interrupt controller emulation, but also takes an
> argument struct that contains the type of interrupt controller
> architecture and an optional parameter.  Currently only one type value
> is defined, that which indicates the XICS architecture.

Would the device config API I posted a couple days ago work for you?

> The XICS emulation supports up to 1048560 interrupt sources.
> Interrupt source numbers below 16 are reserved; 0 is used to mean no
> interrupt and 2 is used for IPIs.  Internally these are represented in
> blocks of 1024, called ICS (interrupt controller source) entities, but
> that is not visible to userspace.
> 
> Two other new ioctls allow userspace to control the interrupt
> sources.  The KVM_IRQCHIP_SET_SOURCES ioctl sets the priority,
> destination cpu, level/edge sensitivity and pending state of a range
> of interrupt sources, creating them if they don't already exist.  The
> KVM_IRQCHIP_GET_SOURCES ioctl returns that information for a range of
> interrupt sources (they are required to already exist).

Why is it userspace's job to control these?  If you use KVM_IRQ_PENDING
for interrupt injection, what if there's a race with the user changing
other flags via MMIO?  Maybe this isn't an issue with XICS, but this is
being presented as a generic API.

> +4.80 KVM_CREATE_IRQCHIP_ARGS
> +
> +Capability: KVM_CAP_IRQCHIP_ARGS
> +Architectures: ppc

Why just ppc?

> +struct kvm_irq_sources {
> +	__u32 irq;
> +	__u32 nr_irqs;
> +	__u64 __user *irqbuf;
> +};

Please no pointers in UAPI -- this would require a compat wrapper with
32-bit user and 64-bit kernel.

> +/* irqbuf entries are laid out like this: */
> +#define KVM_IRQ_SERVER_SHIFT	0
> +#define KVM_IRQ_SERVER_MASK	0xffffffffULL
> +#define KVM_IRQ_PRIORITY_SHIFT	32
> +#define KVM_IRQ_PRIORITY_MASK	0xff
> +#define KVM_IRQ_LEVEL_SENSITIVE	(1ULL << 40)
> +#define KVM_IRQ_MASKED		(1ULL << 41)
> +#define KVM_IRQ_PENDING		(1ULL << 42)

What does "server" mean?  Do you mean "laid out like this for XICS"?
Let's please have a clean separation between what is generic and what is
implementation-specific.

-Scott

WARNING: multiple messages have this Message-ID (diff)
From: Scott Wood <scottwood@freescale.com>
To: Paul Mackerras <paulus@samba.org>
Cc: Alexander Graf <agraf@suse.de>, <kvm@vger.kernel.org>,
	<kvm-ppc@vger.kernel.org>
Subject: Re: [PATCH 3/9] KVM: PPC: Book3S: Add kernel emulation for the XICS interrupt controller
Date: Fri, 15 Feb 2013 14:05:41 -0600	[thread overview]
Message-ID: <1360958741.6960.4@snotra> (raw)
In-Reply-To: <20130215000108.GD17099@iris.ozlabs.ibm.com> (from paulus@samba.org on Thu Feb 14 18:01:08 2013)

On 02/14/2013 06:01:08 PM, Paul Mackerras wrote:
> From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> 
> This adds in-kernel emulation of the XICS (eXternal Interrupt
> Controller Specification) interrupt controller specified by PAPR, for
> both HV and PR KVM guests.
> 
> This adds a new KVM_CREATE_IRQCHIP_ARGS ioctl, which is like
> KVM_CREATE_IRQCHIP in that it indicates that the virtual machine
> should use in-kernel interrupt controller emulation, but also takes an
> argument struct that contains the type of interrupt controller
> architecture and an optional parameter.  Currently only one type value
> is defined, that which indicates the XICS architecture.

Would the device config API I posted a couple days ago work for you?

> The XICS emulation supports up to 1048560 interrupt sources.
> Interrupt source numbers below 16 are reserved; 0 is used to mean no
> interrupt and 2 is used for IPIs.  Internally these are represented in
> blocks of 1024, called ICS (interrupt controller source) entities, but
> that is not visible to userspace.
> 
> Two other new ioctls allow userspace to control the interrupt
> sources.  The KVM_IRQCHIP_SET_SOURCES ioctl sets the priority,
> destination cpu, level/edge sensitivity and pending state of a range
> of interrupt sources, creating them if they don't already exist.  The
> KVM_IRQCHIP_GET_SOURCES ioctl returns that information for a range of
> interrupt sources (they are required to already exist).

Why is it userspace's job to control these?  If you use KVM_IRQ_PENDING
for interrupt injection, what if there's a race with the user changing
other flags via MMIO?  Maybe this isn't an issue with XICS, but this is
being presented as a generic API.

> +4.80 KVM_CREATE_IRQCHIP_ARGS
> +
> +Capability: KVM_CAP_IRQCHIP_ARGS
> +Architectures: ppc

Why just ppc?

> +struct kvm_irq_sources {
> +	__u32 irq;
> +	__u32 nr_irqs;
> +	__u64 __user *irqbuf;
> +};

Please no pointers in UAPI -- this would require a compat wrapper with
32-bit user and 64-bit kernel.

> +/* irqbuf entries are laid out like this: */
> +#define KVM_IRQ_SERVER_SHIFT	0
> +#define KVM_IRQ_SERVER_MASK	0xffffffffULL
> +#define KVM_IRQ_PRIORITY_SHIFT	32
> +#define KVM_IRQ_PRIORITY_MASK	0xff
> +#define KVM_IRQ_LEVEL_SENSITIVE	(1ULL << 40)
> +#define KVM_IRQ_MASKED		(1ULL << 41)
> +#define KVM_IRQ_PENDING		(1ULL << 42)

What does "server" mean?  Do you mean "laid out like this for XICS"?
Let's please have a clean separation between what is generic and what is
implementation-specific.

-Scott

  reply	other threads:[~2013-02-15 20:05 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-14 23:59 [PATCH 0/9] In-kernel XICS interrupt controller emulation Paul Mackerras
2013-02-14 23:59 ` Paul Mackerras
2013-02-14 23:59 ` [PATCH 1/9] KVM: PPC: Book3S: Add infrastructure to implement kernel-side RTAS calls Paul Mackerras
2013-02-14 23:59   ` Paul Mackerras
2013-03-21  8:52   ` Alexander Graf
2013-03-21  8:52     ` Alexander Graf
2013-04-04  5:37     ` Paul Mackerras
2013-04-04  5:37       ` Paul Mackerras
2013-04-04  9:49       ` Alexander Graf
2013-04-04  9:49         ` Alexander Graf
2013-04-04 22:38         ` Paul Mackerras
2013-04-04 22:38           ` Paul Mackerras
2013-04-19 15:16           ` Alexander Graf
2013-04-19 15:16             ` Alexander Graf
2013-02-15  0:00 ` [PATCH 2/9] KVM: PPC: Remove unused argument to kvmppc_core_dequeue_external Paul Mackerras
2013-02-15  0:00   ` Paul Mackerras
2013-03-21  8:58   ` Alexander Graf
2013-03-21  8:58     ` Alexander Graf
2013-02-15  0:01 ` [PATCH 3/9] KVM: PPC: Book3S: Add kernel emulation for the XICS interrupt controller Paul Mackerras
2013-02-15  0:01   ` Paul Mackerras
2013-02-15 20:05   ` Scott Wood [this message]
2013-02-15 20:05     ` Scott Wood
2013-02-15 23:18     ` Paul Mackerras
2013-02-15 23:18       ` Paul Mackerras
2013-02-15 23:59       ` Scott Wood
2013-02-15 23:59         ` Scott Wood
2013-02-16  2:56         ` Paul Mackerras
2013-02-16  2:56           ` Paul Mackerras
2013-02-16  3:57           ` Scott Wood
2013-02-16  3:57             ` Scott Wood
2013-02-16  4:51             ` Paul Mackerras
2013-02-16  4:51               ` Paul Mackerras
2013-02-18 22:43               ` Scott Wood
2013-02-18 22:43                 ` Scott Wood
2013-02-20  0:41                 ` Paul Mackerras
2013-02-20  0:41                   ` Paul Mackerras
2013-02-20  1:01                   ` Scott Wood
2013-02-20  1:01                     ` Scott Wood
2013-02-20 19:58           ` Marcelo Tosatti
2013-02-20 19:58             ` Marcelo Tosatti
2013-02-21  0:20             ` Scott Wood
2013-02-21  0:20               ` Scott Wood
2013-02-21  1:09               ` Marcelo Tosatti
2013-02-21  1:09                 ` Marcelo Tosatti
2013-02-21  1:45                 ` Scott Wood
2013-02-21  1:45                   ` Scott Wood
2013-02-24 14:08               ` Gleb Natapov
2013-02-24 14:08                 ` Gleb Natapov
2013-02-25  0:59             ` Paul Mackerras
2013-02-25  0:59               ` Paul Mackerras
2013-03-21  9:20               ` Alexander Graf
2013-03-21  9:20                 ` Alexander Graf
2013-02-15  0:01 ` [PATCH 4/9] KVM: PPC: Book3S: Generalize interfaces to interrupt controller emulation Paul Mackerras
2013-02-15  0:01   ` Paul Mackerras
2013-02-15  0:02 ` [PATCH 5/9] KVM: PPC: Book3S: Facilities to save/restore XICS presentation ctrler state Paul Mackerras
2013-02-15  0:02   ` Paul Mackerras
2013-02-15  0:02 ` [PATCH 6/9] KVM: PPC: Book3S HV: Speed up wakeups of CPUs on HV KVM Paul Mackerras
2013-02-15  0:02   ` Paul Mackerras
2013-02-15  0:03 ` [PATCH 7/9] KVM: PPC: Book3S HV: Add support for real mode ICP in XICS emulation Paul Mackerras
2013-02-15  0:03   ` Paul Mackerras
2013-02-15  0:03 ` [PATCH 8/9] KVM: PPC: Book3S HV: Improve real-mode handling of external interrupts Paul Mackerras
2013-02-15  0:03   ` Paul Mackerras
2013-02-15  0:04 ` [PATCH 9/9] KVM: PPC: Book3S: Add support for ibm,int-on/off RTAS calls Paul Mackerras
2013-02-15  0:04   ` 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=1360958741.6960.4@snotra \
    --to=scottwood@freescale.com \
    --cc=agraf@suse.de \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=paulus@samba.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.