From: Scott Wood <scottwood@freescale.com> To: Marcelo Tosatti <mtosatti@redhat.com> Cc: Gleb Natapov <gleb@redhat.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 18:27:56 -0600 [thread overview] Message-ID: <1361838476.27903.16@snotra> (raw) In-Reply-To: <20130223150433.GA5836@amt.cnet> (from mtosatti@redhat.com on Sat Feb 23 09:04:33 2013) On 02/23/2013 09:04:33 AM, Marcelo Tosatti wrote: > On Thu, Feb 21, 2013 at 08:00:25PM -0600, Scott Wood wrote: > > On 02/21/2013 05:03:32 PM, Marcelo Tosatti wrote: > > >You are not writing to the registers from the CPU point of view. > > > > That's exactly how KVM_DEV_MPIC_GRP_REGISTER is defined and > > implemented on MPIC (with the exception of registers whose behavior > > changes based on which specific vcpu you use to access them). > > If/when we have a need to set/get state in a different manner, > > that's a separate attribute group. > > Can you describe usage of this register again? It's used by QEMU to reflect memory space accesses to the kernel. In practice, these are either debug accesses or MSIs. > > >Also, it is necessary to provide proper locking of device attribute > > >write versus vcpu device access. So far we have been focusing on > > >having > > >a lockless vcpu path. > > > > How is device access related to vcpus? Existing irqchip code is not > > lockless. > > VCPUS access in-kernel devices. Right, VCPUs (plural) not VCPU (singular). Thus locking is needed. > Yes, it is lockless (see RCU usage in virt/kvm/). virt/kvm/kvm_main.c: /* kvm_io_bus_write - called under kvm->slots_lock */ virt/kvm/ioapic.c: spin_lock(&ioapic->lock); etc. > > >Basically abstract 'device attributes' are too abstract. > > > > It's up to the device-specific documentation to make them not > > abstract (I admit there are a few details missing in mpic.txt that > > I've pointed out in this thread -- it is RFC v1 after all). This > > wouldn't be any different if we used separate ioctls for everything. > > It's like saying abstract 'ioctl' is too abstract. > > Perhaps a better way to put it is that its too permissive. It's no more permissive than saying "go define an ioctl". It is somewhat more constrained than that, in that it is an operation on a particular device, as opposed to any possible KVM action. > > >However, your proposed interface deals with sucky capability, > > >versioning > > >and namespace conflicts we have now. Note these items can probably > be > > >improved separately. > > > > Any particular proposals? > > Namespace conflicts: Reserve ranges for each arch. That only helps when the conflict is between different arches (as opposed to different devices), and it discourages sharing between arches. -Scott
WARNING: multiple messages have this Message-ID (diff)
From: Scott Wood <scottwood@freescale.com> To: Marcelo Tosatti <mtosatti@redhat.com> Cc: Gleb Natapov <gleb@redhat.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: Tue, 26 Feb 2013 00:27:56 +0000 [thread overview] Message-ID: <1361838476.27903.16@snotra> (raw) In-Reply-To: <20130223150433.GA5836@amt.cnet> (from mtosatti@redhat.com on Sat Feb 23 09:04:33 2013) On 02/23/2013 09:04:33 AM, Marcelo Tosatti wrote: > On Thu, Feb 21, 2013 at 08:00:25PM -0600, Scott Wood wrote: > > On 02/21/2013 05:03:32 PM, Marcelo Tosatti wrote: > > >You are not writing to the registers from the CPU point of view. > > > > That's exactly how KVM_DEV_MPIC_GRP_REGISTER is defined and > > implemented on MPIC (with the exception of registers whose behavior > > changes based on which specific vcpu you use to access them). > > If/when we have a need to set/get state in a different manner, > > that's a separate attribute group. > > Can you describe usage of this register again? It's used by QEMU to reflect memory space accesses to the kernel. In practice, these are either debug accesses or MSIs. > > >Also, it is necessary to provide proper locking of device attribute > > >write versus vcpu device access. So far we have been focusing on > > >having > > >a lockless vcpu path. > > > > How is device access related to vcpus? Existing irqchip code is not > > lockless. > > VCPUS access in-kernel devices. Right, VCPUs (plural) not VCPU (singular). Thus locking is needed. > Yes, it is lockless (see RCU usage in virt/kvm/). virt/kvm/kvm_main.c: /* kvm_io_bus_write - called under kvm->slots_lock */ virt/kvm/ioapic.c: spin_lock(&ioapic->lock); etc. > > >Basically abstract 'device attributes' are too abstract. > > > > It's up to the device-specific documentation to make them not > > abstract (I admit there are a few details missing in mpic.txt that > > I've pointed out in this thread -- it is RFC v1 after all). This > > wouldn't be any different if we used separate ioctls for everything. > > It's like saying abstract 'ioctl' is too abstract. > > Perhaps a better way to put it is that its too permissive. It's no more permissive than saying "go define an ioctl". It is somewhat more constrained than that, in that it is an operation on a particular device, as opposed to any possible KVM action. > > >However, your proposed interface deals with sucky capability, > > >versioning > > >and namespace conflicts we have now. Note these items can probably > be > > >improved separately. > > > > Any particular proposals? > > Namespace conflicts: Reserve ranges for each arch. That only helps when the conflict is between different arches (as opposed to different devices), and it discourages sharing between arches. -Scott
next prev parent reply other threads:[~2013-02-26 0:27 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 [this message] 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 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=1361838476.27903.16@snotra \ --to=scottwood@freescale.com \ --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=mtosatti@redhat.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: linkBe 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.