cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

devlink-resource.rst (2730B)


      1.. SPDX-License-Identifier: GPL-2.0
      2
      3================
      4Devlink Resource
      5================
      6
      7``devlink`` provides the ability for drivers to register resources, which
      8can allow administrators to see the device restrictions for a given
      9resource, as well as how much of the given resource is currently
     10in use. Additionally, these resources can optionally have configurable size.
     11This could enable the administrator to limit the number of resources that
     12are used.
     13
     14For example, the ``netdevsim`` driver enables ``/IPv4/fib`` and
     15``/IPv4/fib-rules`` as resources to limit the number of IPv4 FIB entries and
     16rules for a given device.
     17
     18Resource Ids
     19============
     20
     21Each resource is represented by an id, and contains information about its
     22current size and related sub resources. To access a sub resource, you
     23specify the path of the resource. For example ``/IPv4/fib`` is the id for
     24the ``fib`` sub-resource under the ``IPv4`` resource.
     25
     26Generic Resources
     27=================
     28
     29Generic resources are used to describe resources that can be shared by multiple
     30device drivers and their description must be added to the following table:
     31
     32.. list-table:: List of Generic Resources
     33   :widths: 10 90
     34
     35   * - Name
     36     - Description
     37   * - ``physical_ports``
     38     - A limited capacity of physical ports that the switch ASIC can support
     39
     40example usage
     41-------------
     42
     43The resources exposed by the driver can be observed, for example:
     44
     45.. code:: shell
     46
     47    $devlink resource show pci/0000:03:00.0
     48    pci/0000:03:00.0:
     49      name kvd size 245760 unit entry
     50        resources:
     51          name linear size 98304 occ 0 unit entry size_min 0 size_max 147456 size_gran 128
     52          name hash_double size 60416 unit entry size_min 32768 size_max 180224 size_gran 128
     53          name hash_single size 87040 unit entry size_min 65536 size_max 212992 size_gran 128
     54
     55Some resource's size can be changed. Examples:
     56
     57.. code:: shell
     58
     59    $devlink resource set pci/0000:03:00.0 path /kvd/hash_single size 73088
     60    $devlink resource set pci/0000:03:00.0 path /kvd/hash_double size 74368
     61
     62The changes do not apply immediately, this can be validated by the 'size_new'
     63attribute, which represents the pending change in size. For example:
     64
     65.. code:: shell
     66
     67    $devlink resource show pci/0000:03:00.0
     68    pci/0000:03:00.0:
     69      name kvd size 245760 unit entry size_valid false
     70      resources:
     71        name linear size 98304 size_new 147456 occ 0 unit entry size_min 0 size_max 147456 size_gran 128
     72        name hash_double size 60416 unit entry size_min 32768 size_max 180224 size_gran 128
     73        name hash_single size 87040 unit entry size_min 65536 size_max 212992 size_gran 128
     74
     75Note that changes in resource size may require a device reload to properly
     76take effect.