All of lore.kernel.org
 help / color / mirror / Atom feed
From: Parav Pandit <parav@nvidia.com>
To: Jason Gunthorpe <jgg@nvidia.com>, Greg KH <gregkh@linuxfoundation.org>
Cc: "alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>,
	Kiran Patil <kiran.patil@intel.com>,
	"tiwai@suse.de" <tiwai@suse.de>,
	"ranjani.sridharan@intel.com" <ranjani.sridharan@intel.com>,
	"pierre-louis.bossart@linux.intel.com"
	<pierre-louis.bossart@linux.intel.com>,
	Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
	Fred Oh <fred.oh@linux.intel.com>,
	"broonie@kernel.org" <broonie@kernel.org>,
	Dave Ertman <david.m.ertman@intel.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Shiraz Saleem <shiraz.saleem@intel.com>,
	Parav Pandit <parav@mellanox.com>
Subject: RE: [PATCH 1/6] Add ancillary bus support
Date: Thu, 1 Oct 2020 14:39:06 +0000	[thread overview]
Message-ID: <BY5PR12MB4322699D73AABCA62ED07BECDC300@BY5PR12MB4322.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20201001143334.GA1103926@nvidia.com>


> From: Jason Gunthorpe <jgg@nvidia.com>
> Sent: Thursday, October 1, 2020 8:04 PM
> 
> On Thu, Oct 01, 2020 at 02:14:23PM +0200, Greg KH wrote:
> > On Thu, Oct 01, 2020 at 08:58:47AM -0300, Jason Gunthorpe wrote:
> > > On Thu, Oct 01, 2020 at 01:05:51PM +0200, Greg KH wrote:
> > >
> > > > You have to be _VERY_ careful after calling
> > > > ancillary_device_initialize(), as now you can not just free up the
> > > > memory if something goes wrong before ancillary_device_add() is
> > > > called, right?
> > >
> > > I've looked at way too many versions of this patch and related. This
> > > is the only one so far that I didn't find various bugs on the error
> > > cases.
> >
> > But you haven't seen the callers of this function.  Without this
> > documented, you will have problems.
> 
> I've seen the Intel irdma, both versions of the SOF stuff and an internal mlx5
> patch..
> 
> Look at the SOF example, it has perfectly paired error unwinds. Each function
> has unwind that cleans up exactly what it creates. Every 'free' unwind is
> paired with an 'alloc' in the same function. Simple.
> Easy to audit. Easy to correctly enhance down the road.
> 
> This is the common kernel goto error design pattern.
> 
> > Why is this two-step process even needed here?
> 
> Initializing the refcount close to the allocation is a common design pattern as
> is initializing it close to registration. Both options are tricky, both have various
> common subtle bugs, both have awkward elements.
> 
> At the end of the day, after something like 20 iterations, this is the first series
> that actually doesn't have error unwind bugs.
> 
> Can we empower Dave to make this choice? It is not like it is wild or weird,
> the driver core already exposes _initialize and _add functions that work in
> exactly the same way.
> 

> > Why is this two-step process even needed here?
> > Without this documented, you will have problems.

And it is also documented in "Ancillary device" section in the Documentation/driver-api/ancillary_bus.rst
Below is the snippet from the patch.

It is likely worth to add this part of the documentation using standard kernel kdoc format where export function definition of initialize() and add() resides, so that it cannot be missed out.

+Registering an ancillary_device is a two-step process.  First you must 
+call ancillary_device_initialize(), which will check several aspects of 
+the ancillary_device struct and perform a device_initialize().  After 
+this step completes, any error state must have a call to put_device() 
                                                                                                    ^^^^^^^^^^^^
+in its resolution path.  The second step in registering an 
 +ancillary_device is to perform a call to ancillary_device_add(), which 
