All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ivan Orlov <ivan.orlov0322@gmail.com>
To: mdf@kernel.org, hao.wu@intel.com, yilun.xu@intel.com, trix@redhat.com
Cc: linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org,
	gregkh@linuxfoundation.org
Subject: Re: [PATCH v2 1/3] fpga: bridge: make fpga_bridge_class a static const structure
Date: Fri, 11 Aug 2023 11:33:07 +0400	[thread overview]
Message-ID: <4d41f54f-806c-9071-de68-6db69c3024da@gmail.com> (raw)
In-Reply-To: <20230811073043.52808-1-ivan.orlov0322@gmail.com>

On 8/11/23 11:30, Ivan Orlov wrote:
> Now that the driver core allows for struct class to be in read-only
> memory, move the fpga_bridge_class structure to be declared at build
> time placing it into read-only memory, instead of having to be
> dynamically allocated at boot time.
> 
> Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> 
> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
> ---
>   drivers/fpga/fpga-bridge.c | 25 ++++++++++++-------------
>   1 file changed, 12 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/fpga/fpga-bridge.c b/drivers/fpga/fpga-bridge.c
> index a6c25dee9cc1..fe93549d051d 100644
> --- a/drivers/fpga/fpga-bridge.c
> +++ b/drivers/fpga/fpga-bridge.c
> @@ -14,7 +14,7 @@
>   #include <linux/spinlock.h>
>   
>   static DEFINE_IDA(fpga_bridge_ida);
> -static struct class *fpga_bridge_class;
> +static const struct class fpga_bridge_class;
>   
>   /* Lock for adding/removing bridges to linked lists*/
>   static DEFINE_SPINLOCK(bridge_list_lock);
> @@ -99,7 +99,7 @@ struct fpga_bridge *of_fpga_bridge_get(struct device_node *np,
>   {
>   	struct device *dev;
>   
> -	dev = class_find_device_by_of_node(fpga_bridge_class, np);
> +	dev = class_find_device_by_of_node(&fpga_bridge_class, np);
>   	if (!dev)
>   		return ERR_PTR(-ENODEV);
>   
> @@ -126,7 +126,7 @@ struct fpga_bridge *fpga_bridge_get(struct device *dev,
>   {
>   	struct device *bridge_dev;
>   
> -	bridge_dev = class_find_device(fpga_bridge_class, NULL, dev,
> +	bridge_dev = class_find_device(&fpga_bridge_class, NULL, dev,
>   				       fpga_bridge_dev_match);
>   	if (!bridge_dev)
>   		return ERR_PTR(-ENODEV);
> @@ -359,7 +359,7 @@ fpga_bridge_register(struct device *parent, const char *name,
>   	bridge->priv = priv;
>   
>   	bridge->dev.groups = br_ops->groups;
> -	bridge->dev.class = fpga_bridge_class;
> +	bridge->dev.class = &fpga_bridge_class;
>   	bridge->dev.parent = parent;
>   	bridge->dev.of_node = parent->of_node;
>   	bridge->dev.id = id;
> @@ -415,21 +415,20 @@ static void fpga_bridge_dev_release(struct device *dev)
>   	kfree(bridge);
>   }
>   
> +static const struct class fpga_bridge_class = {
> +	.name = "fpga_bridge",
> +	.dev_groups = fpga_bridge_groups,
> +	.dev_release = fpga_bridge_dev_release,
> +};
> +
>   static int __init fpga_bridge_dev_init(void)
>   {
> -	fpga_bridge_class = class_create("fpga_bridge");
> -	if (IS_ERR(fpga_bridge_class))
> -		return PTR_ERR(fpga_bridge_class);
> -
> -	fpga_bridge_class->dev_groups = fpga_bridge_groups;
> -	fpga_bridge_class->dev_release = fpga_bridge_dev_release;
> -
> -	return 0;
> +	return class_register(&fpga_bridge_class);
>   }
>   
>   static void __exit fpga_bridge_dev_exit(void)
>   {
> -	class_destroy(fpga_bridge_class);
> +	class_unregister(&fpga_bridge_class);
>   	ida_destroy(&fpga_bridge_ida);
>   }
>   

And I forgot the changelog here.

V1 -> V2:
- Add forward declaration of fpga_bridge_class
- Move definition of fpga_bridge_class to more logical place

  parent reply	other threads:[~2023-08-11  7:34 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-11  7:30 [PATCH v2 1/3] fpga: bridge: make fpga_bridge_class a static const structure Ivan Orlov
2023-08-11  7:30 ` [PATCH v2 2/3] fpga: fpga-mgr: make fpga_mgr_class " Ivan Orlov
2023-08-11  7:33   ` Ivan Orlov
2023-08-11  7:30 ` [PATCH v2 3/3] fpga: region: make fpga_region_class " Ivan Orlov
2023-08-11  7:34   ` Ivan Orlov
2023-08-11  7:33 ` Ivan Orlov [this message]
2023-08-11 15:09 ` [PATCH v2 1/3] fpga: bridge: make fpga_bridge_class " Xu Yilun

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=4d41f54f-806c-9071-de68-6db69c3024da@gmail.com \
    --to=ivan.orlov0322@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hao.wu@intel.com \
    --cc=linux-fpga@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mdf@kernel.org \
    --cc=trix@redhat.com \
    --cc=yilun.xu@intel.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.