All of lore.kernel.org
 help / color / mirror / Atom feed
From: Moritz Fischer <mdf@kernel.org>
To: "Wu, Hao" <hao.wu@intel.com>
Cc: Moritz Fischer <mdf@kernel.org>,
	"linux-fpga@vger.kernel.org" <linux-fpga@vger.kernel.org>,
	"trix@redhat.com" <trix@redhat.com>,
	"michal.simek@xilinx.com" <michal.simek@xilinx.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"Weight, Russell H" <russell.h.weight@intel.com>,
	"Gerlach, Matthew" <matthew.gerlach@intel.com>
Subject: Re: [PATCH 01/10] fpga: fpga-mgr: Add devm_fpga_mgr_register() API
Date: Mon, 5 Oct 2020 09:45:57 -0700	[thread overview]
Message-ID: <20201005164557.GA157831@epycbox.lan> (raw)
In-Reply-To: <DM6PR11MB3819DC09D49EBE947F558F36850C0@DM6PR11MB3819.namprd11.prod.outlook.com>

Hi Hao,

On Mon, Oct 05, 2020 at 05:18:40AM +0000, Wu, Hao wrote:
> > Subject: [PATCH 01/10] fpga: fpga-mgr: Add devm_fpga_mgr_register() API
> > 
> > Add a devm_fpga_mgr_register() API that can be used to register a FPGA
> > Manager that was created using devm_fpga_mgr_create().
> > 
> > Introduce a struct fpga_mgr_devres that makes the devres
> > allocation a little bit more readable and gets reused for
> > devm_fpga_mgr_create() devm_fpga_mgr_register().
> > 
> > Signed-off-by: Moritz Fischer <mdf@kernel.org>
> > ---
> >  drivers/fpga/fpga-mgr.c       | 76 ++++++++++++++++++++++++++++++-----
> >  include/linux/fpga/fpga-mgr.h |  2 +
> >  2 files changed, 68 insertions(+), 10 deletions(-)
> > 
> > diff --git a/drivers/fpga/fpga-mgr.c b/drivers/fpga/fpga-mgr.c
> > index f38bab01432e..774ac98fb69c 100644
> > --- a/drivers/fpga/fpga-mgr.c
> > +++ b/drivers/fpga/fpga-mgr.c
> > @@ -21,6 +21,10 @@
> >  static DEFINE_IDA(fpga_mgr_ida);
> >  static struct class *fpga_mgr_class;
> > 
> > +struct fpga_mgr_devres {
> > +	struct fpga_manager *mgr;
> > +};
> > +
> >  /**
> >   * fpga_image_info_alloc - Allocate a FPGA image info struct
> >   * @dev: owning device
> > @@ -651,21 +655,21 @@ struct fpga_manager
> > *devm_fpga_mgr_create(struct device *dev, const char *name,
> >  					  const struct fpga_manager_ops
> > *mops,
> >  					  void *priv)
> >  {
> > -	struct fpga_manager **ptr, *mgr;
> > +	struct fpga_mgr_devres *dr;
> > 
> > -	ptr = devres_alloc(devm_fpga_mgr_release, sizeof(*ptr),
> > GFP_KERNEL);
> > -	if (!ptr)
> > +	dr = devres_alloc(devm_fpga_mgr_release, sizeof(*dr), GFP_KERNEL);
> 
> Should we update devm_fpga_mgr_release function to use fpga_mgr_devres as well?
Yes!
> 
> > +	if (!dr)
> >  		return NULL;
> > 
> > -	mgr = fpga_mgr_create(dev, name, mops, priv);
> > -	if (!mgr) {
> > -		devres_free(ptr);
> > -	} else {
> > -		*ptr = mgr;
> > -		devres_add(dev, ptr);
> > +	dr->mgr = fpga_mgr_create(dev, name, mops, priv);
> > +	if (!dr->mgr) {
> > +		devres_free(dr);
> > +		return NULL;
> >  	}
> > 
> > -	return mgr;
> > +	devres_add(dev, dr);
> > +
> > +	return dr->mgr;
> >  }
> >  EXPORT_SYMBOL_GPL(devm_fpga_mgr_create);
> > 
> > @@ -722,6 +726,58 @@ void fpga_mgr_unregister(struct fpga_manager
> > *mgr)
> >  }
> >  EXPORT_SYMBOL_GPL(fpga_mgr_unregister);
> > 
> > +static int fpga_mgr_devres_match(struct device *dev, void *priv,
> 
> Maybe it's better to use "res" instead of "priv" which matches the
> dr_match_t, and also devm_fpga_mgr_release function. 
Can do.
> 
> > +				 void *match_data)
> > +{
> > +	struct fpga_mgr_devres *dr = priv;
> > +
> > +	return match_data == dr->mgr;
> > +}
> > +
> > +static void devm_fpga_mgr_unregister(struct device *dev, void *priv)
> > +{
> 
> Same.
Ditto.
> 
> > +	struct fpga_mgr_devres *dr = priv;
> > +
> > +	fpga_mgr_unregister(dr->mgr);
> > +}
> > +
> > +/**
> > + * devm_fpga_mgr_register - resource managed variant of
> > fpga_mgr_register()
> > + * @dev: managing device for this FPGA manager
> > + * @mgr: fpga manager struct
> > + *
> > + * This is the devres variant of fpga_mgr_register() for which the unregister
> > + * function will be called automatically when the managing device is
> > detached.
> > + */
> > +int devm_fpga_mgr_register(struct device *dev, struct fpga_manager *mgr)
> > +{
> > +	struct fpga_mgr_devres *dr;
> > +	int err;
> > +
> > +	/* Make sure that the struct fpga_manager * that is passed in is
> > +	 * managed itself.
> > +	 */
> 
> Should we use the same style for code comments here, 
> I see other places in this file are using style like
Can do.
> 
> /*
>   * ......
>   */
> 
> Thanks
> Hao
Thanks,
Moritz

WARNING: multiple messages have this Message-ID
From: Moritz Fischer <mdf@kernel.org>
To: "Wu, Hao" <hao.wu@intel.com>
Cc: "Weight, Russell H" <russell.h.weight@intel.com>,
	"trix@redhat.com" <trix@redhat.com>,
	"linux-fpga@vger.kernel.org" <linux-fpga@vger.kernel.org>,
	"michal.simek@xilinx.com" <michal.simek@xilinx.com>,
	"Gerlach, Matthew" <matthew.gerlach@intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Moritz Fischer <mdf@kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 01/10] fpga: fpga-mgr: Add devm_fpga_mgr_register() API
