All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/13] Reorganize sysfs file creation for struct ib_devices
@ 2021-05-17 16:47 Jason Gunthorpe
  2021-05-17 16:47 ` [PATCH 01/13] RDMA: Split the alloc_hw_stats() ops to port and device variants Jason Gunthorpe
                   ` (13 more replies)
  0 siblings, 14 replies; 35+ messages in thread
From: Jason Gunthorpe @ 2021-05-17 16:47 UTC (permalink / raw)
  To: Potnuri Bharat Teja, clang-built-linux, Dennis Dalessandro,
	Devesh Sharma, Doug Ledford, Faisal Latif, Gal Pressman,
	Leon Romanovsky, linux-rdma, Mike Marciniszyn, Naresh Kumar PBS,
	Nick Desaulniers, Selvin Xavier, Shiraz Saleem, Yossi Leybovich,
	Somnath Kotur, Sriharsha Basavapatna, Yishai Hadas, Zhu Yanjun
  Cc: Greg KH, Kees Cook, Nathan Chancellor

IB has a complex sysfs with a deep nesting of attributes. Nathan and Kees
recently noticed this was not even slightly sane with how it was handling
attributes and a deeper inspection shows the whole thing is a pretty
"ick" coding style.

Further review shows the ick extends outward from the ib_port sysfs and
basically everything is pretty crazy.

Simplify all of it:

 - Organize the ib_port and gid_attr's kobj's to have clear setup/destroy
   function pairings that work only on their own kobjs.

 - All memory allocated in service of a kobject's attributes is freed as
   part of the kobj release function. Thus all the error handling defers
   the memory frees to a put.

 - Build up lists of groups for every kobject and add the entire group
   list as a one-shot operation as the last thing in setup function.

 - Remove essentially all the error cleanup. The final kobject_put() will
   always free any memory allocated or do an internal kobject_del() if
   required. The new ordering eliminates all the other cleanup cases.

 - Make all attributes use proper typing for the kobj they are attached
   to. Split device and port hw_stats handling.

 - Create a ib_port_attribute type and change hfi1, qib and the CM code to
   work with attribute lists of ib_port_attribute type instead of building
   their own kobject madness

This is sort of RFCy in that I qib and hfi1 stuff is complex enough it needs
Dennis to look at it, and the core stuff has only passed basic testing at this
moment. Nathan confirmed an earlier version solves the CFI warning.

Jason Gunthorpe (13):
  RDMA: Split the alloc_hw_stats() ops to port and device variants
  RDMA/core: Replace the ib_port_data hw_stats pointers with a ib_port
    pointer
  RDMA/core: Split port and device counter sysfs attributes
  RDMA/core: Split gid_attrs related sysfs from add_port()
  RDMA/core: Simplify how the gid_attrs sysfs is created
  RDMA/core: Simplify how the port sysfs is created
  RDMA/core: Create the device hw_counters through the normal groups
    mechanism
  RDMA/core: Remove the kobject_uevent() NOP
  RDMA/core: Expose the ib port sysfs attribute machinery
  RDMA/cm: Use an attribute_group on the ib_port_attribute intead of
    kobj's
  RDMA/qib: Use attributes for the port sysfs
  RDMA/hfi1: Use attributes for the port sysfs
  RDMA: Change ops->init_port to ops->get_port_groups

 drivers/infiniband/core/cm.c                |  227 ++--
 drivers/infiniband/core/core_priv.h         |   13 +-
 drivers/infiniband/core/counters.c          |    4 +-
 drivers/infiniband/core/device.c            |   18 +-
 drivers/infiniband/core/nldev.c             |   10 +-
 drivers/infiniband/core/sysfs.c             | 1100 +++++++++----------
 drivers/infiniband/hw/bnxt_re/hw_counters.c |    7 +-
 drivers/infiniband/hw/bnxt_re/hw_counters.h |    4 +-
 drivers/infiniband/hw/bnxt_re/main.c        |    2 +-
 drivers/infiniband/hw/cxgb4/provider.c      |    9 +-
 drivers/infiniband/hw/efa/efa.h             |    3 +-
 drivers/infiniband/hw/efa/efa_main.c        |    3 +-
 drivers/infiniband/hw/efa/efa_verbs.c       |   11 +-
 drivers/infiniband/hw/hfi1/hfi.h            |    8 +-
 drivers/infiniband/hw/hfi1/sysfs.c          |  531 ++++-----
 drivers/infiniband/hw/hfi1/verbs.c          |   88 +-
 drivers/infiniband/hw/i40iw/i40iw_verbs.c   |   19 +-
 drivers/infiniband/hw/mlx4/main.c           |   25 +-
 drivers/infiniband/hw/mlx5/counters.c       |   42 +-
 drivers/infiniband/hw/qib/qib.h             |   10 +-
 drivers/infiniband/hw/qib/qib_sysfs.c       |  608 +++++-----
 drivers/infiniband/hw/qib/qib_verbs.c       |    4 +-
 drivers/infiniband/sw/rdmavt/vt.c           |    2 +-
 drivers/infiniband/sw/rxe/rxe_hw_counters.c |    7 +-
 drivers/infiniband/sw/rxe/rxe_hw_counters.h |    4 +-
 drivers/infiniband/sw/rxe/rxe_verbs.c       |    2 +-
 include/rdma/ib_sysfs.h                     |   37 +
 include/rdma/ib_verbs.h                     |   34 +-
 28 files changed, 1307 insertions(+), 1525 deletions(-)
 create mode 100644 include/rdma/ib_sysfs.h

-- 
2.31.1


^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2021-05-20 16:29 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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

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.