driver core: Export device_driver_attach()
authorJason Gunthorpe <jgg@nvidia.com>
Thu, 17 Jun 2021 14:22:13 +0000 (16:22 +0200)
committerAlex Williamson <alex.williamson@redhat.com>
Mon, 21 Jun 2021 21:29:24 +0000 (15:29 -0600)
commit0d9f837c6958a4c14e6bcb5c5edf6c851d65f507
tree30c5b1dc14390440c27b42cc2309ad0258074e87
parent45ddcb42949f825f0caa25352e825cede94b6aba
driver core: Export device_driver_attach()

This is intended as a replacement API for device_bind_driver(). It has at
least the following benefits:

- Internal locking. Few of the users of device_bind_driver() follow the
  locking rules

- Calls device driver probe() internally. Notably this means that devm
  support for probe works correctly as probe() error will call
  devres_release_all()

- struct device_driver -> dev_groups is supported

- Simplified calling convention, no need to manually call probe().

The general usage is for situations that already know what driver to bind
and need to ensure the bind is synchronized with other logic. Call
device_driver_attach() after device_add().

If probe() returns a failure then this will be preserved up through to the
error return of device_driver_attach().

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20210617142218.1877096-6-hch@lst.de
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/base/base.h
drivers/base/dd.c
include/linux/device.h