Date: Mon, 5 Oct 2020 09:45:57 -0700	[thread overview]
Message-ID: <20201005164557.GA157831@epycbox.lan> (raw)
In-Reply-To: <DM6PR11MB3819DC09D49EBE947F558F36850C0@DM6PR11MB3819.namprd11.prod.outlook.com>

Hi Hao,

On Mon, Oct 05, 2020 at 05:18:40AM +0000, Wu, Hao wrote:
> > Subject: [PATCH 01/10] fpga: fpga-mgr: Add devm_fpga_mgr_register() API
> > 
> > Add a devm_fpga_mgr_register() API that can be used to register a FPGA
> > Manager that was created using devm_fpga_mgr_create().
> > 
> > Introduce a struct fpga_mgr_devres that makes the devres
> > allocation a little bit more readable and gets reused for
> > devm_fpga_mgr_create() devm_fpga_mgr_register().
> > 
> > Signed-off-by: Moritz Fischer <mdf@kernel.org>
> > ---
> >  drivers/fpga/fpga-mgr.c       | 76 ++++++++++++++++++++++++++++++-----
> >  include/linux/fpga/fpga-mgr.h |  2 +
> >  2 files changed, 68 insertions(+), 10 deletions(-)
> > 
> > diff --git a/drivers/fpga/fpga-mgr.c b/drivers/fpga/fpga-mgr.c
> > index f38bab01432e..774ac98fb69c 100644
> > --- a/drivers/fpga/fpga-mgr.c
> > +++ b/drivers/fpga/fpga-mgr.c
> > @@ -21,6 +21,10 @@
> >  static DEFINE_IDA(fpga_mgr_ida);
> >  static struct class *fpga_mgr_class;
> > 
> > +struct fpga_mgr_devres {
> > +	struct fpga_manager *mgr;
> > +};
> > +
> >  /**
> >   * fpga_image_info_alloc - Allocate a FPGA image info struct
> >   * @dev: owning device
> > @@ -651,21 +655,21 @@ struct fpga_manager
> > *devm_fpga_mgr_create(struct device *dev, const char *name,
> >  					  const struct fpga_manager_ops
> > *mops,
> >  					  void *priv)
> >  {
> > -	struct fpga_manager **ptr, *mgr;
> > +	struct fpga_mgr_devres *dr;
> > 
> > -	ptr = devres_alloc(devm_fpga_mgr_release, sizeof(*ptr),
> > GFP_KERNEL);
> > -	if (!ptr)
> > +	dr = devres_alloc(devm_fpga_mgr_release, sizeof(*dr), GFP_KERNEL);
> 
> Should we update devm_fpga_mgr_release function to use fpga_mgr_devres as well?
Yes!
> 
> > +	if (!dr)
> >  		return NULL;
> > 
> > -	mgr = fpga_mgr_create(dev, name, mops, priv);
> > -	if (!mgr) {
> > -		devres_free(ptr);
> > -	} else {
> > -		*ptr = mgr;
> > -		devres_add(dev, ptr);
> > +	dr->mgr = fpga_mgr_create(dev, name, mops, priv);
> > +	if (!dr->mgr) {
> > +		devres_free(dr);
> > +		return NULL;
> >  	}
> > 
> > -	return mgr;
> > +	devres_add(dev, dr);
> > +
> > +	return dr->mgr;
> >  }
> >  EXPORT_SYMBOL_GPL(devm_fpga_mgr_create);
> > 
> > @@ -722,6 +726,58 @@ void fpga_mgr_unregister(struct fpga_manager
> > *mgr)
> >  }
> >  EXPORT_SYMBOL_GPL(fpga_mgr_unregister);
> > 
> > +static int fpga_mgr_devres_match(struct device *dev, void *priv,
> 
> Maybe it's better to use "res" instead of "priv" which matches the
> dr_match_t, and also devm_fpga_mgr_release function. 
Can do.
> 
> > +				 void *match_data)
> > +{
> > +	struct fpga_mgr_devres *dr = priv;
> > +
> > +	return match_data == dr->mgr;
> > +}
> > +
> > +static void devm_fpga_mgr_unregister(struct device *dev, void *priv)
> > +{
> 
> Same.
Ditto.
> 
> > +	struct fpga_mgr_devres *dr = priv;
> > +
> > +	fpga_mgr_unregister(dr->mgr);
> > +}
> > +
> > +/**
> > + * devm_fpga_mgr_register - resource managed variant of
> > fpga_mgr_register()
> > + * @dev: managing device for this FPGA manager
> > + * @mgr: fpga manager struct
> > + *
> > + * This is the devres variant of fpga_mgr_register() for which the unregister
> > + * function will be called automatically when the managing device is
> > detached.
> > + */
> > +int devm_fpga_mgr_register(struct device *dev, struct fpga_manager *mgr)
> > +{
> > +	struct fpga_mgr_devres *dr;
> > +	int err;
> > +
> > +	/* Make sure that the struct fpga_manager * that is passed in is
> > +	 * managed itself.
> > +	 */
> 
> Should we use the same style for code comments here, 
> I see other places in this file are using style like
Can do.
> 
> /*
>   * ......
>   */
> 
> Thanks
> Hao
Thanks,
Moritz

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2020-10-05 16:46 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-04  5:14 [PATCH 00/10] Introduce devm_fpga_mgr_register() Moritz Fischer
2020-10-04  5:14 ` Moritz Fischer
2020-10-04  5:14 ` [PATCH 01/10] fpga: fpga-mgr: Add devm_fpga_mgr_register() API Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:08   ` Tom Rix
2020-10-04 18:08     ` Tom Rix
2020-10-05  5:18   ` Wu, Hao
2020-10-05  5:18     ` Wu, Hao
2020-10-05 16:45     ` Moritz Fischer [this message]
2020-10-05 16:45       ` Moritz Fischer
2020-10-04  5:14 ` [PATCH 02/10] fpga: fpga-mgr: altera-ps-spi: Simplify registration Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:15   ` Tom Rix
2020-10-04 18:15     ` Tom Rix
2020-10-04  5:14 ` [PATCH 03/10] fpga: fpga-mgr: dfl-fme-mgr: " Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:22   ` Tom Rix
2020-10-04 18:22     ` Tom Rix
2020-10-04 23:40     ` Moritz Fischer
2020-10-04 23:40       ` Moritz Fischer
2020-10-04  5:14 ` [PATCH 04/10] fpga: fpga-mgr: ice40-spi: " Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:24   ` Tom Rix
2020-10-04 18:24     ` Tom Rix
2020-10-04  5:14 ` [PATCH 05/10] fpga: fpga-mgr: machxo2-spi: " Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:25   ` Tom Rix
2020-10-04 18:25     ` Tom Rix
2020-10-04  5:14 ` [PATCH 06/10] fpga: fpga-mgr: socfpga: " Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:27   ` Tom Rix
2020-10-04 18:27     ` Tom Rix
2020-10-04  5:14 ` [PATCH 07/10] fpga: fpga-mgr: ts73xx: " Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:27   ` Tom Rix
2020-10-04 18:27     ` Tom Rix
2020-10-04  5:14 ` [PATCH 08/10] fpga: fpga-mgr: xilinx-spi: " Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:28   ` Tom Rix
2020-10-04 18:28     ` Tom Rix
2020-10-04  5:14 ` [PATCH 09/10] fpga: fpga-mgr: zynqmp: " Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:33   ` Tom Rix
2020-10-04 18:33     ` Tom Rix
2020-10-04  5:14 ` [PATCH 10/10] fpga: fpga-mgr: altera-pr-ip: " Moritz Fischer
2020-10-04  5:14   ` Moritz Fischer
2020-10-04 18:47   ` Tom Rix
2020-10-04 18:47     ` Tom Rix
2020-10-04 23:39     ` Moritz Fischer
2020-10-04 23:39       ` Moritz Fischer
2020-11-03  7:14 [PATCH 00/10] Introduce devm_fpga_mgr_register() API Moritz Fischer
2020-11-03  7:14 ` [PATCH 01/10] fpga: fpga-mgr: Add " Moritz Fischer

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=20201005164557.GA157831@epycbox.lan \
    --to=mdf@kernel.org \
    --cc=hao.wu@intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-fpga@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew.gerlach@intel.com \
    --cc=michal.simek@xilinx.com \
    --cc=russell.h.weight@intel.com \
    --cc=trix@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.