public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: Doug Ledford <dledford@redhat.com>,
	linux-rdma@vger.kernel.org, Kees Cook <keescook@chromium.org>,
	Nathan Chancellor <nathan@kernel.org>
Subject: Re: [PATCH 09/13] RDMA/core: Expose the ib port sysfs attribute machinery
Date: Mon, 17 May 2021 19:12:55 +0200	[thread overview]
Message-ID: <YKKkFyHwki9R1Wkc@kroah.com> (raw)
In-Reply-To: <9-v1-34c90fa45f1c+3c7b0-port_sysfs_jgg@nvidia.com>

On Mon, May 17, 2021 at 01:47:37PM -0300, Jason Gunthorpe wrote:
> Other things outside the core code are creating attributes against the
> port. This patch exposes the basic machinery to do this.
> 
> The ib_port_attribute type allows creating groups of attributes attatched
> to the port and comes with the usual machinery to do this.
> 
> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> ---
>  drivers/infiniband/core/sysfs.c | 217 +++++++++++++++++---------------
>  include/rdma/ib_sysfs.h         |  41 ++++++
>  2 files changed, 158 insertions(+), 100 deletions(-)
>  create mode 100644 include/rdma/ib_sysfs.h
> 
> diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
> index ce6aecbb5a7616..58a45548bf1568 100644
> --- a/drivers/infiniband/core/sysfs.c
> +++ b/drivers/infiniband/core/sysfs.c
> @@ -44,24 +44,10 @@
>  #include <rdma/ib_pma.h>
>  #include <rdma/ib_cache.h>
>  #include <rdma/rdma_counter.h>
> -
> -struct ib_port;
> -
> -struct port_attribute {
> -	struct attribute attr;
> -	ssize_t (*show)(struct ib_port *, struct port_attribute *, char *buf);
> -	ssize_t (*store)(struct ib_port *, struct port_attribute *,
> -			 const char *buf, size_t count);
> -};
> -
> -#define PORT_ATTR(_name, _mode, _show, _store) \
> -struct port_attribute port_attr_##_name = __ATTR(_name, _mode, _show, _store)
> -
> -#define PORT_ATTR_RO(_name) \
> -struct port_attribute port_attr_##_name = __ATTR_RO(_name)
> +#include <rdma/ib_sysfs.h>
>  
>  struct port_table_attribute {
> -	struct port_attribute	attr;
> +	struct ib_port_attribute attr;
>  	char			name[8];
>  	int			index;
>  	__be16			attr_id;
> @@ -97,7 +83,7 @@ struct hw_stats_device_attribute {
>  };
>  
>  struct hw_stats_port_attribute {
> -	struct port_attribute attr;
> +	struct ib_port_attribute attr;
>  	ssize_t (*show)(struct ib_device *ibdev, struct rdma_hw_stats *stats,
>  			unsigned int index, unsigned int port_num, char *buf);
>  	ssize_t (*store)(struct ib_device *ibdev, struct rdma_hw_stats *stats,
> @@ -119,29 +105,55 @@ struct hw_stats_port_data {
>  static ssize_t port_attr_show(struct kobject *kobj,
>  			      struct attribute *attr, char *buf)
>  {
> -	struct port_attribute *port_attr =
> -		container_of(attr, struct port_attribute, attr);
> +	struct ib_port_attribute *port_attr =
> +		container_of(attr, struct ib_port_attribute, attr);
>  	struct ib_port *p = container_of(kobj, struct ib_port, kobj);
>  
>  	if (!port_attr->show)
>  		return -EIO;
>  
> -	return port_attr->show(p, port_attr, buf);
> +	return port_attr->show(p->ibdev, p->port_num, port_attr, buf);
>  }
>  
>  static ssize_t port_attr_store(struct kobject *kobj,
>  			       struct attribute *attr,
>  			       const char *buf, size_t count)
>  {
> -	struct port_attribute *port_attr =
> -		container_of(attr, struct port_attribute, attr);
> +	struct ib_port_attribute *port_attr =
> +		container_of(attr, struct ib_port_attribute, attr);
>  	struct ib_port *p = container_of(kobj, struct ib_port, kobj);
>  
>  	if (!port_attr->store)
>  		return -EIO;
> -	return port_attr->store(p, port_attr, buf, count);
> +	return port_attr->store(p->ibdev, p->port_num, port_attr, buf, count);
>  }
>  
> +int ib_port_sysfs_create_groups(struct ib_device *ibdev, u32 port_num,
> +				const struct attribute_group **groups)
> +{
> +	return sysfs_create_groups(&ibdev->port_data[port_num].sysfs->kobj,
> +				   groups);
> +}
> +EXPORT_SYMBOL(ib_port_sysfs_create_groups);

You are wrapping _GPL symbols here with a "convenience" function, please
make these all EXPORT_SYMBOL_GPL() so I don't get nervous.

thanks,

greg k-h

  reply	other threads:[~2021-05-17 17:13 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-17 16:47 [PATCH 00/13] Reorganize sysfs file creation for struct ib_devices Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 01/13] RDMA: Split the alloc_hw_stats() ops to port and device variants Jason Gunthorpe
2021-05-17 23:06   ` Saleem, Shiraz
2021-05-17 23:10     ` Jason Gunthorpe
2021-05-18  0:18       ` Saleem, Shiraz
2021-05-18  0:20         ` Jason Gunthorpe
2021-05-18 21:58           ` Saleem, Shiraz
2021-05-19 12:25             ` Jason Gunthorpe
2021-05-19 16:50               ` Saleem, Shiraz
2021-05-18  3:49   ` Mark Zhang
2021-05-19  1:10     ` Saleem, Shiraz
2021-05-20 16:29     ` Jason Gunthorpe
2021-05-19 11:29   ` Gal Pressman
2021-05-19 13:44     ` Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 02/13] RDMA/core: Replace the ib_port_data hw_stats pointers with a ib_port pointer Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 03/13] RDMA/core: Split port and device counter sysfs attributes Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 04/13] RDMA/core: Split gid_attrs related sysfs from add_port() Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 05/13] RDMA/core: Simplify how the gid_attrs sysfs is created Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 06/13] RDMA/core: Simplify how the port " Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 07/13] RDMA/core: Create the device hw_counters through the normal groups mechanism Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 08/13] RDMA/core: Remove the kobject_uevent() NOP Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 09/13] RDMA/core: Expose the ib port sysfs attribute machinery Jason Gunthorpe
2021-05-17 17:12   ` Greg KH [this message]
2021-05-17 17:31     ` Jason Gunthorpe
2021-05-17 17:37       ` Greg KH
2021-05-17 16:47 ` [PATCH 10/13] RDMA/cm: Use an attribute_group on the ib_port_attribute intead of kobj's Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 11/13] RDMA/qib: Use attributes for the port sysfs Jason Gunthorpe
2021-05-17 17:11   ` Greg KH
2021-05-17 17:13     ` Jason Gunthorpe
2021-05-17 17:31       ` Greg KH
2021-05-17 18:44         ` Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 12/13] RDMA/hfi1: " Jason Gunthorpe
2021-05-17 16:47 ` [PATCH 13/13] RDMA: Change ops->init_port to ops->get_port_groups Jason Gunthorpe
2021-05-18 23:07 ` [PATCH 00/13] Reorganize sysfs file creation for struct ib_devices Nathan Chancellor
2021-05-19 13:46   ` 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=YKKkFyHwki9R1Wkc@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=dledford@redhat.com \
    --cc=jgg@nvidia.com \
    --cc=keescook@chromium.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=nathan@kernel.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