+will set the name of the device and add the device to the bus.


  parent reply	other threads:[~2020-10-03  9:07 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-30 22:50 [PATCH 0/6] Ancillary bus implementation and SOF multi-client support Dave Ertman
2020-09-30 22:50 ` [PATCH 1/6] Add ancillary bus support Dave Ertman
2020-09-30 23:05   ` Jason Gunthorpe
2020-10-01 11:01   ` Greg KH
2020-10-01 11:46     ` Jason Gunthorpe
2020-10-01 11:54       ` Greg KH
2020-10-01 12:02         ` Jason Gunthorpe
2020-10-01 12:15           ` Greg KH
2020-10-01 18:26             ` Ertman, David M
2020-10-01 11:02   ` Greg KH
2020-10-01 16:30     ` Ertman, David M
2020-10-01 11:05   ` Greg KH
2020-10-01 11:58     ` Jason Gunthorpe
2020-10-01 12:14       ` Greg KH
2020-10-01 14:33         ` Jason Gunthorpe
2020-10-01 14:38           ` Greg KH
2020-10-01 16:06             ` Pierre-Louis Bossart
2020-10-01 17:42             ` Jason Gunthorpe
2020-10-01 14:39           ` Parav Pandit [this message]
2020-10-01 14:43             ` Greg KH
2020-10-01 13:27   ` Mark Brown
2020-09-30 22:50 ` [PATCH 2/6] ASoC: SOF: Introduce descriptors for SOF client Dave Ertman
2020-10-01 13:02   ` Greg KH
2020-10-01 15:59     ` Sridharan, Ranjani
2020-10-01 22:16     ` Sridharan, Ranjani
2020-10-02  4:53       ` gregkh
2020-10-02 17:07         ` Sridharan, Ranjani
2020-10-03  9:02           ` gregkh
2020-10-05  2:35             ` Sridharan, Ranjani
2020-10-05 11:27               ` gregkh
2020-10-05 15:18                 ` Pierre-Louis Bossart
2020-10-05 15:32                   ` gregkh
2020-10-01 13:38   ` Mark Brown
2020-10-01 16:48     ` Sridharan, Ranjani
2020-09-30 22:50 ` [PATCH 3/6] ASoC: SOF: Create client driver for IPC test Dave Ertman
2020-10-01 13:04   ` Greg KH
2020-10-01 16:46     ` Sridharan, Ranjani
2020-10-01 13:09   ` Greg KH
2020-10-01 13:55     ` Pierre-Louis Bossart
2020-10-01 16:48       ` Ertman, David M
2020-10-01 13:59   ` Mark Brown
2020-09-30 22:50 ` [PATCH 4/6] ASoC: SOF: ops: Add ops for client registration Dave Ertman
2020-09-30 22:50 ` [PATCH 5/6] ASoC: SOF: Intel: Define " Dave Ertman
2020-09-30 22:50 ` [PATCH 6/6] ASoC: SOF: debug: Remove IPC flood test support in SOF core Dave Ertman
2020-10-01  5:58 ` [PATCH 0/6] Ancillary bus implementation and SOF multi-client support Greg KH
2020-10-01 15:54   ` Ertman, David M
2020-10-01  7:14 ` Greg KH
2020-10-01 15:55   ` Ertman, David M
2020-10-01 16:10     ` Greg KH
2020-10-01 17:13       ` Ertman, David M
2020-10-02 20:23   ` Ertman, David M
2020-10-03  9:08     ` Greg KH
2020-10-03  9:09       ` Greg KH
2020-10-04  2:26       ` Parav Pandit
2020-10-04 23:45       ` Williams, Dan J
2020-10-05  1:18         ` Ertman, David M
2020-10-05  2:39           ` Parav Pandit
2020-10-05 11:25         ` gregkh
2020-10-06 22:40           ` Dan Williams
2020-10-07  9:14             ` gregkh
2020-10-07 16:19               ` Dan Williams
2020-10-07 16:22                 ` Mark Brown
2020-10-07 16:41                   ` Dan Williams
2020-10-07 16:42                   ` Pierre-Louis Bossart
2020-10-07 16:56                     ` Parav Pandit
2020-10-01 10:05 ` Rojewski, Cezary
2020-10-01 10:59   ` gregkh
2020-10-01 12:49     ` Jason Gunthorpe
2020-10-01 12:55       ` gregkh
2020-10-01 13:26         ` Jason Gunthorpe
2020-10-01 14:17           ` gregkh
2020-10-01 15:08         ` Parav Pandit
2020-10-01 12:50 ` Mark Brown
2020-10-01 13:12   ` Greg KH
2020-10-01 13:42     ` Jason Gunthorpe
2020-10-01 14:40     ` Mark Brown
2020-10-01 15:32       ` Greg KH
2020-10-01 16:03         ` Mark Brown
2020-10-01 18:16           ` Greg KH
2020-10-01 18:29             ` Ertman, David M
2020-10-01 19:38               ` Mark Brown
2020-10-01 19:54                 ` Ertman, David M
2020-10-01 20:17                   ` Mark Brown
2020-10-02  0:47                     ` Jason Gunthorpe
2020-10-02 11:19                       ` Mark Brown
2020-10-02 17:23                         ` Ertman, David M
2020-10-02 17:25                           ` Jason Gunthorpe
2020-10-02 17:44                             ` Mark Brown
2020-10-01 14:07   ` Pierre-Louis Bossart
2020-10-01 15:24     ` Mark Brown
2020-10-01 16:20       ` Pierre-Louis Bossart
2020-10-01 16:51         ` Mark Brown
2020-10-01 18:04           ` Jason Gunthorpe
2020-10-01 18:13             ` Greg KH
2020-10-01 19:23             ` Mark Brown
2020-10-01 16:50     ` Ertman, David M
2020-10-01 17:10       ` Mark Brown
2020-10-01 17:16         ` Ertman, David M
2020-10-01 17:52 ` Ertman, David M
2020-10-01  5:05 Dave Ertman
2020-10-01  5:05 ` [PATCH 1/6] Add ancillary bus support Dave Ertman
2020-10-01  8:32   ` Leon Romanovsky
2020-10-01 17:20     ` Ertman, David M
2020-10-01 17:40       ` Leon Romanovsky
2020-10-01 18:29         ` Parav Pandit
2020-10-01 19:32           ` Leon Romanovsky
2020-10-02  5:29             ` Parav Pandit
2020-10-02  6:20               ` Leon Romanovsky
2020-10-02  8:42                 ` Parav Pandit
2020-10-02 11:13                   ` Leon Romanovsky
2020-10-02 11:27                     ` Parav Pandit
2020-10-02 11:45                       ` Leon Romanovsky
2020-10-02 11:56                         ` Parav Pandit
2020-10-01  5:08 [PATCH 0/6] Ancillary bus implementation and SOF multi-client support Dave Ertman
2020-10-01  5:08 ` [PATCH 1/6] Add ancillary bus support Dave Ertman

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=BY5PR12MB4322699D73AABCA62ED07BECDC300@BY5PR12MB4322.namprd12.prod.outlook.com \
    --to=parav@nvidia.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=dan.j.williams@intel.com \
    --cc=david.m.ertman@intel.com \
    --cc=fred.oh@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jgg@nvidia.com \
    --cc=kiran.patil@intel.com \
    --cc=parav@mellanox.com \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=ranjani.sridharan@intel.com \
    --cc=ranjani.sridharan@linux.intel.com \
    --cc=shiraz.saleem@intel.com \
    --cc=tiwai@suse.de \
    /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.