1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * bus.c - bus driver management 4 * 5 * Copyright (c) 2002-3 Patrick Mochel 6 * Copyright (c) 2002-3 Open Source Development Labs 7 * Copyright (c) 2007 Greg Kroah-Hartman <gregkh@suse.de> 8 * Copyright (c) 2007 Novell Inc. 9 * Copyright (c) 2023 Greg Kroah-Hartman <gregkh@linuxfoundation.org> 10 */ 11 12 #include <linux/async.h> 13 #include <linux/device/bus.h> 14 #include <linux/device.h> 15 #include <linux/module.h> 16 #include <linux/errno.h> 17 #include <linux/slab.h> 18 #include <linux/init.h> 19 #include <linux/string.h> 20 #include <linux/mutex.h> 21 #include <linux/sysfs.h> 22 #include "base.h" 23 #include "power/power.h" 24 25 /* /sys/devices/system */ 26 static struct kset *system_kset; 27 28 /* /sys/bus */ 29 static struct kset *bus_kset; 30 31 #define to_bus_attr(_attr) container_of(_attr, struct bus_attribute, attr) 32 33 /* 34 * sysfs bindings for drivers 35 */ 36 37 #define to_drv_attr(_attr) container_of(_attr, struct driver_attribute, attr) 38 39 #define DRIVER_ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store) \ 40 struct driver_attribute driver_attr_##_name = \ 41 __ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store) 42 43 static int __must_check bus_rescan_devices_helper(struct device *dev, 44 void *data); 45 46 /** 47 * bus_to_subsys - Turn a struct bus_type into a struct subsys_private 48 * 49 * @bus: pointer to the struct bus_type to look up 50 * 51 * The driver core internals needs to work on the subsys_private structure, not 52 * the external struct bus_type pointer. This function walks the list of 53 * registered busses in the system and finds the matching one and returns the 54 * internal struct subsys_private that relates to that bus. 55 * 56 * Note, the reference count of the return value is INCREMENTED if it is not 57 * NULL. A call to subsys_put() must be done when finished with the pointer in 58 * order for it to be properly freed. 59 */ 60 static struct subsys_private *bus_to_subsys(const struct bus_type *bus) 61 { 62 struct subsys_private *sp = NULL; 63 struct kobject *kobj; 64 65 if (!bus || !bus_kset) 66 return NULL; 67 68 spin_lock(&bus_kset->list_lock); 69 70 if (list_empty(&bus_kset->list)) 71 goto done; 72 73 list_for_each_entry(kobj, &bus_kset->list, entry) { 74 struct kset *kset = container_of(kobj, struct kset, kobj); 75 76 sp = container_of_const(kset, struct subsys_private, subsys); 77 if (sp->bus == bus) 78 goto done; 79 } 80 sp = NULL; 81 done: 82 sp = subsys_get(sp); 83 spin_unlock(&bus_kset->list_lock); 84 return sp; 85 } 86 87 static const struct bus_type *bus_get(const struct bus_type *bus) 88 { 89 struct subsys_private *sp = bus_to_subsys(bus); 90 91 if (sp) 92 return bus; 93 return NULL; 94 } 95 96 static void bus_put(const struct bus_type *bus) 97 { 98 struct subsys_private *sp = bus_to_subsys(bus); 99 100 /* two puts are required as the call to bus_to_subsys incremented it again */ 101 subsys_put(sp); 102 subsys_put(sp); 103 } 104 105 static ssize_t drv_attr_show(struct kobject *kobj, struct attribute *attr, 106 char *buf) 107 { 108 struct driver_attribute *drv_attr = to_drv_attr(attr); 109 struct driver_private *drv_priv = to_driver(kobj); 110 ssize_t ret = -EIO; 111 112 if (drv_attr->show) 113 ret = drv_attr->show(drv_priv->driver, buf); 114 return ret; 115 } 116 117 static ssize_t drv_attr_store(struct kobject *kobj, struct attribute *attr, 118 const char *buf, size_t count) 119 { 120 struct driver_attribute *drv_attr = to_drv_attr(attr); 121 struct driver_private *drv_priv = to_driver(kobj); 122 ssize_t ret = -EIO; 123 124 if (drv_attr->store) 125 ret = drv_attr->store(drv_priv->driver, buf, count); 126 return ret; 127 } 128 129 static const struct sysfs_ops driver_sysfs_ops = { 130 .show = drv_attr_show, 131 .store = drv_attr_store, 132 }; 133 134 static void driver_release(struct kobject *kobj) 135 { 136 struct driver_private *drv_priv = to_driver(kobj); 137 138 pr_debug("driver: '%s': %s\n", kobject_name(kobj), __func__); 139 kfree(drv_priv); 140 } 141 142 static const struct kobj_type driver_ktype = { 143 .sysfs_ops = &driver_sysfs_ops, 144 .release = driver_release, 145 }; 146 147 /* 148 * sysfs bindings for buses 149 */ 150 static ssize_t bus_attr_show(struct kobject *kobj, struct attribute *attr, 151 char *buf) 152 { 153 struct bus_attribute *bus_attr = to_bus_attr(attr); 154 struct subsys_private *subsys_priv = to_subsys_private(kobj); 155 /* return -EIO for reading a bus attribute without show() */ 156 ssize_t ret = -EIO; 157 158 if (bus_attr->show) 159 ret = bus_attr->show(subsys_priv->bus, buf); 160 return ret; 161 } 162 163 static ssize_t bus_attr_store(struct kobject *kobj, struct attribute *attr, 164 const char *buf, size_t count) 165 { 166 struct bus_attribute *bus_attr = to_bus_attr(attr); 167 struct subsys_private *subsys_priv = to_subsys_private(kobj); 168 /* return -EIO for writing a bus attribute without store() */ 169 ssize_t ret = -EIO; 170 171 if (bus_attr->store) 172 ret = bus_attr->store(subsys_priv->bus, buf, count); 173 return ret; 174 } 175 176 static const struct sysfs_ops bus_sysfs_ops = { 177 .show = bus_attr_show, 178 .store = bus_attr_store, 179 }; 180 181 int bus_create_file(const struct bus_type *bus, struct bus_attribute *attr) 182 { 183 struct subsys_private *sp = bus_to_subsys(bus); 184 int error; 185 186 if (!sp) 187 return -EINVAL; 188 189 error = sysfs_create_file(&sp->subsys.kobj, &attr->attr); 190 191 subsys_put(sp); 192 return error; 193 } 194 EXPORT_SYMBOL_GPL(bus_create_file); 195 196 void bus_remove_file(const struct bus_type *bus, struct bus_attribute *attr) 197 { 198 struct subsys_private *sp = bus_to_subsys(bus); 199 200 if (!sp) 201 return; 202 203 sysfs_remove_file(&sp->subsys.kobj, &attr->attr); 204 subsys_put(sp); 205 } 206 EXPORT_SYMBOL_GPL(bus_remove_file); 207 208 static void bus_release(struct kobject *kobj) 209 { 210 struct subsys_private *priv = to_subsys_private(kobj); 211 212 lockdep_unregister_key(&priv->lock_key); 213 kfree(priv); 214 } 215 216 static const struct kobj_type bus_ktype = { 217 .sysfs_ops = &bus_sysfs_ops, 218 .release = bus_release, 219 }; 220 221 static int bus_uevent_filter(const struct kobject *kobj) 222 { 223 const struct kobj_type *ktype = get_ktype(kobj); 224 225 if (ktype == &bus_ktype) 226 return 1; 227 return 0; 228 } 229 230 static const struct kset_uevent_ops bus_uevent_ops = { 231 .filter = bus_uevent_filter, 232 }; 233 234 /* Manually detach a device from its associated driver. */ 235 static ssize_t unbind_store(struct device_driver *drv, const char *buf, 236 size_t count) 237 { 238 const struct bus_type *bus = bus_get(drv->bus); 239 struct device *dev; 240 int err = -ENODEV; 241 242 dev = bus_find_device_by_name(bus, NULL, buf); 243 if (dev && dev->driver == drv) { 244 device_driver_detach(dev); 245 err = count; 246 } 247 put_device(dev); 248 bus_put(bus); 249 return err; 250 } 251 static DRIVER_ATTR_IGNORE_LOCKDEP(unbind, 0200, NULL, unbind_store); 252 253 /* 254 * Manually attach a device to a driver. 255 * Note: the driver must want to bind to the device, 256 * it is not possible to override the driver's id table. 257 */ 258 static ssize_t bind_store(struct device_driver *drv, const char *buf, 259 size_t count) 260 { 261 const struct bus_type *bus = bus_get(drv->bus); 262 struct device *dev; 263 int err = -ENODEV; 264 265 dev = bus_find_device_by_name(bus, NULL, buf); 266 if (dev && driver_match_device(drv, dev)) { 267 err = device_driver_attach(drv, dev); 268 if (!err) { 269 /* success */ 270 err = count; 271 } 272 } 273 put_device(dev); 274 bus_put(bus); 275 return err; 276 } 277 static DRIVER_ATTR_IGNORE_LOCKDEP(bind, 0200, NULL, bind_store); 278 279 static ssize_t drivers_autoprobe_show(const struct bus_type *bus, char *buf) 280 { 281 struct subsys_private *sp = bus_to_subsys(bus); 282 int ret; 283 284 if (!sp) 285 return -EINVAL; 286 287 ret = sysfs_emit(buf, "%d\n", sp->drivers_autoprobe); 288 subsys_put(sp); 289 return ret; 290 } 291 292 static ssize_t drivers_autoprobe_store(const struct bus_type *bus, 293 const char *buf, size_t count) 294 { 295 struct subsys_private *sp = bus_to_subsys(bus); 296 297 if (!sp) 298 return -EINVAL; 299 300 if (buf[0] == '0') 301 sp->drivers_autoprobe = 0; 302 else 303 sp->drivers_autoprobe = 1; 304 305 subsys_put(sp); 306 return count; 307 } 308 309 static ssize_t drivers_probe_store(const struct bus_type *bus, 310 const char *buf, size_t count) 311 { 312 struct device *dev; 313 int err = -EINVAL; 314 315 dev = bus_find_device_by_name(bus, NULL, buf); 316 if (!dev) 317 return -ENODEV; 318 if (bus_rescan_devices_helper(dev, NULL) == 0) 319 err = count; 320 put_device(dev); 321 return err; 322 } 323 324 static struct device *next_device(struct klist_iter *i) 325 { 326 struct klist_node *n = klist_next(i); 327 struct device *dev = NULL; 328 struct device_private *dev_prv; 329 330 if (n) { 331 dev_prv = to_device_private_bus(n); 332 dev = dev_prv->device; 333 } 334 return dev; 335 } 336 337 /** 338 * bus_for_each_dev - device iterator. 339 * @bus: bus type. 340 * @start: device to start iterating from. 341 * @data: data for the callback. 342 * @fn: function to be called for each device. 343 * 344 * Iterate over @bus's list of devices, and call @fn for each, 345 * passing it @data. If @start is not NULL, we use that device to 346 * begin iterating from. 347 * 348 * We check the return of @fn each time. If it returns anything 349 * other than 0, we break out and return that value. 350 * 351 * NOTE: The device that returns a non-zero value is not retained 352 * in any way, nor is its refcount incremented. If the caller needs 353 * to retain this data, it should do so, and increment the reference 354 * count in the supplied callback. 355 */ 356 int bus_for_each_dev(const struct bus_type *bus, struct device *start, 357 void *data, int (*fn)(struct device *, void *)) 358 { 359 struct subsys_private *sp = bus_to_subsys(bus); 360 struct klist_iter i; 361 struct device *dev; 362 int error = 0; 363 364 if (!sp) 365 return -EINVAL; 366 367 klist_iter_init_node(&sp->klist_devices, &i, 368 (start ? &start->p->knode_bus : NULL)); 369 while (!error && (dev = next_device(&i))) 370 error = fn(dev, data); 371 klist_iter_exit(&i); 372 subsys_put(sp); 373 return error; 374 } 375 EXPORT_SYMBOL_GPL(bus_for_each_dev); 376 377 /** 378 * bus_find_device - device iterator for locating a particular device. 379 * @bus: bus type 380 * @start: Device to begin with 381 * @data: Data to pass to match function 382 * @match: Callback function to check device 383 * 384 * This is similar to the bus_for_each_dev() function above, but it 385 * returns a reference to a device that is 'found' for later use, as 386 * determined by the @match callback. 387 * 388 * The callback should return 0 if the device doesn't match and non-zero 389 * if it does. If the callback returns non-zero, this function will 390 * return to the caller and not iterate over any more devices. 391 */ 392 struct device *bus_find_device(const struct bus_type *bus, 393 struct device *start, const void *data, 394 int (*match)(struct device *dev, const void *data)) 395 { 396 struct subsys_private *sp = bus_to_subsys(bus); 397 struct klist_iter i; 398 struct device *dev; 399 400 if (!sp) 401 return NULL; 402 403 klist_iter_init_node(&sp->klist_devices, &i, 404 (start ? &start->p->knode_bus : NULL)); 405 while ((dev = next_device(&i))) 406 if (match(dev, data) && get_device(dev)) 407 break; 408 klist_iter_exit(&i); 409 subsys_put(sp); 410 return dev; 411 } 412 EXPORT_SYMBOL_GPL(bus_find_device); 413 414 static struct device_driver *next_driver(struct klist_iter *i) 415 { 416 struct klist_node *n = klist_next(i); 417 struct driver_private *drv_priv; 418 419 if (n) { 420 drv_priv = container_of(n, struct driver_private, knode_bus); 421 return drv_priv->driver; 422 } 423 return NULL; 424 } 425 426 /** 427 * bus_for_each_drv - driver iterator 428 * @bus: bus we're dealing with. 429 * @start: driver to start iterating on. 430 * @data: data to pass to the callback. 431 * @fn: function to call for each driver. 432 * 433 * This is nearly identical to the device iterator above. 434 * We iterate over each driver that belongs to @bus, and call 435 * @fn for each. If @fn returns anything but 0, we break out 436 * and return it. If @start is not NULL, we use it as the head 437 * of the list. 438 * 439 * NOTE: we don't return the driver that returns a non-zero 440 * value, nor do we leave the reference count incremented for that 441 * driver. If the caller needs to know that info, it must set it 442 * in the callback. It must also be sure to increment the refcount 443 * so it doesn't disappear before returning to the caller. 444 */ 445 int bus_for_each_drv(const struct bus_type *bus, struct device_driver *start, 446 void *data, int (*fn)(struct device_driver *, void *)) 447 { 448 struct subsys_private *sp = bus_to_subsys(bus); 449 struct klist_iter i; 450 struct device_driver *drv; 451 int error = 0; 452 453 if (!sp) 454 return -EINVAL; 455 456 klist_iter_init_node(&sp->klist_drivers, &i, 457 start ? &start->p->knode_bus : NULL); 458 while ((drv = next_driver(&i)) && !error) 459 error = fn(drv, data); 460 klist_iter_exit(&i); 461 subsys_put(sp); 462 return error; 463 } 464 EXPORT_SYMBOL_GPL(bus_for_each_drv); 465 466 /** 467 * bus_add_device - add device to bus 468 * @dev: device being added 469 * 470 * - Add device's bus attributes. 471 * - Create links to device's bus. 472 * - Add the device to its bus's list of devices. 473 */ 474 int bus_add_device(struct device *dev) 475 { 476 struct subsys_private *sp = bus_to_subsys(dev->bus); 477 int error; 478 479 if (!sp) { 480 /* 481 * This is a normal operation for many devices that do not 482 * have a bus assigned to them, just say that all went 483 * well. 484 */ 485 return 0; 486 } 487 488 /* 489 * Reference in sp is now incremented and will be dropped when 490 * the device is removed from the bus 491 */ 492 493 pr_debug("bus: '%s': add device %s\n", sp->bus->name, dev_name(dev)); 494 495 error = device_add_groups(dev, sp->bus->dev_groups); 496 if (error) 497 goto out_put; 498 499 error = sysfs_create_link(&sp->devices_kset->kobj, &dev->kobj, dev_name(dev)); 500 if (error) 501 goto out_groups; 502 503 error = sysfs_create_link(&dev->kobj, &sp->subsys.kobj, "subsystem"); 504 if (error) 505 goto out_subsys; 506 507 klist_add_tail(&dev->p->knode_bus, &sp->klist_devices); 508 return 0; 509 510 out_subsys: 511 sysfs_remove_link(&sp->devices_kset->kobj, dev_name(dev)); 512 out_groups: 513 device_remove_groups(dev, sp->bus->dev_groups); 514 out_put: 515 subsys_put(sp); 516 return error; 517 } 518 519 /** 520 * bus_probe_device - probe drivers for a new device 521 * @dev: device to probe 522 * 523 * - Automatically probe for a driver if the bus allows it. 524 */ 525 void bus_probe_device(struct device *dev) 526 { 527 struct subsys_private *sp = bus_to_subsys(dev->bus); 528 struct subsys_interface *sif; 529 530 if (!sp) 531 return; 532 533 if (sp->drivers_autoprobe) 534 device_initial_probe(dev); 535 536 mutex_lock(&sp->mutex); 537 list_for_each_entry(sif, &sp->interfaces, node) 538 if (sif->add_dev) 539 sif->add_dev(dev, sif); 540 mutex_unlock(&sp->mutex); 541 subsys_put(sp); 542 } 543 544 /** 545 * bus_remove_device - remove device from bus 546 * @dev: device to be removed 547 * 548 * - Remove device from all interfaces. 549 * - Remove symlink from bus' directory. 550 * - Delete device from bus's list. 551 * - Detach from its driver. 552 * - Drop reference taken in bus_add_device(). 553 */ 554 void bus_remove_device(struct device *dev) 555 { 556 struct subsys_private *sp = bus_to_subsys(dev->bus); 557 struct subsys_interface *sif; 558 559 if (!sp) 560 return; 561 562 mutex_lock(&sp->mutex); 563 list_for_each_entry(sif, &sp->interfaces, node) 564 if (sif->remove_dev) 565 sif->remove_dev(dev, sif); 566 mutex_unlock(&sp->mutex); 567 568 sysfs_remove_link(&dev->kobj, "subsystem"); 569 sysfs_remove_link(&sp->devices_kset->kobj, dev_name(dev)); 570 device_remove_groups(dev, dev->bus->dev_groups); 571 if (klist_node_attached(&dev->p->knode_bus)) 572 klist_del(&dev->p->knode_bus); 573 574 pr_debug("bus: '%s': remove device %s\n", 575 dev->bus->name, dev_name(dev)); 576 device_release_driver(dev); 577 578 /* 579 * Decrement the reference count twice, once for the bus_to_subsys() 580 * call in the start of this function, and the second one from the 581 * reference increment in bus_add_device() 582 */ 583 subsys_put(sp); 584 subsys_put(sp); 585 } 586 587 static int __must_check add_bind_files(struct device_driver *drv) 588 { 589 int ret; 590 591 ret = driver_create_file(drv, &driver_attr_unbind); 592 if (ret == 0) { 593 ret = driver_create_file(drv, &driver_attr_bind); 594 if (ret) 595 driver_remove_file(drv, &driver_attr_unbind); 596 } 597 return ret; 598 } 599 600 static void remove_bind_files(struct device_driver *drv) 601 { 602 driver_remove_file(drv, &driver_attr_bind); 603 driver_remove_file(drv, &driver_attr_unbind); 604 } 605 606 static BUS_ATTR_WO(drivers_probe); 607 static BUS_ATTR_RW(drivers_autoprobe); 608 609 static int add_probe_files(const struct bus_type *bus) 610 { 611 int retval; 612 613 retval = bus_create_file(bus, &bus_attr_drivers_probe); 614 if (retval) 615 goto out; 616 617 retval = bus_create_file(bus, &bus_attr_drivers_autoprobe); 618 if (retval) 619 bus_remove_file(bus, &bus_attr_drivers_probe); 620 out: 621 return retval; 622 } 623 624 static void remove_probe_files(const struct bus_type *bus) 625 { 626 bus_remove_file(bus, &bus_attr_drivers_autoprobe); 627 bus_remove_file(bus, &bus_attr_drivers_probe); 628 } 629 630 static ssize_t uevent_store(struct device_driver *drv, const char *buf, 631 size_t count) 632 { 633 int rc; 634 635 rc = kobject_synth_uevent(&drv->p->kobj, buf, count); 636 return rc ? rc : count; 637 } 638 static DRIVER_ATTR_WO(uevent); 639 640 /** 641 * bus_add_driver - Add a driver to the bus. 642 * @drv: driver. 643 */ 644 int bus_add_driver(struct device_driver *drv) 645 { 646 struct subsys_private *sp = bus_to_subsys(drv->bus); 647 struct driver_private *priv; 648 int error = 0; 649 650 if (!sp) 651 return -EINVAL; 652 653 /* 654 * Reference in sp is now incremented and will be dropped when 655 * the driver is removed from the bus 656 */ 657 pr_debug("bus: '%s': add driver %s\n", sp->bus->name, drv->name); 658 659 priv = kzalloc(sizeof(*priv), GFP_KERNEL); 660 if (!priv) { 661 error = -ENOMEM; 662 goto out_put_bus; 663 } 664 klist_init(&priv->klist_devices, NULL, NULL); 665 priv->driver = drv; 666 drv->p = priv; 667 priv->kobj.kset = sp->drivers_kset; 668 error = kobject_init_and_add(&priv->kobj, &driver_ktype, NULL, 669 "%s", drv->name); 670 if (error) 671 goto out_unregister; 672 673 klist_add_tail(&priv->knode_bus, &sp->klist_drivers); 674 if (sp->drivers_autoprobe) { 675 error = driver_attach(drv); 676 if (error) 677 goto out_del_list; 678 } 679 error = module_add_driver(drv->owner, drv); 680 if (error) { 681 printk(KERN_ERR "%s: failed to create module links for %s\n", 682 __func__, drv->name); 683 goto out_detach; 684 } 685 686 error = driver_create_file(drv, &driver_attr_uevent); 687 if (error) { 688 printk(KERN_ERR "%s: uevent attr (%s) failed\n", 689 __func__, drv->name); 690 } 691 error = driver_add_groups(drv, sp->bus->drv_groups); 692 if (error) { 693 /* How the hell do we get out of this pickle? Give up */ 694 printk(KERN_ERR "%s: driver_add_groups(%s) failed\n", 695 __func__, drv->name); 696 } 697 698 if (!drv->suppress_bind_attrs) { 699 error = add_bind_files(drv); 700 if (error) { 701 /* Ditto */ 702 printk(KERN_ERR "%s: add_bind_files(%s) failed\n", 703 __func__, drv->name); 704 } 705 } 706 707 return 0; 708 709 out_detach: 710 driver_detach(drv); 711 out_del_list: 712 klist_del(&priv->knode_bus); 713 out_unregister: 714 kobject_put(&priv->kobj); 715 /* drv->p is freed in driver_release() */ 716 drv->p = NULL; 717 out_put_bus: 718 subsys_put(sp); 719 return error; 720 } 721 722 /** 723 * bus_remove_driver - delete driver from bus's knowledge. 724 * @drv: driver. 725 * 726 * Detach the driver from the devices it controls, and remove 727 * it from its bus's list of drivers. Finally, we drop the reference 728 * to the bus we took in bus_add_driver(). 729 */ 730 void bus_remove_driver(struct device_driver *drv) 731 { 732 struct subsys_private *sp = bus_to_subsys(drv->bus); 733 734 if (!sp) 735 return; 736 737 pr_debug("bus: '%s': remove driver %s\n", sp->bus->name, drv->name); 738 739 if (!drv->suppress_bind_attrs) 740 remove_bind_files(drv); 741 driver_remove_groups(drv, sp->bus->drv_groups); 742 driver_remove_file(drv, &driver_attr_uevent); 743 klist_remove(&drv->p->knode_bus); 744 driver_detach(drv); 745 module_remove_driver(drv); 746 kobject_put(&drv->p->kobj); 747 748 /* 749 * Decrement the reference count twice, once for the bus_to_subsys() 750 * call in the start of this function, and the second one from the 751 * reference increment in bus_add_driver() 752 */ 753 subsys_put(sp); 754 subsys_put(sp); 755 } 756 757 /* Helper for bus_rescan_devices's iter */ 758 static int __must_check bus_rescan_devices_helper(struct device *dev, 759 void *data) 760 { 761 int ret = 0; 762 763 if (!dev->driver) { 764 if (dev->parent && dev->bus->need_parent_lock) 765 device_lock(dev->parent); 766 ret = device_attach(dev); 767 if (dev->parent && dev->bus->need_parent_lock) 768 device_unlock(dev->parent); 769 } 770 return ret < 0 ? ret : 0; 771 } 772 773 /** 774 * bus_rescan_devices - rescan devices on the bus for possible drivers 775 * @bus: the bus to scan. 776 * 777 * This function will look for devices on the bus with no driver 778 * attached and rescan it against existing drivers to see if it matches 779 * any by calling device_attach() for the unbound devices. 780 */ 781 int bus_rescan_devices(const struct bus_type *bus) 782 { 783 return bus_for_each_dev(bus, NULL, NULL, bus_rescan_devices_helper); 784 } 785 EXPORT_SYMBOL_GPL(bus_rescan_devices); 786 787 /** 788 * device_reprobe - remove driver for a device and probe for a new driver 789 * @dev: the device to reprobe 790 * 791 * This function detaches the attached driver (if any) for the given 792 * device and restarts the driver probing process. It is intended 793 * to use if probing criteria changed during a devices lifetime and 794 * driver attachment should change accordingly. 795 */ 796 int device_reprobe(struct device *dev) 797 { 798 if (dev->driver) 799 device_driver_detach(dev); 800 return bus_rescan_devices_helper(dev, NULL); 801 } 802 EXPORT_SYMBOL_GPL(device_reprobe); 803 804 static void klist_devices_get(struct klist_node *n) 805 { 806 struct device_private *dev_prv = to_device_private_bus(n); 807 struct device *dev = dev_prv->device; 808 809 get_device(dev); 810 } 811 812 static void klist_devices_put(struct klist_node *n) 813 { 814 struct device_private *dev_prv = to_device_private_bus(n); 815 struct device *dev = dev_prv->device; 816 817 put_device(dev); 818 } 819 820 static ssize_t bus_uevent_store(const struct bus_type *bus, 821 const char *buf, size_t count) 822 { 823 struct subsys_private *sp = bus_to_subsys(bus); 824 int ret; 825 826 if (!sp) 827 return -EINVAL; 828 829 ret = kobject_synth_uevent(&sp->subsys.kobj, buf, count); 830 subsys_put(sp); 831 832 if (ret) 833 return ret; 834 return count; 835 } 836 /* 837 * "open code" the old BUS_ATTR() macro here. We want to use BUS_ATTR_WO() 838 * here, but can not use it as earlier in the file we have 839 * DEVICE_ATTR_WO(uevent), which would cause a clash with the with the store 840 * function name. 841 */ 842 static struct bus_attribute bus_attr_uevent = __ATTR(uevent, 0200, NULL, 843 bus_uevent_store); 844 845 /** 846 * bus_register - register a driver-core subsystem 847 * @bus: bus to register 848 * 849 * Once we have that, we register the bus with the kobject 850 * infrastructure, then register the children subsystems it has: 851 * the devices and drivers that belong to the subsystem. 852 */ 853 int bus_register(const struct bus_type *bus) 854 { 855 int retval; 856 struct subsys_private *priv; 857 struct kobject *bus_kobj; 858 struct lock_class_key *key; 859 860 priv = kzalloc(sizeof(struct subsys_private), GFP_KERNEL); 861 if (!priv) 862 return -ENOMEM; 863 864 priv->bus = bus; 865 866 BLOCKING_INIT_NOTIFIER_HEAD(&priv->bus_notifier); 867 868 bus_kobj = &priv->subsys.kobj; 869 retval = kobject_set_name(bus_kobj, "%s", bus->name); 870 if (retval) 871 goto out; 872 873 bus_kobj->kset = bus_kset; 874 bus_kobj->ktype = &bus_ktype; 875 priv->drivers_autoprobe = 1; 876 877 retval = kset_register(&priv->subsys); 878 if (retval) 879 goto out; 880 881 retval = bus_create_file(bus, &bus_attr_uevent); 882 if (retval) 883 goto bus_uevent_fail; 884 885 priv->devices_kset = kset_create_and_add("devices", NULL, bus_kobj); 886 if (!priv->devices_kset) { 887 retval = -ENOMEM; 888 goto bus_devices_fail; 889 } 890 891 priv->drivers_kset = kset_create_and_add("drivers", NULL, bus_kobj); 892 if (!priv->drivers_kset) { 893 retval = -ENOMEM; 894 goto bus_drivers_fail; 895 } 896 897 INIT_LIST_HEAD(&priv->interfaces); 898 key = &priv->lock_key; 899 lockdep_register_key(key); 900 __mutex_init(&priv->mutex, "subsys mutex", key); 901 klist_init(&priv->klist_devices, klist_devices_get, klist_devices_put); 902 klist_init(&priv->klist_drivers, NULL, NULL); 903 904 retval = add_probe_files(bus); 905 if (retval) 906 goto bus_probe_files_fail; 907 908 retval = sysfs_create_groups(bus_kobj, bus->bus_groups); 909 if (retval) 910 goto bus_groups_fail; 911 912 pr_debug("bus: '%s': registered\n", bus->name); 913 return 0; 914 915 bus_groups_fail: 916 remove_probe_files(bus); 917 bus_probe_files_fail: 918 kset_unregister(priv->drivers_kset); 919 bus_drivers_fail: 920 kset_unregister(priv->devices_kset); 921 bus_devices_fail: 922 bus_remove_file(bus, &bus_attr_uevent); 923 bus_uevent_fail: 924 kset_unregister(&priv->subsys); 925 /* Above kset_unregister() will kfree @priv */ 926 priv = NULL; 927 out: 928 kfree(priv); 929 return retval; 930 } 931 EXPORT_SYMBOL_GPL(bus_register); 932 933 /** 934 * bus_unregister - remove a bus from the system 935 * @bus: bus. 936 * 937 * Unregister the child subsystems and the bus itself. 938 * Finally, we call bus_put() to release the refcount 939 */ 940 void bus_unregister(const struct bus_type *bus) 941 { 942 struct subsys_private *sp = bus_to_subsys(bus); 943 struct kobject *bus_kobj; 944 945 if (!sp) 946 return; 947 948 pr_debug("bus: '%s': unregistering\n", bus->name); 949 if (sp->dev_root) 950 device_unregister(sp->dev_root); 951 952 bus_kobj = &sp->subsys.kobj; 953 sysfs_remove_groups(bus_kobj, bus->bus_groups); 954 remove_probe_files(bus); 955 bus_remove_file(bus, &bus_attr_uevent); 956 957 kset_unregister(sp->drivers_kset); 958 kset_unregister(sp->devices_kset); 959 kset_unregister(&sp->subsys); 960 subsys_put(sp); 961 } 962 EXPORT_SYMBOL_GPL(bus_unregister); 963 964 int bus_register_notifier(const struct bus_type *bus, struct notifier_block *nb) 965 { 966 struct subsys_private *sp = bus_to_subsys(bus); 967 int retval; 968 969 if (!sp) 970 return -EINVAL; 971 972 retval = blocking_notifier_chain_register(&sp->bus_notifier, nb); 973 subsys_put(sp); 974 return retval; 975 } 976 EXPORT_SYMBOL_GPL(bus_register_notifier); 977 978 int bus_unregister_notifier(const struct bus_type *bus, struct notifier_block *nb) 979 { 980 struct subsys_private *sp = bus_to_subsys(bus); 981 int retval; 982 983 if (!sp) 984 return -EINVAL; 985 retval = blocking_notifier_chain_unregister(&sp->bus_notifier, nb); 986 subsys_put(sp); 987 return retval; 988 } 989 EXPORT_SYMBOL_GPL(bus_unregister_notifier); 990 991 void bus_notify(struct device *dev, enum bus_notifier_event value) 992 { 993 struct subsys_private *sp = bus_to_subsys(dev->bus); 994 995 if (!sp) 996 return; 997 998 blocking_notifier_call_chain(&sp->bus_notifier, value, dev); 999 subsys_put(sp); 1000 } 1001 1002 struct kset *bus_get_kset(const struct bus_type *bus) 1003 { 1004 struct subsys_private *sp = bus_to_subsys(bus); 1005 struct kset *kset; 1006 1007 if (!sp) 1008 return NULL; 1009 1010 kset = &sp->subsys; 1011 subsys_put(sp); 1012 1013 return kset; 1014 } 1015 EXPORT_SYMBOL_GPL(bus_get_kset); 1016 1017 /* 1018 * Yes, this forcibly breaks the klist abstraction temporarily. It 1019 * just wants to sort the klist, not change reference counts and 1020 * take/drop locks rapidly in the process. It does all this while 1021 * holding the lock for the list, so objects can't otherwise be 1022 * added/removed while we're swizzling. 1023 */ 1024 static void device_insertion_sort_klist(struct device *a, struct list_head *list, 1025 int (*compare)(const struct device *a, 1026 const struct device *b)) 1027 { 1028 struct klist_node *n; 1029 struct device_private *dev_prv; 1030 struct device *b; 1031 1032 list_for_each_entry(n, list, n_node) { 1033 dev_prv = to_device_private_bus(n); 1034 b = dev_prv->device; 1035 if (compare(a, b) <= 0) { 1036 list_move_tail(&a->p->knode_bus.n_node, 1037 &b->p->knode_bus.n_node); 1038 return; 1039 } 1040 } 1041 list_move_tail(&a->p->knode_bus.n_node, list); 1042 } 1043 1044 void bus_sort_breadthfirst(struct bus_type *bus, 1045 int (*compare)(const struct device *a, 1046 const struct device *b)) 1047 { 1048 struct subsys_private *sp = bus_to_subsys(bus); 1049 LIST_HEAD(sorted_devices); 1050 struct klist_node *n, *tmp; 1051 struct device_private *dev_prv; 1052 struct device *dev; 1053 struct klist *device_klist; 1054 1055 if (!sp) 1056 return; 1057 device_klist = &sp->klist_devices; 1058 1059 spin_lock(&device_klist->k_lock); 1060 list_for_each_entry_safe(n, tmp, &device_klist->k_list, n_node) { 1061 dev_prv = to_device_private_bus(n); 1062 dev = dev_prv->device; 1063 device_insertion_sort_klist(dev, &sorted_devices, compare); 1064 } 1065 list_splice(&sorted_devices, &device_klist->k_list); 1066 spin_unlock(&device_klist->k_lock); 1067 subsys_put(sp); 1068 } 1069 EXPORT_SYMBOL_GPL(bus_sort_breadthfirst); 1070 1071 struct subsys_dev_iter { 1072 struct klist_iter ki; 1073 const struct device_type *type; 1074 }; 1075 1076 /** 1077 * subsys_dev_iter_init - initialize subsys device iterator 1078 * @iter: subsys iterator to initialize 1079 * @sp: the subsys private (i.e. bus) we wanna iterate over 1080 * @start: the device to start iterating from, if any 1081 * @type: device_type of the devices to iterate over, NULL for all 1082 * 1083 * Initialize subsys iterator @iter such that it iterates over devices 1084 * of @subsys. If @start is set, the list iteration will start there, 1085 * otherwise if it is NULL, the iteration starts at the beginning of 1086 * the list. 1087 */ 1088 static void subsys_dev_iter_init(struct subsys_dev_iter *iter, struct subsys_private *sp, 1089 struct device *start, const struct device_type *type) 1090 { 1091 struct klist_node *start_knode = NULL; 1092 1093 if (start) 1094 start_knode = &start->p->knode_bus; 1095 klist_iter_init_node(&sp->klist_devices, &iter->ki, start_knode); 1096 iter->type = type; 1097 } 1098 1099 /** 1100 * subsys_dev_iter_next - iterate to the next device 1101 * @iter: subsys iterator to proceed 1102 * 1103 * Proceed @iter to the next device and return it. Returns NULL if 1104 * iteration is complete. 1105 * 1106 * The returned device is referenced and won't be released till 1107 * iterator is proceed to the next device or exited. The caller is 1108 * free to do whatever it wants to do with the device including 1109 * calling back into subsys code. 1110 */ 1111 static struct device *subsys_dev_iter_next(struct subsys_dev_iter *iter) 1112 { 1113 struct klist_node *knode; 1114 struct device *dev; 1115 1116 for (;;) { 1117 knode = klist_next(&iter->ki); 1118 if (!knode) 1119 return NULL; 1120 dev = to_device_private_bus(knode)->device; 1121 if (!iter->type || iter->type == dev->type) 1122 return dev; 1123 } 1124 } 1125 1126 /** 1127 * subsys_dev_iter_exit - finish iteration 1128 * @iter: subsys iterator to finish 1129 * 1130 * Finish an iteration. Always call this function after iteration is 1131 * complete whether the iteration ran till the end or not. 1132 */ 1133 static void subsys_dev_iter_exit(struct subsys_dev_iter *iter) 1134 { 1135 klist_iter_exit(&iter->ki); 1136 } 1137 1138 int subsys_interface_register(struct subsys_interface *sif) 1139 { 1140 struct subsys_private *sp; 1141 struct subsys_dev_iter iter; 1142 struct device *dev; 1143 1144 if (!sif || !sif->subsys) 1145 return -ENODEV; 1146 1147 sp = bus_to_subsys(sif->subsys); 1148 if (!sp) 1149 return -EINVAL; 1150 1151 /* 1152 * Reference in sp is now incremented and will be dropped when 1153 * the interface is removed from the bus 1154 */ 1155 1156 mutex_lock(&sp->mutex); 1157 list_add_tail(&sif->node, &sp->interfaces); 1158 if (sif->add_dev) { 1159 subsys_dev_iter_init(&iter, sp, NULL, NULL); 1160 while ((dev = subsys_dev_iter_next(&iter))) 1161 sif->add_dev(dev, sif); 1162 subsys_dev_iter_exit(&iter); 1163 } 1164 mutex_unlock(&sp->mutex); 1165 1166 return 0; 1167 } 1168 EXPORT_SYMBOL_GPL(subsys_interface_register); 1169 1170 void subsys_interface_unregister(struct subsys_interface *sif) 1171 { 1172 struct subsys_private *sp; 1173 struct subsys_dev_iter iter; 1174 struct device *dev; 1175 1176 if (!sif || !sif->subsys) 1177 return; 1178 1179 sp = bus_to_subsys(sif->subsys); 1180 if (!sp) 1181 return; 1182 1183 mutex_lock(&sp->mutex); 1184 list_del_init(&sif->node); 1185 if (sif->remove_dev) { 1186 subsys_dev_iter_init(&iter, sp, NULL, NULL); 1187 while ((dev = subsys_dev_iter_next(&iter))) 1188 sif->remove_dev(dev, sif); 1189 subsys_dev_iter_exit(&iter); 1190 } 1191 mutex_unlock(&sp->mutex); 1192 1193 /* 1194 * Decrement the reference count twice, once for the bus_to_subsys() 1195 * call in the start of this function, and the second one from the 1196 * reference increment in subsys_interface_register() 1197 */ 1198 subsys_put(sp); 1199 subsys_put(sp); 1200 } 1201 EXPORT_SYMBOL_GPL(subsys_interface_unregister); 1202 1203 static void system_root_device_release(struct device *dev) 1204 { 1205 kfree(dev); 1206 } 1207 1208 static int subsys_register(struct bus_type *subsys, 1209 const struct attribute_group **groups, 1210 struct kobject *parent_of_root) 1211 { 1212 struct subsys_private *sp; 1213 struct device *dev; 1214 int err; 1215 1216 err = bus_register(subsys); 1217 if (err < 0) 1218 return err; 1219 1220 sp = bus_to_subsys(subsys); 1221 if (!sp) { 1222 err = -EINVAL; 1223 goto err_sp; 1224 } 1225 1226 dev = kzalloc(sizeof(struct device), GFP_KERNEL); 1227 if (!dev) { 1228 err = -ENOMEM; 1229 goto err_dev; 1230 } 1231 1232 err = dev_set_name(dev, "%s", subsys->name); 1233 if (err < 0) 1234 goto err_name; 1235 1236 dev->kobj.parent = parent_of_root; 1237 dev->groups = groups; 1238 dev->release = system_root_device_release; 1239 1240 err = device_register(dev); 1241 if (err < 0) 1242 goto err_dev_reg; 1243 1244 sp->dev_root = dev; 1245 subsys_put(sp); 1246 return 0; 1247 1248 err_dev_reg: 1249 put_device(dev); 1250 dev = NULL; 1251 err_name: 1252 kfree(dev); 1253 err_dev: 1254 subsys_put(sp); 1255 err_sp: 1256 bus_unregister(subsys); 1257 return err; 1258 } 1259 1260 /** 1261 * subsys_system_register - register a subsystem at /sys/devices/system/ 1262 * @subsys: system subsystem 1263 * @groups: default attributes for the root device 1264 * 1265 * All 'system' subsystems have a /sys/devices/system/<name> root device 1266 * with the name of the subsystem. The root device can carry subsystem- 1267 * wide attributes. All registered devices are below this single root 1268 * device and are named after the subsystem with a simple enumeration 1269 * number appended. The registered devices are not explicitly named; 1270 * only 'id' in the device needs to be set. 1271 * 1272 * Do not use this interface for anything new, it exists for compatibility 1273 * with bad ideas only. New subsystems should use plain subsystems; and 1274 * add the subsystem-wide attributes should be added to the subsystem 1275 * directory itself and not some create fake root-device placed in 1276 * /sys/devices/system/<name>. 1277 */ 1278 int subsys_system_register(struct bus_type *subsys, 1279 const struct attribute_group **groups) 1280 { 1281 return subsys_register(subsys, groups, &system_kset->kobj); 1282 } 1283 EXPORT_SYMBOL_GPL(subsys_system_register); 1284 1285 /** 1286 * subsys_virtual_register - register a subsystem at /sys/devices/virtual/ 1287 * @subsys: virtual subsystem 1288 * @groups: default attributes for the root device 1289 * 1290 * All 'virtual' subsystems have a /sys/devices/system/<name> root device 1291 * with the name of the subystem. The root device can carry subsystem-wide 1292 * attributes. All registered devices are below this single root device. 1293 * There's no restriction on device naming. This is for kernel software 1294 * constructs which need sysfs interface. 1295 */ 1296 int subsys_virtual_register(struct bus_type *subsys, 1297 const struct attribute_group **groups) 1298 { 1299 struct kobject *virtual_dir; 1300 1301 virtual_dir = virtual_device_parent(NULL); 1302 if (!virtual_dir) 1303 return -ENOMEM; 1304 1305 return subsys_register(subsys, groups, virtual_dir); 1306 } 1307 EXPORT_SYMBOL_GPL(subsys_virtual_register); 1308 1309 /** 1310 * driver_find - locate driver on a bus by its name. 1311 * @name: name of the driver. 1312 * @bus: bus to scan for the driver. 1313 * 1314 * Call kset_find_obj() to iterate over list of drivers on 1315 * a bus to find driver by name. Return driver if found. 1316 * 1317 * This routine provides no locking to prevent the driver it returns 1318 * from being unregistered or unloaded while the caller is using it. 1319 * The caller is responsible for preventing this. 1320 */ 1321 struct device_driver *driver_find(const char *name, const struct bus_type *bus) 1322 { 1323 struct subsys_private *sp = bus_to_subsys(bus); 1324 struct kobject *k; 1325 struct driver_private *priv; 1326 1327 if (!sp) 1328 return NULL; 1329 1330 k = kset_find_obj(sp->drivers_kset, name); 1331 subsys_put(sp); 1332 if (!k) 1333 return NULL; 1334 1335 priv = to_driver(k); 1336 1337 /* Drop reference added by kset_find_obj() */ 1338 kobject_put(k); 1339 return priv->driver; 1340 } 1341 EXPORT_SYMBOL_GPL(driver_find); 1342 1343 /* 1344 * Warning, the value could go to "removed" instantly after calling this function, so be very 1345 * careful when calling it... 1346 */ 1347 bool bus_is_registered(const struct bus_type *bus) 1348 { 1349 struct subsys_private *sp = bus_to_subsys(bus); 1350 bool is_initialized = false; 1351 1352 if (sp) { 1353 is_initialized = true; 1354 subsys_put(sp); 1355 } 1356 return is_initialized; 1357 } 1358 1359 /** 1360 * bus_get_dev_root - return a pointer to the "device root" of a bus 1361 * @bus: bus to return the device root of. 1362 * 1363 * If a bus has a "device root" structure, return it, WITH THE REFERENCE 1364 * COUNT INCREMENTED. 1365 * 1366 * Note, when finished with the device, a call to put_device() is required. 1367 * 1368 * If the device root is not present (or bus is not a valid pointer), NULL 1369 * will be returned. 1370 */ 1371 struct device *bus_get_dev_root(const struct bus_type *bus) 1372 { 1373 struct subsys_private *sp = bus_to_subsys(bus); 1374 struct device *dev_root; 1375 1376 if (!sp) 1377 return NULL; 1378 1379 dev_root = get_device(sp->dev_root); 1380 subsys_put(sp); 1381 return dev_root; 1382 } 1383 EXPORT_SYMBOL_GPL(bus_get_dev_root); 1384 1385 int __init buses_init(void) 1386 { 1387 bus_kset = kset_create_and_add("bus", &bus_uevent_ops, NULL); 1388 if (!bus_kset) 1389 return -ENOMEM; 1390 1391 system_kset = kset_create_and_add("system", NULL, &devices_kset->kobj); 1392 if (!system_kset) 1393 return -ENOMEM; 1394 1395 return 0; 1396 } 1397