linux/drivers/base/core.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 * drivers/base/core.c - core driver model code (device registration, etc)
   4 *
   5 * Copyright (c) 2002-3 Patrick Mochel
   6 * Copyright (c) 2002-3 Open Source Development Labs
   7 * Copyright (c) 2006 Greg Kroah-Hartman <gregkh@suse.de>
   8 * Copyright (c) 2006 Novell, Inc.
   9 */
  10
  11#include <linux/acpi.h>
  12#include <linux/cpufreq.h>
  13#include <linux/device.h>
  14#include <linux/err.h>
  15#include <linux/fwnode.h>
  16#include <linux/init.h>
  17#include <linux/module.h>
  18#include <linux/slab.h>
  19#include <linux/string.h>
  20#include <linux/kdev_t.h>
  21#include <linux/notifier.h>
  22#include <linux/of.h>
  23#include <linux/of_device.h>
  24#include <linux/genhd.h>
  25#include <linux/mutex.h>
  26#include <linux/pm_runtime.h>
  27#include <linux/netdevice.h>
  28#include <linux/sched/signal.h>
  29#include <linux/sched/mm.h>
  30#include <linux/swiotlb.h>
  31#include <linux/sysfs.h>
  32#include <linux/dma-map-ops.h> /* for dma_default_coherent */
  33
  34#include "base.h"
  35#include "power/power.h"
  36
  37#ifdef CONFIG_SYSFS_DEPRECATED
  38#ifdef CONFIG_SYSFS_DEPRECATED_V2
  39long sysfs_deprecated = 1;
  40#else
  41long sysfs_deprecated = 0;
  42#endif
  43static int __init sysfs_deprecated_setup(char *arg)
  44{
  45        return kstrtol(arg, 10, &sysfs_deprecated);
  46}
  47early_param("sysfs.deprecated", sysfs_deprecated_setup);
  48#endif
  49
  50/* Device links support. */
  51static LIST_HEAD(deferred_sync);
  52static unsigned int defer_sync_state_count = 1;
  53static DEFINE_MUTEX(fwnode_link_lock);
  54static bool fw_devlink_is_permissive(void);
  55static bool fw_devlink_drv_reg_done;
  56
  57/**
  58 * fwnode_link_add - Create a link between two fwnode_handles.
  59 * @con: Consumer end of the link.
  60 * @sup: Supplier end of the link.
  61 *
  62 * Create a fwnode link between fwnode handles @con and @sup. The fwnode link
  63 * represents the detail that the firmware lists @sup fwnode as supplying a
  64 * resource to @con.
  65 *
  66 * The driver core will use the fwnode link to create a device link between the
  67 * two device objects corresponding to @con and @sup when they are created. The
  68 * driver core will automatically delete the fwnode link between @con and @sup
  69 * after doing that.
  70 *
  71 * Attempts to create duplicate links between the same pair of fwnode handles
  72 * are ignored and there is no reference counting.
  73 */
  74int fwnode_link_add(struct fwnode_handle *con, struct fwnode_handle *sup)
  75{
  76        struct fwnode_link *link;
  77        int ret = 0;
  78
  79        mutex_lock(&fwnode_link_lock);
  80
  81        list_for_each_entry(link, &sup->consumers, s_hook)
  82                if (link->consumer == con)
  83                        goto out;
  84
  85        link = kzalloc(sizeof(*link), GFP_KERNEL);
  86        if (!link) {
  87                ret = -ENOMEM;
  88                goto out;
  89        }
  90
  91        link->supplier = sup;
  92        INIT_LIST_HEAD(&link->s_hook);
  93        link->consumer = con;
  94        INIT_LIST_HEAD(&link->c_hook);
  95
  96        list_add(&link->s_hook, &sup->consumers);
  97        list_add(&link->c_hook, &con->suppliers);
  98        pr_debug("%pfwP Linked as a fwnode consumer to %pfwP\n",
  99                 con, sup);
 100out:
 101        mutex_unlock(&fwnode_link_lock);
 102
 103        return ret;
 104}
 105
 106/**
 107 * __fwnode_link_del - Delete a link between two fwnode_handles.
 108 * @link: the fwnode_link to be deleted
 109 *
 110 * The fwnode_link_lock needs to be held when this function is called.
 111 */
 112static void __fwnode_link_del(struct fwnode_link *link)
 113{
 114        pr_debug("%pfwP Dropping the fwnode link to %pfwP\n",
 115                 link->consumer, link->supplier);
 116        list_del(&link->s_hook);
 117        list_del(&link->c_hook);
 118        kfree(link);
 119}
 120
 121/**
 122 * fwnode_links_purge_suppliers - Delete all supplier links of fwnode_handle.
 123 * @fwnode: fwnode whose supplier links need to be deleted
 124 *
 125 * Deletes all supplier links connecting directly to @fwnode.
 126 */
 127static void fwnode_links_purge_suppliers(struct fwnode_handle *fwnode)
 128{
 129        struct fwnode_link *link, *tmp;
 130
 131        mutex_lock(&fwnode_link_lock);
 132        list_for_each_entry_safe(link, tmp, &fwnode->suppliers, c_hook)
 133                __fwnode_link_del(link);
 134        mutex_unlock(&fwnode_link_lock);
 135}
 136
 137/**
 138 * fwnode_links_purge_consumers - Delete all consumer links of fwnode_handle.
 139 * @fwnode: fwnode whose consumer links need to be deleted
 140 *
 141 * Deletes all consumer links connecting directly to @fwnode.
 142 */
 143static void fwnode_links_purge_consumers(struct fwnode_handle *fwnode)
 144{
 145        struct fwnode_link *link, *tmp;
 146
 147        mutex_lock(&fwnode_link_lock);
 148        list_for_each_entry_safe(link, tmp, &fwnode->consumers, s_hook)
 149                __fwnode_link_del(link);
 150        mutex_unlock(&fwnode_link_lock);
 151}
 152
 153/**
 154 * fwnode_links_purge - Delete all links connected to a fwnode_handle.
 155 * @fwnode: fwnode whose links needs to be deleted
 156 *
 157 * Deletes all links connecting directly to a fwnode.
 158 */
 159void fwnode_links_purge(struct fwnode_handle *fwnode)
 160{
 161        fwnode_links_purge_suppliers(fwnode);
 162        fwnode_links_purge_consumers(fwnode);
 163}
 164
 165void fw_devlink_purge_absent_suppliers(struct fwnode_handle *fwnode)
 166{
 167        struct fwnode_handle *child;
 168
 169        /* Don't purge consumer links of an added child */
 170        if (fwnode->dev)
 171                return;
 172
 173        fwnode->flags |= FWNODE_FLAG_NOT_DEVICE;
 174        fwnode_links_purge_consumers(fwnode);
 175
 176        fwnode_for_each_available_child_node(fwnode, child)
 177                fw_devlink_purge_absent_suppliers(child);
 178}
 179EXPORT_SYMBOL_GPL(fw_devlink_purge_absent_suppliers);
 180
 181#ifdef CONFIG_SRCU
 182static DEFINE_MUTEX(device_links_lock);
 183DEFINE_STATIC_SRCU(device_links_srcu);
 184
 185static inline void device_links_write_lock(void)
 186{
 187        mutex_lock(&device_links_lock);
 188}
 189
 190static inline void device_links_write_unlock(void)
 191{
 192        mutex_unlock(&device_links_lock);
 193}
 194
 195int device_links_read_lock(void) __acquires(&device_links_srcu)
 196{
 197        return srcu_read_lock(&device_links_srcu);
 198}
 199
 200void device_links_read_unlock(int idx) __releases(&device_links_srcu)
 201{
 202        srcu_read_unlock(&device_links_srcu, idx);
 203}
 204
 205int device_links_read_lock_held(void)
 206{
 207        return srcu_read_lock_held(&device_links_srcu);
 208}
 209
 210static void device_link_synchronize_removal(void)
 211{
 212        synchronize_srcu(&device_links_srcu);
 213}
 214
 215static void device_link_remove_from_lists(struct device_link *link)
 216{
 217        list_del_rcu(&link->s_node);
 218        list_del_rcu(&link->c_node);
 219}
 220#else /* !CONFIG_SRCU */
 221static DECLARE_RWSEM(device_links_lock);
 222
 223static inline void device_links_write_lock(void)
 224{
 225        down_write(&device_links_lock);
 226}
 227
 228static inline void device_links_write_unlock(void)
 229{
 230        up_write(&device_links_lock);
 231}
 232
 233int device_links_read_lock(void)
 234{
 235        down_read(&device_links_lock);
 236        return 0;
 237}
 238
 239void device_links_read_unlock(int not_used)
 240{
 241        up_read(&device_links_lock);
 242}
 243
 244#ifdef CONFIG_DEBUG_LOCK_ALLOC
 245int device_links_read_lock_held(void)
 246{
 247        return lockdep_is_held(&device_links_lock);
 248}
 249#endif
 250
 251static inline void device_link_synchronize_removal(void)
 252{
 253}
 254
 255static void device_link_remove_from_lists(struct device_link *link)
 256{
 257        list_del(&link->s_node);
 258        list_del(&link->c_node);
 259}
 260#endif /* !CONFIG_SRCU */
 261
 262static bool device_is_ancestor(struct device *dev, struct device *target)
 263{
 264        while (target->parent) {
 265                target = target->parent;
 266                if (dev == target)
 267                        return true;
 268        }
 269        return false;
 270}
 271
 272/**
 273 * device_is_dependent - Check if one device depends on another one
 274 * @dev: Device to check dependencies for.
 275 * @target: Device to check against.
 276 *
 277 * Check if @target depends on @dev or any device dependent on it (its child or
 278 * its consumer etc).  Return 1 if that is the case or 0 otherwise.
 279 */
 280int device_is_dependent(struct device *dev, void *target)
 281{
 282        struct device_link *link;
 283        int ret;
 284
 285        /*
 286         * The "ancestors" check is needed to catch the case when the target
 287         * device has not been completely initialized yet and it is still
 288         * missing from the list of children of its parent device.
 289         */
 290        if (dev == target || device_is_ancestor(dev, target))
 291                return 1;
 292
 293        ret = device_for_each_child(dev, target, device_is_dependent);
 294        if (ret)
 295                return ret;
 296
 297        list_for_each_entry(link, &dev->links.consumers, s_node) {
 298                if ((link->flags & ~DL_FLAG_INFERRED) ==
 299                    (DL_FLAG_SYNC_STATE_ONLY | DL_FLAG_MANAGED))
 300                        continue;
 301
 302                if (link->consumer == target)
 303                        return 1;
 304
 305                ret = device_is_dependent(link->consumer, target);
 306                if (ret)
 307                        break;
 308        }
 309        return ret;
 310}
 311
 312static void device_link_init_status(struct device_link *link,
 313                                    struct device *consumer,
 314                                    struct device *supplier)
 315{
 316        switch (supplier->links.status) {
 317        case DL_DEV_PROBING:
 318                switch (consumer->links.status) {
 319                case DL_DEV_PROBING:
 320                        /*
 321                         * A consumer driver can create a link to a supplier
 322                         * that has not completed its probing yet as long as it
 323                         * knows that the supplier is already functional (for
 324                         * example, it has just acquired some resources from the
 325                         * supplier).
 326                         */
 327                        link->status = DL_STATE_CONSUMER_PROBE;
 328                        break;
 329                default:
 330                        link->status = DL_STATE_DORMANT;
 331                        break;
 332                }
 333                break;
 334        case DL_DEV_DRIVER_BOUND:
 335                switch (consumer->links.status) {
 336                case DL_DEV_PROBING:
 337                        link->status = DL_STATE_CONSUMER_PROBE;
 338                        break;
 339                case DL_DEV_DRIVER_BOUND:
 340                        link->status = DL_STATE_ACTIVE;
 341                        break;
 342                default:
 343                        link->status = DL_STATE_AVAILABLE;
 344                        break;
 345                }
 346                break;
 347        case DL_DEV_UNBINDING:
 348                link->status = DL_STATE_SUPPLIER_UNBIND;
 349                break;
 350        default:
 351                link->status = DL_STATE_DORMANT;
 352                break;
 353        }
 354}
 355
 356static int device_reorder_to_tail(struct device *dev, void *not_used)
 357{
 358        struct device_link *link;
 359
 360        /*
 361         * Devices that have not been registered yet will be put to the ends
 362         * of the lists during the registration, so skip them here.
 363         */
 364        if (device_is_registered(dev))
 365                devices_kset_move_last(dev);
 366
 367        if (device_pm_initialized(dev))
 368                device_pm_move_last(dev);
 369
 370        device_for_each_child(dev, NULL, device_reorder_to_tail);
 371        list_for_each_entry(link, &dev->links.consumers, s_node) {
 372                if ((link->flags & ~DL_FLAG_INFERRED) ==
 373                    (DL_FLAG_SYNC_STATE_ONLY | DL_FLAG_MANAGED))
 374                        continue;
 375                device_reorder_to_tail(link->consumer, NULL);
 376        }
 377
 378        return 0;
 379}
 380
 381/**
 382 * device_pm_move_to_tail - Move set of devices to the end of device lists
 383 * @dev: Device to move
 384 *
 385 * This is a device_reorder_to_tail() wrapper taking the requisite locks.
 386 *
 387 * It moves the @dev along with all of its children and all of its consumers
 388 * to the ends of the device_kset and dpm_list, recursively.
 389 */
 390void device_pm_move_to_tail(struct device *dev)
 391{
 392        int idx;
 393
 394        idx = device_links_read_lock();
 395        device_pm_lock();
 396        device_reorder_to_tail(dev, NULL);
 397        device_pm_unlock();
 398        device_links_read_unlock(idx);
 399}
 400
 401#define to_devlink(dev) container_of((dev), struct device_link, link_dev)
 402
 403static ssize_t status_show(struct device *dev,
 404                           struct device_attribute *attr, char *buf)
 405{
 406        const char *output;
 407
 408        switch (to_devlink(dev)->status) {
 409        case DL_STATE_NONE:
 410                output = "not tracked";
 411                break;
 412        case DL_STATE_DORMANT:
 413                output = "dormant";
 414                break;
 415        case DL_STATE_AVAILABLE:
 416                output = "available";
 417                break;
 418        case DL_STATE_CONSUMER_PROBE:
 419                output = "consumer probing";
 420                break;
 421        case DL_STATE_ACTIVE:
 422                output = "active";
 423                break;
 424        case DL_STATE_SUPPLIER_UNBIND:
 425                output = "supplier unbinding";
 426                break;
 427        default:
 428                output = "unknown";
 429                break;
 430        }
 431
 432        return sysfs_emit(buf, "%s\n", output);
 433}
 434static DEVICE_ATTR_RO(status);
 435
 436static ssize_t auto_remove_on_show(struct device *dev,
 437                                   struct device_attribute *attr, char *buf)
 438{
 439        struct device_link *link = to_devlink(dev);
 440        const char *output;
 441
 442        if (link->flags & DL_FLAG_AUTOREMOVE_SUPPLIER)
 443                output = "supplier unbind";
 444        else if (link->flags & DL_FLAG_AUTOREMOVE_CONSUMER)
 445                output = "consumer unbind";
 446        else
 447                output = "never";
 448
 449        return sysfs_emit(buf, "%s\n", output);
 450}
 451static DEVICE_ATTR_RO(auto_remove_on);
 452
 453static ssize_t runtime_pm_show(struct device *dev,
 454                               struct device_attribute *attr, char *buf)
 455{
 456        struct device_link *link = to_devlink(dev);
 457
 458        return sysfs_emit(buf, "%d\n", !!(link->flags & DL_FLAG_PM_RUNTIME));
 459}
 460static DEVICE_ATTR_RO(runtime_pm);
 461
 462static ssize_t sync_state_only_show(struct device *dev,
 463                                    struct device_attribute *attr, char *buf)
 464{
 465        struct device_link *link = to_devlink(dev);
 466
 467        return sysfs_emit(buf, "%d\n",
 468                          !!(link->flags & DL_FLAG_SYNC_STATE_ONLY));
 469}
 470static DEVICE_ATTR_RO(sync_state_only);
 471
 472static struct attribute *devlink_attrs[] = {
 473        &dev_attr_status.attr,
 474        &dev_attr_auto_remove_on.attr,
 475        &dev_attr_runtime_pm.attr,
 476        &dev_attr_sync_state_only.attr,
 477        NULL,
 478};
 479ATTRIBUTE_GROUPS(devlink);
 480
 481static void device_link_release_fn(struct work_struct *work)
 482{
 483        struct device_link *link = container_of(work, struct device_link, rm_work);
 484
 485        /* Ensure that all references to the link object have been dropped. */
 486        device_link_synchronize_removal();
 487
 488        while (refcount_dec_not_one(&link->rpm_active))
 489                pm_runtime_put(link->supplier);
 490
 491        put_device(link->consumer);
 492        put_device(link->supplier);
 493        kfree(link);
 494}
 495
 496static void devlink_dev_release(struct device *dev)
 497{
 498        struct device_link *link = to_devlink(dev);
 499
 500        INIT_WORK(&link->rm_work, device_link_release_fn);
 501        /*
 502         * It may take a while to complete this work because of the SRCU
 503         * synchronization in device_link_release_fn() and if the consumer or
 504         * supplier devices get deleted when it runs, so put it into the "long"
 505         * workqueue.
 506         */
 507        queue_work(system_long_wq, &link->rm_work);
 508}
 509
 510static struct class devlink_class = {
 511        .name = "devlink",
 512        .owner = THIS_MODULE,
 513        .dev_groups = devlink_groups,
 514        .dev_release = devlink_dev_release,
 515};
 516
 517static int devlink_add_symlinks(struct device *dev,
 518                                struct class_interface *class_intf)
 519{
 520        int ret;
 521        size_t len;
 522        struct device_link *link = to_devlink(dev);
 523        struct device *sup = link->supplier;
 524        struct device *con = link->consumer;
 525        char *buf;
 526
 527        len = max(strlen(dev_bus_name(sup)) + strlen(dev_name(sup)),
 528                  strlen(dev_bus_name(con)) + strlen(dev_name(con)));
 529        len += strlen(":");
 530        len += strlen("supplier:") + 1;
 531        buf = kzalloc(len, GFP_KERNEL);
 532        if (!buf)
 533                return -ENOMEM;
 534
 535        ret = sysfs_create_link(&link->link_dev.kobj, &sup->kobj, "supplier");
 536        if (ret)
 537                goto out;
 538
 539        ret = sysfs_create_link(&link->link_dev.kobj, &con->kobj, "consumer");
 540        if (ret)
 541                goto err_con;
 542
 543        snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con));
 544        ret = sysfs_create_link(&sup->kobj, &link->link_dev.kobj, buf);
 545        if (ret)
 546                goto err_con_dev;
 547
 548        snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup));
 549        ret = sysfs_create_link(&con->kobj, &link->link_dev.kobj, buf);
 550        if (ret)
 551                goto err_sup_dev;
 552
 553        goto out;
 554
 555err_sup_dev:
 556        snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con));
 557        sysfs_remove_link(&sup->kobj, buf);
 558err_con_dev:
 559        sysfs_remove_link(&link->link_dev.kobj, "consumer");
 560err_con:
 561        sysfs_remove_link(&link->link_dev.kobj, "supplier");
 562out:
 563        kfree(buf);
 564        return ret;
 565}
 566
 567static void devlink_remove_symlinks(struct device *dev,
 568                                   struct class_interface *class_intf)
 569{
 570        struct device_link *link = to_devlink(dev);
 571        size_t len;
 572        struct device *sup = link->supplier;
 573        struct device *con = link->consumer;
 574        char *buf;
 575
 576        sysfs_remove_link(&link->link_dev.kobj, "consumer");
 577        sysfs_remove_link(&link->link_dev.kobj, "supplier");
 578
 579        len = max(strlen(dev_bus_name(sup)) + strlen(dev_name(sup)),
 580                  strlen(dev_bus_name(con)) + strlen(dev_name(con)));
 581        len += strlen(":");
 582        len += strlen("supplier:") + 1;
 583        buf = kzalloc(len, GFP_KERNEL);
 584        if (!buf) {
 585                WARN(1, "Unable to properly free device link symlinks!\n");
 586                return;
 587        }
 588
 589        if (device_is_registered(con)) {
 590                snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup));
 591                sysfs_remove_link(&con->kobj, buf);
 592        }
 593        snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con));
 594        sysfs_remove_link(&sup->kobj, buf);
 595        kfree(buf);
 596}
 597
 598static struct class_interface devlink_class_intf = {
 599        .class = &devlink_class,
 600        .add_dev = devlink_add_symlinks,
 601        .remove_dev = devlink_remove_symlinks,
 602};
 603
 604static int __init devlink_class_init(void)
 605{
 606        int ret;
 607
 608        ret = class_register(&devlink_class);
 609        if (ret)
 610                return ret;
 611
 612        ret = class_interface_register(&devlink_class_intf);
 613        if (ret)
 614                class_unregister(&devlink_class);
 615
 616        return ret;
 617}
 618postcore_initcall(devlink_class_init);
 619
 620#define DL_MANAGED_LINK_FLAGS (DL_FLAG_AUTOREMOVE_CONSUMER | \
 621                               DL_FLAG_AUTOREMOVE_SUPPLIER | \
 622                               DL_FLAG_AUTOPROBE_CONSUMER  | \
 623                               DL_FLAG_SYNC_STATE_ONLY | \
 624                               DL_FLAG_INFERRED)
 625
 626#define DL_ADD_VALID_FLAGS (DL_MANAGED_LINK_FLAGS | DL_FLAG_STATELESS | \
 627                            DL_FLAG_PM_RUNTIME | DL_FLAG_RPM_ACTIVE)
 628
 629/**
 630 * device_link_add - Create a link between two devices.
 631 * @consumer: Consumer end of the link.
 632 * @supplier: Supplier end of the link.
 633 * @flags: Link flags.
 634 *
 635 * The caller is responsible for the proper synchronization of the link creation
 636 * with runtime PM.  First, setting the DL_FLAG_PM_RUNTIME flag will cause the
 637 * runtime PM framework to take the link into account.  Second, if the
 638 * DL_FLAG_RPM_ACTIVE flag is set in addition to it, the supplier devices will
 639 * be forced into the active meta state and reference-counted upon the creation
 640 * of the link.  If DL_FLAG_PM_RUNTIME is not set, DL_FLAG_RPM_ACTIVE will be
 641 * ignored.
 642 *
 643 * If DL_FLAG_STATELESS is set in @flags, the caller of this function is
 644 * expected to release the link returned by it directly with the help of either
 645 * device_link_del() or device_link_remove().
 646 *
 647 * If that flag is not set, however, the caller of this function is handing the
 648 * management of the link over to the driver core entirely and its return value
 649 * can only be used to check whether or not the link is present.  In that case,
 650 * the DL_FLAG_AUTOREMOVE_CONSUMER and DL_FLAG_AUTOREMOVE_SUPPLIER device link
 651 * flags can be used to indicate to the driver core when the link can be safely
 652 * deleted.  Namely, setting one of them in @flags indicates to the driver core
 653 * that the link is not going to be used (by the given caller of this function)
 654 * after unbinding the consumer or supplier driver, respectively, from its
 655 * device, so the link can be deleted at that point.  If none of them is set,
 656 * the link will be maintained until one of the devices pointed to by it (either
 657 * the consumer or the supplier) is unregistered.
 658 *
 659 * Also, if DL_FLAG_STATELESS, DL_FLAG_AUTOREMOVE_CONSUMER and
 660 * DL_FLAG_AUTOREMOVE_SUPPLIER are not set in @flags (that is, a persistent
 661 * managed device link is being added), the DL_FLAG_AUTOPROBE_CONSUMER flag can
 662 * be used to request the driver core to automatically probe for a consumer
 663 * driver after successfully binding a driver to the supplier device.
 664 *
 665 * The combination of DL_FLAG_STATELESS and one of DL_FLAG_AUTOREMOVE_CONSUMER,
 666 * DL_FLAG_AUTOREMOVE_SUPPLIER, or DL_FLAG_AUTOPROBE_CONSUMER set in @flags at
 667 * the same time is invalid and will cause NULL to be returned upfront.
 668 * However, if a device link between the given @consumer and @supplier pair
 669 * exists already when this function is called for them, the existing link will
 670 * be returned regardless of its current type and status (the link's flags may
 671 * be modified then).  The caller of this function is then expected to treat
 672 * the link as though it has just been created, so (in particular) if
 673 * DL_FLAG_STATELESS was passed in @flags, the link needs to be released
 674 * explicitly when not needed any more (as stated above).
 675 *
 676 * A side effect of the link creation is re-ordering of dpm_list and the
 677 * devices_kset list by moving the consumer device and all devices depending
 678 * on it to the ends of these lists (that does not happen to devices that have
 679 * not been registered when this function is called).
 680 *
 681 * The supplier device is required to be registered when this function is called
 682 * and NULL will be returned if that is not the case.  The consumer device need
 683 * not be registered, however.
 684 */
 685struct device_link *device_link_add(struct device *consumer,
 686                                    struct device *supplier, u32 flags)
 687{
 688        struct device_link *link;
 689
 690        if (!consumer || !supplier || consumer == supplier ||
 691            flags & ~DL_ADD_VALID_FLAGS ||
 692            (flags & DL_FLAG_STATELESS && flags & DL_MANAGED_LINK_FLAGS) ||
 693            (flags & DL_FLAG_SYNC_STATE_ONLY &&
 694             (flags & ~DL_FLAG_INFERRED) != DL_FLAG_SYNC_STATE_ONLY) ||
 695            (flags & DL_FLAG_AUTOPROBE_CONSUMER &&
 696             flags & (DL_FLAG_AUTOREMOVE_CONSUMER |
 697                      DL_FLAG_AUTOREMOVE_SUPPLIER)))
 698                return NULL;
 699
 700        if (flags & DL_FLAG_PM_RUNTIME && flags & DL_FLAG_RPM_ACTIVE) {
 701                if (pm_runtime_get_sync(supplier) < 0) {
 702                        pm_runtime_put_noidle(supplier);
 703                        return NULL;
 704                }
 705        }
 706
 707        if (!(flags & DL_FLAG_STATELESS))
 708                flags |= DL_FLAG_MANAGED;
 709
 710        device_links_write_lock();
 711        device_pm_lock();
 712
 713        /*
 714         * If the supplier has not been fully registered yet or there is a
 715         * reverse (non-SYNC_STATE_ONLY) dependency between the consumer and
 716         * the supplier already in the graph, return NULL. If the link is a
 717         * SYNC_STATE_ONLY link, we don't check for reverse dependencies
 718         * because it only affects sync_state() callbacks.
 719         */
 720        if (!device_pm_initialized(supplier)
 721            || (!(flags & DL_FLAG_SYNC_STATE_ONLY) &&
 722                  device_is_dependent(consumer, supplier))) {
 723                link = NULL;
 724                goto out;
 725        }
 726
 727        /*
 728         * SYNC_STATE_ONLY links are useless once a consumer device has probed.
 729         * So, only create it if the consumer hasn't probed yet.
 730         */
 731        if (flags & DL_FLAG_SYNC_STATE_ONLY &&
 732            consumer->links.status != DL_DEV_NO_DRIVER &&
 733            consumer->links.status != DL_DEV_PROBING) {
 734                link = NULL;
 735                goto out;
 736        }
 737
 738        /*
 739         * DL_FLAG_AUTOREMOVE_SUPPLIER indicates that the link will be needed
 740         * longer than for DL_FLAG_AUTOREMOVE_CONSUMER and setting them both
 741         * together doesn't make sense, so prefer DL_FLAG_AUTOREMOVE_SUPPLIER.
 742         */
 743        if (flags & DL_FLAG_AUTOREMOVE_SUPPLIER)
 744                flags &= ~DL_FLAG_AUTOREMOVE_CONSUMER;
 745
 746        list_for_each_entry(link, &supplier->links.consumers, s_node) {
 747                if (link->consumer != consumer)
 748                        continue;
 749
 750                if (link->flags & DL_FLAG_INFERRED &&
 751                    !(flags & DL_FLAG_INFERRED))
 752                        link->flags &= ~DL_FLAG_INFERRED;
 753
 754                if (flags & DL_FLAG_PM_RUNTIME) {
 755                        if (!(link->flags & DL_FLAG_PM_RUNTIME)) {
 756                                pm_runtime_new_link(consumer);
 757                                link->flags |= DL_FLAG_PM_RUNTIME;
 758                        }
 759                        if (flags & DL_FLAG_RPM_ACTIVE)
 760                                refcount_inc(&link->rpm_active);
 761                }
 762
 763                if (flags & DL_FLAG_STATELESS) {
 764                        kref_get(&link->kref);
 765                        if (link->flags & DL_FLAG_SYNC_STATE_ONLY &&
 766                            !(link->flags & DL_FLAG_STATELESS)) {
 767                                link->flags |= DL_FLAG_STATELESS;
 768                                goto reorder;
 769                        } else {
 770                                link->flags |= DL_FLAG_STATELESS;
 771                                goto out;
 772                        }
 773                }
 774
 775                /*
 776                 * If the life time of the link following from the new flags is
 777                 * longer than indicated by the flags of the existing link,
 778                 * update the existing link to stay around longer.
 779                 */
 780                if (flags & DL_FLAG_AUTOREMOVE_SUPPLIER) {
 781                        if (link->flags & DL_FLAG_AUTOREMOVE_CONSUMER) {
 782                                link->flags &= ~DL_FLAG_AUTOREMOVE_CONSUMER;
 783                                link->flags |= DL_FLAG_AUTOREMOVE_SUPPLIER;
 784                        }
 785                } else if (!(flags & DL_FLAG_AUTOREMOVE_CONSUMER)) {
 786                        link->flags &= ~(DL_FLAG_AUTOREMOVE_CONSUMER |
 787                                         DL_FLAG_AUTOREMOVE_SUPPLIER);
 788                }
 789                if (!(link->flags & DL_FLAG_MANAGED)) {
 790                        kref_get(&link->kref);
 791                        link->flags |= DL_FLAG_MANAGED;
 792                        device_link_init_status(link, consumer, supplier);
 793                }
 794                if (link->flags & DL_FLAG_SYNC_STATE_ONLY &&
 795                    !(flags & DL_FLAG_SYNC_STATE_ONLY)) {
 796                        link->flags &= ~DL_FLAG_SYNC_STATE_ONLY;
 797                        goto reorder;
 798                }
 799
 800                goto out;
 801        }
 802
 803        link = kzalloc(sizeof(*link), GFP_KERNEL);
 804        if (!link)
 805                goto out;
 806
 807        refcount_set(&link->rpm_active, 1);
 808
 809        get_device(supplier);
 810        link->supplier = supplier;
 811        INIT_LIST_HEAD(&link->s_node);
 812        get_device(consumer);
 813        link->consumer = consumer;
 814        INIT_LIST_HEAD(&link->c_node);
 815        link->flags = flags;
 816        kref_init(&link->kref);
 817
 818        link->link_dev.class = &devlink_class;
 819        device_set_pm_not_required(&link->link_dev);
 820        dev_set_name(&link->link_dev, "%s:%s--%s:%s",
 821                     dev_bus_name(supplier), dev_name(supplier),
 822                     dev_bus_name(consumer), dev_name(consumer));
 823        if (device_register(&link->link_dev)) {
 824                put_device(&link->link_dev);
 825                link = NULL;
 826                goto out;
 827        }
 828
 829        if (flags & DL_FLAG_PM_RUNTIME) {
 830                if (flags & DL_FLAG_RPM_ACTIVE)
 831                        refcount_inc(&link->rpm_active);
 832
 833                pm_runtime_new_link(consumer);
 834        }
 835
 836        /* Determine the initial link state. */
 837        if (flags & DL_FLAG_STATELESS)
 838                link->status = DL_STATE_NONE;
 839        else
 840                device_link_init_status(link, consumer, supplier);
 841
 842        /*
 843         * Some callers expect the link creation during consumer driver probe to
 844         * resume the supplier even without DL_FLAG_RPM_ACTIVE.
 845         */
 846        if (link->status == DL_STATE_CONSUMER_PROBE &&
 847            flags & DL_FLAG_PM_RUNTIME)
 848                pm_runtime_resume(supplier);
 849
 850        list_add_tail_rcu(&link->s_node, &supplier->links.consumers);
 851        list_add_tail_rcu(&link->c_node, &consumer->links.suppliers);
 852
 853        if (flags & DL_FLAG_SYNC_STATE_ONLY) {
 854                dev_dbg(consumer,
 855                        "Linked as a sync state only consumer to %s\n",
 856                        dev_name(supplier));
 857                goto out;
 858        }
 859
 860reorder:
 861        /*
 862         * Move the consumer and all of the devices depending on it to the end
 863         * of dpm_list and the devices_kset list.
 864         *
 865         * It is necessary to hold dpm_list locked throughout all that or else
 866         * we may end up suspending with a wrong ordering of it.
 867         */
 868        device_reorder_to_tail(consumer, NULL);
 869
 870        dev_dbg(consumer, "Linked as a consumer to %s\n", dev_name(supplier));
 871
 872out:
 873        device_pm_unlock();
 874        device_links_write_unlock();
 875
 876        if ((flags & DL_FLAG_PM_RUNTIME && flags & DL_FLAG_RPM_ACTIVE) && !link)
 877                pm_runtime_put(supplier);
 878
 879        return link;
 880}
 881EXPORT_SYMBOL_GPL(device_link_add);
 882
 883static void __device_link_del(struct kref *kref)
 884{
 885        struct device_link *link = container_of(kref, struct device_link, kref);
 886
 887        dev_dbg(link->consumer, "Dropping the link to %s\n",
 888                dev_name(link->supplier));
 889
 890        pm_runtime_drop_link(link);
 891
 892        device_link_remove_from_lists(link);
 893        device_unregister(&link->link_dev);
 894}
 895
 896static void device_link_put_kref(struct device_link *link)
 897{
 898        if (link->flags & DL_FLAG_STATELESS)
 899                kref_put(&link->kref, __device_link_del);
 900        else if (!device_is_registered(link->consumer))
 901                __device_link_del(&link->kref);
 902        else
 903                WARN(1, "Unable to drop a managed device link reference\n");
 904}
 905
 906/**
 907 * device_link_del - Delete a stateless link between two devices.
 908 * @link: Device link to delete.
 909 *
 910 * The caller must ensure proper synchronization of this function with runtime
 911 * PM.  If the link was added multiple times, it needs to be deleted as often.
 912 * Care is required for hotplugged devices:  Their links are purged on removal
 913 * and calling device_link_del() is then no longer allowed.
 914 */
 915void device_link_del(struct device_link *link)
 916{
 917        device_links_write_lock();
 918        device_link_put_kref(link);
 919        device_links_write_unlock();
 920}
 921EXPORT_SYMBOL_GPL(device_link_del);
 922
 923/**
 924 * device_link_remove - Delete a stateless link between two devices.
 925 * @consumer: Consumer end of the link.
 926 * @supplier: Supplier end of the link.
 927 *
 928 * The caller must ensure proper synchronization of this function with runtime
 929 * PM.
 930 */
 931void device_link_remove(void *consumer, struct device *supplier)
 932{
 933        struct device_link *link;
 934
 935        if (WARN_ON(consumer == supplier))
 936                return;
 937
 938        device_links_write_lock();
 939
 940        list_for_each_entry(link, &supplier->links.consumers, s_node) {
 941                if (link->consumer == consumer) {
 942                        device_link_put_kref(link);
 943                        break;
 944                }
 945        }
 946
 947        device_links_write_unlock();
 948}
 949EXPORT_SYMBOL_GPL(device_link_remove);
 950
 951static void device_links_missing_supplier(struct device *dev)
 952{
 953        struct device_link *link;
 954
 955        list_for_each_entry(link, &dev->links.suppliers, c_node) {
 956                if (link->status != DL_STATE_CONSUMER_PROBE)
 957                        continue;
 958
 959                if (link->supplier->links.status == DL_DEV_DRIVER_BOUND) {
 960                        WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
 961                } else {
 962                        WARN_ON(!(link->flags & DL_FLAG_SYNC_STATE_ONLY));
 963                        WRITE_ONCE(link->status, DL_STATE_DORMANT);
 964                }
 965        }
 966}
 967
 968/**
 969 * device_links_check_suppliers - Check presence of supplier drivers.
 970 * @dev: Consumer device.
 971 *
 972 * Check links from this device to any suppliers.  Walk the list of the device's
 973 * links to suppliers and see if all of them are available.  If not, simply
 974 * return -EPROBE_DEFER.
 975 *
 976 * We need to guarantee that the supplier will not go away after the check has
 977 * been positive here.  It only can go away in __device_release_driver() and
 978 * that function  checks the device's links to consumers.  This means we need to
 979 * mark the link as "consumer probe in progress" to make the supplier removal
 980 * wait for us to complete (or bad things may happen).
 981 *
 982 * Links without the DL_FLAG_MANAGED flag set are ignored.
 983 */
 984int device_links_check_suppliers(struct device *dev)
 985{
 986        struct device_link *link;
 987        int ret = 0;
 988        struct fwnode_handle *sup_fw;
 989
 990        /*
 991         * Device waiting for supplier to become available is not allowed to
 992         * probe.
 993         */
 994        mutex_lock(&fwnode_link_lock);
 995        if (dev->fwnode && !list_empty(&dev->fwnode->suppliers) &&
 996            !fw_devlink_is_permissive()) {
 997                sup_fw = list_first_entry(&dev->fwnode->suppliers,
 998                                          struct fwnode_link,
 999                                          c_hook)->supplier;
1000                dev_err_probe(dev, -EPROBE_DEFER, "wait for supplier %pfwP\n",
1001                              sup_fw);
1002                mutex_unlock(&fwnode_link_lock);
1003                return -EPROBE_DEFER;
1004        }
1005        mutex_unlock(&fwnode_link_lock);
1006
1007        device_links_write_lock();
1008
1009        list_for_each_entry(link, &dev->links.suppliers, c_node) {
1010                if (!(link->flags & DL_FLAG_MANAGED))
1011                        continue;
1012
1013                if (link->status != DL_STATE_AVAILABLE &&
1014                    !(link->flags & DL_FLAG_SYNC_STATE_ONLY)) {
1015                        device_links_missing_supplier(dev);
1016                        dev_err_probe(dev, -EPROBE_DEFER,
1017                                      "supplier %s not ready\n",
1018                                      dev_name(link->supplier));
1019                        ret = -EPROBE_DEFER;
1020                        break;
1021                }
1022                WRITE_ONCE(link->status, DL_STATE_CONSUMER_PROBE);
1023        }
1024        dev->links.status = DL_DEV_PROBING;
1025
1026        device_links_write_unlock();
1027        return ret;
1028}
1029
1030/**
1031 * __device_links_queue_sync_state - Queue a device for sync_state() callback
1032 * @dev: Device to call sync_state() on
1033 * @list: List head to queue the @dev on
1034 *
1035 * Queues a device for a sync_state() callback when the device links write lock
1036 * isn't held. This allows the sync_state() execution flow to use device links
1037 * APIs.  The caller must ensure this function is called with
1038 * device_links_write_lock() held.
1039 *
1040 * This function does a get_device() to make sure the device is not freed while
1041 * on this list.
1042 *
1043 * So the caller must also ensure that device_links_flush_sync_list() is called
1044 * as soon as the caller releases device_links_write_lock().  This is necessary
1045 * to make sure the sync_state() is called in a timely fashion and the
1046 * put_device() is called on this device.
1047 */
1048static void __device_links_queue_sync_state(struct device *dev,
1049                                            struct list_head *list)
1050{
1051        struct device_link *link;
1052
1053        if (!dev_has_sync_state(dev))
1054                return;
1055        if (dev->state_synced)
1056                return;
1057
1058        list_for_each_entry(link, &dev->links.consumers, s_node) {
1059                if (!(link->flags & DL_FLAG_MANAGED))
1060                        continue;
1061                if (link->status != DL_STATE_ACTIVE)
1062                        return;
1063        }
1064
1065        /*
1066         * Set the flag here to avoid adding the same device to a list more
1067         * than once. This can happen if new consumers get added to the device
1068         * and probed before the list is flushed.
1069         */
1070        dev->state_synced = true;
1071
1072        if (WARN_ON(!list_empty(&dev->links.defer_sync)))
1073                return;
1074
1075        get_device(dev);
1076        list_add_tail(&dev->links.defer_sync, list);
1077}
1078
1079/**
1080 * device_links_flush_sync_list - Call sync_state() on a list of devices
1081 * @list: List of devices to call sync_state() on
1082 * @dont_lock_dev: Device for which lock is already held by the caller
1083 *
1084 * Calls sync_state() on all the devices that have been queued for it. This
1085 * function is used in conjunction with __device_links_queue_sync_state(). The
1086 * @dont_lock_dev parameter is useful when this function is called from a
1087 * context where a device lock is already held.
1088 */
1089static void device_links_flush_sync_list(struct list_head *list,
1090                                         struct device *dont_lock_dev)
1091{
1092        struct device *dev, *tmp;
1093
1094        list_for_each_entry_safe(dev, tmp, list, links.defer_sync) {
1095                list_del_init(&dev->links.defer_sync);
1096
1097                if (dev != dont_lock_dev)
1098                        device_lock(dev);
1099
1100                if (dev->bus->sync_state)
1101                        dev->bus->sync_state(dev);
1102                else if (dev->driver && dev->driver->sync_state)
1103                        dev->driver->sync_state(dev);
1104
1105                if (dev != dont_lock_dev)
1106                        device_unlock(dev);
1107
1108                put_device(dev);
1109        }
1110}
1111
1112void device_links_supplier_sync_state_pause(void)
1113{
1114        device_links_write_lock();
1115        defer_sync_state_count++;
1116        device_links_write_unlock();
1117}
1118
1119void device_links_supplier_sync_state_resume(void)
1120{
1121        struct device *dev, *tmp;
1122        LIST_HEAD(sync_list);
1123
1124        device_links_write_lock();
1125        if (!defer_sync_state_count) {
1126                WARN(true, "Unmatched sync_state pause/resume!");
1127                goto out;
1128        }
1129        defer_sync_state_count--;
1130        if (defer_sync_state_count)
1131                goto out;
1132
1133        list_for_each_entry_safe(dev, tmp, &deferred_sync, links.defer_sync) {
1134                /*
1135                 * Delete from deferred_sync list before queuing it to
1136                 * sync_list because defer_sync is used for both lists.
1137                 */
1138                list_del_init(&dev->links.defer_sync);
1139                __device_links_queue_sync_state(dev, &sync_list);
1140        }
1141out:
1142        device_links_write_unlock();
1143
1144        device_links_flush_sync_list(&sync_list, NULL);
1145}
1146
1147static int sync_state_resume_initcall(void)
1148{
1149        device_links_supplier_sync_state_resume();
1150        return 0;
1151}
1152late_initcall(sync_state_resume_initcall);
1153
1154static void __device_links_supplier_defer_sync(struct device *sup)
1155{
1156        if (list_empty(&sup->links.defer_sync) && dev_has_sync_state(sup))
1157                list_add_tail(&sup->links.defer_sync, &deferred_sync);
1158}
1159
1160static void device_link_drop_managed(struct device_link *link)
1161{
1162        link->flags &= ~DL_FLAG_MANAGED;
1163        WRITE_ONCE(link->status, DL_STATE_NONE);
1164        kref_put(&link->kref, __device_link_del);
1165}
1166
1167static ssize_t waiting_for_supplier_show(struct device *dev,
1168                                         struct device_attribute *attr,
1169                                         char *buf)
1170{
1171        bool val;
1172
1173        device_lock(dev);
1174        val = !list_empty(&dev->fwnode->suppliers);
1175        device_unlock(dev);
1176        return sysfs_emit(buf, "%u\n", val);
1177}
1178static DEVICE_ATTR_RO(waiting_for_supplier);
1179
1180/**
1181 * device_links_force_bind - Prepares device to be force bound
1182 * @dev: Consumer device.
1183 *
1184 * device_bind_driver() force binds a device to a driver without calling any
1185 * driver probe functions. So the consumer really isn't going to wait for any
1186 * supplier before it's bound to the driver. We still want the device link
1187 * states to be sensible when this happens.
1188 *
1189 * In preparation for device_bind_driver(), this function goes through each
1190 * supplier device links and checks if the supplier is bound. If it is, then
1191 * the device link status is set to CONSUMER_PROBE. Otherwise, the device link
1192 * is dropped. Links without the DL_FLAG_MANAGED flag set are ignored.
1193 */
1194void device_links_force_bind(struct device *dev)
1195{
1196        struct device_link *link, *ln;
1197
1198        device_links_write_lock();
1199
1200        list_for_each_entry_safe(link, ln, &dev->links.suppliers, c_node) {
1201                if (!(link->flags & DL_FLAG_MANAGED))
1202                        continue;
1203
1204                if (link->status != DL_STATE_AVAILABLE) {
1205                        device_link_drop_managed(link);
1206                        continue;
1207                }
1208                WRITE_ONCE(link->status, DL_STATE_CONSUMER_PROBE);
1209        }
1210        dev->links.status = DL_DEV_PROBING;
1211
1212        device_links_write_unlock();
1213}
1214
1215/**
1216 * device_links_driver_bound - Update device links after probing its driver.
1217 * @dev: Device to update the links for.
1218 *
1219 * The probe has been successful, so update links from this device to any
1220 * consumers by changing their status to "available".
1221 *
1222 * Also change the status of @dev's links to suppliers to "active".
1223 *
1224 * Links without the DL_FLAG_MANAGED flag set are ignored.
1225 */
1226void device_links_driver_bound(struct device *dev)
1227{
1228        struct device_link *link, *ln;
1229        LIST_HEAD(sync_list);
1230
1231        /*
1232         * If a device binds successfully, it's expected to have created all
1233         * the device links it needs to or make new device links as it needs
1234         * them. So, fw_devlink no longer needs to create device links to any
1235         * of the device's suppliers.
1236         *
1237         * Also, if a child firmware node of this bound device is not added as
1238         * a device by now, assume it is never going to be added and make sure
1239         * other devices don't defer probe indefinitely by waiting for such a
1240         * child device.
1241         */
1242        if (dev->fwnode && dev->fwnode->dev == dev) {
1243                struct fwnode_handle *child;
1244                fwnode_links_purge_suppliers(dev->fwnode);
1245                fwnode_for_each_available_child_node(dev->fwnode, child)
1246                        fw_devlink_purge_absent_suppliers(child);
1247        }
1248        device_remove_file(dev, &dev_attr_waiting_for_supplier);
1249
1250        device_links_write_lock();
1251
1252        list_for_each_entry(link, &dev->links.consumers, s_node) {
1253                if (!(link->flags & DL_FLAG_MANAGED))
1254                        continue;
1255
1256                /*
1257                 * Links created during consumer probe may be in the "consumer
1258                 * probe" state to start with if the supplier is still probing
1259                 * when they are created and they may become "active" if the
1260                 * consumer probe returns first.  Skip them here.
1261                 */
1262                if (link->status == DL_STATE_CONSUMER_PROBE ||
1263                    link->status == DL_STATE_ACTIVE)
1264                        continue;
1265
1266                WARN_ON(link->status != DL_STATE_DORMANT);
1267                WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
1268
1269                if (link->flags & DL_FLAG_AUTOPROBE_CONSUMER)
1270                        driver_deferred_probe_add(link->consumer);
1271        }
1272
1273        if (defer_sync_state_count)
1274                __device_links_supplier_defer_sync(dev);
1275        else
1276                __device_links_queue_sync_state(dev, &sync_list);
1277
1278        list_for_each_entry_safe(link, ln, &dev->links.suppliers, c_node) {
1279                struct device *supplier;
1280
1281                if (!(link->flags & DL_FLAG_MANAGED))
1282                        continue;
1283
1284                supplier = link->supplier;
1285                if (link->flags & DL_FLAG_SYNC_STATE_ONLY) {
1286                        /*
1287                         * When DL_FLAG_SYNC_STATE_ONLY is set, it means no
1288                         * other DL_MANAGED_LINK_FLAGS have been set. So, it's
1289                         * save to drop the managed link completely.
1290                         */
1291                        device_link_drop_managed(link);
1292                } else {
1293                        WARN_ON(link->status != DL_STATE_CONSUMER_PROBE);
1294                        WRITE_ONCE(link->status, DL_STATE_ACTIVE);
1295                }
1296
1297                /*
1298                 * This needs to be done even for the deleted
1299                 * DL_FLAG_SYNC_STATE_ONLY device link in case it was the last
1300                 * device link that was preventing the supplier from getting a
1301                 * sync_state() call.
1302                 */
1303                if (defer_sync_state_count)
1304                        __device_links_supplier_defer_sync(supplier);
1305                else
1306                        __device_links_queue_sync_state(supplier, &sync_list);
1307        }
1308
1309        dev->links.status = DL_DEV_DRIVER_BOUND;
1310
1311        device_links_write_unlock();
1312
1313        device_links_flush_sync_list(&sync_list, dev);
1314}
1315
1316/**
1317 * __device_links_no_driver - Update links of a device without a driver.
1318 * @dev: Device without a drvier.
1319 *
1320 * Delete all non-persistent links from this device to any suppliers.
1321 *
1322 * Persistent links stay around, but their status is changed to "available",
1323 * unless they already are in the "supplier unbind in progress" state in which
1324 * case they need not be updated.
1325 *
1326 * Links without the DL_FLAG_MANAGED flag set are ignored.
1327 */
1328static void __device_links_no_driver(struct device *dev)
1329{
1330        struct device_link *link, *ln;
1331
1332        list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) {
1333                if (!(link->flags & DL_FLAG_MANAGED))
1334                        continue;
1335
1336                if (link->flags & DL_FLAG_AUTOREMOVE_CONSUMER) {
1337                        device_link_drop_managed(link);
1338                        continue;
1339                }
1340
1341                if (link->status != DL_STATE_CONSUMER_PROBE &&
1342                    link->status != DL_STATE_ACTIVE)
1343                        continue;
1344
1345                if (link->supplier->links.status == DL_DEV_DRIVER_BOUND) {
1346                        WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
1347                } else {
1348                        WARN_ON(!(link->flags & DL_FLAG_SYNC_STATE_ONLY));
1349                        WRITE_ONCE(link->status, DL_STATE_DORMANT);
1350                }
1351        }
1352
1353        dev->links.status = DL_DEV_NO_DRIVER;
1354}
1355
1356/**
1357 * device_links_no_driver - Update links after failing driver probe.
1358 * @dev: Device whose driver has just failed to probe.
1359 *
1360 * Clean up leftover links to consumers for @dev and invoke
1361 * %__device_links_no_driver() to update links to suppliers for it as
1362 * appropriate.
1363 *
1364 * Links without the DL_FLAG_MANAGED flag set are ignored.
1365 */
1366void device_links_no_driver(struct device *dev)
1367{
1368        struct device_link *link;
1369
1370        device_links_write_lock();
1371
1372        list_for_each_entry(link, &dev->links.consumers, s_node) {
1373                if (!(link->flags & DL_FLAG_MANAGED))
1374                        continue;
1375
1376                /*
1377                 * The probe has failed, so if the status of the link is
1378                 * "consumer probe" or "active", it must have been added by
1379                 * a probing consumer while this device was still probing.
1380                 * Change its state to "dormant", as it represents a valid
1381                 * relationship, but it is not functionally meaningful.
1382                 */
1383                if (link->status == DL_STATE_CONSUMER_PROBE ||
1384                    link->status == DL_STATE_ACTIVE)
1385                        WRITE_ONCE(link->status, DL_STATE_DORMANT);
1386        }
1387
1388        __device_links_no_driver(dev);
1389
1390        device_links_write_unlock();
1391}
1392
1393/**
1394 * device_links_driver_cleanup - Update links after driver removal.
1395 * @dev: Device whose driver has just gone away.
1396 *
1397 * Update links to consumers for @dev by changing their status to "dormant" and
1398 * invoke %__device_links_no_driver() to update links to suppliers for it as
1399 * appropriate.
1400 *
1401 * Links without the DL_FLAG_MANAGED flag set are ignored.
1402 */
1403void device_links_driver_cleanup(struct device *dev)
1404{
1405        struct device_link *link, *ln;
1406
1407        device_links_write_lock();
1408
1409        list_for_each_entry_safe(link, ln, &dev->links.consumers, s_node) {
1410                if (!(link->flags & DL_FLAG_MANAGED))
1411                        continue;
1412
1413                WARN_ON(link->flags & DL_FLAG_AUTOREMOVE_CONSUMER);
1414                WARN_ON(link->status != DL_STATE_SUPPLIER_UNBIND);
1415
1416                /*
1417                 * autoremove the links between this @dev and its consumer
1418                 * devices that are not active, i.e. where the link state
1419                 * has moved to DL_STATE_SUPPLIER_UNBIND.
1420                 */
1421                if (link->status == DL_STATE_SUPPLIER_UNBIND &&
1422                    link->flags & DL_FLAG_AUTOREMOVE_SUPPLIER)
1423                        device_link_drop_managed(link);
1424
1425                WRITE_ONCE(link->status, DL_STATE_DORMANT);
1426        }
1427
1428        list_del_init(&dev->links.defer_sync);
1429        __device_links_no_driver(dev);
1430
1431        device_links_write_unlock();
1432}
1433
1434/**
1435 * device_links_busy - Check if there are any busy links to consumers.
1436 * @dev: Device to check.
1437 *
1438 * Check each consumer of the device and return 'true' if its link's status
1439 * is one of "consumer probe" or "active" (meaning that the given consumer is
1440 * probing right now or its driver is present).  Otherwise, change the link
1441 * state to "supplier unbind" to prevent the consumer from being probed
1442 * successfully going forward.
1443 *
1444 * Return 'false' if there are no probing or active consumers.
1445 *
1446 * Links without the DL_FLAG_MANAGED flag set are ignored.
1447 */
1448bool device_links_busy(struct device *dev)
1449{
1450        struct device_link *link;
1451        bool ret = false;
1452
1453        device_links_write_lock();
1454
1455        list_for_each_entry(link, &dev->links.consumers, s_node) {
1456                if (!(link->flags & DL_FLAG_MANAGED))
1457                        continue;
1458
1459                if (link->status == DL_STATE_CONSUMER_PROBE
1460                    || link->status == DL_STATE_ACTIVE) {
1461                        ret = true;
1462                        break;
1463                }
1464                WRITE_ONCE(link->status, DL_STATE_SUPPLIER_UNBIND);
1465        }
1466
1467        dev->links.status = DL_DEV_UNBINDING;
1468
1469        device_links_write_unlock();
1470        return ret;
1471}
1472
1473/**
1474 * device_links_unbind_consumers - Force unbind consumers of the given device.
1475 * @dev: Device to unbind the consumers of.
1476 *
1477 * Walk the list of links to consumers for @dev and if any of them is in the
1478 * "consumer probe" state, wait for all device probes in progress to complete
1479 * and start over.
1480 *
1481 * If that's not the case, change the status of the link to "supplier unbind"
1482 * and check if the link was in the "active" state.  If so, force the consumer
1483 * driver to unbind and start over (the consumer will not re-probe as we have
1484 * changed the state of the link already).
1485 *
1486 * Links without the DL_FLAG_MANAGED flag set are ignored.
1487 */
1488void device_links_unbind_consumers(struct device *dev)
1489{
1490        struct device_link *link;
1491
1492 start:
1493        device_links_write_lock();
1494
1495        list_for_each_entry(link, &dev->links.consumers, s_node) {
1496                enum device_link_state status;
1497
1498                if (!(link->flags & DL_FLAG_MANAGED) ||
1499                    link->flags & DL_FLAG_SYNC_STATE_ONLY)
1500                        continue;
1501
1502                status = link->status;
1503                if (status == DL_STATE_CONSUMER_PROBE) {
1504                        device_links_write_unlock();
1505
1506                        wait_for_device_probe();
1507                        goto start;
1508                }
1509                WRITE_ONCE(link->status, DL_STATE_SUPPLIER_UNBIND);
1510                if (status == DL_STATE_ACTIVE) {
1511                        struct device *consumer = link->consumer;
1512
1513                        get_device(consumer);
1514
1515                        device_links_write_unlock();
1516
1517                        device_release_driver_internal(consumer, NULL,
1518                                                       consumer->parent);
1519                        put_device(consumer);
1520                        goto start;
1521                }
1522        }
1523
1524        device_links_write_unlock();
1525}
1526
1527/**
1528 * device_links_purge - Delete existing links to other devices.
1529 * @dev: Target device.
1530 */
1531static void device_links_purge(struct device *dev)
1532{
1533        struct device_link *link, *ln;
1534
1535        if (dev->class == &devlink_class)
1536                return;
1537
1538        /*
1539         * Delete all of the remaining links from this device to any other
1540         * devices (either consumers or suppliers).
1541         */
1542        device_links_write_lock();
1543
1544        list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) {
1545                WARN_ON(link->status == DL_STATE_ACTIVE);
1546                __device_link_del(&link->kref);
1547        }
1548
1549        list_for_each_entry_safe_reverse(link, ln, &dev->links.consumers, s_node) {
1550                WARN_ON(link->status != DL_STATE_DORMANT &&
1551                        link->status != DL_STATE_NONE);
1552                __device_link_del(&link->kref);
1553        }
1554
1555        device_links_write_unlock();
1556}
1557
1558#define FW_DEVLINK_FLAGS_PERMISSIVE     (DL_FLAG_INFERRED | \
1559                                         DL_FLAG_SYNC_STATE_ONLY)
1560#define FW_DEVLINK_FLAGS_ON             (DL_FLAG_INFERRED | \
1561                                         DL_FLAG_AUTOPROBE_CONSUMER)
1562#define FW_DEVLINK_FLAGS_RPM            (FW_DEVLINK_FLAGS_ON | \
1563                                         DL_FLAG_PM_RUNTIME)
1564
1565static u32 fw_devlink_flags = FW_DEVLINK_FLAGS_ON;
1566static int __init fw_devlink_setup(char *arg)
1567{
1568        if (!arg)
1569                return -EINVAL;
1570
1571        if (strcmp(arg, "off") == 0) {
1572                fw_devlink_flags = 0;
1573        } else if (strcmp(arg, "permissive") == 0) {
1574                fw_devlink_flags = FW_DEVLINK_FLAGS_PERMISSIVE;
1575        } else if (strcmp(arg, "on") == 0) {
1576                fw_devlink_flags = FW_DEVLINK_FLAGS_ON;
1577        } else if (strcmp(arg, "rpm") == 0) {
1578                fw_devlink_flags = FW_DEVLINK_FLAGS_RPM;
1579        }
1580        return 0;
1581}
1582early_param("fw_devlink", fw_devlink_setup);
1583
1584static bool fw_devlink_strict;
1585static int __init fw_devlink_strict_setup(char *arg)
1586{
1587        return strtobool(arg, &fw_devlink_strict);
1588}
1589early_param("fw_devlink.strict", fw_devlink_strict_setup);
1590
1591u32 fw_devlink_get_flags(void)
1592{
1593        return fw_devlink_flags;
1594}
1595
1596static bool fw_devlink_is_permissive(void)
1597{
1598        return fw_devlink_flags == FW_DEVLINK_FLAGS_PERMISSIVE;
1599}
1600
1601bool fw_devlink_is_strict(void)
1602{
1603        return fw_devlink_strict && !fw_devlink_is_permissive();
1604}
1605
1606static void fw_devlink_parse_fwnode(struct fwnode_handle *fwnode)
1607{
1608        if (fwnode->flags & FWNODE_FLAG_LINKS_ADDED)
1609                return;
1610
1611        fwnode_call_int_op(fwnode, add_links);
1612        fwnode->flags |= FWNODE_FLAG_LINKS_ADDED;
1613}
1614
1615static void fw_devlink_parse_fwtree(struct fwnode_handle *fwnode)
1616{
1617        struct fwnode_handle *child = NULL;
1618
1619        fw_devlink_parse_fwnode(fwnode);
1620
1621        while ((child = fwnode_get_next_available_child_node(fwnode, child)))
1622                fw_devlink_parse_fwtree(child);
1623}
1624
1625static void fw_devlink_relax_link(struct device_link *link)
1626{
1627        if (!(link->flags & DL_FLAG_INFERRED))
1628                return;
1629
1630        if (link->flags == (DL_FLAG_MANAGED | FW_DEVLINK_FLAGS_PERMISSIVE))
1631                return;
1632
1633        pm_runtime_drop_link(link);
1634        link->flags = DL_FLAG_MANAGED | FW_DEVLINK_FLAGS_PERMISSIVE;
1635        dev_dbg(link->consumer, "Relaxing link with %s\n",
1636                dev_name(link->supplier));
1637}
1638
1639static int fw_devlink_no_driver(struct device *dev, void *data)
1640{
1641        struct device_link *link = to_devlink(dev);
1642
1643        if (!link->supplier->can_match)
1644                fw_devlink_relax_link(link);
1645
1646        return 0;
1647}
1648
1649void fw_devlink_drivers_done(void)
1650{
1651        fw_devlink_drv_reg_done = true;
1652        device_links_write_lock();
1653        class_for_each_device(&devlink_class, NULL, NULL,
1654                              fw_devlink_no_driver);
1655        device_links_write_unlock();
1656}
1657
1658static void fw_devlink_unblock_consumers(struct device *dev)
1659{
1660        struct device_link *link;
1661
1662        if (!fw_devlink_flags || fw_devlink_is_permissive())
1663                return;
1664
1665        device_links_write_lock();
1666        list_for_each_entry(link, &dev->links.consumers, s_node)
1667                fw_devlink_relax_link(link);
1668        device_links_write_unlock();
1669}
1670
1671/**
1672 * fw_devlink_relax_cycle - Convert cyclic links to SYNC_STATE_ONLY links
1673 * @con: Device to check dependencies for.
1674 * @sup: Device to check against.
1675 *
1676 * Check if @sup depends on @con or any device dependent on it (its child or
1677 * its consumer etc).  When such a cyclic dependency is found, convert all
1678 * device links created solely by fw_devlink into SYNC_STATE_ONLY device links.
1679 * This is the equivalent of doing fw_devlink=permissive just between the
1680 * devices in the cycle. We need to do this because, at this point, fw_devlink
1681 * can't tell which of these dependencies is not a real dependency.
1682 *
1683 * Return 1 if a cycle is found. Otherwise, return 0.
1684 */
1685static int fw_devlink_relax_cycle(struct device *con, void *sup)
1686{
1687        struct device_link *link;
1688        int ret;
1689
1690        if (con == sup)
1691                return 1;
1692
1693        ret = device_for_each_child(con, sup, fw_devlink_relax_cycle);
1694        if (ret)
1695                return ret;
1696
1697        list_for_each_entry(link, &con->links.consumers, s_node) {
1698                if ((link->flags & ~DL_FLAG_INFERRED) ==
1699                    (DL_FLAG_SYNC_STATE_ONLY | DL_FLAG_MANAGED))
1700                        continue;
1701
1702                if (!fw_devlink_relax_cycle(link->consumer, sup))
1703                        continue;
1704
1705                ret = 1;
1706
1707                fw_devlink_relax_link(link);
1708        }
1709        return ret;
1710}
1711
1712/**
1713 * fw_devlink_create_devlink - Create a device link from a consumer to fwnode
1714 * @con: consumer device for the device link
1715 * @sup_handle: fwnode handle of supplier
1716 * @flags: devlink flags
1717 *
1718 * This function will try to create a device link between the consumer device
1719 * @con and the supplier device represented by @sup_handle.
1720 *
1721 * The supplier has to be provided as a fwnode because incorrect cycles in
1722 * fwnode links can sometimes cause the supplier device to never be created.
1723 * This function detects such cases and returns an error if it cannot create a
1724 * device link from the consumer to a missing supplier.
1725 *
1726 * Returns,
1727 * 0 on successfully creating a device link
1728 * -EINVAL if the device link cannot be created as expected
1729 * -EAGAIN if the device link cannot be created right now, but it may be
1730 *  possible to do that in the future
1731 */
1732static int fw_devlink_create_devlink(struct device *con,
1733                                     struct fwnode_handle *sup_handle, u32 flags)
1734{
1735        struct device *sup_dev;
1736        int ret = 0;
1737
1738        /*
1739         * In some cases, a device P might also be a supplier to its child node
1740         * C. However, this would defer the probe of C until the probe of P
1741         * completes successfully. This is perfectly fine in the device driver
1742         * model. device_add() doesn't guarantee probe completion of the device
1743         * by the time it returns.
1744         *
1745         * However, there are a few drivers that assume C will finish probing
1746         * as soon as it's added and before P finishes probing. So, we provide
1747         * a flag to let fw_devlink know not to delay the probe of C until the
1748         * probe of P completes successfully.
1749         *
1750         * When such a flag is set, we can't create device links where P is the
1751         * supplier of C as that would delay the probe of C.
1752         */
1753        if (sup_handle->flags & FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD &&
1754            fwnode_is_ancestor_of(sup_handle, con->fwnode))
1755                return -EINVAL;
1756
1757        sup_dev = get_dev_from_fwnode(sup_handle);
1758        if (sup_dev) {
1759                /*
1760                 * If it's one of those drivers that don't actually bind to
1761                 * their device using driver core, then don't wait on this
1762                 * supplier device indefinitely.
1763                 */
1764                if (sup_dev->links.status == DL_DEV_NO_DRIVER &&
1765                    sup_handle->flags & FWNODE_FLAG_INITIALIZED) {
1766                        ret = -EINVAL;
1767                        goto out;
1768                }
1769
1770                /*
1771                 * If this fails, it is due to cycles in device links.  Just
1772                 * give up on this link and treat it as invalid.
1773                 */
1774                if (!device_link_add(con, sup_dev, flags) &&
1775                    !(flags & DL_FLAG_SYNC_STATE_ONLY)) {
1776                        dev_info(con, "Fixing up cyclic dependency with %s\n",
1777                                 dev_name(sup_dev));
1778                        device_links_write_lock();
1779                        fw_devlink_relax_cycle(con, sup_dev);
1780                        device_links_write_unlock();
1781                        device_link_add(con, sup_dev,
1782                                        FW_DEVLINK_FLAGS_PERMISSIVE);
1783                        ret = -EINVAL;
1784                }
1785
1786                goto out;
1787        }
1788
1789        /* Supplier that's already initialized without a struct device. */
1790        if (sup_handle->flags & FWNODE_FLAG_INITIALIZED)
1791                return -EINVAL;
1792
1793        /*
1794         * DL_FLAG_SYNC_STATE_ONLY doesn't block probing and supports
1795         * cycles. So cycle detection isn't necessary and shouldn't be
1796         * done.
1797         */
1798        if (flags & DL_FLAG_SYNC_STATE_ONLY)
1799                return -EAGAIN;
1800
1801        /*
1802         * If we can't find the supplier device from its fwnode, it might be
1803         * due to a cyclic dependency between fwnodes. Some of these cycles can
1804         * be broken by applying logic. Check for these types of cycles and
1805         * break them so that devices in the cycle probe properly.
1806         *
1807         * If the supplier's parent is dependent on the consumer, then the
1808         * consumer and supplier have a cyclic dependency. Since fw_devlink
1809         * can't tell which of the inferred dependencies are incorrect, don't
1810         * enforce probe ordering between any of the devices in this cyclic
1811         * dependency. Do this by relaxing all the fw_devlink device links in
1812         * this cycle and by treating the fwnode link between the consumer and
1813         * the supplier as an invalid dependency.
1814         */
1815        sup_dev = fwnode_get_next_parent_dev(sup_handle);
1816        if (sup_dev && device_is_dependent(con, sup_dev)) {
1817                dev_info(con, "Fixing up cyclic dependency with %pfwP (%s)\n",
1818                         sup_handle, dev_name(sup_dev));
1819                device_links_write_lock();
1820                fw_devlink_relax_cycle(con, sup_dev);
1821                device_links_write_unlock();
1822                ret = -EINVAL;
1823        } else {
1824                /*
1825                 * Can't check for cycles or no cycles. So let's try
1826                 * again later.
1827                 */
1828                ret = -EAGAIN;
1829        }
1830
1831out:
1832        put_device(sup_dev);
1833        return ret;
1834}
1835
1836/**
1837 * __fw_devlink_link_to_consumers - Create device links to consumers of a device
1838 * @dev: Device that needs to be linked to its consumers
1839 *
1840 * This function looks at all the consumer fwnodes of @dev and creates device
1841 * links between the consumer device and @dev (supplier).
1842 *
1843 * If the consumer device has not been added yet, then this function creates a
1844 * SYNC_STATE_ONLY link between @dev (supplier) and the closest ancestor device
1845 * of the consumer fwnode. This is necessary to make sure @dev doesn't get a
1846 * sync_state() callback before the real consumer device gets to be added and
1847 * then probed.
1848 *
1849 * Once device links are created from the real consumer to @dev (supplier), the
1850 * fwnode links are deleted.
1851 */
1852static void __fw_devlink_link_to_consumers(struct device *dev)
1853{
1854        struct fwnode_handle *fwnode = dev->fwnode;
1855        struct fwnode_link *link, *tmp;
1856
1857        list_for_each_entry_safe(link, tmp, &fwnode->consumers, s_hook) {
1858                u32 dl_flags = fw_devlink_get_flags();
1859                struct device *con_dev;
1860                bool own_link = true;
1861                int ret;
1862
1863                con_dev = get_dev_from_fwnode(link->consumer);
1864                /*
1865                 * If consumer device is not available yet, make a "proxy"
1866                 * SYNC_STATE_ONLY link from the consumer's parent device to
1867                 * the supplier device. This is necessary to make sure the
1868                 * supplier doesn't get a sync_state() callback before the real
1869                 * consumer can create a device link to the supplier.
1870                 *
1871                 * This proxy link step is needed to handle the case where the
1872                 * consumer's parent device is added before the supplier.
1873                 */
1874                if (!con_dev) {
1875                        con_dev = fwnode_get_next_parent_dev(link->consumer);
1876                        /*
1877                         * However, if the consumer's parent device is also the
1878                         * parent of the supplier, don't create a
1879                         * consumer-supplier link from the parent to its child
1880                         * device. Such a dependency is impossible.
1881                         */
1882                        if (con_dev &&
1883                            fwnode_is_ancestor_of(con_dev->fwnode, fwnode)) {
1884                                put_device(con_dev);
1885                                con_dev = NULL;
1886                        } else {
1887                                own_link = false;
1888                                dl_flags = FW_DEVLINK_FLAGS_PERMISSIVE;
1889                        }
1890                }
1891
1892                if (!con_dev)
1893                        continue;
1894
1895                ret = fw_devlink_create_devlink(con_dev, fwnode, dl_flags);
1896                put_device(con_dev);
1897                if (!own_link || ret == -EAGAIN)
1898                        continue;
1899
1900                __fwnode_link_del(link);
1901        }
1902}
1903
1904/**
1905 * __fw_devlink_link_to_suppliers - Create device links to suppliers of a device
1906 * @dev: The consumer device that needs to be linked to its suppliers
1907 * @fwnode: Root of the fwnode tree that is used to create device links
1908 *
1909 * This function looks at all the supplier fwnodes of fwnode tree rooted at
1910 * @fwnode and creates device links between @dev (consumer) and all the
1911 * supplier devices of the entire fwnode tree at @fwnode.
1912 *
1913 * The function creates normal (non-SYNC_STATE_ONLY) device links between @dev
1914 * and the real suppliers of @dev. Once these device links are created, the
1915 * fwnode links are deleted. When such device links are successfully created,
1916 * this function is called recursively on those supplier devices. This is
1917 * needed to detect and break some invalid cycles in fwnode links.  See
1918 * fw_devlink_create_devlink() for more details.
1919 *
1920 * In addition, it also looks at all the suppliers of the entire fwnode tree
1921 * because some of the child devices of @dev that have not been added yet
1922 * (because @dev hasn't probed) might already have their suppliers added to
1923 * driver core. So, this function creates SYNC_STATE_ONLY device links between
1924 * @dev (consumer) and these suppliers to make sure they don't execute their
1925 * sync_state() callbacks before these child devices have a chance to create
1926 * their device links. The fwnode links that correspond to the child devices
1927 * aren't delete because they are needed later to create the device links
1928 * between the real consumer and supplier devices.
1929 */
1930static void __fw_devlink_link_to_suppliers(struct device *dev,
1931                                           struct fwnode_handle *fwnode)
1932{
1933        bool own_link = (dev->fwnode == fwnode);
1934        struct fwnode_link *link, *tmp;
1935        struct fwnode_handle *child = NULL;
1936        u32 dl_flags;
1937
1938        if (own_link)
1939                dl_flags = fw_devlink_get_flags();
1940        else
1941                dl_flags = FW_DEVLINK_FLAGS_PERMISSIVE;
1942
1943        list_for_each_entry_safe(link, tmp, &fwnode->suppliers, c_hook) {
1944                int ret;
1945                struct device *sup_dev;
1946                struct fwnode_handle *sup = link->supplier;
1947
1948                ret = fw_devlink_create_devlink(dev, sup, dl_flags);
1949                if (!own_link || ret == -EAGAIN)
1950                        continue;
1951
1952                __fwnode_link_del(link);
1953
1954                /* If no device link was created, nothing more to do. */
1955                if (ret)
1956                        continue;
1957
1958                /*
1959                 * If a device link was successfully created to a supplier, we
1960                 * now need to try and link the supplier to all its suppliers.
1961                 *
1962                 * This is needed to detect and delete false dependencies in
1963                 * fwnode links that haven't been converted to a device link
1964                 * yet. See comments in fw_devlink_create_devlink() for more
1965                 * details on the false dependency.
1966                 *
1967                 * Without deleting these false dependencies, some devices will
1968                 * never probe because they'll keep waiting for their false
1969                 * dependency fwnode links to be converted to device links.
1970                 */
1971                sup_dev = get_dev_from_fwnode(sup);
1972                __fw_devlink_link_to_suppliers(sup_dev, sup_dev->fwnode);
1973                put_device(sup_dev);
1974        }
1975
1976        /*
1977         * Make "proxy" SYNC_STATE_ONLY device links to represent the needs of
1978         * all the descendants. This proxy link step is needed to handle the
1979         * case where the supplier is added before the consumer's parent device
1980         * (@dev).
1981         */
1982        while ((child = fwnode_get_next_available_child_node(fwnode, child)))
1983                __fw_devlink_link_to_suppliers(dev, child);
1984}
1985
1986static void fw_devlink_link_device(struct device *dev)
1987{
1988        struct fwnode_handle *fwnode = dev->fwnode;
1989
1990        if (!fw_devlink_flags)
1991                return;
1992
1993        fw_devlink_parse_fwtree(fwnode);
1994
1995        mutex_lock(&fwnode_link_lock);
1996        __fw_devlink_link_to_consumers(dev);
1997        __fw_devlink_link_to_suppliers(dev, fwnode);
1998        mutex_unlock(&fwnode_link_lock);
1999}
2000
2001/* Device links support end. */
2002
2003int (*platform_notify)(struct device *dev) = NULL;
2004int (*platform_notify_remove)(struct device *dev) = NULL;
2005static struct kobject *dev_kobj;
2006struct kobject *sysfs_dev_char_kobj;
2007struct kobject *sysfs_dev_block_kobj;
2008
2009static DEFINE_MUTEX(device_hotplug_lock);
2010
2011void lock_device_hotplug(void)
2012{
2013        mutex_lock(&device_hotplug_lock);
2014}
2015
2016void unlock_device_hotplug(void)
2017{
2018        mutex_unlock(&device_hotplug_lock);
2019}
2020
2021int lock_device_hotplug_sysfs(void)
2022{
2023        if (mutex_trylock(&device_hotplug_lock))
2024                return 0;
2025
2026        /* Avoid busy looping (5 ms of sleep should do). */
2027        msleep(5);
2028        return restart_syscall();
2029}
2030
2031#ifdef CONFIG_BLOCK
2032static inline int device_is_not_partition(struct device *dev)
2033{
2034        return !(dev->type == &part_type);
2035}
2036#else
2037static inline int device_is_not_partition(struct device *dev)
2038{
2039        return 1;
2040}
2041#endif
2042
2043static void device_platform_notify(struct device *dev)
2044{
2045        acpi_device_notify(dev);
2046
2047        software_node_notify(dev);
2048
2049        if (platform_notify)
2050                platform_notify(dev);
2051}
2052
2053static void device_platform_notify_remove(struct device *dev)
2054{
2055        acpi_device_notify_remove(dev);
2056
2057        software_node_notify_remove(dev);
2058
2059        if (platform_notify_remove)
2060                platform_notify_remove(dev);
2061}
2062
2063/**
2064 * dev_driver_string - Return a device's driver name, if at all possible
2065 * @dev: struct device to get the name of
2066 *
2067 * Will return the device's driver's name if it is bound to a device.  If
2068 * the device is not bound to a driver, it will return the name of the bus
2069 * it is attached to.  If it is not attached to a bus either, an empty
2070 * string will be returned.
2071 */
2072const char *dev_driver_string(const struct device *dev)
2073{
2074        struct device_driver *drv;
2075
2076        /* dev->driver can change to NULL underneath us because of unbinding,
2077         * so be careful about accessing it.  dev->bus and dev->class should
2078         * never change once they are set, so they don't need special care.
2079         */
2080        drv = READ_ONCE(dev->driver);
2081        return drv ? drv->name : dev_bus_name(dev);
2082}
2083EXPORT_SYMBOL(dev_driver_string);
2084
2085#define to_dev_attr(_attr) container_of(_attr, struct device_attribute, attr)
2086
2087static ssize_t dev_attr_show(struct kobject *kobj, struct attribute *attr,
2088                             char *buf)
2089{
2090        struct device_attribute *dev_attr = to_dev_attr(attr);
2091        struct device *dev = kobj_to_dev(kobj);
2092        ssize_t ret = -EIO;
2093
2094        if (dev_attr->show)
2095                ret = dev_attr->show(dev, dev_attr, buf);
2096        if (ret >= (ssize_t)PAGE_SIZE) {
2097                printk("dev_attr_show: %pS returned bad count\n",
2098                                dev_attr->show);
2099        }
2100        return ret;
2101}
2102
2103static ssize_t dev_attr_store(struct kobject *kobj, struct attribute *attr,
2104                              const char *buf, size_t count)
2105{
2106        struct device_attribute *dev_attr = to_dev_attr(attr);
2107        struct device *dev = kobj_to_dev(kobj);
2108        ssize_t ret = -EIO;
2109
2110        if (dev_attr->store)
2111                ret = dev_attr->store(dev, dev_attr, buf, count);
2112        return ret;
2113}
2114
2115static const struct sysfs_ops dev_sysfs_ops = {
2116        .show   = dev_attr_show,
2117        .store  = dev_attr_store,
2118};
2119
2120#define to_ext_attr(x) container_of(x, struct dev_ext_attribute, attr)
2121
2122ssize_t device_store_ulong(struct device *dev,
2123                           struct device_attribute *attr,
2124                           const char *buf, size_t size)
2125{
2126        struct dev_ext_attribute *ea = to_ext_attr(attr);
2127        int ret;
2128        unsigned long new;
2129
2130        ret = kstrtoul(buf, 0, &new);
2131        if (ret)
2132                return ret;
2133        *(unsigned long *)(ea->var) = new;
2134        /* Always return full write size even if we didn't consume all */
2135        return size;
2136}
2137EXPORT_SYMBOL_GPL(device_store_ulong);
2138
2139ssize_t device_show_ulong(struct device *dev,
2140                          struct device_attribute *attr,
2141                          char *buf)
2142{
2143        struct dev_ext_attribute *ea = to_ext_attr(attr);
2144        return sysfs_emit(buf, "%lx\n", *(unsigned long *)(ea->var));
2145}
2146EXPORT_SYMBOL_GPL(device_show_ulong);
2147
2148ssize_t device_store_int(struct device *dev,
2149                         struct device_attribute *attr,
2150                         const char *buf, size_t size)
2151{
2152        struct dev_ext_attribute *ea = to_ext_attr(attr);
2153        int ret;
2154        long new;
2155
2156        ret = kstrtol(buf, 0, &new);
2157        if (ret)
2158                return ret;
2159
2160        if (new > INT_MAX || new < INT_MIN)
2161                return -EINVAL;
2162        *(int *)(ea->var) = new;
2163        /* Always return full write size even if we didn't consume all */
2164        return size;
2165}
2166EXPORT_SYMBOL_GPL(device_store_int);
2167
2168ssize_t device_show_int(struct device *dev,
2169                        struct device_attribute *attr,
2170                        char *buf)
2171{
2172        struct dev_ext_attribute *ea = to_ext_attr(attr);
2173
2174        return sysfs_emit(buf, "%d\n", *(int *)(ea->var));
2175}
2176EXPORT_SYMBOL_GPL(device_show_int);
2177
2178ssize_t device_store_bool(struct device *dev, struct device_attribute *attr,
2179                          const char *buf, size_t size)
2180{
2181        struct dev_ext_attribute *ea = to_ext_attr(attr);
2182
2183        if (strtobool(buf, ea->var) < 0)
2184                return -EINVAL;
2185
2186        return size;
2187}
2188EXPORT_SYMBOL_GPL(device_store_bool);
2189
2190ssize_t device_show_bool(struct device *dev, struct device_attribute *attr,
2191                         char *buf)
2192{
2193        struct dev_ext_attribute *ea = to_ext_attr(attr);
2194
2195        return sysfs_emit(buf, "%d\n", *(bool *)(ea->var));
2196}
2197EXPORT_SYMBOL_GPL(device_show_bool);
2198
2199/**
2200 * device_release - free device structure.
2201 * @kobj: device's kobject.
2202 *
2203 * This is called once the reference count for the object
2204 * reaches 0. We forward the call to the device's release
2205 * method, which should handle actually freeing the structure.
2206 */
2207static void device_release(struct kobject *kobj)
2208{
2209        struct device *dev = kobj_to_dev(kobj);
2210        struct device_private *p = dev->p;
2211
2212        /*
2213         * Some platform devices are driven without driver attached
2214         * and managed resources may have been acquired.  Make sure
2215         * all resources are released.
2216         *
2217         * Drivers still can add resources into device after device
2218         * is deleted but alive, so release devres here to avoid
2219         * possible memory leak.
2220         */
2221        devres_release_all(dev);
2222
2223        kfree(dev->dma_range_map);
2224
2225        if (dev->release)
2226                dev->release(dev);
2227        else if (dev->type && dev->type->release)
2228                dev->type->release(dev);
2229        else if (dev->class && dev->class->dev_release)
2230                dev->class->dev_release(dev);
2231        else
2232                WARN(1, KERN_ERR "Device '%s' does not have a release() function, it is broken and must be fixed. See Documentation/core-api/kobject.rst.\n",
2233                        dev_name(dev));
2234        kfree(p);
2235}
2236
2237static const void *device_namespace(struct kobject *kobj)
2238{
2239        struct device *dev = kobj_to_dev(kobj);
2240        const void *ns = NULL;
2241
2242        if (dev->class && dev->class->ns_type)
2243                ns = dev->class->namespace(dev);
2244
2245        return ns;
2246}
2247
2248static void device_get_ownership(struct kobject *kobj, kuid_t *uid, kgid_t *gid)
2249{
2250        struct device *dev = kobj_to_dev(kobj);
2251
2252        if (dev->class && dev->class->get_ownership)
2253                dev->class->get_ownership(dev, uid, gid);
2254}
2255
2256static struct kobj_type device_ktype = {
2257        .release        = device_release,
2258        .sysfs_ops      = &dev_sysfs_ops,
2259        .namespace      = device_namespace,
2260        .get_ownership  = device_get_ownership,
2261};
2262
2263
2264static int dev_uevent_filter(struct kset *kset, struct kobject *kobj)
2265{
2266        struct kobj_type *ktype = get_ktype(kobj);
2267
2268        if (ktype == &device_ktype) {
2269                struct device *dev = kobj_to_dev(kobj);
2270                if (dev->bus)
2271                        return 1;
2272                if (dev->class)
2273                        return 1;
2274        }
2275        return 0;
2276}
2277
2278static const char *dev_uevent_name(struct kset *kset, struct kobject *kobj)
2279{
2280        struct device *dev = kobj_to_dev(kobj);
2281
2282        if (dev->bus)
2283                return dev->bus->name;
2284        if (dev->class)
2285                return dev->class->name;
2286        return NULL;
2287}
2288
2289static int dev_uevent(struct kset *kset, struct kobject *kobj,
2290                      struct kobj_uevent_env *env)
2291{
2292        struct device *dev = kobj_to_dev(kobj);
2293        int retval = 0;
2294
2295        /* add device node properties if present */
2296        if (MAJOR(dev->devt)) {
2297                const char *tmp;
2298                const char *name;
2299                umode_t mode = 0;
2300                kuid_t uid = GLOBAL_ROOT_UID;
2301                kgid_t gid = GLOBAL_ROOT_GID;
2302
2303                add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt));
2304                add_uevent_var(env, "MINOR=%u", MINOR(dev->devt));
2305                name = device_get_devnode(dev, &mode, &uid, &gid, &tmp);
2306                if (name) {
2307                        add_uevent_var(env, "DEVNAME=%s", name);
2308                        if (mode)
2309                                add_uevent_var(env, "DEVMODE=%#o", mode & 0777);
2310                        if (!uid_eq(uid, GLOBAL_ROOT_UID))
2311                                add_uevent_var(env, "DEVUID=%u", from_kuid(&init_user_ns, uid));
2312                        if (!gid_eq(gid, GLOBAL_ROOT_GID))
2313                                add_uevent_var(env, "DEVGID=%u", from_kgid(&init_user_ns, gid));
2314                        kfree(tmp);
2315                }
2316        }
2317
2318        if (dev->type && dev->type->name)
2319                add_uevent_var(env, "DEVTYPE=%s", dev->type->name);
2320
2321        if (dev->driver)
2322                add_uevent_var(env, "DRIVER=%s", dev->driver->name);
2323
2324        /* Add common DT information about the device */
2325        of_device_uevent(dev, env);
2326
2327        /* have the bus specific function add its stuff */
2328        if (dev->bus && dev->bus->uevent) {
2329                retval = dev->bus->uevent(dev, env);
2330                if (retval)
2331                        pr_debug("device: '%s': %s: bus uevent() returned %d\n",
2332                                 dev_name(dev), __func__, retval);
2333        }
2334
2335        /* have the class specific function add its stuff */
2336        if (dev->class && dev->class->dev_uevent) {
2337                retval = dev->class->dev_uevent(dev, env);
2338                if (retval)
2339                        pr_debug("device: '%s': %s: class uevent() "
2340                                 "returned %d\n", dev_name(dev),
2341                                 __func__, retval);
2342        }
2343
2344        /* have the device type specific function add its stuff */
2345        if (dev->type && dev->type->uevent) {
2346                retval = dev->type->uevent(dev, env);
2347                if (retval)
2348                        pr_debug("device: '%s': %s: dev_type uevent() "
2349                                 "returned %d\n", dev_name(dev),
2350                                 __func__, retval);
2351        }
2352
2353        return retval;
2354}
2355
2356static const struct kset_uevent_ops device_uevent_ops = {
2357        .filter =       dev_uevent_filter,
2358        .name =         dev_uevent_name,
2359        .uevent =       dev_uevent,
2360};
2361
2362static ssize_t uevent_show(struct device *dev, struct device_attribute *attr,
2363                           char *buf)
2364{
2365        struct kobject *top_kobj;
2366        struct kset *kset;
2367        struct kobj_uevent_env *env = NULL;
2368        int i;
2369        int len = 0;
2370        int retval;
2371
2372        /* search the kset, the device belongs to */
2373        top_kobj = &dev->kobj;
2374        while (!top_kobj->kset && top_kobj->parent)
2375                top_kobj = top_kobj->parent;
2376        if (!top_kobj->kset)
2377                goto out;
2378
2379        kset = top_kobj->kset;
2380        if (!kset->uevent_ops || !kset->uevent_ops->uevent)
2381                goto out;
2382
2383        /* respect filter */
2384        if (kset->uevent_ops && kset->uevent_ops->filter)
2385                if (!kset->uevent_ops->filter(kset, &dev->kobj))
2386                        goto out;
2387
2388        env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
2389        if (!env)
2390                return -ENOMEM;
2391
2392        /* let the kset specific function add its keys */
2393        retval = kset->uevent_ops->uevent(kset, &dev->kobj, env);
2394        if (retval)
2395                goto out;
2396
2397        /* copy keys to file */
2398        for (i = 0; i < env->envp_idx; i++)
2399                len += sysfs_emit_at(buf, len, "%s\n", env->envp[i]);
2400out:
2401        kfree(env);
2402        return len;
2403}
2404
2405static ssize_t uevent_store(struct device *dev, struct device_attribute *attr,
2406                            const char *buf, size_t count)
2407{
2408        int rc;
2409
2410        rc = kobject_synth_uevent(&dev->kobj, buf, count);
2411
2412        if (rc) {
2413                dev_err(dev, "uevent: failed to send synthetic uevent\n");
2414                return rc;
2415        }
2416
2417        return count;
2418}
2419static DEVICE_ATTR_RW(uevent);
2420
2421static ssize_t online_show(struct device *dev, struct device_attribute *attr,
2422                           char *buf)
2423{
2424        bool val;
2425
2426        device_lock(dev);
2427        val = !dev->offline;
2428        device_unlock(dev);
2429        return sysfs_emit(buf, "%u\n", val);
2430}
2431
2432static ssize_t online_store(struct device *dev, struct device_attribute *attr,
2433                            const char *buf, size_t count)
2434{
2435        bool val;
2436        int ret;
2437
2438        ret = strtobool(buf, &val);
2439        if (ret < 0)
2440                return ret;
2441
2442        ret = lock_device_hotplug_sysfs();
2443        if (ret)
2444                return ret;
2445
2446        ret = val ? device_online(dev) : device_offline(dev);
2447        unlock_device_hotplug();
2448        return ret < 0 ? ret : count;
2449}
2450static DEVICE_ATTR_RW(online);
2451
2452static ssize_t removable_show(struct device *dev, struct device_attribute *attr,
2453                              char *buf)
2454{
2455        const char *loc;
2456
2457        switch (dev->removable) {
2458        case DEVICE_REMOVABLE:
2459                loc = "removable";
2460                break;
2461        case DEVICE_FIXED:
2462                loc = "fixed";
2463                break;
2464        default:
2465                loc = "unknown";
2466        }
2467        return sysfs_emit(buf, "%s\n", loc);
2468}
2469static DEVICE_ATTR_RO(removable);
2470
2471int device_add_groups(struct device *dev, const struct attribute_group **groups)
2472{
2473        return sysfs_create_groups(&dev->kobj, groups);
2474}
2475EXPORT_SYMBOL_GPL(device_add_groups);
2476
2477void device_remove_groups(struct device *dev,
2478                          const struct attribute_group **groups)
2479{
2480        sysfs_remove_groups(&dev->kobj, groups);
2481}
2482EXPORT_SYMBOL_GPL(device_remove_groups);
2483
2484union device_attr_group_devres {
2485        const struct attribute_group *group;
2486        const struct attribute_group **groups;
2487};
2488
2489static int devm_attr_group_match(struct device *dev, void *res, void *data)
2490{
2491        return ((union device_attr_group_devres *)res)->group == data;
2492}
2493
2494static void devm_attr_group_remove(struct device *dev, void *res)
2495{
2496        union device_attr_group_devres *devres = res;
2497        const struct attribute_group *group = devres->group;
2498
2499        dev_dbg(dev, "%s: removing group %p\n", __func__, group);
2500        sysfs_remove_group(&dev->kobj, group);
2501}
2502
2503static void devm_attr_groups_remove(struct device *dev, void *res)
2504{
2505        union device_attr_group_devres *devres = res;
2506        const struct attribute_group **groups = devres->groups;
2507
2508        dev_dbg(dev, "%s: removing groups %p\n", __func__, groups);
2509        sysfs_remove_groups(&dev->kobj, groups);
2510}
2511
2512/**
2513 * devm_device_add_group - given a device, create a managed attribute group
2514 * @dev:        The device to create the group for
2515 * @grp:        The attribute group to create
2516 *
2517 * This function creates a group for the first time.  It will explicitly
2518 * warn and error if any of the attribute files being created already exist.
2519 *
2520 * Returns 0 on success or error code on failure.
2521 */
2522int devm_device_add_group(struct device *dev, const struct attribute_group *grp)
2523{
2524        union device_attr_group_devres *devres;
2525        int error;
2526
2527        devres = devres_alloc(devm_attr_group_remove,
2528                              sizeof(*devres), GFP_KERNEL);
2529        if (!devres)
2530                return -ENOMEM;
2531
2532        error = sysfs_create_group(&dev->kobj, grp);
2533        if (error) {
2534                devres_free(devres);
2535                return error;
2536        }
2537
2538        devres->group = grp;
2539        devres_add(dev, devres);
2540        return 0;
2541}
2542EXPORT_SYMBOL_GPL(devm_device_add_group);
2543
2544/**
2545 * devm_device_remove_group: remove a managed group from a device
2546 * @dev:        device to remove the group from
2547 * @grp:        group to remove
2548 *
2549 * This function removes a group of attributes from a device. The attributes
2550 * previously have to have been created for this group, otherwise it will fail.
2551 */
2552void devm_device_remove_group(struct device *dev,
2553                              const struct attribute_group *grp)
2554{
2555        WARN_ON(devres_release(dev, devm_attr_group_remove,
2556                               devm_attr_group_match,
2557                               /* cast away const */ (void *)grp));
2558}
2559EXPORT_SYMBOL_GPL(devm_device_remove_group);
2560
2561/**
2562 * devm_device_add_groups - create a bunch of managed attribute groups
2563 * @dev:        The device to create the group for
2564 * @groups:     The attribute groups to create, NULL terminated
2565 *
2566 * This function creates a bunch of managed attribute groups.  If an error
2567 * occurs when creating a group, all previously created groups will be
2568 * removed, unwinding everything back to the original state when this
2569 * function was called.  It will explicitly warn and error if any of the
2570 * attribute files being created already exist.
2571 *
2572 * Returns 0 on success or error code from sysfs_create_group on failure.
2573 */
2574int devm_device_add_groups(struct device *dev,
2575                           const struct attribute_group **groups)
2576{
2577        union device_attr_group_devres *devres;
2578        int error;
2579
2580        devres = devres_alloc(devm_attr_groups_remove,
2581                              sizeof(*devres), GFP_KERNEL);
2582        if (!devres)
2583                return -ENOMEM;
2584
2585        error = sysfs_create_groups(&dev->kobj, groups);
2586        if (error) {
2587                devres_free(devres);
2588                return error;
2589        }
2590
2591        devres->groups = groups;
2592        devres_add(dev, devres);
2593        return 0;
2594}
2595EXPORT_SYMBOL_GPL(devm_device_add_groups);
2596
2597/**
2598 * devm_device_remove_groups - remove a list of managed groups
2599 *
2600 * @dev:        The device for the groups to be removed from
2601 * @groups:     NULL terminated list of groups to be removed
2602 *
2603 * If groups is not NULL, remove the specified groups from the device.
2604 */
2605void devm_device_remove_groups(struct device *dev,
2606                               const struct attribute_group **groups)
2607{
2608        WARN_ON(devres_release(dev, devm_attr_groups_remove,
2609                               devm_attr_group_match,
2610                               /* cast away const */ (void *)groups));
2611}
2612EXPORT_SYMBOL_GPL(devm_device_remove_groups);
2613
2614static int device_add_attrs(struct device *dev)
2615{
2616        struct class *class = dev->class;
2617        const struct device_type *type = dev->type;
2618        int error;
2619
2620        if (class) {
2621                error = device_add_groups(dev, class->dev_groups);
2622                if (error)
2623                        return error;
2624        }
2625
2626        if (type) {
2627                error = device_add_groups(dev, type->groups);
2628                if (error)
2629                        goto err_remove_class_groups;
2630        }
2631
2632        error = device_add_groups(dev, dev->groups);
2633        if (error)
2634                goto err_remove_type_groups;
2635
2636        if (device_supports_offline(dev) && !dev->offline_disabled) {
2637                error = device_create_file(dev, &dev_attr_online);
2638                if (error)
2639                        goto err_remove_dev_groups;
2640        }
2641
2642        if (fw_devlink_flags && !fw_devlink_is_permissive() && dev->fwnode) {
2643                error = device_create_file(dev, &dev_attr_waiting_for_supplier);
2644                if (error)
2645                        goto err_remove_dev_online;
2646        }
2647
2648        if (dev_removable_is_valid(dev)) {
2649                error = device_create_file(dev, &dev_attr_removable);
2650                if (error)
2651                        goto err_remove_dev_waiting_for_supplier;
2652        }
2653
2654        return 0;
2655
2656 err_remove_dev_waiting_for_supplier:
2657        device_remove_file(dev, &dev_attr_waiting_for_supplier);
2658 err_remove_dev_online:
2659        device_remove_file(dev, &dev_attr_online);
2660 err_remove_dev_groups:
2661        device_remove_groups(dev, dev->groups);
2662 err_remove_type_groups:
2663        if (type)
2664                device_remove_groups(dev, type->groups);
2665 err_remove_class_groups:
2666        if (class)
2667                device_remove_groups(dev, class->dev_groups);
2668
2669        return error;
2670}
2671
2672static void device_remove_attrs(struct device *dev)
2673{
2674        struct class *class = dev->class;
2675        const struct device_type *type = dev->type;
2676
2677        device_remove_file(dev, &dev_attr_removable);
2678        device_remove_file(dev, &dev_attr_waiting_for_supplier);
2679        device_remove_file(dev, &dev_attr_online);
2680        device_remove_groups(dev, dev->groups);
2681
2682        if (type)
2683                device_remove_groups(dev, type->groups);
2684
2685        if (class)
2686                device_remove_groups(dev, class->dev_groups);
2687}
2688
2689static ssize_t dev_show(struct device *dev, struct device_attribute *attr,
2690                        char *buf)
2691{
2692        return print_dev_t(buf, dev->devt);
2693}
2694static DEVICE_ATTR_RO(dev);
2695
2696/* /sys/devices/ */
2697struct kset *devices_kset;
2698
2699/**
2700 * devices_kset_move_before - Move device in the devices_kset's list.
2701 * @deva: Device to move.
2702 * @devb: Device @deva should come before.
2703 */
2704static void devices_kset_move_before(struct device *deva, struct device *devb)
2705{
2706        if (!devices_kset)
2707                return;
2708        pr_debug("devices_kset: Moving %s before %s\n",
2709                 dev_name(deva), dev_name(devb));
2710        spin_lock(&devices_kset->list_lock);
2711        list_move_tail(&deva->kobj.entry, &devb->kobj.entry);
2712        spin_unlock(&devices_kset->list_lock);
2713}
2714
2715/**
2716 * devices_kset_move_after - Move device in the devices_kset's list.
2717 * @deva: Device to move
2718 * @devb: Device @deva should come after.
2719 */
2720static void devices_kset_move_after(struct device *deva, struct device *devb)
2721{
2722        if (!devices_kset)
2723                return;
2724        pr_debug("devices_kset: Moving %s after %s\n",
2725                 dev_name(deva), dev_name(devb));
2726        spin_lock(&devices_kset->list_lock);
2727        list_move(&deva->kobj.entry, &devb->kobj.entry);
2728        spin_unlock(&devices_kset->list_lock);
2729}
2730
2731/**
2732 * devices_kset_move_last - move the device to the end of devices_kset's list.
2733 * @dev: device to move
2734 */
2735void devices_kset_move_last(struct device *dev)
2736{
2737        if (!devices_kset)
2738                return;
2739        pr_debug("devices_kset: Moving %s to end of list\n", dev_name(dev));
2740        spin_lock(&devices_kset->list_lock);
2741        list_move_tail(&dev->kobj.entry, &devices_kset->list);
2742        spin_unlock(&devices_kset->list_lock);
2743}
2744
2745/**
2746 * device_create_file - create sysfs attribute file for device.
2747 * @dev: device.
2748 * @attr: device attribute descriptor.
2749 */
2750int device_create_file(struct device *dev,
2751                       const struct device_attribute *attr)
2752{
2753        int error = 0;
2754
2755        if (dev) {
2756                WARN(((attr->attr.mode & S_IWUGO) && !attr->store),
2757                        "Attribute %s: write permission without 'store'\n",
2758                        attr->attr.name);
2759                WARN(((attr->attr.mode & S_IRUGO) && !attr->show),
2760                        "Attribute %s: read permission without 'show'\n",
2761                        attr->attr.name);
2762                error = sysfs_create_file(&dev->kobj, &attr->attr);
2763        }
2764
2765        return error;
2766}
2767EXPORT_SYMBOL_GPL(device_create_file);
2768
2769/**
2770 * device_remove_file - remove sysfs attribute file.
2771 * @dev: device.
2772 * @attr: device attribute descriptor.
2773 */
2774void device_remove_file(struct device *dev,
2775                        const struct device_attribute *attr)
2776{
2777        if (dev)
2778                sysfs_remove_file(&dev->kobj, &attr->attr);
2779}
2780EXPORT_SYMBOL_GPL(device_remove_file);
2781
2782/**
2783 * device_remove_file_self - remove sysfs attribute file from its own method.
2784 * @dev: device.
2785 * @attr: device attribute descriptor.
2786 *
2787 * See kernfs_remove_self() for details.
2788 */
2789bool device_remove_file_self(struct device *dev,
2790                             const struct device_attribute *attr)
2791{
2792        if (dev)
2793                return sysfs_remove_file_self(&dev->kobj, &attr->attr);
2794        else
2795                return false;
2796}
2797EXPORT_SYMBOL_GPL(device_remove_file_self);
2798
2799/**
2800 * device_create_bin_file - create sysfs binary attribute file for device.
2801 * @dev: device.
2802 * @attr: device binary attribute descriptor.
2803 */
2804int device_create_bin_file(struct device *dev,
2805                           const struct bin_attribute *attr)
2806{
2807        int error = -EINVAL;
2808        if (dev)
2809                error = sysfs_create_bin_file(&dev->kobj, attr);
2810        return error;
2811}
2812EXPORT_SYMBOL_GPL(device_create_bin_file);
2813
2814/**
2815 * device_remove_bin_file - remove sysfs binary attribute file
2816 * @dev: device.
2817 * @attr: device binary attribute descriptor.
2818 */
2819void device_remove_bin_file(struct device *dev,
2820                            const struct bin_attribute *attr)
2821{
2822        if (dev)
2823                sysfs_remove_bin_file(&dev->kobj, attr);
2824}
2825EXPORT_SYMBOL_GPL(device_remove_bin_file);
2826
2827static void klist_children_get(struct klist_node *n)
2828{
2829        struct device_private *p = to_device_private_parent(n);
2830        struct device *dev = p->device;
2831
2832        get_device(dev);
2833}
2834
2835static void klist_children_put(struct klist_node *n)
2836{
2837        struct device_private *p = to_device_private_parent(n);
2838        struct device *dev = p->device;
2839
2840        put_device(dev);
2841}
2842
2843/**
2844 * device_initialize - init device structure.
2845 * @dev: device.
2846 *
2847 * This prepares the device for use by other layers by initializing
2848 * its fields.
2849 * It is the first half of device_register(), if called by
2850 * that function, though it can also be called separately, so one
2851 * may use @dev's fields. In particular, get_device()/put_device()
2852 * may be used for reference counting of @dev after calling this
2853 * function.
2854 *
2855 * All fields in @dev must be initialized by the caller to 0, except
2856 * for those explicitly set to some other value.  The simplest
2857 * approach is to use kzalloc() to allocate the structure containing
2858 * @dev.
2859 *
2860 * NOTE: Use put_device() to give up your reference instead of freeing
2861 * @dev directly once you have called this function.
2862 */
2863void device_initialize(struct device *dev)
2864{
2865        dev->kobj.kset = devices_kset;
2866        kobject_init(&dev->kobj, &device_ktype);
2867        INIT_LIST_HEAD(&dev->dma_pools);
2868        mutex_init(&dev->mutex);
2869#ifdef CONFIG_PROVE_LOCKING
2870        mutex_init(&dev->lockdep_mutex);
2871#endif
2872        lockdep_set_novalidate_class(&dev->mutex);
2873        spin_lock_init(&dev->devres_lock);
2874        INIT_LIST_HEAD(&dev->devres_head);
2875        device_pm_init(dev);
2876        set_dev_node(dev, NUMA_NO_NODE);
2877#ifdef CONFIG_GENERIC_MSI_IRQ
2878        raw_spin_lock_init(&dev->msi_lock);
2879        INIT_LIST_HEAD(&dev->msi_list);
2880#endif
2881        INIT_LIST_HEAD(&dev->links.consumers);
2882        INIT_LIST_HEAD(&dev->links.suppliers);
2883        INIT_LIST_HEAD(&dev->links.defer_sync);
2884        dev->links.status = DL_DEV_NO_DRIVER;
2885#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) || \
2886    defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
2887    defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL)
2888        dev->dma_coherent = dma_default_coherent;
2889#endif
2890#ifdef CONFIG_SWIOTLB
2891        dev->dma_io_tlb_mem = &io_tlb_default_mem;
2892#endif
2893}
2894EXPORT_SYMBOL_GPL(device_initialize);
2895
2896struct kobject *virtual_device_parent(struct device *dev)
2897{
2898        static struct kobject *virtual_dir = NULL;
2899
2900        if (!virtual_dir)
2901                virtual_dir = kobject_create_and_add("virtual",
2902                                                     &devices_kset->kobj);
2903
2904        return virtual_dir;
2905}
2906
2907struct class_dir {
2908        struct kobject kobj;
2909        struct class *class;
2910};
2911
2912#define to_class_dir(obj) container_of(obj, struct class_dir, kobj)
2913
2914static void class_dir_release(struct kobject *kobj)
2915{
2916        struct class_dir *dir = to_class_dir(kobj);
2917        kfree(dir);
2918}
2919
2920static const
2921struct kobj_ns_type_operations *class_dir_child_ns_type(struct kobject *kobj)
2922{
2923        struct class_dir *dir = to_class_dir(kobj);
2924        return dir->class->ns_type;
2925}
2926
2927static struct kobj_type class_dir_ktype = {
2928        .release        = class_dir_release,
2929        .sysfs_ops      = &kobj_sysfs_ops,
2930        .child_ns_type  = class_dir_child_ns_type
2931};
2932
2933static struct kobject *
2934class_dir_create_and_add(struct class *class, struct kobject *parent_kobj)
2935{
2936        struct class_dir *dir;
2937        int retval;
2938
2939        dir = kzalloc(sizeof(*dir), GFP_KERNEL);
2940        if (!dir)
2941                return ERR_PTR(-ENOMEM);
2942
2943        dir->class = class;
2944        kobject_init(&dir->kobj, &class_dir_ktype);
2945
2946        dir->kobj.kset = &class->p->glue_dirs;
2947
2948        retval = kobject_add(&dir->kobj, parent_kobj, "%s", class->name);
2949        if (retval < 0) {
2950                kobject_put(&dir->kobj);
2951                return ERR_PTR(retval);
2952        }
2953        return &dir->kobj;
2954}
2955
2956static DEFINE_MUTEX(gdp_mutex);
2957
2958static struct kobject *get_device_parent(struct device *dev,
2959                                         struct device *parent)
2960{
2961        if (dev->class) {
2962                struct kobject *kobj = NULL;
2963                struct kobject *parent_kobj;
2964                struct kobject *k;
2965
2966#ifdef CONFIG_BLOCK
2967                /* block disks show up in /sys/block */
2968                if (sysfs_deprecated && dev->class == &block_class) {
2969                        if (parent && parent->class == &block_class)
2970                                return &parent->kobj;
2971                        return &block_class.p->subsys.kobj;
2972                }
2973#endif
2974
2975                /*
2976                 * If we have no parent, we live in "virtual".
2977                 * Class-devices with a non class-device as parent, live
2978                 * in a "glue" directory to prevent namespace collisions.
2979                 */
2980                if (parent == NULL)
2981                        parent_kobj = virtual_device_parent(dev);
2982                else if (parent->class && !dev->class->ns_type)
2983                        return &parent->kobj;
2984                else
2985                        parent_kobj = &parent->kobj;
2986
2987                mutex_lock(&gdp_mutex);
2988
2989                /* find our class-directory at the parent and reference it */
2990                spin_lock(&dev->class->p->glue_dirs.list_lock);
2991                list_for_each_entry(k, &dev->class->p->glue_dirs.list, entry)
2992                        if (k->parent == parent_kobj) {
2993                                kobj = kobject_get(k);
2994                                break;
2995                        }
2996                spin_unlock(&dev->class->p->glue_dirs.list_lock);
2997                if (kobj) {
2998                        mutex_unlock(&gdp_mutex);
2999                        return kobj;
3000                }
3001
3002                /* or create a new class-directory at the parent device */
3003                k = class_dir_create_and_add(dev->class, parent_kobj);
3004                /* do not emit an uevent for this simple "glue" directory */
3005                mutex_unlock(&gdp_mutex);
3006                return k;
3007        }
3008
3009        /* subsystems can specify a default root directory for their devices */
3010        if (!parent && dev->bus && dev->bus->dev_root)
3011                return &dev->bus->dev_root->kobj;
3012
3013        if (parent)
3014                return &parent->kobj;
3015        return NULL;
3016}
3017
3018static inline bool live_in_glue_dir(struct kobject *kobj,
3019                                    struct device *dev)
3020{
3021        if (!kobj || !dev->class ||
3022            kobj->kset != &dev->class->p->glue_dirs)
3023                return false;
3024        return true;
3025}
3026
3027static inline struct kobject *get_glue_dir(struct device *dev)
3028{
3029        return dev->kobj.parent;
3030}
3031
3032/*
3033 * make sure cleaning up dir as the last step, we need to make
3034 * sure .release handler of kobject is run with holding the
3035 * global lock
3036 */
3037static void cleanup_glue_dir(struct device *dev, struct kobject *glue_dir)
3038{
3039        unsigned int ref;
3040
3041        /* see if we live in a "glue" directory */
3042        if (!live_in_glue_dir(glue_dir, dev))
3043                return;
3044
3045        mutex_lock(&gdp_mutex);
3046        /**
3047         * There is a race condition between removing glue directory
3048         * and adding a new device under the glue directory.
3049         *
3050         * CPU1:                                         CPU2:
3051         *
3052         * device_add()
3053         *   get_device_parent()
3054         *     class_dir_create_and_add()
3055         *       kobject_add_internal()
3056         *         create_dir()    // create glue_dir
3057         *
3058         *                                               device_add()
3059         *                                                 get_device_parent()
3060         *                                                   kobject_get() // get glue_dir
3061         *
3062         * device_del()
3063         *   cleanup_glue_dir()
3064         *     kobject_del(glue_dir)
3065         *
3066         *                                               kobject_add()
3067         *                                                 kobject_add_internal()
3068         *                                                   create_dir() // in glue_dir
3069         *                                                     sysfs_create_dir_ns()
3070         *                                                       kernfs_create_dir_ns(sd)
3071         *
3072         *       sysfs_remove_dir() // glue_dir->sd=NULL
3073         *       sysfs_put()        // free glue_dir->sd
3074         *
3075         *                                                         // sd is freed
3076         *                                                         kernfs_new_node(sd)
3077         *                                                           kernfs_get(glue_dir)
3078         *                                                           kernfs_add_one()
3079         *                                                           kernfs_put()
3080         *
3081         * Before CPU1 remove last child device under glue dir, if CPU2 add
3082         * a new device under glue dir, the glue_dir kobject reference count
3083         * will be increase to 2 in kobject_get(k). And CPU2 has been called
3084         * kernfs_create_dir_ns(). Meanwhile, CPU1 call sysfs_remove_dir()
3085         * and sysfs_put(). This result in glue_dir->sd is freed.
3086         *
3087         * Then the CPU2 will see a stale "empty" but still potentially used
3088         * glue dir around in kernfs_new_node().
3089         *
3090         * In order to avoid this happening, we also should make sure that
3091         * kernfs_node for glue_dir is released in CPU1 only when refcount
3092         * for glue_dir kobj is 1.
3093         */
3094        ref = kref_read(&glue_dir->kref);
3095        if (!kobject_has_children(glue_dir) && !--ref)
3096                kobject_del(glue_dir);
3097        kobject_put(glue_dir);
3098        mutex_unlock(&gdp_mutex);
3099}
3100
3101static int device_add_class_symlinks(struct device *dev)
3102{
3103        struct device_node *of_node = dev_of_node(dev);
3104        int error;
3105
3106        if (of_node) {
3107                error = sysfs_create_link(&dev->kobj, of_node_kobj(of_node), "of_node");
3108                if (error)
3109                        dev_warn(dev, "Error %d creating of_node link\n",error);
3110                /* An error here doesn't warrant bringing down the device */
3111        }
3112
3113        if (!dev->class)
3114                return 0;
3115
3116        error = sysfs_create_link(&dev->kobj,
3117                                  &dev->class->p->subsys.kobj,
3118                                  "subsystem");
3119        if (error)
3120                goto out_devnode;
3121
3122        if (dev->parent && device_is_not_partition(dev)) {
3123                error = sysfs_create_link(&dev->kobj, &dev->parent->kobj,
3124                                          "device");
3125                if (error)
3126                        goto out_subsys;
3127        }
3128
3129#ifdef CONFIG_BLOCK
3130        /* /sys/block has directories and does not need symlinks */
3131        if (sysfs_deprecated && dev->class == &block_class)
3132                return 0;
3133#endif
3134
3135        /* link in the class directory pointing to the device */
3136        error = sysfs_create_link(&dev->class->p->subsys.kobj,
3137                                  &dev->kobj, dev_name(dev));
3138        if (error)
3139                goto out_device;
3140
3141        return 0;
3142
3143out_device:
3144        sysfs_remove_link(&dev->kobj, "device");
3145
3146out_subsys:
3147        sysfs_remove_link(&dev->kobj, "subsystem");
3148out_devnode:
3149        sysfs_remove_link(&dev->kobj, "of_node");
3150        return error;
3151}
3152
3153static void device_remove_class_symlinks(struct device *dev)
3154{
3155        if (dev_of_node(dev))
3156                sysfs_remove_link(&dev->kobj, "of_node");
3157
3158        if (!dev->class)
3159                return;
3160
3161        if (dev->parent && device_is_not_partition(dev))
3162                sysfs_remove_link(&dev->kobj, "device");
3163        sysfs_remove_link(&dev->kobj, "subsystem");
3164#ifdef CONFIG_BLOCK
3165        if (sysfs_deprecated && dev->class == &block_class)
3166                return;
3167#endif
3168        sysfs_delete_link(&dev->class->p->subsys.kobj, &dev->kobj, dev_name(dev));
3169}
3170
3171/**
3172 * dev_set_name - set a device name
3173 * @dev: device
3174 * @fmt: format string for the device's name
3175 */
3176int dev_set_name(struct device *dev, const char *fmt, ...)
3177{
3178        va_list vargs;
3179        int err;
3180
3181        va_start(vargs, fmt);
3182        err = kobject_set_name_vargs(&dev->kobj, fmt, vargs);
3183        va_end(vargs);
3184        return err;
3185}
3186EXPORT_SYMBOL_GPL(dev_set_name);
3187
3188/**
3189 * device_to_dev_kobj - select a /sys/dev/ directory for the device
3190 * @dev: device
3191 *
3192 * By default we select char/ for new entries.  Setting class->dev_obj
3193 * to NULL prevents an entry from being created.  class->dev_kobj must
3194 * be set (or cleared) before any devices are registered to the class
3195 * otherwise device_create_sys_dev_entry() and
3196 * device_remove_sys_dev_entry() will disagree about the presence of
3197 * the link.
3198 */
3199static struct kobject *device_to_dev_kobj(struct device *dev)
3200{
3201        struct kobject *kobj;
3202
3203        if (dev->class)
3204                kobj = dev->class->dev_kobj;
3205        else
3206                kobj = sysfs_dev_char_kobj;
3207
3208        return kobj;
3209}
3210
3211static int device_create_sys_dev_entry(struct device *dev)
3212{
3213        struct kobject *kobj = device_to_dev_kobj(dev);
3214        int error = 0;
3215        char devt_str[15];
3216
3217        if (kobj) {
3218                format_dev_t(devt_str, dev->devt);
3219                error = sysfs_create_link(kobj, &dev->kobj, devt_str);
3220        }
3221
3222        return error;
3223}
3224
3225static void device_remove_sys_dev_entry(struct device *dev)
3226{
3227        struct kobject *kobj = device_to_dev_kobj(dev);
3228        char devt_str[15];
3229
3230        if (kobj) {
3231                format_dev_t(devt_str, dev->devt);
3232                sysfs_remove_link(kobj, devt_str);
3233        }
3234}
3235
3236static int device_private_init(struct device *dev)
3237{
3238        dev->p = kzalloc(sizeof(*dev->p), GFP_KERNEL);
3239        if (!dev->p)
3240                return -ENOMEM;
3241        dev->p->device = dev;
3242        klist_init(&dev->p->klist_children, klist_children_get,
3243                   klist_children_put);
3244        INIT_LIST_HEAD(&dev->p->deferred_probe);
3245        return 0;
3246}
3247
3248/**
3249 * device_add - add device to device hierarchy.
3250 * @dev: device.
3251 *
3252 * This is part 2 of device_register(), though may be called
3253 * separately _iff_ device_initialize() has been called separately.
3254 *
3255 * This adds @dev to the kobject hierarchy via kobject_add(), adds it
3256 * to the global and sibling lists for the device, then
3257 * adds it to the other relevant subsystems of the driver model.
3258 *
3259 * Do not call this routine or device_register() more than once for
3260 * any device structure.  The driver model core is not designed to work
3261 * with devices that get unregistered and then spring back to life.
3262 * (Among other things, it's very hard to guarantee that all references
3263 * to the previous incarnation of @dev have been dropped.)  Allocate
3264 * and register a fresh new struct device instead.
3265 *
3266 * NOTE: _Never_ directly free @dev after calling this function, even
3267 * if it returned an error! Always use put_device() to give up your
3268 * reference instead.
3269 *
3270 * Rule of thumb is: if device_add() succeeds, you should call
3271 * device_del() when you want to get rid of it. If device_add() has
3272 * *not* succeeded, use *only* put_device() to drop the reference
3273 * count.
3274 */
3275int device_add(struct device *dev)
3276{
3277        struct device *parent;
3278        struct kobject *kobj;
3279        struct class_interface *class_intf;
3280        int error = -EINVAL;
3281        struct kobject *glue_dir = NULL;
3282
3283        dev = get_device(dev);
3284        if (!dev)
3285                goto done;
3286
3287        if (!dev->p) {
3288                error = device_private_init(dev);
3289                if (error)
3290                        goto done;
3291        }
3292
3293        /*
3294         * for statically allocated devices, which should all be converted
3295         * some day, we need to initialize the name. We prevent reading back
3296         * the name, and force the use of dev_name()
3297         */
3298        if (dev->init_name) {
3299                dev_set_name(dev, "%s", dev->init_name);
3300                dev->init_name = NULL;
3301        }
3302
3303        /* subsystems can specify simple device enumeration */
3304        if (!dev_name(dev) && dev->bus && dev->bus->dev_name)
3305                dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id);
3306
3307        if (!dev_name(dev)) {
3308                error = -EINVAL;
3309                goto name_error;
3310        }
3311
3312        pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
3313
3314        parent = get_device(dev->parent);
3315        kobj = get_device_parent(dev, parent);
3316        if (IS_ERR(kobj)) {
3317                error = PTR_ERR(kobj);
3318                goto parent_error;
3319        }
3320        if (kobj)
3321                dev->kobj.parent = kobj;
3322
3323        /* use parent numa_node */
3324        if (parent && (dev_to_node(dev) == NUMA_NO_NODE))
3325                set_dev_node(dev, dev_to_node(parent));
3326
3327        /* first, register with generic layer. */
3328        /* we require the name to be set before, and pass NULL */
3329        error = kobject_add(&dev->kobj, dev->kobj.parent, NULL);
3330        if (error) {
3331                glue_dir = get_glue_dir(dev);
3332                goto Error;
3333        }
3334
3335        /* notify platform of device entry */
3336        device_platform_notify(dev);
3337
3338        error = device_create_file(dev, &dev_attr_uevent);
3339        if (error)
3340                goto attrError;
3341
3342        error = device_add_class_symlinks(dev);
3343        if (error)
3344                goto SymlinkError;
3345        error = device_add_attrs(dev);
3346        if (error)
3347                goto AttrsError;
3348        error = bus_add_device(dev);
3349        if (error)
3350                goto BusError;
3351        error = dpm_sysfs_add(dev);
3352        if (error)
3353                goto DPMError;
3354        device_pm_add(dev);
3355
3356        if (MAJOR(dev->devt)) {
3357                error = device_create_file(dev, &dev_attr_dev);
3358                if (error)
3359                        goto DevAttrError;
3360
3361                error = device_create_sys_dev_entry(dev);
3362                if (error)
3363                        goto SysEntryError;
3364
3365                devtmpfs_create_node(dev);
3366        }
3367
3368        /* Notify clients of device addition.  This call must come
3369         * after dpm_sysfs_add() and before kobject_uevent().
3370         */
3371        if (dev->bus)
3372                blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
3373                                             BUS_NOTIFY_ADD_DEVICE, dev);
3374
3375        kobject_uevent(&dev->kobj, KOBJ_ADD);
3376
3377        /*
3378         * Check if any of the other devices (consumers) have been waiting for
3379         * this device (supplier) to be added so that they can create a device
3380         * link to it.
3381         *
3382         * This needs to happen after device_pm_add() because device_link_add()
3383         * requires the supplier be registered before it's called.
3384         *
3385         * But this also needs to happen before bus_probe_device() to make sure
3386         * waiting consumers can link to it before the driver is bound to the
3387         * device and the driver sync_state callback is called for this device.
3388         */
3389        if (dev->fwnode && !dev->fwnode->dev) {
3390                dev->fwnode->dev = dev;
3391                fw_devlink_link_device(dev);
3392        }
3393
3394        bus_probe_device(dev);
3395
3396        /*
3397         * If all driver registration is done and a newly added device doesn't
3398         * match with any driver, don't block its consumers from probing in
3399         * case the consumer device is able to operate without this supplier.
3400         */
3401        if (dev->fwnode && fw_devlink_drv_reg_done && !dev->can_match)
3402                fw_devlink_unblock_consumers(dev);
3403
3404        if (parent)
3405                klist_add_tail(&dev->p->knode_parent,
3406                               &parent->p->klist_children);
3407
3408        if (dev->class) {
3409                mutex_lock(&dev->class->p->mutex);
3410                /* tie the class to the device */
3411                klist_add_tail(&dev->p->knode_class,
3412                               &dev->class->p->klist_devices);
3413
3414                /* notify any interfaces that the device is here */
3415                list_for_each_entry(class_intf,
3416                                    &dev->class->p->interfaces, node)
3417                        if (class_intf->add_dev)
3418                                class_intf->add_dev(dev, class_intf);
3419                mutex_unlock(&dev->class->p->mutex);
3420        }
3421done:
3422        put_device(dev);
3423        return error;
3424 SysEntryError:
3425        if (MAJOR(dev->devt))
3426                device_remove_file(dev, &dev_attr_dev);
3427 DevAttrError:
3428        device_pm_remove(dev);
3429        dpm_sysfs_remove(dev);
3430 DPMError:
3431        bus_remove_device(dev);
3432 BusError:
3433        device_remove_attrs(dev);
3434 AttrsError:
3435        device_remove_class_symlinks(dev);
3436 SymlinkError:
3437        device_remove_file(dev, &dev_attr_uevent);
3438 attrError:
3439        device_platform_notify_remove(dev);
3440        kobject_uevent(&dev->kobj, KOBJ_REMOVE);
3441        glue_dir = get_glue_dir(dev);
3442        kobject_del(&dev->kobj);
3443 Error:
3444        cleanup_glue_dir(dev, glue_dir);
3445parent_error:
3446        put_device(parent);
3447name_error:
3448        kfree(dev->p);
3449        dev->p = NULL;
3450        goto done;
3451}
3452EXPORT_SYMBOL_GPL(device_add);
3453
3454/**
3455 * device_register - register a device with the system.
3456 * @dev: pointer to the device structure
3457 *
3458 * This happens in two clean steps - initialize the device
3459 * and add it to the system. The two steps can be called
3460 * separately, but this is the easiest and most common.
3461 * I.e. you should only call the two helpers separately if
3462 * have a clearly defined need to use and refcount the device
3463 * before it is added to the hierarchy.
3464 *
3465 * For more information, see the kerneldoc for device_initialize()
3466 * and device_add().
3467 *
3468 * NOTE: _Never_ directly free @dev after calling this function, even
3469 * if it returned an error! Always use put_device() to give up the
3470 * reference initialized in this function instead.
3471 */
3472int device_register(struct device *dev)
3473{
3474        device_initialize(dev);
3475        return device_add(dev);
3476}
3477EXPORT_SYMBOL_GPL(device_register);
3478
3479/**
3480 * get_device - increment reference count for device.
3481 * @dev: device.
3482 *
3483 * This simply forwards the call to kobject_get(), though
3484 * we do take care to provide for the case that we get a NULL
3485 * pointer passed in.
3486 */
3487struct device *get_device(struct device *dev)
3488{
3489        return dev ? kobj_to_dev(kobject_get(&dev->kobj)) : NULL;
3490}
3491EXPORT_SYMBOL_GPL(get_device);
3492
3493/**
3494 * put_device - decrement reference count.
3495 * @dev: device in question.
3496 */
3497void put_device(struct device *dev)
3498{
3499        /* might_sleep(); */
3500        if (dev)
3501                kobject_put(&dev->kobj);
3502}
3503EXPORT_SYMBOL_GPL(put_device);
3504
3505bool kill_device(struct device *dev)
3506{
3507        /*
3508         * Require the device lock and set the "dead" flag to guarantee that
3509         * the update behavior is consistent with the other bitfields near
3510         * it and that we cannot have an asynchronous probe routine trying
3511         * to run while we are tearing out the bus/class/sysfs from
3512         * underneath the device.
3513         */
3514        device_lock_assert(dev);
3515
3516        if (dev->p->dead)
3517                return false;
3518        dev->p->dead = true;
3519        return true;
3520}
3521EXPORT_SYMBOL_GPL(kill_device);
3522
3523/**
3524 * device_del - delete device from system.
3525 * @dev: device.
3526 *
3527 * This is the first part of the device unregistration
3528 * sequence. This removes the device from the lists we control
3529 * from here, has it removed from the other driver model
3530 * subsystems it was added to in device_add(), and removes it
3531 * from the kobject hierarchy.
3532 *
3533 * NOTE: this should be called manually _iff_ device_add() was
3534 * also called manually.
3535 */
3536void device_del(struct device *dev)
3537{
3538        struct device *parent = dev->parent;
3539        struct kobject *glue_dir = NULL;
3540        struct class_interface *class_intf;
3541        unsigned int noio_flag;
3542
3543        device_lock(dev);
3544        kill_device(dev);
3545        device_unlock(dev);
3546
3547        if (dev->fwnode && dev->fwnode->dev == dev)
3548                dev->fwnode->dev = NULL;
3549
3550        /* Notify clients of device removal.  This call must come
3551         * before dpm_sysfs_remove().
3552         */
3553        noio_flag = memalloc_noio_save();
3554        if (dev->bus)
3555                blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
3556                                             BUS_NOTIFY_DEL_DEVICE, dev);
3557
3558        dpm_sysfs_remove(dev);
3559        if (parent)
3560                klist_del(&dev->p->knode_parent);
3561        if (MAJOR(dev->devt)) {
3562                devtmpfs_delete_node(dev);
3563                device_remove_sys_dev_entry(dev);
3564                device_remove_file(dev, &dev_attr_dev);
3565        }
3566        if (dev->class) {
3567                device_remove_class_symlinks(dev);
3568
3569                mutex_lock(&dev->class->p->mutex);
3570                /* notify any interfaces that the device is now gone */
3571                list_for_each_entry(class_intf,
3572                                    &dev->class->p->interfaces, node)
3573                        if (class_intf->remove_dev)
3574                                class_intf->remove_dev(dev, class_intf);
3575                /* remove the device from the class list */
3576                klist_del(&dev->p->knode_class);
3577                mutex_unlock(&dev->class->p->mutex);
3578        }
3579        device_remove_file(dev, &dev_attr_uevent);
3580        device_remove_attrs(dev);
3581        bus_remove_device(dev);
3582        device_pm_remove(dev);
3583        driver_deferred_probe_del(dev);
3584        device_platform_notify_remove(dev);
3585        device_remove_properties(dev);
3586        device_links_purge(dev);
3587
3588        if (dev->bus)
3589                blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
3590                                             BUS_NOTIFY_REMOVED_DEVICE, dev);
3591        kobject_uevent(&dev->kobj, KOBJ_REMOVE);
3592        glue_dir = get_glue_dir(dev);
3593        kobject_del(&dev->kobj);
3594        cleanup_glue_dir(dev, glue_dir);
3595        memalloc_noio_restore(noio_flag);
3596        put_device(parent);
3597}
3598EXPORT_SYMBOL_GPL(device_del);
3599
3600/**
3601 * device_unregister - unregister device from system.
3602 * @dev: device going away.
3603 *
3604 * We do this in two parts, like we do device_register(). First,
3605 * we remove it from all the subsystems with device_del(), then
3606 * we decrement the reference count via put_device(). If that
3607 * is the final reference count, the device will be cleaned up
3608 * via device_release() above. Otherwise, the structure will
3609 * stick around until the final reference to the device is dropped.
3610 */
3611void device_unregister(struct device *dev)
3612{
3613        pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
3614        device_del(dev);
3615        put_device(dev);
3616}
3617EXPORT_SYMBOL_GPL(device_unregister);
3618
3619static struct device *prev_device(struct klist_iter *i)
3620{
3621        struct klist_node *n = klist_prev(i);
3622        struct device *dev = NULL;
3623        struct device_private *p;
3624
3625        if (n) {
3626                p = to_device_private_parent(n);
3627                dev = p->device;
3628        }
3629        return dev;
3630}
3631
3632static struct device *next_device(struct klist_iter *i)
3633{
3634        struct klist_node *n = klist_next(i);
3635        struct device *dev = NULL;
3636        struct device_private *p;
3637
3638        if (n) {
3639                p = to_device_private_parent(n);
3640                dev = p->device;
3641        }
3642        return dev;
3643}
3644
3645/**
3646 * device_get_devnode - path of device node file
3647 * @dev: device
3648 * @mode: returned file access mode
3649 * @uid: returned file owner
3650 * @gid: returned file group
3651 * @tmp: possibly allocated string
3652 *
3653 * Return the relative path of a possible device node.
3654 * Non-default names may need to allocate a memory to compose
3655 * a name. This memory is returned in tmp and needs to be
3656 * freed by the caller.
3657 */
3658const char *device_get_devnode(struct device *dev,
3659                               umode_t *mode, kuid_t *uid, kgid_t *gid,
3660                               const char **tmp)
3661{
3662        char *s;
3663
3664        *tmp = NULL;
3665
3666        /* the device type may provide a specific name */
3667        if (dev->type && dev->type->devnode)
3668                *tmp = dev->type->devnode(dev, mode, uid, gid);
3669        if (*tmp)
3670                return *tmp;
3671
3672        /* the class may provide a specific name */
3673        if (dev->class && dev->class->devnode)
3674                *tmp = dev->class->devnode(dev, mode);
3675        if (*tmp)
3676                return *tmp;
3677
3678        /* return name without allocation, tmp == NULL */
3679        if (strchr(dev_name(dev), '!') == NULL)
3680                return dev_name(dev);
3681
3682        /* replace '!' in the name with '/' */
3683        s = kstrdup(dev_name(dev), GFP_KERNEL);
3684        if (!s)
3685                return NULL;
3686        strreplace(s, '!', '/');
3687        return *tmp = s;
3688}
3689
3690/**
3691 * device_for_each_child - device child iterator.
3692 * @parent: parent struct device.
3693 * @fn: function to be called for each device.
3694 * @data: data for the callback.
3695 *
3696 * Iterate over @parent's child devices, and call @fn for each,
3697 * passing it @data.
3698 *
3699 * We check the return of @fn each time. If it returns anything
3700 * other than 0, we break out and return that value.
3701 */
3702int device_for_each_child(struct device *parent, void *data,
3703                          int (*fn)(struct device *dev, void *data))
3704{
3705        struct klist_iter i;
3706        struct device *child;
3707        int error = 0;
3708
3709        if (!parent->p)
3710                return 0;
3711
3712        klist_iter_init(&parent->p->klist_children, &i);
3713        while (!error && (child = next_device(&i)))
3714                error = fn(child, data);
3715        klist_iter_exit(&i);
3716        return error;
3717}
3718EXPORT_SYMBOL_GPL(device_for_each_child);
3719
3720/**
3721 * device_for_each_child_reverse - device child iterator in reversed order.
3722 * @parent: parent struct device.
3723 * @fn: function to be called for each device.
3724 * @data: data for the callback.
3725 *
3726 * Iterate over @parent's child devices, and call @fn for each,
3727 * passing it @data.
3728 *
3729 * We check the return of @fn each time. If it returns anything
3730 * other than 0, we break out and return that value.
3731 */
3732int device_for_each_child_reverse(struct device *parent, void *data,
3733                                  int (*fn)(struct device *dev, void *data))
3734{
3735        struct klist_iter i;
3736        struct device *child;
3737        int error = 0;
3738
3739        if (!parent->p)
3740                return 0;
3741
3742        klist_iter_init(&parent->p->klist_children, &i);
3743        while ((child = prev_device(&i)) && !error)
3744                error = fn(child, data);
3745        klist_iter_exit(&i);
3746        return error;
3747}
3748EXPORT_SYMBOL_GPL(device_for_each_child_reverse);
3749
3750/**
3751 * device_find_child - device iterator for locating a particular device.
3752 * @parent: parent struct device
3753 * @match: Callback function to check device
3754 * @data: Data to pass to match function
3755 *
3756 * This is similar to the device_for_each_child() function above, but it
3757 * returns a reference to a device that is 'found' for later use, as
3758 * determined by the @match callback.
3759 *
3760 * The callback should return 0 if the device doesn't match and non-zero
3761 * if it does.  If the callback returns non-zero and a reference to the
3762 * current device can be obtained, this function will return to the caller
3763 * and not iterate over any more devices.
3764 *
3765 * NOTE: you will need to drop the reference with put_device() after use.
3766 */
3767struct device *device_find_child(struct device *parent, void *data,
3768                                 int (*match)(struct device *dev, void *data))
3769{
3770        struct klist_iter i;
3771        struct device *child;
3772
3773        if (!parent)
3774                return NULL;
3775
3776        klist_iter_init(&parent->p->klist_children, &i);
3777        while ((child = next_device(&i)))
3778                if (match(child, data) && get_device(child))
3779                        break;
3780        klist_iter_exit(&i);
3781        return child;
3782}
3783EXPORT_SYMBOL_GPL(device_find_child);
3784
3785/**
3786 * device_find_child_by_name - device iterator for locating a child device.
3787 * @parent: parent struct device
3788 * @name: name of the child device
3789 *
3790 * This is similar to the device_find_child() function above, but it
3791 * returns a reference to a device that has the name @name.
3792 *
3793 * NOTE: you will need to drop the reference with put_device() after use.
3794 */
3795struct device *device_find_child_by_name(struct device *parent,
3796                                         const char *name)
3797{
3798        struct klist_iter i;
3799        struct device *child;
3800
3801        if (!parent)
3802                return NULL;
3803
3804        klist_iter_init(&parent->p->klist_children, &i);
3805        while ((child = next_device(&i)))
3806                if (sysfs_streq(dev_name(child), name) && get_device(child))
3807                        break;
3808        klist_iter_exit(&i);
3809        return child;
3810}
3811EXPORT_SYMBOL_GPL(device_find_child_by_name);
3812
3813int __init devices_init(void)
3814{
3815        devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL);
3816        if (!devices_kset)
3817                return -ENOMEM;
3818        dev_kobj = kobject_create_and_add("dev", NULL);
3819        if (!dev_kobj)
3820                goto dev_kobj_err;
3821        sysfs_dev_block_kobj = kobject_create_and_add("block", dev_kobj);
3822        if (!sysfs_dev_block_kobj)
3823                goto block_kobj_err;
3824        sysfs_dev_char_kobj = kobject_create_and_add("char", dev_kobj);
3825        if (!sysfs_dev_char_kobj)
3826                goto char_kobj_err;
3827
3828        return 0;
3829
3830 char_kobj_err:
3831        kobject_put(sysfs_dev_block_kobj);
3832 block_kobj_err:
3833        kobject_put(dev_kobj);
3834 dev_kobj_err:
3835        kset_unregister(devices_kset);
3836        return -ENOMEM;
3837}
3838
3839static int device_check_offline(struct device *dev, void *not_used)
3840{
3841        int ret;
3842
3843        ret = device_for_each_child(dev, NULL, device_check_offline);
3844        if (ret)
3845                return ret;
3846
3847        return device_supports_offline(dev) && !dev->offline ? -EBUSY : 0;
3848}
3849
3850/**
3851 * device_offline - Prepare the device for hot-removal.
3852 * @dev: Device to be put offline.
3853 *
3854 * Execute the device bus type's .offline() callback, if present, to prepare
3855 * the device for a subsequent hot-removal.  If that succeeds, the device must
3856 * not be used until either it is removed or its bus type's .online() callback
3857 * is executed.
3858 *
3859 * Call under device_hotplug_lock.
3860 */
3861int device_offline(struct device *dev)
3862{
3863        int ret;
3864
3865        if (dev->offline_disabled)
3866                return -EPERM;
3867
3868        ret = device_for_each_child(dev, NULL, device_check_offline);
3869        if (ret)
3870                return ret;
3871
3872        device_lock(dev);
3873        if (device_supports_offline(dev)) {
3874                if (dev->offline) {
3875                        ret = 1;
3876                } else {
3877                        ret = dev->bus->offline(dev);
3878                        if (!ret) {
3879                                kobject_uevent(&dev->kobj, KOBJ_OFFLINE);
3880                                dev->offline = true;
3881                        }
3882                }
3883        }
3884        device_unlock(dev);
3885
3886        return ret;
3887}
3888
3889/**
3890 * device_online - Put the device back online after successful device_offline().
3891 * @dev: Device to be put back online.
3892 *
3893 * If device_offline() has been successfully executed for @dev, but the device
3894 * has not been removed subsequently, execute its bus type's .online() callback
3895 * to indicate that the device can be used again.
3896 *
3897 * Call under device_hotplug_lock.
3898 */
3899int device_online(struct device *dev)
3900{
3901        int ret = 0;
3902
3903        device_lock(dev);
3904        if (device_supports_offline(dev)) {
3905                if (dev->offline) {
3906                        ret = dev->bus->online(dev);
3907                        if (!ret) {
3908                                kobject_uevent(&dev->kobj, KOBJ_ONLINE);
3909                                dev->offline = false;
3910                        }
3911                } else {
3912                        ret = 1;
3913                }
3914        }
3915        device_unlock(dev);
3916
3917        return ret;
3918}
3919
3920struct root_device {
3921        struct device dev;
3922        struct module *owner;
3923};
3924
3925static inline struct root_device *to_root_device(struct device *d)
3926{
3927        return container_of(d, struct root_device, dev);
3928}
3929
3930static void root_device_release(struct device *dev)
3931{
3932        kfree(to_root_device(dev));
3933}
3934
3935/**
3936 * __root_device_register - allocate and register a root device
3937 * @name: root device name
3938 * @owner: owner module of the root device, usually THIS_MODULE
3939 *
3940 * This function allocates a root device and registers it
3941 * using device_register(). In order to free the returned
3942 * device, use root_device_unregister().
3943 *
3944 * Root devices are dummy devices which allow other devices
3945 * to be grouped under /sys/devices. Use this function to
3946 * allocate a root device and then use it as the parent of
3947 * any device which should appear under /sys/devices/{name}
3948 *
3949 * The /sys/devices/{name} directory will also contain a
3950 * 'module' symlink which points to the @owner directory
3951 * in sysfs.
3952 *
3953 * Returns &struct device pointer on success, or ERR_PTR() on error.
3954 *
3955 * Note: You probably want to use root_device_register().
3956 */
3957struct device *__root_device_register(const char *name, struct module *owner)
3958{
3959        struct root_device *root;
3960        int err = -ENOMEM;
3961
3962        root = kzalloc(sizeof(struct root_device), GFP_KERNEL);
3963        if (!root)
3964                return ERR_PTR(err);
3965
3966        err = dev_set_name(&root->dev, "%s", name);
3967        if (err) {
3968                kfree(root);
3969                return ERR_PTR(err);
3970        }
3971
3972        root->dev.release = root_device_release;
3973
3974        err = device_register(&root->dev);
3975        if (err) {
3976                put_device(&root->dev);
3977                return ERR_PTR(err);
3978        }
3979
3980#ifdef CONFIG_MODULES   /* gotta find a "cleaner" way to do this */
3981        if (owner) {
3982                struct module_kobject *mk = &owner->mkobj;
3983
3984                err = sysfs_create_link(&root->dev.kobj, &mk->kobj, "module");
3985                if (err) {
3986                        device_unregister(&root->dev);
3987                        return ERR_PTR(err);
3988                }
3989                root->owner = owner;
3990        }
3991#endif
3992
3993        return &root->dev;
3994}
3995EXPORT_SYMBOL_GPL(__root_device_register);
3996
3997/**
3998 * root_device_unregister - unregister and free a root device
3999 * @dev: device going away
4000 *
4001 * This function unregisters and cleans up a device that was created by
4002 * root_device_register().
4003 */
4004void root_device_unregister(struct device *dev)
4005{
4006        struct root_device *root = to_root_device(dev);
4007
4008        if (root->owner)
4009                sysfs_remove_link(&root->dev.kobj, "module");
4010
4011        device_unregister(dev);
4012}
4013EXPORT_SYMBOL_GPL(root_device_unregister);
4014
4015
4016static void device_create_release(struct device *dev)
4017{
4018        pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
4019        kfree(dev);
4020}
4021
4022static __printf(6, 0) struct device *
4023device_create_groups_vargs(struct class *class, struct device *parent,
4024                           dev_t devt, void *drvdata,
4025                           const struct attribute_group **groups,
4026                           const char *fmt, va_list args)
4027{
4028        struct device *dev = NULL;
4029        int retval = -ENODEV;
4030
4031        if (class == NULL || IS_ERR(class))
4032                goto error;
4033
4034        dev = kzalloc(sizeof(*dev), GFP_KERNEL);
4035        if (!dev) {
4036                retval = -ENOMEM;
4037                goto error;
4038        }
4039
4040        device_initialize(dev);
4041        dev->devt = devt;
4042        dev->class = class;
4043        dev->parent = parent;
4044        dev->groups = groups;
4045        dev->release = device_create_release;
4046        dev_set_drvdata(dev, drvdata);
4047
4048        retval = kobject_set_name_vargs(&dev->kobj, fmt, args);
4049        if (retval)
4050                goto error;
4051
4052        retval = device_add(dev);
4053        if (retval)
4054                goto error;
4055
4056        return dev;
4057
4058error:
4059        put_device(dev);
4060        return ERR_PTR(retval);
4061}
4062
4063/**
4064 * device_create - creates a device and registers it with sysfs
4065 * @class: pointer to the struct class that this device should be registered to
4066 * @parent: pointer to the parent struct device of this new device, if any
4067 * @devt: the dev_t for the char device to be added
4068 * @drvdata: the data to be added to the device for callbacks
4069 * @fmt: string for the device's name
4070 *
4071 * This function can be used by char device classes.  A struct device
4072 * will be created in sysfs, registered to the specified class.
4073 *
4074 * A "dev" file will be created, showing the dev_t for the device, if
4075 * the dev_t is not 0,0.
4076 * If a pointer to a parent struct device is passed in, the newly created
4077 * struct device will be a child of that device in sysfs.
4078 * The pointer to the struct device will be returned from the call.
4079 * Any further sysfs files that might be required can be created using this
4080 * pointer.
4081 *
4082 * Returns &struct device pointer on success, or ERR_PTR() on error.
4083 *
4084 * Note: the struct class passed to this function must have previously
4085 * been created with a call to class_create().
4086 */
4087struct device *device_create(struct class *class, struct device *parent,
4088                             dev_t devt, void *drvdata, const char *fmt, ...)
4089{
4090        va_list vargs;
4091        struct device *dev;
4092
4093        va_start(vargs, fmt);
4094        dev = device_create_groups_vargs(class, parent, devt, drvdata, NULL,
4095                                          fmt, vargs);
4096        va_end(vargs);
4097        return dev;
4098}
4099EXPORT_SYMBOL_GPL(device_create);
4100
4101/**
4102 * device_create_with_groups - creates a device and registers it with sysfs
4103 * @class: pointer to the struct class that this device should be registered to
4104 * @parent: pointer to the parent struct device of this new device, if any
4105 * @devt: the dev_t for the char device to be added
4106 * @drvdata: the data to be added to the device for callbacks
4107 * @groups: NULL-terminated list of attribute groups to be created
4108 * @fmt: string for the device's name
4109 *
4110 * This function can be used by char device classes.  A struct device
4111 * will be created in sysfs, registered to the specified class.
4112 * Additional attributes specified in the groups parameter will also
4113 * be created automatically.
4114 *
4115 * A "dev" file will be created, showing the dev_t for the device, if
4116 * the dev_t is not 0,0.
4117 * If a pointer to a parent struct device is passed in, the newly created
4118 * struct device will be a child of that device in sysfs.
4119 * The pointer to the struct device will be returned from the call.
4120 * Any further sysfs files that might be required can be created using this
4121 * pointer.
4122 *
4123 * Returns &struct device pointer on success, or ERR_PTR() on error.
4124 *
4125 * Note: the struct class passed to this function must have previously
4126 * been created with a call to class_create().
4127 */
4128struct device *device_create_with_groups(struct class *class,
4129                                         struct device *parent, dev_t devt,
4130                                         void *drvdata,
4131                                         const struct attribute_group **groups,
4132                                         const char *fmt, ...)
4133{
4134        va_list vargs;
4135        struct device *dev;
4136
4137        va_start(vargs, fmt);
4138        dev = device_create_groups_vargs(class, parent, devt, drvdata, groups,
4139                                         fmt, vargs);
4140        va_end(vargs);
4141        return dev;
4142}
4143EXPORT_SYMBOL_GPL(device_create_with_groups);
4144
4145/**
4146 * device_destroy - removes a device that was created with device_create()
4147 * @class: pointer to the struct class that this device was registered with
4148 * @devt: the dev_t of the device that was previously registered
4149 *
4150 * This call unregisters and cleans up a device that was created with a
4151 * call to device_create().
4152 */
4153void device_destroy(struct class *class, dev_t devt)
4154{
4155        struct device *dev;
4156
4157        dev = class_find_device_by_devt(class, devt);
4158        if (dev) {
4159                put_device(dev);
4160                device_unregister(dev);
4161        }
4162}
4163EXPORT_SYMBOL_GPL(device_destroy);
4164
4165/**
4166 * device_rename - renames a device
4167 * @dev: the pointer to the struct device to be renamed
4168 * @new_name: the new name of the device
4169 *
4170 * It is the responsibility of the caller to provide mutual
4171 * exclusion between two different calls of device_rename
4172 * on the same device to ensure that new_name is valid and
4173 * won't conflict with other devices.
4174 *
4175 * Note: Don't call this function.  Currently, the networking layer calls this
4176 * function, but that will change.  The following text from Kay Sievers offers
4177 * some insight:
4178 *
4179 * Renaming devices is racy at many levels, symlinks and other stuff are not
4180 * replaced atomically, and you get a "move" uevent, but it's not easy to
4181 * connect the event to the old and new device. Device nodes are not renamed at
4182 * all, there isn't even support for that in the kernel now.
4183 *
4184 * In the meantime, during renaming, your target name might be taken by another
4185 * driver, creating conflicts. Or the old name is taken directly after you
4186 * renamed it -- then you get events for the same DEVPATH, before you even see
4187 * the "move" event. It's just a mess, and nothing new should ever rely on
4188 * kernel device renaming. Besides that, it's not even implemented now for
4189 * other things than (driver-core wise very simple) network devices.
4190 *
4191 * We are currently about to change network renaming in udev to completely
4192 * disallow renaming of devices in the same namespace as the kernel uses,
4193 * because we can't solve the problems properly, that arise with swapping names
4194 * of multiple interfaces without races. Means, renaming of eth[0-9]* will only
4195 * be allowed to some other name than eth[0-9]*, for the aforementioned
4196 * reasons.
4197 *
4198 * Make up a "real" name in the driver before you register anything, or add
4199 * some other attributes for userspace to find the device, or use udev to add
4200 * symlinks -- but never rename kernel devices later, it's a complete mess. We
4201 * don't even want to get into that and try to implement the missing pieces in
4202 * the core. We really have other pieces to fix in the driver core mess. :)
4203 */
4204int device_rename(struct device *dev, const char *new_name)
4205{
4206        struct kobject *kobj = &dev->kobj;
4207        char *old_device_name = NULL;
4208        int error;
4209
4210        dev = get_device(dev);
4211        if (!dev)
4212                return -EINVAL;
4213
4214        dev_dbg(dev, "renaming to %s\n", new_name);
4215
4216        old_device_name = kstrdup(dev_name(dev), GFP_KERNEL);
4217        if (!old_device_name) {
4218                error = -ENOMEM;
4219                goto out;
4220        }
4221
4222        if (dev->class) {
4223                error = sysfs_rename_link_ns(&dev->class->p->subsys.kobj,
4224                                             kobj, old_device_name,
4225                                             new_name, kobject_namespace(kobj));
4226                if (error)
4227                        goto out;
4228        }
4229
4230        error = kobject_rename(kobj, new_name);
4231        if (error)
4232                goto out;
4233
4234out:
4235        put_device(dev);
4236
4237        kfree(old_device_name);
4238
4239        return error;
4240}
4241EXPORT_SYMBOL_GPL(device_rename);
4242
4243static int device_move_class_links(struct device *dev,
4244                                   struct device *old_parent,
4245                                   struct device *new_parent)
4246{
4247        int error = 0;
4248
4249        if (old_parent)
4250                sysfs_remove_link(&dev->kobj, "device");
4251        if (new_parent)
4252                error = sysfs_create_link(&dev->kobj, &new_parent->kobj,
4253                                          "device");
4254        return error;
4255}
4256
4257/**
4258 * device_move - moves a device to a new parent
4259 * @dev: the pointer to the struct device to be moved
4260 * @new_parent: the new parent of the device (can be NULL)
4261 * @dpm_order: how to reorder the dpm_list
4262 */
4263int device_move(struct device *dev, struct device *new_parent,
4264                enum dpm_order dpm_order)
4265{
4266        int error;
4267        struct device *old_parent;
4268        struct kobject *new_parent_kobj;
4269
4270        dev = get_device(dev);
4271        if (!dev)
4272                return -EINVAL;
4273
4274        device_pm_lock();
4275        new_parent = get_device(new_parent);
4276        new_parent_kobj = get_device_parent(dev, new_parent);
4277        if (IS_ERR(new_parent_kobj)) {
4278                error = PTR_ERR(new_parent_kobj);
4279                put_device(new_parent);
4280                goto out;
4281        }
4282
4283        pr_debug("device: '%s': %s: moving to '%s'\n", dev_name(dev),
4284                 __func__, new_parent ? dev_name(new_parent) : "<NULL>");
4285        error = kobject_move(&dev->kobj, new_parent_kobj);
4286        if (error) {
4287                cleanup_glue_dir(dev, new_parent_kobj);
4288                put_device(new_parent);
4289                goto out;
4290        }
4291        old_parent = dev->parent;
4292        dev->parent = new_parent;
4293        if (old_parent)
4294                klist_remove(&dev->p->knode_parent);
4295        if (new_parent) {
4296                klist_add_tail(&dev->p->knode_parent,
4297                               &new_parent->p->klist_children);
4298                set_dev_node(dev, dev_to_node(new_parent));
4299        }
4300
4301        if (dev->class) {
4302                error = device_move_class_links(dev, old_parent, new_parent);
4303                if (error) {
4304                        /* We ignore errors on cleanup since we're hosed anyway... */
4305                        device_move_class_links(dev, new_parent, old_parent);
4306                        if (!kobject_move(&dev->kobj, &old_parent->kobj)) {
4307                                if (new_parent)
4308                                        klist_remove(&dev->p->knode_parent);
4309                                dev->parent = old_parent;
4310                                if (old_parent) {
4311                                        klist_add_tail(&dev->p->knode_parent,
4312                                                       &old_parent->p->klist_children);
4313                                        set_dev_node(dev, dev_to_node(old_parent));
4314                                }
4315                        }
4316                        cleanup_glue_dir(dev, new_parent_kobj);
4317                        put_device(new_parent);
4318                        goto out;
4319                }
4320        }
4321        switch (dpm_order) {
4322        case DPM_ORDER_NONE:
4323                break;
4324        case DPM_ORDER_DEV_AFTER_PARENT:
4325                device_pm_move_after(dev, new_parent);
4326                devices_kset_move_after(dev, new_parent);
4327                break;
4328        case DPM_ORDER_PARENT_BEFORE_DEV:
4329                device_pm_move_before(new_parent, dev);
4330                devices_kset_move_before(new_parent, dev);
4331                break;
4332        case DPM_ORDER_DEV_LAST:
4333                device_pm_move_last(dev);
4334                devices_kset_move_last(dev);
4335                break;
4336        }
4337
4338        put_device(old_parent);
4339out:
4340        device_pm_unlock();
4341        put_device(dev);
4342        return error;
4343}
4344EXPORT_SYMBOL_GPL(device_move);
4345
4346static int device_attrs_change_owner(struct device *dev, kuid_t kuid,
4347                                     kgid_t kgid)
4348{
4349        struct kobject *kobj = &dev->kobj;
4350        struct class *class = dev->class;
4351        const struct device_type *type = dev->type;
4352        int error;
4353
4354        if (class) {
4355                /*
4356                 * Change the device groups of the device class for @dev to
4357                 * @kuid/@kgid.
4358                 */
4359                error = sysfs_groups_change_owner(kobj, class->dev_groups, kuid,
4360                                                  kgid);
4361                if (error)
4362                        return error;
4363        }
4364
4365        if (type) {
4366                /*
4367                 * Change the device groups of the device type for @dev to
4368                 * @kuid/@kgid.
4369                 */
4370                error = sysfs_groups_change_owner(kobj, type->groups, kuid,
4371                                                  kgid);
4372                if (error)
4373                        return error;
4374        }
4375
4376        /* Change the device groups of @dev to @kuid/@kgid. */
4377        error = sysfs_groups_change_owner(kobj, dev->groups, kuid, kgid);
4378        if (error)
4379                return error;
4380
4381        if (device_supports_offline(dev) && !dev->offline_disabled) {
4382                /* Change online device attributes of @dev to @kuid/@kgid. */
4383                error = sysfs_file_change_owner(kobj, dev_attr_online.attr.name,
4384                                                kuid, kgid);
4385                if (error)
4386                        return error;
4387        }
4388
4389        return 0;
4390}
4391
4392/**
4393 * device_change_owner - change the owner of an existing device.
4394 * @dev: device.
4395 * @kuid: new owner's kuid
4396 * @kgid: new owner's kgid
4397 *
4398 * This changes the owner of @dev and its corresponding sysfs entries to
4399 * @kuid/@kgid. This function closely mirrors how @dev was added via driver
4400 * core.
4401 *
4402 * Returns 0 on success or error code on failure.
4403 */
4404int device_change_owner(struct device *dev, kuid_t kuid, kgid_t kgid)
4405{
4406        int error;
4407        struct kobject *kobj = &dev->kobj;
4408
4409        dev = get_device(dev);
4410        if (!dev)
4411                return -EINVAL;
4412
4413        /*
4414         * Change the kobject and the default attributes and groups of the
4415         * ktype associated with it to @kuid/@kgid.
4416         */
4417        error = sysfs_change_owner(kobj, kuid, kgid);
4418        if (error)
4419                goto out;
4420
4421        /*
4422         * Change the uevent file for @dev to the new owner. The uevent file
4423         * was created in a separate step when @dev got added and we mirror
4424         * that step here.
4425         */
4426        error = sysfs_file_change_owner(kobj, dev_attr_uevent.attr.name, kuid,
4427                                        kgid);
4428        if (error)
4429                goto out;
4430
4431        /*
4432         * Change the device groups, the device groups associated with the
4433         * device class, and the groups associated with the device type of @dev
4434         * to @kuid/@kgid.
4435         */
4436        error = device_attrs_change_owner(dev, kuid, kgid);
4437        if (error)
4438                goto out;
4439
4440        error = dpm_sysfs_change_owner(dev, kuid, kgid);
4441        if (error)
4442                goto out;
4443
4444#ifdef CONFIG_BLOCK
4445        if (sysfs_deprecated && dev->class == &block_class)
4446                goto out;
4447#endif
4448
4449        /*
4450         * Change the owner of the symlink located in the class directory of
4451         * the device class associated with @dev which points to the actual
4452         * directory entry for @dev to @kuid/@kgid. This ensures that the
4453         * symlink shows the same permissions as its target.
4454         */
4455        error = sysfs_link_change_owner(&dev->class->p->subsys.kobj, &dev->kobj,
4456                                        dev_name(dev), kuid, kgid);
4457        if (error)
4458                goto out;
4459
4460out:
4461        put_device(dev);
4462        return error;
4463}
4464EXPORT_SYMBOL_GPL(device_change_owner);
4465
4466/**
4467 * device_shutdown - call ->shutdown() on each device to shutdown.
4468 */
4469void device_shutdown(void)
4470{
4471        struct device *dev, *parent;
4472
4473        wait_for_device_probe();
4474        device_block_probing();
4475
4476        cpufreq_suspend();
4477
4478        spin_lock(&devices_kset->list_lock);
4479        /*
4480         * Walk the devices list backward, shutting down each in turn.
4481         * Beware that device unplug events may also start pulling
4482         * devices offline, even as the system is shutting down.
4483         */
4484        while (!list_empty(&devices_kset->list)) {
4485                dev = list_entry(devices_kset->list.prev, struct device,
4486                                kobj.entry);
4487
4488                /*
4489                 * hold reference count of device's parent to
4490                 * prevent it from being freed because parent's
4491                 * lock is to be held
4492                 */
4493                parent = get_device(dev->parent);
4494                get_device(dev);
4495                /*
4496                 * Make sure the device is off the kset list, in the
4497                 * event that dev->*->shutdown() doesn't remove it.
4498                 */
4499                list_del_init(&dev->kobj.entry);
4500                spin_unlock(&devices_kset->list_lock);
4501
4502                /* hold lock to avoid race with probe/release */
4503                if (parent)
4504                        device_lock(parent);
4505                device_lock(dev);
4506
4507                /* Don't allow any more runtime suspends */
4508                pm_runtime_get_noresume(dev);
4509                pm_runtime_barrier(dev);
4510
4511                if (dev->class && dev->class->shutdown_pre) {
4512                        if (initcall_debug)
4513                                dev_info(dev, "shutdown_pre\n");
4514                        dev->class->shutdown_pre(dev);
4515                }
4516                if (dev->bus && dev->bus->shutdown) {
4517                        if (initcall_debug)
4518                                dev_info(dev, "shutdown\n");
4519                        dev->bus->shutdown(dev);
4520                } else if (dev->driver && dev->driver->shutdown) {
4521                        if (initcall_debug)
4522                                dev_info(dev, "shutdown\n");
4523                        dev->driver->shutdown(dev);
4524                }
4525
4526                device_unlock(dev);
4527                if (parent)
4528                        device_unlock(parent);
4529
4530                put_device(dev);
4531                put_device(parent);
4532
4533                spin_lock(&devices_kset->list_lock);
4534        }
4535        spin_unlock(&devices_kset->list_lock);
4536}
4537
4538/*
4539 * Device logging functions
4540 */
4541
4542#ifdef CONFIG_PRINTK
4543static void
4544set_dev_info(const struct device *dev, struct dev_printk_info *dev_info)
4545{
4546        const char *subsys;
4547
4548        memset(dev_info, 0, sizeof(*dev_info));
4549
4550        if (dev->class)
4551                subsys = dev->class->name;
4552        else if (dev->bus)
4553                subsys = dev->bus->name;
4554        else
4555                return;
4556
4557        strscpy(dev_info->subsystem, subsys, sizeof(dev_info->subsystem));
4558
4559        /*
4560         * Add device identifier DEVICE=:
4561         *   b12:8         block dev_t
4562         *   c127:3        char dev_t
4563         *   n8            netdev ifindex
4564         *   +sound:card0  subsystem:devname
4565         */
4566        if (MAJOR(dev->devt)) {
4567                char c;
4568
4569                if (strcmp(subsys, "block") == 0)
4570                        c = 'b';
4571                else
4572                        c = 'c';
4573
4574                snprintf(dev_info->device, sizeof(dev_info->device),
4575                         "%c%u:%u", c, MAJOR(dev->devt), MINOR(dev->devt));
4576        } else if (strcmp(subsys, "net") == 0) {
4577                struct net_device *net = to_net_dev(dev);
4578
4579                snprintf(dev_info->device, sizeof(dev_info->device),
4580                         "n%u", net->ifindex);
4581        } else {
4582                snprintf(dev_info->device, sizeof(dev_info->device),
4583                         "+%s:%s", subsys, dev_name(dev));
4584        }
4585}
4586
4587int dev_vprintk_emit(int level, const struct device *dev,
4588                     const char *fmt, va_list args)
4589{
4590        struct dev_printk_info dev_info;
4591
4592        set_dev_info(dev, &dev_info);
4593
4594        return vprintk_emit(0, level, &dev_info, fmt, args);
4595}
4596EXPORT_SYMBOL(dev_vprintk_emit);
4597
4598int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...)
4599{
4600        va_list args;
4601        int r;
4602
4603        va_start(args, fmt);
4604
4605        r = dev_vprintk_emit(level, dev, fmt, args);
4606
4607        va_end(args);
4608
4609        return r;
4610}
4611EXPORT_SYMBOL(dev_printk_emit);
4612
4613static void __dev_printk(const char *level, const struct device *dev,
4614                        struct va_format *vaf)
4615{
4616        if (dev)
4617                dev_printk_emit(level[1] - '0', dev, "%s %s: %pV",
4618                                dev_driver_string(dev), dev_name(dev), vaf);
4619        else
4620                printk("%s(NULL device *): %pV", level, vaf);
4621}
4622
4623void _dev_printk(const char *level, const struct device *dev,
4624                 const char *fmt, ...)
4625{
4626        struct va_format vaf;
4627        va_list args;
4628
4629        va_start(args, fmt);
4630
4631        vaf.fmt = fmt;
4632        vaf.va = &args;
4633
4634        __dev_printk(level, dev, &vaf);
4635
4636        va_end(args);
4637}
4638EXPORT_SYMBOL(_dev_printk);
4639
4640#define define_dev_printk_level(func, kern_level)               \
4641void func(const struct device *dev, const char *fmt, ...)       \
4642{                                                               \
4643        struct va_format vaf;                                   \
4644        va_list args;                                           \
4645                                                                \
4646        va_start(args, fmt);                                    \
4647                                                                \
4648        vaf.fmt = fmt;                                          \
4649        vaf.va = &args;                                         \
4650                                                                \
4651        __dev_printk(kern_level, dev, &vaf);                    \
4652                                                                \
4653        va_end(args);                                           \
4654}                                                               \
4655EXPORT_SYMBOL(func);
4656
4657define_dev_printk_level(_dev_emerg, KERN_EMERG);
4658define_dev_printk_level(_dev_alert, KERN_ALERT);
4659define_dev_printk_level(_dev_crit, KERN_CRIT);
4660define_dev_printk_level(_dev_err, KERN_ERR);
4661define_dev_printk_level(_dev_warn, KERN_WARNING);
4662define_dev_printk_level(_dev_notice, KERN_NOTICE);
4663define_dev_printk_level(_dev_info, KERN_INFO);
4664
4665#endif
4666
4667/**
4668 * dev_err_probe - probe error check and log helper
4669 * @dev: the pointer to the struct device
4670 * @err: error value to test
4671 * @fmt: printf-style format string
4672 * @...: arguments as specified in the format string
4673 *
4674 * This helper implements common pattern present in probe functions for error
4675 * checking: print debug or error message depending if the error value is
4676 * -EPROBE_DEFER and propagate error upwards.
4677 * In case of -EPROBE_DEFER it sets also defer probe reason, which can be
4678 * checked later by reading devices_deferred debugfs attribute.
4679 * It replaces code sequence::
4680 *
4681 *      if (err != -EPROBE_DEFER)
4682 *              dev_err(dev, ...);
4683 *      else
4684 *              dev_dbg(dev, ...);
4685 *      return err;
4686 *
4687 * with::
4688 *
4689 *      return dev_err_probe(dev, err, ...);
4690 *
4691 * Note that it is deemed acceptable to use this function for error
4692 * prints during probe even if the @err is known to never be -EPROBE_DEFER.
4693 * The benefit compared to a normal dev_err() is the standardized format
4694 * of the error code and the fact that the error code is returned.
4695 *
4696 * Returns @err.
4697 *
4698 */
4699int dev_err_probe(const struct device *dev, int err, const char *fmt, ...)
4700{
4701        struct va_format vaf;
4702        va_list args;
4703
4704        va_start(args, fmt);
4705        vaf.fmt = fmt;
4706        vaf.va = &args;
4707
4708        if (err != -EPROBE_DEFER) {
4709                dev_err(dev, "error %pe: %pV", ERR_PTR(err), &vaf);
4710        } else {
4711                device_set_deferred_probe_reason(dev, &vaf);
4712                dev_dbg(dev, "error %pe: %pV", ERR_PTR(err), &vaf);
4713        }
4714
4715        va_end(args);
4716
4717        return err;
4718}
4719EXPORT_SYMBOL_GPL(dev_err_probe);
4720
4721static inline bool fwnode_is_primary(struct fwnode_handle *fwnode)
4722{
4723        return fwnode && !IS_ERR(fwnode->secondary);
4724}
4725
4726/**
4727 * set_primary_fwnode - Change the primary firmware node of a given device.
4728 * @dev: Device to handle.
4729 * @fwnode: New primary firmware node of the device.
4730 *
4731 * Set the device's firmware node pointer to @fwnode, but if a secondary
4732 * firmware node of the device is present, preserve it.
4733 *
4734 * Valid fwnode cases are:
4735 *  - primary --> secondary --> -ENODEV
4736 *  - primary --> NULL
4737 *  - secondary --> -ENODEV
4738 *  - NULL
4739 */
4740void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode)
4741{
4742        struct device *parent = dev->parent;
4743        struct fwnode_handle *fn = dev->fwnode;
4744
4745        if (fwnode) {
4746                if (fwnode_is_primary(fn))
4747                        fn = fn->secondary;
4748
4749                if (fn) {
4750                        WARN_ON(fwnode->secondary);
4751                        fwnode->secondary = fn;
4752                }
4753                dev->fwnode = fwnode;
4754        } else {
4755                if (fwnode_is_primary(fn)) {
4756                        dev->fwnode = fn->secondary;
4757                        /* Set fn->secondary = NULL, so fn remains the primary fwnode */
4758                        if (!(parent && fn == parent->fwnode))
4759                                fn->secondary = NULL;
4760                } else {
4761                        dev->fwnode = NULL;
4762                }
4763        }
4764}
4765EXPORT_SYMBOL_GPL(set_primary_fwnode);
4766
4767/**
4768 * set_secondary_fwnode - Change the secondary firmware node of a given device.
4769 * @dev: Device to handle.
4770 * @fwnode: New secondary firmware node of the device.
4771 *
4772 * If a primary firmware node of the device is present, set its secondary
4773 * pointer to @fwnode.  Otherwise, set the device's firmware node pointer to
4774 * @fwnode.
4775 */
4776void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode)
4777{
4778        if (fwnode)
4779                fwnode->secondary = ERR_PTR(-ENODEV);
4780
4781        if (fwnode_is_primary(dev->fwnode))
4782                dev->fwnode->secondary = fwnode;
4783        else
4784                dev->fwnode = fwnode;
4785}
4786EXPORT_SYMBOL_GPL(set_secondary_fwnode);
4787
4788/**
4789 * device_set_of_node_from_dev - reuse device-tree node of another device
4790 * @dev: device whose device-tree node is being set
4791 * @dev2: device whose device-tree node is being reused
4792 *
4793 * Takes another reference to the new device-tree node after first dropping
4794 * any reference held to the old node.
4795 */
4796void device_set_of_node_from_dev(struct device *dev, const struct device *dev2)
4797{
4798        of_node_put(dev->of_node);
4799        dev->of_node = of_node_get(dev2->of_node);
4800        dev->of_node_reused = true;
4801}
4802EXPORT_SYMBOL_GPL(device_set_of_node_from_dev);
4803
4804void device_set_node(struct device *dev, struct fwnode_handle *fwnode)
4805{
4806        dev->fwnode = fwnode;
4807        dev->of_node = to_of_node(fwnode);
4808}
4809EXPORT_SYMBOL_GPL(device_set_node);
4810
4811int device_match_name(struct device *dev, const void *name)
4812{
4813        return sysfs_streq(dev_name(dev), name);
4814}
4815EXPORT_SYMBOL_GPL(device_match_name);
4816
4817int device_match_of_node(struct device *dev, const void *np)
4818{
4819        return dev->of_node == np;
4820}
4821EXPORT_SYMBOL_GPL(device_match_of_node);
4822
4823int device_match_fwnode(struct device *dev, const void *fwnode)
4824{
4825        return dev_fwnode(dev) == fwnode;
4826}
4827EXPORT_SYMBOL_GPL(device_match_fwnode);
4828
4829int device_match_devt(struct device *dev, const void *pdevt)
4830{
4831        return dev->devt == *(dev_t *)pdevt;
4832}
4833EXPORT_SYMBOL_GPL(device_match_devt);
4834
4835int device_match_acpi_dev(struct device *dev, const void *adev)
4836{
4837        return ACPI_COMPANION(dev) == adev;
4838}
4839EXPORT_SYMBOL(device_match_acpi_dev);
4840
4841int device_match_acpi_handle(struct device *dev, const void *handle)
4842{
4843        return ACPI_HANDLE(dev) == handle;
4844}
4845EXPORT_SYMBOL(device_match_acpi_handle);
4846
4847int device_match_any(struct device *dev, const void *unused)
4848{
4849        return 1;
4850}
4851EXPORT_SYMBOL_GPL(device_match_any);
4852