From: Will Deacon <will.deacon@arm.com>
To: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
"Alex.Williamson@redhat.com" <Alex.Williamson@redhat.com>,
"agraf@suse.de" <agraf@suse.de>,
"gleb@kernel.org" <gleb@kernel.org>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
Marc Zyngier <Marc.Zyngier@arm.com>,
"christoffer.dall@linaro.org" <christoffer.dall@linaro.org>
Subject: Re: [PATCH v2 1/4] KVM: device: add simple registration mechanism for kvm_device_ops
Date: Wed, 2 Jul 2014 10:32:41 +0100 [thread overview]
Message-ID: <20140702093241.GD18731@arm.com> (raw)
In-Reply-To: <20140702111720.28506538.cornelia.huck@de.ibm.com>
On Wed, Jul 02, 2014 at 10:17:20AM +0100, Cornelia Huck wrote:
> On Tue, 1 Jul 2014 15:45:15 +0100
> Will Deacon <will.deacon@arm.com> wrote:
>
> > kvm_ioctl_create_device currently has knowledge of all the device types
> > and their associated ops. This is fairly inflexible when adding support
> > for new in-kernel device emulations, so move what we currently have out
> > into a table, which can support dynamic registration of ops by new
> > drivers for virtual hardware.
> >
> > I didn't try to port all current drivers over, as it's not always clear
> > which initialisation hook the ops should be registered from.
>
> I think that last paragraph should rather go into a cover letter :)
>
> >
> > Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
> > Cc: Alex Williamson <Alex.Williamson@redhat.com>
> > Cc: Alex Graf <agraf@suse.de>
> > Cc: Gleb Natapov <gleb@kernel.org>
> > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > Cc: Marc Zyngier <marc.zyngier@arm.com>
> > Cc: Christoffer Dall <christoffer.dall@linaro.org>
> > Signed-off-by: Will Deacon <will.deacon@arm.com>
> > ---
> >
> > v1 -> v2: Added enum for KVM_DEV_TYPE* IDs, changed limits to ARRAY_SIZE,
> > removed stray semicolon, had a crack at porting VFIO, included
> > Cornelia's s390 FLIC patch.
>
> ...and the changelog as well (or keep changelogs for individual
> patches).
Yeah... this has grown to be bigger than one patch now. I can include that
for v3.
> > diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
> > index e11d8f170a62..6875cc225dff 100644
> > --- a/include/uapi/linux/kvm.h
> > +++ b/include/uapi/linux/kvm.h
> > @@ -940,15 +940,25 @@ struct kvm_device_attr {
> > __u64 addr; /* userspace address of attr data */
> > };
> >
> > -#define KVM_DEV_TYPE_FSL_MPIC_20 1
> > -#define KVM_DEV_TYPE_FSL_MPIC_42 2
> > -#define KVM_DEV_TYPE_XICS 3
> > -#define KVM_DEV_TYPE_VFIO 4
> > #define KVM_DEV_VFIO_GROUP 1
> > #define KVM_DEV_VFIO_GROUP_ADD 1
> > #define KVM_DEV_VFIO_GROUP_DEL 2
> > -#define KVM_DEV_TYPE_ARM_VGIC_V2 5
> > -#define KVM_DEV_TYPE_FLIC 6
> > +
> > +enum kvm_device_type {
> > + KVM_DEV_TYPE_FSL_MPIC_20 = 1,
> > +#define KVM_DEV_TYPE_FSL_MPIC_20 KVM_DEV_TYPE_FSL_MPIC_20
> > + KVM_DEV_TYPE_FSL_MPIC_42,
> > +#define KVM_DEV_TYPE_FSL_MPIC_42 KVM_DEV_TYPE_FSL_MPIC_42
> > + KVM_DEV_TYPE_XICS,
> > +#define KVM_DEV_TYPE_XICS KVM_DEV_TYPE_XICS
> > + KVM_DEV_TYPE_VFIO,
> > +#define KVM_DEV_TYPE_VFIO KVM_DEV_TYPE_VFIO
> > + KVM_DEV_TYPE_ARM_VGIC_V2,
> > +#define KVM_DEV_TYPE_ARM_VGIC_V2 KVM_DEV_TYPE_ARM_VGIC_V2
> > + KVM_DEV_TYPE_FLIC,
> > +#define KVM_DEV_TYPE_FLIC KVM_DEV_TYPE_FLIC
> > + KVM_DEV_TYPE_MAX,
>
> Do you want to add the individual values to the enum? A removal of a
> type would be an API break (so we should be safe against renumbering),
> but it's sometimes helpful if one can get the numeric value at a glance.
Could do, but then I think the advantage of the enum is questionable over
the #defines, since you could just as easily have two entries in the enum
with the same ID value as forgetting to update a KVM_DEV_TYPE_MAX #define
(which was the reason for the enum in the first place).
So I'd be inclined to keep the patch as-is, unless you have really strong
objections?
Will
next prev parent reply other threads:[~2014-07-02 9:32 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-01 14:45 [PATCH v2 1/4] KVM: device: add simple registration mechanism for kvm_device_ops Will Deacon
2014-07-01 14:45 ` [PATCH v2 2/4] KVM: ARM: vgic: register kvm_device_ops dynamically Will Deacon
2014-07-09 16:05 ` Paolo Bonzini
2014-07-09 16:13 ` Marc Zyngier
2014-07-31 12:10 ` Christoffer Dall
2014-07-31 13:25 ` Will Deacon
2014-07-01 14:45 ` [PATCH v2 3/4] KVM: s390: register flic ops dynamically Will Deacon
2014-07-01 14:45 ` [PATCH v2 4/4] KVM: VFIO: register kvm_device_ops dynamically Will Deacon
2014-07-09 16:06 ` Paolo Bonzini
2014-07-09 16:19 ` Alex Williamson
2014-07-09 16:47 ` Will Deacon
2014-07-09 16:56 ` Alex Williamson
2014-07-09 16:56 ` Alex Williamson
2014-07-02 9:17 ` [PATCH v2 1/4] KVM: device: add simple registration mechanism for kvm_device_ops Cornelia Huck
2014-07-02 9:32 ` Will Deacon [this message]
2014-07-02 10:18 ` Cornelia Huck
2014-07-31 12:10 ` Christoffer Dall
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=20140702093241.GD18731@arm.com \
--to=will.deacon@arm.com \
--cc=Alex.Williamson@redhat.com \
--cc=Marc.Zyngier@arm.com \
--cc=agraf@suse.de \
--cc=christoffer.dall@linaro.org \
--cc=cornelia.huck@de.ibm.com \
--cc=gleb@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=pbonzini@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: 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.