From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: pv-drivers@vmware.com, acking@vmware.com,
linux-kernel@vger.kernel.org,
George Zhang <georgezhang@vmware.com>,
virtualization@lists.linux-foundation.org
Subject: Re: [PATCH 12/12] VMCI: Some header and config files.
Date: Mon, 26 Nov 2012 16:23:57 -0800 [thread overview]
Message-ID: <20121127002357.GA27683@core.coreip.homeip.net> (raw)
In-Reply-To: <20121127000304.GA18680@kroah.com>
Hi Greg,
For some reason it still didn't go through to our corporate mail server
but I see it on LKML.
On Mon, Nov 26, 2012 at 04:03:04PM -0800, Greg KH wrote:
> On Wed, Nov 07, 2012 at 10:43:03AM -0800, George Zhang wrote:
>
> > +static inline struct vmci_handle VMCI_MAKE_HANDLE(vmci_id cid, vmci_id rid)
> > +{
> > + struct vmci_handle h;
> > + h.context = cid;
> > + h.resource = rid;
> > + return h;
> > +}
>
> You return a structure on the stack that just went away? Yeah, I know
> it's an inline, but come on, that's not ok.
This is certainly OK even if it is not inline, we return the _value_,
not the pointer to the stacki memory. And yes, the structure is 64 bit
value so it is returned in registers.
>
> > +#define VMCI_HANDLE_TO_CONTEXT_ID(_handle) ((_handle).context)
> > +#define VMCI_HANDLE_TO_RESOURCE_ID(_handle) ((_handle).resource)
>
> It's longer to write the macro out than to just do .context or
> .resource, just use them instead.
We really want vmci_handle to be opaque where possible and use proper
accessors.
>
> > +#define VMCI_HANDLE_EQUAL(_h1, _h2) ((_h1).context == (_h2).context && \
> > + (_h1).resource == (_h2).resource)
>
> Inline function instead? How often do you really need this?
OK, makes sense.
>
> > +#define VMCI_INVALID_ID ~0
> > +static const struct vmci_handle VMCI_INVALID_HANDLE = { VMCI_INVALID_ID,
> > + VMCI_INVALID_ID
> > +};
>
> C99 initializers please.
OK.
>
> > +
> > +#define VMCI_HANDLE_INVALID(_handle) \
> > + VMCI_HANDLE_EQUAL((_handle), VMCI_INVALID_HANDLE)
>
> Gotta love magic values :(
?
>
> > +/*
> > + * The below defines can be used to send anonymous requests.
> > + * This also indicates that no response is expected.
> > + */
> > +#define VMCI_ANON_SRC_CONTEXT_ID VMCI_INVALID_ID
> > +#define VMCI_ANON_SRC_RESOURCE_ID VMCI_INVALID_ID
> > +#define VMCI_ANON_SRC_HANDLE vmci_make_handle(VMCI_ANON_SRC_CONTEXT_ID, \
> > + VMCI_ANON_SRC_RESOURCE_ID)
>
> So you just created an invalid message?
Anonymous one, yes.
>
> > +/* The lowest 16 context ids are reserved for internal use. */
> > +#define VMCI_RESERVED_CID_LIMIT ((u32) 16)
> > +
> > +/*
> > + * Hypervisor context id, used for calling into hypervisor
> > + * supplied services from the VM.
> > + */
> > +#define VMCI_HYPERVISOR_CONTEXT_ID 0
> > +
> > +/*
> > + * Well-known context id, a logical context that contains a set of
> > + * well-known services. This context ID is now obsolete.
> > + */
> > +#define VMCI_WELL_KNOWN_CONTEXT_ID 1
> > +
> > +/*
> > + * Context ID used by host endpoints.
> > + */
> > +#define VMCI_HOST_CONTEXT_ID 2
> > +
> > +#define VMCI_CONTEXT_IS_VM(_cid) (VMCI_INVALID_ID != (_cid) && \
> > + (_cid) > VMCI_HOST_CONTEXT_ID)
> > +
>
> Are you sure all of this stuff needs to be in a .h file that lives in
> include/linux/?
Probably not. We'll rebase to 3.7 and split as needed.
>
> > +/*
> > + * Linux defines _IO* macros, but the core kernel code ignore the encoded
> > + * ioctl value. It is up to individual drivers to decode the value (for
> > + * example to look at the size of a structure to determine which version
> > + * of a specific command should be used) or not (which is what we
> > + * currently do, so right now the ioctl value for a given command is the
> > + * command itself).
> > + *
> > + * Hence, we just define the IOCTL_VMCI_foo values directly, with no
> > + * intermediate IOCTLCMD_ representation.
> > + */
> > +#define IOCTLCMD(_cmd) IOCTL_VMCI_ ## _cmd
>
> I don't recall ever getting a valid answer for this (if you did, my
> appologies, can you repeat it). What in the world are you talking about
> here? Why is your driver somehow special from the thousands of other
> ones that use the in-kernel IO macros properly for an ioctl?
Hmm, not sure, we'll review ioctl definitions and fix as needed.
Thanks!
--
Dmitry
next prev parent reply other threads:[~2012-11-27 0:23 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-07 18:40 [PATCH 00/12] VMCI for Linux upstreaming George Zhang
2012-11-07 18:41 ` [PATCH 01/12] VMCI: context implementation George Zhang
2012-11-07 18:41 ` [PATCH 02/12] VMCI: datagram implementation George Zhang
2012-11-15 23:47 ` Greg KH
2012-11-07 18:41 ` [PATCH 03/12] VMCI: doorbell implementation George Zhang
2012-11-07 18:41 ` [PATCH 04/12] VMCI: device driver implementaton George Zhang
2012-11-07 18:41 ` [PATCH 05/12] VMCI: event handling implementation George Zhang
2012-11-07 18:42 ` [PATCH 06/12] VMCI: handle array implementation George Zhang
2012-11-07 18:42 ` [PATCH 07/12] VMCI: queue pairs implementation George Zhang
2012-11-15 23:48 ` Greg KH
2012-11-07 18:42 ` [PATCH 08/12] VMCI: resource object implementation George Zhang
2012-11-07 18:42 ` [PATCH 09/12] VMCI: routing implementation George Zhang
2012-11-07 18:42 ` [PATCH 10/12] VMCI: guest side driver implementation George Zhang
2012-11-07 18:42 ` [PATCH 11/12] VMCI: host " George Zhang
2012-11-16 0:03 ` Greg KH
2012-11-07 18:43 ` [PATCH 12/12] VMCI: Some header and config files George Zhang
2012-11-16 0:01 ` Greg KH
2012-11-27 0:03 ` Greg KH
[not found] ` <20121127000304.GA18680@kroah.com>
2012-11-27 0:23 ` Dmitry Torokhov [this message]
2012-11-27 0:32 ` Greg KH
2012-11-27 0:45 ` [Pv-drivers] " Dmitry Torokhov
2012-11-30 16:47 ` Andy King
[not found] ` <1481496655.36482563.1354294066563.JavaMail.root@vmware.com>
2012-11-30 17:09 ` Greg KH
2012-11-30 17:20 ` [Pv-drivers] " Dmitry Torokhov
2012-11-30 18:39 ` Greg KH
[not found] ` <20121130183918.GA22577@kroah.com>
2012-11-30 18:45 ` Dmitry Torokhov
2012-11-30 18:57 ` Greg KH
2012-11-30 20:09 ` Dmitry Torokhov
2012-11-30 20:44 ` Greg KH
[not found] ` <20121130204406.GB32321@kroah.com>
2012-11-30 20:58 ` Dmitry Torokhov
2012-11-30 21:17 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2013-01-08 23:52 [PATCH 00/12] VMCI for Linux upstreaming George Zhang
2013-01-08 23:55 ` [PATCH 12/12] VMCI: Some header and config files George Zhang
2012-11-21 20:31 [PATCH 00/12] VMCI for Linux upstreaming George Zhang
2012-11-21 20:36 ` [PATCH 12/12] VMCI: Some header and config files George Zhang
2012-11-01 17:28 [PATCH 00/12] VMCI for Linux upstreaming George Zhang
2012-11-01 17:30 ` [PATCH 12/12] VMCI: Some header and config files George Zhang
2012-10-30 1:03 [PATCH 00/12] VMCI for Linux upstreaming George Zhang
2012-10-30 1:05 ` [PATCH 12/12] VMCI: Some header and config files George Zhang
2012-10-30 2:32 ` Greg KH
2012-10-30 2:38 ` Greg KH
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=20121127002357.GA27683@core.coreip.homeip.net \
--to=dmitry.torokhov@gmail.com \
--cc=acking@vmware.com \
--cc=georgezhang@vmware.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pv-drivers@vmware.com \
--cc=virtualization@lists.linux-foundation.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;
as well as URLs for NNTP newsgroup(s).