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] KVM: Add KVM_CAP_IRQ_ARCH capability
Date: Thu, 14 Mar 2013 13:20:38 -0500 [thread overview]
Message-ID: <1363285238.28440.9@snotra> (raw)
In-Reply-To: <20130314012044.GA12273@drongo> (from paulus@samba.org on Wed Mar 13 20:20:44 2013)
On 03/13/2013 08:20:44 PM, Paul Mackerras wrote:
> Setting this capability on a vcpu connects that vcpu to an interrupt
> controller device. The args[0] field of the argument kvm_enable_cap
> struct specifies the overall architecture of the interrupt
> controller. The args[1] field specifies the CPU number for the vcpu
> from the interrupt controller's point of view.
>
> Signed-off-by: Paul Mackerras <paulus@samba.org>
> ---
> arch/powerpc/include/asm/kvm_host.h | 3 +++
> arch/powerpc/kvm/powerpc.c | 29
> +++++++++++++++++++++++++++++
> include/uapi/linux/kvm.h | 1 +
> 3 files changed, 33 insertions(+)
>
> diff --git a/arch/powerpc/include/asm/kvm_host.h
> b/arch/powerpc/include/asm/kvm_host.h
> index f4ba881..dd167e4 100644
> --- a/arch/powerpc/include/asm/kvm_host.h
> +++ b/arch/powerpc/include/asm/kvm_host.h
> @@ -373,6 +373,9 @@ struct kvmppc_booke_debug_reg {
> struct kvm_vcpu_arch {
> ulong host_stack;
> u32 host_pid;
> +
> + u32 intr_ctrler;
> +
That abbreviation seems a bit awkward, and we should also have a
private-data pointer.
How about:
u32 irq_arch;
void *irq_priv;
> #endif
> + case KVM_CAP_IRQ_ARCH:
> + r = -EBUSY;
> + mutex_lock(&vcpu->kvm->lock);
> + /* disallow changing once set */
> + if (!vcpu->arch.intr_ctrler) {
> + r = 0;
> + switch (cap->args[0]) {
> + case 0: /* no interrupt controller */
> + break;
s/0/KVM_IRQ_ARCH_NONE/
...at least so that this patch makes it clear where other type ids
should
be defined.
> + default:
> + r = -EINVAL;
> + }
> + if (!r) {
> + /*
> + * Make sure any state set up by the
> interrupt
> + * controller init routine is seen
> before this.
> + */
> + smp_wmb();
> + vcpu->arch.intr_ctrler = cap->args[0];
> + }
Do we really need that wmb()? We're in vcpu context, right? If the
vcpu
migrates to another host cpu, that involves rescheduling which already
has a sync. If the interrupt controller code we call here modifies data
that will be seen from outside the vcpu, it's the responsibility of that
code to use whatever locks, barriers, etc. are needed (and it's
unlikely
that vcpu->arch.intr_ctrler will be the relevant thing that it needs to
order with).
This patch should also add a hook at vcpu destruction to call into the
irq code.
-Scott
next prev parent reply other threads:[~2013-03-14 18:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-14 1:20 [PATCH] KVM: Add KVM_CAP_IRQ_ARCH capability Paul Mackerras
2013-03-14 18:20 ` Scott Wood [this message]
2013-03-14 18:33 ` Alexander Graf
2013-03-14 18:35 ` Scott Wood
2013-03-14 19:03 ` Alexander Graf
2013-03-14 19:10 ` Scott Wood
2013-03-14 21:46 ` Alexander Graf
2013-03-14 22:28 ` Paul Mackerras
2013-03-14 22:38 ` Scott Wood
2013-03-14 22:19 ` Paul Mackerras
2013-03-14 22:41 ` Scott Wood
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=1363285238.28440.9@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox