All of lore.kernel.org
 help / color / mirror / Atom feed
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 12/13] ARM: KVM: vgic: reduce the number of vcpu kick
Date: Wed, 5 Dec 2012 15:55:41 +0000	[thread overview]
Message-ID: <20121205155541.GP14363@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <50BF4EC8.1050902@arm.com>

On Wed, Dec 05, 2012 at 01:40:24PM +0000, Marc Zyngier wrote:
> Admittedly, the whole sequence should be rewritten to be clearer. What
> it does is "If we're running a guest and there is no active interrupt,
> then kick the guest".

On the whole this entire thing should be written clearer; from the
explanations you've given it seems that the only reason this code works
is because you're relying on several behaviours all coming together to
achieve the right result - which makes for fragile code.

You're partly relying on atomic types to ensure that the increment and
decrement happen exclusively.  You're then relying on a combination of
IRQ protection and cmpxchg() to ensure that the non-atomic read of the
atomic type won't be a problem.

This doesn't inspire confidence, and I have big concerns over whether
this code will still be understandable in a number of years time.

And I still wonder how safe this is even with your explanations.  IRQ
disabling only works for the local CPU core so I still have questions
over this wrt a SMP host OS.

WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Will Deacon <Will.Deacon@arm.com>,
	Christoffer Dall <c.dall@virtualopensystems.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>
Subject: Re: [PATCH v4 12/13] ARM: KVM: vgic: reduce the number of vcpu kick
Date: Wed, 5 Dec 2012 15:55:41 +0000	[thread overview]
Message-ID: <20121205155541.GP14363@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <50BF4EC8.1050902@arm.com>

On Wed, Dec 05, 2012 at 01:40:24PM +0000, Marc Zyngier wrote:
> Admittedly, the whole sequence should be rewritten to be clearer. What
> it does is "If we're running a guest and there is no active interrupt,
> then kick the guest".

On the whole this entire thing should be written clearer; from the
explanations you've given it seems that the only reason this code works
is because you're relying on several behaviours all coming together to
achieve the right result - which makes for fragile code.

You're partly relying on atomic types to ensure that the increment and
decrement happen exclusively.  You're then relying on a combination of
IRQ protection and cmpxchg() to ensure that the non-atomic read of the
atomic type won't be a problem.

This doesn't inspire confidence, and I have big concerns over whether
this code will still be understandable in a number of years time.

