All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
To: "Hefty, Sean" <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: "linux-rdma
	(linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org)"
	<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH 1/8] libibverbs: Infra-structure changes to support verbs extension
Date: Mon, 24 Sep 2012 14:23:14 -0600	[thread overview]
Message-ID: <20120924202314.GA9472@obsidianresearch.com> (raw)
In-Reply-To: <1828884A29C6694DAF28B7E6B8A8237346A8E7ED-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>

On Thu, Sep 20, 2012 at 09:43:05PM +0000, Hefty, Sean wrote:
  
>  void ibv_register_driver(const char *name, ibv_driver_init_func init_func);
> +void verbs_register_driver(const char *name, ibv_driver_init_func
> init_func);

This should be using a new init_func signature.

typedef struct verbs_device *(*ibv_driver_init_func_ex)(const char *uverbs_sys_path,
	                                                int abi_version);

To document/check that calls through that path are guarenteed to
return an extended struct with the size member.

> +struct verbs_device {
> +	struct ibv_device device; /* Must be first */
> +	size_t	sz;
> +	size_t	size_of_context;
> +	int	(*init_context)(struct verbs_device *device,
> +				struct ibv_context *ctx, int cmd_fd);
> +	void	(*uninit_context)(struct verbs_device *device,
> +				struct ibv_context *ctx);
> +	/* future fields added here */
> +};

Relying on the return value of alloc_context to tell if this is a
new/old verbs_device means there is no way to tell from a ibv_device *
pointer if it is extended or not.

IMHO, it is better if the driver always returns a working legacy
alloc_context and libverbs will set it to 0 if the new verbs_register
entry point is used and verbs extension is supported. Drivers that call
into verbs_register must supply init_context.

This makes compatability with old verbs easier, and means you can
detect if the verbs_device is present based only on an 'ibv_device
*' pointer, this is more flexible going forward.

> +static inline struct verbs_device *verbs_get_device(
> +					const struct ibv_device *dev)
> +{
> +	return container_of(dev, struct verbs_device, device);
> +}

This needs to return null when an extended device is not present, see
above.

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2012-09-24 20:23 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-20 21:43 [PATCH 1/8] libibverbs: Infra-structure changes to support verbs extension Hefty, Sean
     [not found] ` <1828884A29C6694DAF28B7E6B8A8237346A8E7ED-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2012-09-24 20:23   ` Jason Gunthorpe [this message]
     [not found]     ` <20120924202314.GA9472-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2012-09-24 20:39       ` Hefty, Sean
     [not found]         ` <1828884A29C6694DAF28B7E6B8A8237346A8F003-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2012-09-24 20:51           ` Jason Gunthorpe

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=20120924202314.GA9472@obsidianresearch.com \
    --to=jgunthorpe-epgobjl8dl3ta4ec/59zmfatqe2ktcn/@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.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.