And I still wonder how safe this is even with your explanations.  IRQ
disabling only works for the local CPU core so I still have questions
over this wrt a SMP host OS.

  reply	other threads:[~2012-12-05 15:55 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-10 15:44 [PATCH v4 00/13] KVM/ARM vGIC support Christoffer Dall
2012-11-10 15:44 ` Christoffer Dall
2012-11-10 15:44 ` [PATCH v4 01/13] KVM: ARM: Introduce KVM_SET_DEVICE_ADDRESS ioctl Christoffer Dall
2012-11-10 15:44   ` Christoffer Dall
2012-11-10 15:44 ` [PATCH v4 02/13] ARM: KVM: Keep track of currently running vcpus Christoffer Dall
2012-11-10 15:44   ` Christoffer Dall
2012-11-28 12:47   ` Will Deacon
2012-11-28 12:47     ` Will Deacon
2012-11-28 13:15     ` Marc Zyngier
2012-11-28 13:15       ` Marc Zyngier
2012-11-30 22:39     ` Christoffer Dall
2012-11-30 22:39       ` Christoffer Dall
2012-11-10 15:44 ` [PATCH v4 03/13] ARM: KVM: Initial VGIC infrastructure support Christoffer Dall
2012-11-10 15:44   ` Christoffer Dall
2012-11-28 12:49   ` Will Deacon
2012-11-28 12:49     ` Will Deacon
2012-11-28 13:09     ` Marc Zyngier
2012-11-28 13:09       ` Marc Zyngier
2012-11-28 14:13       ` Will Deacon
2012-11-28 14:13         ` Will Deacon
2012-12-01  2:19     ` Christoffer Dall
2012-12-01  2:19       ` Christoffer Dall
2012-11-10 15:44 ` [PATCH v4 04/13] ARM: KVM: Initial VGIC MMIO support code Christoffer Dall
2012-11-10 15:44   ` Christoffer Dall
2012-11-12  8:54   ` Dong Aisheng
2012-11-12  8:54     ` Dong Aisheng
2012-11-13 13:32     ` Christoffer Dall
2012-11-13 13:32       ` Christoffer Dall
2012-11-28 13:09   ` Will Deacon
2012-11-28 13:09     ` Will Deacon
2012-11-28 13:44     ` Marc Zyngier
2012-11-28 13:44       ` Marc Zyngier
2012-11-10 15:44 ` [PATCH v4 05/13] ARM: KVM: VGIC accept vcpu and dist base addresses from user space Christoffer Dall
2012-11-10 15:44   ` Christoffer Dall
2012-11-12  8:56   ` Dong Aisheng
2012-11-12  8:56     ` Dong Aisheng
2012-11-13 13:35     ` Christoffer Dall
2012-11-13 13:35       ` Christoffer Dall
2012-11-28 13:11   ` Will Deacon
2012-11-28 13:11     ` Will Deacon
2012-11-28 13:22     ` [kvmarm] " Marc Zyngier
2012-11-28 13:22       ` Marc Zyngier
2012-12-01  2:52     ` Christoffer Dall
2012-12-01  2:52       ` Christoffer Dall
2012-12-01 15:57       ` Christoffer Dall
2012-12-01 15:57         ` Christoffer Dall
2012-12-03 10:40       ` Will Deacon
2012-12-03 10:40         ` Will Deacon
2012-11-10 15:44 ` [PATCH v4 06/13] ARM: KVM: VGIC distributor handling Christoffer Dall
2012-11-10 15:44   ` Christoffer Dall
2012-11-12  9:29   ` Dong Aisheng
2012-11-12  9:29     ` Dong Aisheng
2012-11-13 13:38     ` Christoffer Dall
2012-11-13 13:38       ` Christoffer Dall
2012-11-28 13:21   ` Will Deacon
2012-11-28 13:21     ` Will Deacon
2012-11-28 14:35     ` Marc Zyngier
2012-11-28 14:35       ` Marc Zyngier
2012-11-10 15:45 ` [PATCH v4 07/13] ARM: KVM: VGIC virtual CPU interface management Christoffer Dall
2012-11-10 15:45   ` Christoffer Dall
2012-12-03 13:23   ` Will Deacon
2012-12-03 13:23     ` Will Deacon
2012-12-03 14:11     ` Marc Zyngier
2012-12-03 14:11       ` Marc Zyngier
2012-12-03 14:34       ` Will Deacon
2012-12-03 14:34         ` Will Deacon
2012-12-03 15:24         ` Marc Zyngier
2012-12-03 15:24           ` Marc Zyngier
2012-12-03 14:54       ` Christoffer Dall
2012-12-03 14:54         ` Christoffer Dall
2012-11-10 15:45 ` [PATCH v4 08/13] ARM: KVM: vgic: retire queued, disabled interrupts Christoffer Dall
2012-11-10 15:45   ` Christoffer Dall
2012-12-03 13:24   ` Will Deacon
2012-12-03 13:24     ` Will Deacon
2012-11-10 15:45 ` [PATCH v4 09/13] ARM: KVM: VGIC interrupt injection Christoffer Dall
2012-11-10 15:45   ` Christoffer Dall
2012-12-03 13:25   ` Will Deacon
2012-12-03 13:25     ` Will Deacon
2012-12-03 14:21     ` Marc Zyngier
2012-12-03 14:21       ` Marc Zyngier
2012-12-03 14:58       ` Christoffer Dall
2012-12-03 14:58         ` Christoffer Dall
2012-12-03 19:13       ` Christoffer Dall
2012-12-03 19:13         ` Christoffer Dall
2012-12-03 19:22         ` Marc Zyngier
2012-12-03 19:22           ` Marc Zyngier
2012-11-10 15:45 ` [PATCH v4 10/13] ARM: KVM: VGIC control interface world switch Christoffer Dall
2012-11-10 15:45   ` Christoffer Dall
2012-12-03 13:31   ` Will Deacon
2012-12-03 13:31     ` Will Deacon
2012-12-03 14:26     ` Marc Zyngier
2012-12-03 14:26       ` Marc Zyngier
2012-11-10 15:45 ` [PATCH v4 11/13] ARM: KVM: VGIC initialisation code Christoffer Dall
2012-11-10 15:45   ` Christoffer Dall
2012-12-05 10:43   ` Will Deacon
2012-12-05 10:43     ` Will Deacon
2012-11-10 15:45 ` [PATCH v4 12/13] ARM: KVM: vgic: reduce the number of vcpu kick Christoffer Dall
2012-11-10 15:45   ` Christoffer Dall
2012-12-05 10:43   ` Will Deacon
2012-12-05 10:43     ` Will Deacon
2012-12-05 10:58     ` Russell King - ARM Linux
2012-12-05 10:58       ` Russell King - ARM Linux
2012-12-05 12:17       ` Marc Zyngier
2012-12-05 12:17         ` Marc Zyngier
2012-12-05 12:29         ` Russell King - ARM Linux
2012-12-05 12:29           ` Russell King - ARM Linux
2012-12-05 13:40           ` Marc Zyngier
2012-12-05 13:40             ` Marc Zyngier
2012-12-05 15:55             ` Russell King - ARM Linux [this message]
2012-12-05 15:55               ` Russell King - ARM Linux
2012-12-05 11:16   ` Russell King - ARM Linux
2012-12-05 11:16     ` Russell King - ARM Linux
2012-11-10 15:45 ` [PATCH v4 13/13] ARM: KVM: Add VGIC configuration option Christoffer Dall
2012-11-10 15:45   ` Christoffer Dall
2012-11-10 19:52   ` Sergei Shtylyov
2012-11-10 19:52     ` Sergei Shtylyov

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=20121205155541.GP14363@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=linux-arm-kernel@lists.infradead.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.