linux-kselftest.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
@ 2019-10-13  5:53 Changbin Du
  2019-10-13 19:29 ` kbuild test robot
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Changbin Du @ 2019-10-13  5:53 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: linux-pci, linux-doc, linux-kernel, linux-mm, linux-crypto,
	linux-kselftest, linux-wireless, linux-fpga, linux-usb,
	dri-devel, intel-gfx, Changbin Du

The 'functions' directive is not only for functions, but also works for
structs/unions. So the name is misleading. This patch renames it to
'specific', so now we have export/internal/specific directives to limit
the functions/types to be included in documentation. Meanwhile we improved
the warning message.

Signed-off-by: Changbin Du <changbin.du@gmail.com>
---
 Documentation/PCI/pci.rst                     |   4 +-
 Documentation/core-api/boot-time-mm.rst       |   2 +-
 Documentation/core-api/debug-objects.rst      |  14 +-
 Documentation/core-api/genalloc.rst           |  34 +--
 Documentation/core-api/generic-radix-tree.rst |   2 +-
 .../core-api/gfp_mask-from-fs-io.rst          |   4 +-
 Documentation/core-api/idr.rst                |   4 +-
 Documentation/core-api/kernel-api.rst         |  12 +-
 Documentation/core-api/mm-api.rst             |   4 +-
 Documentation/crypto/api-aead.rst             |   6 +-
 Documentation/crypto/api-akcipher.rst         |   6 +-
 Documentation/crypto/api-digest.rst           |   8 +-
 Documentation/crypto/api-kpp.rst              |  10 +-
 Documentation/crypto/api-rng.rst              |   4 +-
 Documentation/crypto/api-skcipher.rst         |  14 +-
 Documentation/dev-tools/kselftest.rst         |   4 +-
 Documentation/doc-guide/kernel-doc.rst        |  26 +--
 Documentation/driver-api/80211/cfg80211.rst   | 200 +++++++++---------
 .../driver-api/80211/mac80211-advanced.rst    |  88 ++++----
 Documentation/driver-api/80211/mac80211.rst   |  80 +++----
 .../driver-api/device_connection.rst          |   2 +-
 Documentation/driver-api/device_link.rst      |   4 +-
 .../firmware/fallback-mechanisms.rst          |   2 +-
 .../driver-api/firmware/other_interfaces.rst  |  10 +-
 .../driver-api/firmware/request_firmware.rst  |  12 +-
 Documentation/driver-api/fpga/fpga-bridge.rst |  10 +-
 Documentation/driver-api/fpga/fpga-mgr.rst    |  12 +-
 .../driver-api/fpga/fpga-programming.rst      |   8 +-
 Documentation/driver-api/fpga/fpga-region.rst |  20 +-
 Documentation/driver-api/i2c.rst              |   2 +-
 Documentation/driver-api/mei/hdcp.rst         |   2 +-
 Documentation/driver-api/spi.rst              |   2 +-
 Documentation/driver-api/usb/typec.rst        |  26 +--
 Documentation/driver-api/usb/typec_bus.rst    |  10 +-
 Documentation/gpu/amdgpu-dc.rst               |   6 +-
 Documentation/gpu/drm-kms-helpers.rst         |   2 +-
 Documentation/gpu/i915.rst                    |  70 +++---
 Documentation/gpu/vga-switcheroo.rst          |  14 +-
 Documentation/security/tpm/tpm_vtpm_proxy.rst |   2 +-
 Documentation/sphinx/kerneldoc.py             |  10 +-
 .../it_IT/doc-guide/kernel-doc.rst            |   2 +-
 Documentation/vm/ksm.rst                      |   2 +-
 scripts/kernel-doc                            |   9 +-
 43 files changed, 385 insertions(+), 380 deletions(-)

diff --git a/Documentation/PCI/pci.rst b/Documentation/PCI/pci.rst
index 6864f9a70f5f..6f310807f74c 100644
--- a/Documentation/PCI/pci.rst
+++ b/Documentation/PCI/pci.rst
@@ -79,13 +79,13 @@ initialization with a pointer to a structure describing the driver
 (``struct pci_driver``):
 
 .. kernel-doc:: include/linux/pci.h
-   :functions: pci_driver
+   :specific: pci_driver
 
 The ID table is an array of ``struct pci_device_id`` entries ending with an
 all-zero entry.  Definitions with static const are generally preferred.
 
 .. kernel-doc:: include/linux/mod_devicetable.h
-   :functions: pci_device_id
+   :specific: pci_device_id
 
 Most drivers only need ``PCI_DEVICE()`` or ``PCI_DEVICE_CLASS()`` to set up
 a pci_device_id table.
diff --git a/Documentation/core-api/boot-time-mm.rst b/Documentation/core-api/boot-time-mm.rst
index e5ec9f1a563d..54824740d010 100644
--- a/Documentation/core-api/boot-time-mm.rst
+++ b/Documentation/core-api/boot-time-mm.rst
@@ -38,4 +38,4 @@ really happens under the hood.
 
 .. kernel-doc:: include/linux/memblock.h
 .. kernel-doc:: mm/memblock.c
-   :functions:
+   :specific:
diff --git a/Documentation/core-api/debug-objects.rst b/Documentation/core-api/debug-objects.rst
index ac926fd55a64..352fc2d8abbd 100644
--- a/Documentation/core-api/debug-objects.rst
+++ b/Documentation/core-api/debug-objects.rst
@@ -65,7 +65,7 @@ Debug functions
 ===============
 
 .. kernel-doc:: lib/debugobjects.c
-   :functions: debug_object_init
+   :specific: debug_object_init
 
 This function is called whenever the initialization function of a real
 object is called.
@@ -88,7 +88,7 @@ calling code must use debug_object_init_on_stack() and remove the
 object before leaving the function which allocated it. See next section.
 
 .. kernel-doc:: lib/debugobjects.c
-   :functions: debug_object_init_on_stack
+   :specific: debug_object_init_on_stack
 
 This function is called whenever the initialization function of a real
 object which resides on the stack is called.
@@ -112,7 +112,7 @@ calling debug_object_free() before the function which allocates the
 object returns. Otherwise we keep track of stale objects.
 
 .. kernel-doc:: lib/debugobjects.c
-   :functions: debug_object_activate
+   :specific: debug_object_activate
 
 This function is called whenever the activation function of a real
 object is called.
@@ -137,7 +137,7 @@ tracker object is set to ODEBUG_STATE_ACTIVE.
 
 
 .. kernel-doc:: lib/debugobjects.c
-   :functions: debug_object_deactivate
+   :specific: debug_object_deactivate
 
 This function is called whenever the deactivation function of a real
 object is called.
@@ -150,7 +150,7 @@ When the deactivation is legitimate, then the state of the associated
 tracker object is set to ODEBUG_STATE_INACTIVE.
 
 .. kernel-doc:: lib/debugobjects.c
-   :functions: debug_object_destroy
+   :specific: debug_object_destroy
 
 This function is called to mark an object destroyed. This is useful to
 prevent the usage of invalid objects, which are still available in
@@ -169,7 +169,7 @@ When the destruction is legitimate, then the state of the associated
 tracker object is set to ODEBUG_STATE_DESTROYED.
 
 .. kernel-doc:: lib/debugobjects.c
-   :functions: debug_object_free
+   :specific: debug_object_free
 
 This function is called before an object is freed.
 
@@ -186,7 +186,7 @@ usage of the object is detected by the other debug checks.
 
 
 .. kernel-doc:: lib/debugobjects.c
-   :functions: debug_object_assert_init
+   :specific: debug_object_assert_init
 
 This function is called to assert that an object has been initialized.
 
diff --git a/Documentation/core-api/genalloc.rst b/Documentation/core-api/genalloc.rst
index 6b38a39fab24..28a665c28852 100644
--- a/Documentation/core-api/genalloc.rst
+++ b/Documentation/core-api/genalloc.rst
@@ -18,10 +18,10 @@ Code using this allocator should include <linux/genalloc.h>.  The action
 begins with the creation of a pool using one of:
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_create		
+   :specific: gen_pool_create
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: devm_gen_pool_create
+   :specific: devm_gen_pool_create
 
 A call to :c:func:`gen_pool_create` will create a pool.  The granularity of
 allocations is set with min_alloc_order; it is a log-base-2 number like
@@ -39,7 +39,7 @@ pool when the given device is destroyed.
 A pool is shut down with:
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_destroy
+   :specific: gen_pool_destroy
 
 It's worth noting that, if there are still allocations outstanding from the
 given pool, this function will take the rather extreme step of invoking
@@ -50,10 +50,10 @@ that state, so one of the first orders of business is usually to add memory
 to the pool.  That can be done with one of:
 
 .. kernel-doc:: include/linux/genalloc.h
-   :functions: gen_pool_add
+   :specific: gen_pool_add
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_add_virt
+   :specific: gen_pool_add_virt
 
 A call to :c:func:`gen_pool_add` will place the size bytes of memory
 starting at addr (in the kernel's virtual address space) into the given
@@ -66,13 +66,13 @@ The functions for allocating memory from the pool (and putting it back)
 are:
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_alloc
+   :specific: gen_pool_alloc
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_dma_alloc
+   :specific: gen_pool_dma_alloc
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_free
+   :specific: gen_pool_free
 
 As one would expect, :c:func:`gen_pool_alloc` will allocate size< bytes
 from the given pool.  The :c:func:`gen_pool_dma_alloc` variant allocates
@@ -89,10 +89,10 @@ return.  If that sort of control is needed, the following functions will be
 of interest:
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_alloc_algo
+   :specific: gen_pool_alloc_algo
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_set_algo
+   :specific: gen_pool_set_algo
 
 Allocations with :c:func:`gen_pool_alloc_algo` specify an algorithm to be
 used to choose the memory to be allocated; the default algorithm can be set
@@ -123,22 +123,22 @@ above.  With luck, wider awareness of this module will help to prevent the
 writing of special-purpose memory allocators in the future.
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_virt_to_phys
+   :specific: gen_pool_virt_to_phys
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_for_each_chunk
+   :specific: gen_pool_for_each_chunk
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: addr_in_gen_pool
+   :specific: addr_in_gen_pool
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_avail
+   :specific: gen_pool_avail
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_size
+   :specific: gen_pool_size
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: gen_pool_get
+   :specific: gen_pool_get
 
 .. kernel-doc:: lib/genalloc.c
-   :functions: of_gen_pool_get
+   :specific: of_gen_pool_get
diff --git a/Documentation/core-api/generic-radix-tree.rst b/Documentation/core-api/generic-radix-tree.rst
index ed42839ae42f..373380f6c037 100644
--- a/Documentation/core-api/generic-radix-tree.rst
+++ b/Documentation/core-api/generic-radix-tree.rst
@@ -9,4 +9,4 @@ generic radix tree functions
 ----------------------------
 
 .. kernel-doc:: include/linux/generic-radix-tree.h
-   :functions:
+   :specific:
diff --git a/Documentation/core-api/gfp_mask-from-fs-io.rst b/Documentation/core-api/gfp_mask-from-fs-io.rst
index e7c32a8de126..b6eff1c8b3b7 100644
--- a/Documentation/core-api/gfp_mask-from-fs-io.rst
+++ b/Documentation/core-api/gfp_mask-from-fs-io.rst
@@ -36,9 +36,9 @@ scope will inherently drop __GFP_FS respectively __GFP_IO from the given
 mask so no memory allocation can recurse back in the FS/IO.
 
 .. kernel-doc:: include/linux/sched/mm.h
-   :functions: memalloc_nofs_save memalloc_nofs_restore
+   :specific: memalloc_nofs_save memalloc_nofs_restore
 .. kernel-doc:: include/linux/sched/mm.h
-   :functions: memalloc_noio_save memalloc_noio_restore
+   :specific: memalloc_noio_save memalloc_noio_restore
 
 FS/IO code then simply calls the appropriate save function before
 any critical section with respect to the reclaim is started - e.g.
diff --git a/Documentation/core-api/idr.rst b/Documentation/core-api/idr.rst
index a2738050c4f0..d54425605a8f 100644
--- a/Documentation/core-api/idr.rst
+++ b/Documentation/core-api/idr.rst
@@ -76,6 +76,6 @@ Functions and structures
 ========================
 
 .. kernel-doc:: include/linux/idr.h
-   :functions:
+   :specific:
 .. kernel-doc:: lib/idr.c
-   :functions:
+   :specific:
diff --git a/Documentation/core-api/kernel-api.rst b/Documentation/core-api/kernel-api.rst
index f77de49b1d51..8cec422f0d8e 100644
--- a/Documentation/core-api/kernel-api.rst
+++ b/Documentation/core-api/kernel-api.rst
@@ -25,10 +25,10 @@ String Conversions
    :export:
 
 .. kernel-doc:: include/linux/kernel.h
-   :functions: kstrtol
+   :specific: kstrtol
 
 .. kernel-doc:: include/linux/kernel.h
-   :functions: kstrtoul
+   :specific: kstrtoul
 
 .. kernel-doc:: lib/kstrtox.c
    :export:
@@ -46,7 +46,7 @@ String Manipulation
    :internal:
 
 .. kernel-doc:: mm/util.c
-   :functions: kstrdup kstrdup_const kstrndup kmemdup kmemdup_nul memdup_user
+   :specific: kstrdup kstrdup_const kstrndup kmemdup kmemdup_nul memdup_user
                vmemdup_user strndup_user memdup_user_nul
 
 Basic Kernel Library Functions
@@ -109,7 +109,7 @@ Text Searching
    :export:
 
 .. kernel-doc:: include/linux/textsearch.h
-   :functions: textsearch_find textsearch_next \
+   :specific: textsearch_find textsearch_next \
                textsearch_get_pattern textsearch_get_pattern_len
 
 CRC and Math Functions in Linux
@@ -157,13 +157,13 @@ Division Functions
 ------------------
 
 .. kernel-doc:: include/asm-generic/div64.h
-   :functions: do_div
+   :specific: do_div
 
 .. kernel-doc:: include/linux/math64.h
    :internal:
 
 .. kernel-doc:: lib/math/div64.c
-   :functions: div_s64_rem div64_u64_rem div64_u64 div64_s64
+   :specific: div_s64_rem div64_u64_rem div64_u64 div64_s64
 
 .. kernel-doc:: lib/math/gcd.c
    :export:
diff --git a/Documentation/core-api/mm-api.rst b/Documentation/core-api/mm-api.rst
index 128e8a721c1e..12579eaca4d6 100644
--- a/Documentation/core-api/mm-api.rst
+++ b/Documentation/core-api/mm-api.rst
@@ -12,7 +12,7 @@ User Space Memory Access
    :export:
 
 .. kernel-doc:: mm/util.c
-   :functions: get_user_pages_fast
+   :specific: get_user_pages_fast
 
 .. _mm-api-gfp-flags:
 
@@ -50,7 +50,7 @@ The Slab Cache
    :export:
 
 .. kernel-doc:: mm/util.c
-   :functions: kfree_const kvmalloc_node kvfree
+   :specific: kfree_const kvmalloc_node kvfree
 
 Virtually Contiguous Mappings
 =============================
diff --git a/Documentation/crypto/api-aead.rst b/Documentation/crypto/api-aead.rst
index d15256f1ae36..c195acca0ca3 100644
--- a/Documentation/crypto/api-aead.rst
+++ b/Documentation/crypto/api-aead.rst
@@ -5,13 +5,13 @@ Authenticated Encryption With Associated Data (AEAD) Algorithm Definitions
    :doc: Authenticated Encryption With Associated Data (AEAD) Cipher API
 
 .. kernel-doc:: include/crypto/aead.h
-   :functions: aead_request aead_alg
+   :specific: aead_request aead_alg
 
 Authenticated Encryption With Associated Data (AEAD) Cipher API
 ---------------------------------------------------------------
 
 .. kernel-doc:: include/crypto/aead.h
-   :functions: crypto_alloc_aead crypto_free_aead crypto_aead_ivsize crypto_aead_authsize crypto_aead_blocksize crypto_aead_setkey crypto_aead_setauthsize crypto_aead_encrypt crypto_aead_decrypt
+   :specific: crypto_alloc_aead crypto_free_aead crypto_aead_ivsize crypto_aead_authsize crypto_aead_blocksize crypto_aead_setkey crypto_aead_setauthsize crypto_aead_encrypt crypto_aead_decrypt
 
 Asynchronous AEAD Request Handle
 --------------------------------
@@ -20,4 +20,4 @@ Asynchronous AEAD Request Handle
    :doc: Asynchronous AEAD Request Handle
 
 .. kernel-doc:: include/crypto/aead.h
-   :functions: crypto_aead_reqsize aead_request_set_tfm aead_request_alloc aead_request_free aead_request_set_callback aead_request_set_crypt aead_request_set_ad
+   :specific: crypto_aead_reqsize aead_request_set_tfm aead_request_alloc aead_request_free aead_request_set_callback aead_request_set_crypt aead_request_set_ad
diff --git a/Documentation/crypto/api-akcipher.rst b/Documentation/crypto/api-akcipher.rst
index 40aa8746e2a1..db4d16b5920e 100644
--- a/Documentation/crypto/api-akcipher.rst
+++ b/Documentation/crypto/api-akcipher.rst
@@ -2,7 +2,7 @@ Asymmetric Cipher Algorithm Definitions
 ---------------------------------------
 
 .. kernel-doc:: include/crypto/akcipher.h
-   :functions: akcipher_alg akcipher_request
+   :specific: akcipher_alg akcipher_request
 
 Asymmetric Cipher API
 ---------------------
@@ -11,10 +11,10 @@ Asymmetric Cipher API
    :doc: Generic Public Key API
 
 .. kernel-doc:: include/crypto/akcipher.h
-   :functions: crypto_alloc_akcipher crypto_free_akcipher crypto_akcipher_set_pub_key crypto_akcipher_set_priv_key crypto_akcipher_maxsize crypto_akcipher_encrypt crypto_akcipher_decrypt crypto_akcipher_sign crypto_akcipher_verify
+   :specific: crypto_alloc_akcipher crypto_free_akcipher crypto_akcipher_set_pub_key crypto_akcipher_set_priv_key crypto_akcipher_maxsize crypto_akcipher_encrypt crypto_akcipher_decrypt crypto_akcipher_sign crypto_akcipher_verify
 
 Asymmetric Cipher Request Handle
 --------------------------------
 
 .. kernel-doc:: include/crypto/akcipher.h
-   :functions: akcipher_request_alloc akcipher_request_free akcipher_request_set_callback akcipher_request_set_crypt
+   :specific: akcipher_request_alloc akcipher_request_free akcipher_request_set_callback akcipher_request_set_crypt
diff --git a/Documentation/crypto/api-digest.rst b/Documentation/crypto/api-digest.rst
index 7a1e670d6ce1..5ac8e2db0410 100644
--- a/Documentation/crypto/api-digest.rst
+++ b/Documentation/crypto/api-digest.rst
@@ -5,7 +5,7 @@ Message Digest Algorithm Definitions
    :doc: Message Digest Algorithm Definitions
 
 .. kernel-doc:: include/crypto/hash.h
-   :functions: hash_alg_common ahash_alg shash_alg
+   :specific: hash_alg_common ahash_alg shash_alg
 
 Asynchronous Message Digest API
 -------------------------------
@@ -14,7 +14,7 @@ Asynchronous Message Digest API
    :doc: Asynchronous Message Digest API
 
 .. kernel-doc:: include/crypto/hash.h
-   :functions: crypto_alloc_ahash crypto_free_ahash crypto_ahash_init crypto_ahash_digestsize crypto_ahash_reqtfm crypto_ahash_reqsize crypto_ahash_statesize crypto_ahash_setkey crypto_ahash_finup crypto_ahash_final crypto_ahash_digest crypto_ahash_export crypto_ahash_import
+   :specific: crypto_alloc_ahash crypto_free_ahash crypto_ahash_init crypto_ahash_digestsize crypto_ahash_reqtfm crypto_ahash_reqsize crypto_ahash_statesize crypto_ahash_setkey crypto_ahash_finup crypto_ahash_final crypto_ahash_digest crypto_ahash_export crypto_ahash_import
 
 Asynchronous Hash Request Handle
 --------------------------------
@@ -23,7 +23,7 @@ Asynchronous Hash Request Handle
    :doc: Asynchronous Hash Request Handle
 
 .. kernel-doc:: include/crypto/hash.h
-   :functions: ahash_request_set_tfm ahash_request_alloc ahash_request_free ahash_request_set_callback ahash_request_set_crypt
+   :specific: ahash_request_set_tfm ahash_request_alloc ahash_request_free ahash_request_set_callback ahash_request_set_crypt
 
 Synchronous Message Digest API
 ------------------------------
@@ -32,4 +32,4 @@ Synchronous Message Digest API
    :doc: Synchronous Message Digest API
 
 .. kernel-doc:: include/crypto/hash.h
-   :functions: crypto_alloc_shash crypto_free_shash crypto_shash_blocksize crypto_shash_digestsize crypto_shash_descsize crypto_shash_setkey crypto_shash_digest crypto_shash_export crypto_shash_import crypto_shash_init crypto_shash_update crypto_shash_final crypto_shash_finup
+   :specific: crypto_alloc_shash crypto_free_shash crypto_shash_blocksize crypto_shash_digestsize crypto_shash_descsize crypto_shash_setkey crypto_shash_digest crypto_shash_export crypto_shash_import crypto_shash_init crypto_shash_update crypto_shash_final crypto_shash_finup
diff --git a/Documentation/crypto/api-kpp.rst b/Documentation/crypto/api-kpp.rst
index 7d86ab906bdf..eff06d515a10 100644
--- a/Documentation/crypto/api-kpp.rst
+++ b/Documentation/crypto/api-kpp.rst
@@ -2,7 +2,7 @@ Key-agreement Protocol Primitives (KPP) Cipher Algorithm Definitions
 --------------------------------------------------------------------
 
 .. kernel-doc:: include/crypto/kpp.h
-   :functions: kpp_request crypto_kpp kpp_alg kpp_secret
+   :specific: kpp_request crypto_kpp kpp_alg kpp_secret
 
 Key-agreement Protocol Primitives (KPP) Cipher API
 --------------------------------------------------
@@ -11,13 +11,13 @@ Key-agreement Protocol Primitives (KPP) Cipher API
    :doc: Generic Key-agreement Protocol Primitives API
 
 .. kernel-doc:: include/crypto/kpp.h
-   :functions: crypto_alloc_kpp crypto_free_kpp crypto_kpp_set_secret crypto_kpp_generate_public_key crypto_kpp_compute_shared_secret crypto_kpp_maxsize
+   :specific: crypto_alloc_kpp crypto_free_kpp crypto_kpp_set_secret crypto_kpp_generate_public_key crypto_kpp_compute_shared_secret crypto_kpp_maxsize
 
 Key-agreement Protocol Primitives (KPP) Cipher Request Handle
 -------------------------------------------------------------
 
 .. kernel-doc:: include/crypto/kpp.h
-   :functions: kpp_request_alloc kpp_request_free kpp_request_set_callback kpp_request_set_input kpp_request_set_output
+   :specific: kpp_request_alloc kpp_request_free kpp_request_set_callback kpp_request_set_input kpp_request_set_output
 
 ECDH Helper Functions
 ---------------------
@@ -26,7 +26,7 @@ ECDH Helper Functions
    :doc: ECDH Helper Functions
 
 .. kernel-doc:: include/crypto/ecdh.h
-   :functions: ecdh crypto_ecdh_key_len crypto_ecdh_encode_key crypto_ecdh_decode_key
+   :specific: ecdh crypto_ecdh_key_len crypto_ecdh_encode_key crypto_ecdh_decode_key
 
 DH Helper Functions
 -------------------
@@ -35,4 +35,4 @@ DH Helper Functions
    :doc: DH Helper Functions
 
 .. kernel-doc:: include/crypto/dh.h
-   :functions: dh crypto_dh_key_len crypto_dh_encode_key crypto_dh_decode_key
+   :specific: dh crypto_dh_key_len crypto_dh_encode_key crypto_dh_decode_key
diff --git a/Documentation/crypto/api-rng.rst b/Documentation/crypto/api-rng.rst
index 10ba7436cee4..2359a161efd5 100644
--- a/Documentation/crypto/api-rng.rst
+++ b/Documentation/crypto/api-rng.rst
@@ -2,7 +2,7 @@ Random Number Algorithm Definitions
 -----------------------------------
 
 .. kernel-doc:: include/crypto/rng.h
-   :functions: rng_alg
+   :specific: rng_alg
 
 Crypto API Random Number API
 ----------------------------
@@ -11,4 +11,4 @@ Crypto API Random Number API
    :doc: Random number generator API
 
 .. kernel-doc:: include/crypto/rng.h
-   :functions: crypto_alloc_rng crypto_rng_alg crypto_free_rng crypto_rng_generate crypto_rng_get_bytes crypto_rng_reset crypto_rng_seedsize
+   :specific: crypto_alloc_rng crypto_rng_alg crypto_free_rng crypto_rng_generate crypto_rng_get_bytes crypto_rng_reset crypto_rng_seedsize
diff --git a/Documentation/crypto/api-skcipher.rst b/Documentation/crypto/api-skcipher.rst
index 20ba08dddf2e..7934edd73932 100644
--- a/Documentation/crypto/api-skcipher.rst
+++ b/Documentation/crypto/api-skcipher.rst
@@ -5,7 +5,7 @@ Block Cipher Algorithm Definitions
    :doc: Block Cipher Algorithm Definitions
 
 .. kernel-doc:: include/linux/crypto.h
-   :functions: crypto_alg ablkcipher_alg blkcipher_alg cipher_alg compress_alg
+   :specific: crypto_alg ablkcipher_alg blkcipher_alg cipher_alg compress_alg
 
 Symmetric Key Cipher API
 ------------------------
@@ -14,7 +14,7 @@ Symmetric Key Cipher API
    :doc: Symmetric Key Cipher API
 
 .. kernel-doc:: include/crypto/skcipher.h
-   :functions: crypto_alloc_skcipher crypto_free_skcipher crypto_has_skcipher crypto_skcipher_ivsize crypto_skcipher_blocksize crypto_skcipher_setkey crypto_skcipher_reqtfm crypto_skcipher_encrypt crypto_skcipher_decrypt
+   :specific: crypto_alloc_skcipher crypto_free_skcipher crypto_has_skcipher crypto_skcipher_ivsize crypto_skcipher_blocksize crypto_skcipher_setkey crypto_skcipher_reqtfm crypto_skcipher_encrypt crypto_skcipher_decrypt
 
 Symmetric Key Cipher Request Handle
 -----------------------------------
@@ -23,7 +23,7 @@ Symmetric Key Cipher Request Handle
    :doc: Symmetric Key Cipher Request Handle
 
 .. kernel-doc:: include/crypto/skcipher.h
-   :functions: crypto_skcipher_reqsize skcipher_request_set_tfm skcipher_request_alloc skcipher_request_free skcipher_request_set_callback skcipher_request_set_crypt
+   :specific: crypto_skcipher_reqsize skcipher_request_set_tfm skcipher_request_alloc skcipher_request_free skcipher_request_set_callback skcipher_request_set_crypt
 
 Single Block Cipher API
 -----------------------
@@ -32,7 +32,7 @@ Single Block Cipher API
    :doc: Single Block Cipher API
 
 .. kernel-doc:: include/linux/crypto.h
-   :functions: crypto_alloc_cipher crypto_free_cipher crypto_has_cipher crypto_cipher_blocksize crypto_cipher_setkey crypto_cipher_encrypt_one crypto_cipher_decrypt_one
+   :specific: crypto_alloc_cipher crypto_free_cipher crypto_has_cipher crypto_cipher_blocksize crypto_cipher_setkey crypto_cipher_encrypt_one crypto_cipher_decrypt_one
 
 Asynchronous Block Cipher API - Deprecated
 ------------------------------------------
@@ -41,7 +41,7 @@ Asynchronous Block Cipher API - Deprecated
    :doc: Asynchronous Block Cipher API
 
 .. kernel-doc:: include/linux/crypto.h
-   :functions: crypto_free_ablkcipher crypto_has_ablkcipher crypto_ablkcipher_ivsize crypto_ablkcipher_blocksize crypto_ablkcipher_setkey crypto_ablkcipher_reqtfm crypto_ablkcipher_encrypt crypto_ablkcipher_decrypt
+   :specific: crypto_free_ablkcipher crypto_has_ablkcipher crypto_ablkcipher_ivsize crypto_ablkcipher_blocksize crypto_ablkcipher_setkey crypto_ablkcipher_reqtfm crypto_ablkcipher_encrypt crypto_ablkcipher_decrypt
 
 Asynchronous Cipher Request Handle - Deprecated
 -----------------------------------------------
@@ -50,7 +50,7 @@ Asynchronous Cipher Request Handle - Deprecated
    :doc: Asynchronous Cipher Request Handle
 
 .. kernel-doc:: include/linux/crypto.h
-   :functions: crypto_ablkcipher_reqsize ablkcipher_request_set_tfm ablkcipher_request_alloc ablkcipher_request_free ablkcipher_request_set_callback ablkcipher_request_set_crypt
+   :specific: crypto_ablkcipher_reqsize ablkcipher_request_set_tfm ablkcipher_request_alloc ablkcipher_request_free ablkcipher_request_set_callback ablkcipher_request_set_crypt
 
 Synchronous Block Cipher API - Deprecated
 -----------------------------------------
@@ -59,4 +59,4 @@ Synchronous Block Cipher API - Deprecated
    :doc: Synchronous Block Cipher API
 
 .. kernel-doc:: include/linux/crypto.h
-   :functions: crypto_alloc_blkcipher crypto_free_blkcipher crypto_has_blkcipher crypto_blkcipher_name crypto_blkcipher_ivsize crypto_blkcipher_blocksize crypto_blkcipher_setkey crypto_blkcipher_encrypt crypto_blkcipher_encrypt_iv crypto_blkcipher_decrypt crypto_blkcipher_decrypt_iv crypto_blkcipher_set_iv crypto_blkcipher_get_iv
+   :specific: crypto_alloc_blkcipher crypto_free_blkcipher crypto_has_blkcipher crypto_blkcipher_name crypto_blkcipher_ivsize crypto_blkcipher_blocksize crypto_blkcipher_setkey crypto_blkcipher_encrypt crypto_blkcipher_encrypt_iv crypto_blkcipher_decrypt crypto_blkcipher_decrypt_iv crypto_blkcipher_set_iv crypto_blkcipher_get_iv
diff --git a/Documentation/dev-tools/kselftest.rst b/Documentation/dev-tools/kselftest.rst
index ecdfdc9d4b03..da60a749eb10 100644
--- a/Documentation/dev-tools/kselftest.rst
+++ b/Documentation/dev-tools/kselftest.rst
@@ -300,7 +300,7 @@ Helpers
 -------
 
 .. kernel-doc:: tools/testing/selftests/kselftest_harness.h
-    :functions: TH_LOG TEST TEST_SIGNAL FIXTURE FIXTURE_DATA FIXTURE_SETUP
+    :specific: TH_LOG TEST TEST_SIGNAL FIXTURE FIXTURE_DATA FIXTURE_SETUP
                 FIXTURE_TEARDOWN TEST_F TEST_HARNESS_MAIN
 
 Operators
@@ -310,7 +310,7 @@ Operators
     :doc: operators
 
 .. kernel-doc:: tools/testing/selftests/kselftest_harness.h
-    :functions: ASSERT_EQ ASSERT_NE ASSERT_LT ASSERT_LE ASSERT_GT ASSERT_GE
+    :specific: ASSERT_EQ ASSERT_NE ASSERT_LT ASSERT_LE ASSERT_GT ASSERT_GE
                 ASSERT_NULL ASSERT_TRUE ASSERT_NULL ASSERT_TRUE ASSERT_FALSE
                 ASSERT_STREQ ASSERT_STRNE EXPECT_EQ EXPECT_NE EXPECT_LT
                 EXPECT_LE EXPECT_GT EXPECT_GE EXPECT_NULL EXPECT_TRUE
diff --git a/Documentation/doc-guide/kernel-doc.rst b/Documentation/doc-guide/kernel-doc.rst
index 192c36af39e2..c287c5edaa5c 100644
--- a/Documentation/doc-guide/kernel-doc.rst
+++ b/Documentation/doc-guide/kernel-doc.rst
@@ -476,6 +476,19 @@ internal: *[source-pattern ...]*
     .. kernel-doc:: drivers/gpu/drm/i915/intel_audio.c
        :internal:
 
+specific: *[ function/type ...]*
+  Include documentation for each *function* and *type* in *source*.
+  If no *function* is specified, the documentation for all functions
+  and types in the *source* will be included.
+
+  Examples::
+
+    .. kernel-doc:: lib/bitmap.c
+       :specific: bitmap_parselist bitmap_parselist_user
+
+    .. kernel-doc:: lib/idr.c
+       :specific:
+
 doc: *title*
   Include documentation for the ``DOC:`` paragraph identified by *title* in
   *source*. Spaces are allowed in *title*; do not quote the *title*. The *title*
@@ -488,19 +501,6 @@ doc: *title*
     .. kernel-doc:: drivers/gpu/drm/i915/intel_audio.c
        :doc: High Definition Audio over HDMI and Display Port
 
-functions: *[ function ...]*
-  Include documentation for each *function* in *source*.
-  If no *function* is specified, the documentation for all functions
-  and types in the *source* will be included.
-
-  Examples::
-
-    .. kernel-doc:: lib/bitmap.c
-       :functions: bitmap_parselist bitmap_parselist_user
-
-    .. kernel-doc:: lib/idr.c
-       :functions:
-
 Without options, the kernel-doc directive includes all documentation comments
 from the source file.
 
diff --git a/Documentation/driver-api/80211/cfg80211.rst b/Documentation/driver-api/80211/cfg80211.rst
index eeab91b59457..aeecafeaa0b7 100644
--- a/Documentation/driver-api/80211/cfg80211.rst
+++ b/Documentation/driver-api/80211/cfg80211.rst
@@ -12,79 +12,79 @@ Device registration
    :doc: Device registration
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_channel_flags
+   :specific: ieee80211_channel_flags
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_channel
+   :specific: ieee80211_channel
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_rate_flags
+   :specific: ieee80211_rate_flags
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_rate
+   :specific: ieee80211_rate
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_sta_ht_cap
+   :specific: ieee80211_sta_ht_cap
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_supported_band
+   :specific: ieee80211_supported_band
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_signal_type
+   :specific: cfg80211_signal_type
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_params_flags
+   :specific: wiphy_params_flags
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_flags
+   :specific: wiphy_flags
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy
+   :specific: wiphy
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wireless_dev
+   :specific: wireless_dev
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_new
+   :specific: wiphy_new
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_read_of_freq_limits
+   :specific: wiphy_read_of_freq_limits
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_register
+   :specific: wiphy_register
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_unregister
+   :specific: wiphy_unregister
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_free
+   :specific: wiphy_free
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_name
+   :specific: wiphy_name
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_dev
+   :specific: wiphy_dev
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_priv
+   :specific: wiphy_priv
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: priv_to_wiphy
+   :specific: priv_to_wiphy
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: set_wiphy_dev
+   :specific: set_wiphy_dev
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wdev_priv
+   :specific: wdev_priv
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_iface_limit
+   :specific: ieee80211_iface_limit
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_iface_combination
+   :specific: ieee80211_iface_combination
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_check_combinations
+   :specific: cfg80211_check_combinations
 
 Actions and configuration
 =========================
@@ -93,139 +93,139 @@ Actions and configuration
    :doc: Actions and configuration
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_ops
+   :specific: cfg80211_ops
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: vif_params
+   :specific: vif_params
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: key_params
+   :specific: key_params
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: survey_info_flags
+   :specific: survey_info_flags
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: survey_info
+   :specific: survey_info
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_beacon_data
+   :specific: cfg80211_beacon_data
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_ap_settings
+   :specific: cfg80211_ap_settings
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: station_parameters
+   :specific: station_parameters
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: rate_info_flags
+   :specific: rate_info_flags
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: rate_info
+   :specific: rate_info
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: station_info
+   :specific: station_info
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: monitor_flags
+   :specific: monitor_flags
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: mpath_info_flags
+   :specific: mpath_info_flags
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: mpath_info
+   :specific: mpath_info
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: bss_parameters
+   :specific: bss_parameters
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_txq_params
+   :specific: ieee80211_txq_params
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_crypto_settings
+   :specific: cfg80211_crypto_settings
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_auth_request
+   :specific: cfg80211_auth_request
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_assoc_request
+   :specific: cfg80211_assoc_request
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_deauth_request
+   :specific: cfg80211_deauth_request
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_disassoc_request
+   :specific: cfg80211_disassoc_request
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_ibss_params
+   :specific: cfg80211_ibss_params
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_connect_params
+   :specific: cfg80211_connect_params
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_pmksa
+   :specific: cfg80211_pmksa
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_rx_mlme_mgmt
+   :specific: cfg80211_rx_mlme_mgmt
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_auth_timeout
+   :specific: cfg80211_auth_timeout
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_rx_assoc_resp
+   :specific: cfg80211_rx_assoc_resp
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_assoc_timeout
+   :specific: cfg80211_assoc_timeout
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_tx_mlme_mgmt
+   :specific: cfg80211_tx_mlme_mgmt
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_ibss_joined
+   :specific: cfg80211_ibss_joined
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_connect_resp_params
+   :specific: cfg80211_connect_resp_params
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_connect_done
+   :specific: cfg80211_connect_done
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_connect_result
+   :specific: cfg80211_connect_result
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_connect_bss
+   :specific: cfg80211_connect_bss
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_connect_timeout
+   :specific: cfg80211_connect_timeout
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_roamed
+   :specific: cfg80211_roamed
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_disconnected
+   :specific: cfg80211_disconnected
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_ready_on_channel
+   :specific: cfg80211_ready_on_channel
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_remain_on_channel_expired
+   :specific: cfg80211_remain_on_channel_expired
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_new_sta
+   :specific: cfg80211_new_sta
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_rx_mgmt
+   :specific: cfg80211_rx_mgmt
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_mgmt_tx_status
+   :specific: cfg80211_mgmt_tx_status
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_cqm_rssi_notify
+   :specific: cfg80211_cqm_rssi_notify
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_cqm_pktloss_notify
+   :specific: cfg80211_cqm_pktloss_notify
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_michael_mic_failure
+   :specific: cfg80211_michael_mic_failure
 
 Scanning and BSS list handling
 ==============================
@@ -234,34 +234,34 @@ Scanning and BSS list handling
    :doc: Scanning and BSS list handling
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_ssid
+   :specific: cfg80211_ssid
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_scan_request
+   :specific: cfg80211_scan_request
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_scan_done
+   :specific: cfg80211_scan_done
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_bss
+   :specific: cfg80211_bss
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_inform_bss
+   :specific: cfg80211_inform_bss
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_inform_bss_frame_data
+   :specific: cfg80211_inform_bss_frame_data
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_inform_bss_data
+   :specific: cfg80211_inform_bss_data
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_unlink_bss
+   :specific: cfg80211_unlink_bss
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_find_ie
+   :specific: cfg80211_find_ie
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_bss_get_ie
+   :specific: ieee80211_bss_get_ie
 
 Utility functions
 =================
@@ -270,25 +270,25 @@ Utility functions
    :doc: Utility functions
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_channel_to_frequency
+   :specific: ieee80211_channel_to_frequency
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_frequency_to_channel
+   :specific: ieee80211_frequency_to_channel
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_get_channel
+   :specific: ieee80211_get_channel
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_get_response_rate
+   :specific: ieee80211_get_response_rate
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_hdrlen
+   :specific: ieee80211_hdrlen
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_get_hdrlen_from_skb
+   :specific: ieee80211_get_hdrlen_from_skb
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_radiotap_iterator
+   :specific: ieee80211_radiotap_iterator
 
 Data path helpers
 =================
@@ -297,13 +297,13 @@ Data path helpers
    :doc: Data path helpers
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_data_to_8023
+   :specific: ieee80211_data_to_8023
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: ieee80211_amsdu_to_8023s
+   :specific: ieee80211_amsdu_to_8023s
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_classify8021d
+   :specific: cfg80211_classify8021d
 
 Regulatory enforcement infrastructure
 =====================================
@@ -312,13 +312,13 @@ Regulatory enforcement infrastructure
    :doc: Regulatory enforcement infrastructure
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: regulatory_hint
+   :specific: regulatory_hint
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_apply_custom_regulatory
+   :specific: wiphy_apply_custom_regulatory
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: freq_reg_info
+   :specific: freq_reg_info
 
 RFkill integration
 ==================
@@ -327,13 +327,13 @@ RFkill integration
    :doc: RFkill integration
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_rfkill_set_hw_state
+   :specific: wiphy_rfkill_set_hw_state
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_rfkill_start_polling
+   :specific: wiphy_rfkill_start_polling
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: wiphy_rfkill_stop_polling
+   :specific: wiphy_rfkill_stop_polling
 
 Test mode
 =========
@@ -342,13 +342,13 @@ Test mode
    :doc: Test mode
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_testmode_alloc_reply_skb
+   :specific: cfg80211_testmode_alloc_reply_skb
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_testmode_reply
+   :specific: cfg80211_testmode_reply
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_testmode_alloc_event_skb
+   :specific: cfg80211_testmode_alloc_event_skb
 
 .. kernel-doc:: include/net/cfg80211.h
-   :functions: cfg80211_testmode_event
+   :specific: cfg80211_testmode_event
diff --git a/Documentation/driver-api/80211/mac80211-advanced.rst b/Documentation/driver-api/80211/mac80211-advanced.rst
index 9f1c5bb7ac35..9eeff622a192 100644
--- a/Documentation/driver-api/80211/mac80211-advanced.rst
+++ b/Documentation/driver-api/80211/mac80211-advanced.rst
@@ -15,25 +15,25 @@ appropriate trigger, which will then be triggered appropriately by
 mac80211.
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_get_tx_led_name
+   :specific: ieee80211_get_tx_led_name
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_get_rx_led_name
+   :specific: ieee80211_get_rx_led_name
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_get_assoc_led_name
+   :specific: ieee80211_get_assoc_led_name
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_get_radio_led_name
+   :specific: ieee80211_get_radio_led_name
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tpt_blink
+   :specific: ieee80211_tpt_blink
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tpt_led_trigger_flags
+   :specific: ieee80211_tpt_led_trigger_flags
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_create_tpt_led_trigger
+   :specific: ieee80211_create_tpt_led_trigger
 
 Hardware crypto acceleration
 ============================
@@ -42,22 +42,22 @@ Hardware crypto acceleration
    :doc: Hardware crypto acceleration
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: set_key_cmd
+   :specific: set_key_cmd
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_key_conf
+   :specific: ieee80211_key_conf
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_key_flags
+   :specific: ieee80211_key_flags
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_get_tkip_p1k
+   :specific: ieee80211_get_tkip_p1k
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_get_tkip_p1k_iv
+   :specific: ieee80211_get_tkip_p1k_iv
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_get_tkip_p2k
+   :specific: ieee80211_get_tkip_p2k
 
 Powersave support
 =================
@@ -72,7 +72,7 @@ Beacon filter support
    :doc: Beacon filter support
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_beacon_loss
+   :specific: ieee80211_beacon_loss
 
 Multiple queues and QoS support
 ===============================
@@ -80,7 +80,7 @@ Multiple queues and QoS support
 TBD
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tx_queue_params
+   :specific: ieee80211_tx_queue_params
 
 Access point mode support
 =========================
@@ -99,28 +99,28 @@ support for powersaving clients
    :doc: AP support for powersaving clients
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_get_buffered_bc
+   :specific: ieee80211_get_buffered_bc
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_beacon_get
+   :specific: ieee80211_beacon_get
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_sta_eosp
+   :specific: ieee80211_sta_eosp
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_frame_release_type
+   :specific: ieee80211_frame_release_type
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_sta_ps_transition
+   :specific: ieee80211_sta_ps_transition
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_sta_ps_transition_ni
+   :specific: ieee80211_sta_ps_transition_ni
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_sta_set_buffered
+   :specific: ieee80211_sta_set_buffered
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_sta_block_awake
+   :specific: ieee80211_sta_block_awake
 
 Supporting multiple virtual interfaces
 ======================================
@@ -134,10 +134,10 @@ addresses here, note which configurations are supported by mac80211, add
 notes about supporting hw crypto with it.
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_iterate_active_interfaces
+   :specific: ieee80211_iterate_active_interfaces
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_iterate_active_interfaces_atomic
+   :specific: ieee80211_iterate_active_interfaces_atomic
 
 Station handling
 ================
@@ -145,16 +145,16 @@ Station handling
 TODO
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_sta
+   :specific: ieee80211_sta
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: sta_notify_cmd
+   :specific: sta_notify_cmd
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_find_sta
+   :specific: ieee80211_find_sta
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_find_sta_by_ifaddr
+   :specific: ieee80211_find_sta_by_ifaddr
 
 Hardware scan offload
 =====================
@@ -162,7 +162,7 @@ Hardware scan offload
 TBD
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_scan_completed
+   :specific: ieee80211_scan_completed
 
 Aggregation
 ===========
@@ -184,7 +184,7 @@ RX A-MPDU aggregation
 .. WARNING: DOCPROC directive not supported: !Cnet/mac80211/agg-rx.c
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_ampdu_mlme_action
+   :specific: ieee80211_ampdu_mlme_action
 
 Spatial Multiplexing Powersave (SMPS)
 =====================================
@@ -193,10 +193,10 @@ Spatial Multiplexing Powersave (SMPS)
    :doc: Spatial multiplexing power save
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_request_smps
+   :specific: ieee80211_request_smps
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_smps_mode
+   :specific: ieee80211_smps_mode
 
 TBD
 
@@ -209,22 +209,22 @@ Rate Control API
 TBD
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_start_tx_ba_session
+   :specific: ieee80211_start_tx_ba_session
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_start_tx_ba_cb_irqsafe
+   :specific: ieee80211_start_tx_ba_cb_irqsafe
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_stop_tx_ba_session
+   :specific: ieee80211_stop_tx_ba_session
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_stop_tx_ba_cb_irqsafe
+   :specific: ieee80211_stop_tx_ba_cb_irqsafe
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_rate_control_changed
+   :specific: ieee80211_rate_control_changed
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tx_rate_control
+   :specific: ieee80211_tx_rate_control
 
 TBD
 
@@ -261,10 +261,10 @@ Programming information
 -----------------------
 
 .. kernel-doc:: net/mac80211/sta_info.h
-   :functions: sta_info
+   :specific: sta_info
 
 .. kernel-doc:: net/mac80211/sta_info.h
-   :functions: ieee80211_sta_info_flags
+   :specific: ieee80211_sta_info_flags
 
 STA information lifetime rules
 ------------------------------
@@ -276,13 +276,13 @@ Aggregation
 ===========
 
 .. kernel-doc:: net/mac80211/sta_info.h
-   :functions: sta_ampdu_mlme
+   :specific: sta_ampdu_mlme
 
 .. kernel-doc:: net/mac80211/sta_info.h
-   :functions: tid_ampdu_tx
+   :specific: tid_ampdu_tx
 
 .. kernel-doc:: net/mac80211/sta_info.h
-   :functions: tid_ampdu_rx
+   :specific: tid_ampdu_rx
 
 Synchronisation
 ===============
diff --git a/Documentation/driver-api/80211/mac80211.rst b/Documentation/driver-api/80211/mac80211.rst
index eab40bcf3987..6ac0fa665532 100644
--- a/Documentation/driver-api/80211/mac80211.rst
+++ b/Documentation/driver-api/80211/mac80211.rst
@@ -30,31 +30,31 @@ Finally, a discussion of hardware capabilities should be done with
 references to other parts of the book.
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_hw
+   :specific: ieee80211_hw
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_hw_flags
+   :specific: ieee80211_hw_flags
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: SET_IEEE80211_DEV
+   :specific: SET_IEEE80211_DEV
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: SET_IEEE80211_PERM_ADDR
+   :specific: SET_IEEE80211_PERM_ADDR
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_ops
+   :specific: ieee80211_ops
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_alloc_hw
+   :specific: ieee80211_alloc_hw
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_register_hw
+   :specific: ieee80211_register_hw
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_unregister_hw
+   :specific: ieee80211_unregister_hw
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_free_hw
+   :specific: ieee80211_free_hw
 
 PHY configuration
 =================
@@ -65,10 +65,10 @@ This chapter should describe PHY handling including start/stop callbacks
 and the various structures used.
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_conf
+   :specific: ieee80211_conf
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_conf_flags
+   :specific: ieee80211_conf_flags
 
 Virtual interfaces
 ==================
@@ -88,7 +88,7 @@ the recommendation to allow only a single interface in STA mode at
 first!
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_vif
+   :specific: ieee80211_vif
 
 Receive and transmit processing
 ===============================
@@ -123,79 +123,79 @@ functions/definitions
 ---------------------
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_rx_status
+   :specific: ieee80211_rx_status
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: mac80211_rx_encoding_flags
+   :specific: mac80211_rx_encoding_flags
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: mac80211_rx_flags
+   :specific: mac80211_rx_flags
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: mac80211_tx_info_flags
+   :specific: mac80211_tx_info_flags
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: mac80211_tx_control_flags
+   :specific: mac80211_tx_control_flags
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: mac80211_rate_control_flags
+   :specific: mac80211_rate_control_flags
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tx_rate
+   :specific: ieee80211_tx_rate
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tx_info
+   :specific: ieee80211_tx_info
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tx_info_clear_status
+   :specific: ieee80211_tx_info_clear_status
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_rx
+   :specific: ieee80211_rx
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_rx_ni
+   :specific: ieee80211_rx_ni
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_rx_irqsafe
+   :specific: ieee80211_rx_irqsafe
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tx_status
+   :specific: ieee80211_tx_status
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tx_status_ni
+   :specific: ieee80211_tx_status_ni
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_tx_status_irqsafe
+   :specific: ieee80211_tx_status_irqsafe
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_rts_get
+   :specific: ieee80211_rts_get
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_rts_duration
+   :specific: ieee80211_rts_duration
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_ctstoself_get
+   :specific: ieee80211_ctstoself_get
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_ctstoself_duration
+   :specific: ieee80211_ctstoself_duration
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_generic_frame_duration
+   :specific: ieee80211_generic_frame_duration
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_wake_queue
+   :specific: ieee80211_wake_queue
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_stop_queue
+   :specific: ieee80211_stop_queue
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_wake_queues
+   :specific: ieee80211_wake_queues
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_stop_queues
+   :specific: ieee80211_stop_queues
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_queue_stopped
+   :specific: ieee80211_queue_stopped
 
 Frame filtering
 ===============
@@ -204,7 +204,7 @@ Frame filtering
    :doc: Frame filtering
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_filter_flags
+   :specific: ieee80211_filter_flags
 
 The mac80211 workqueue
 ======================
@@ -213,7 +213,7 @@ The mac80211 workqueue
    :doc: mac80211 workqueue
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_queue_work
+   :specific: ieee80211_queue_work
 
 .. kernel-doc:: include/net/mac80211.h
-   :functions: ieee80211_queue_delayed_work
+   :specific: ieee80211_queue_delayed_work
diff --git a/Documentation/driver-api/device_connection.rst b/Documentation/driver-api/device_connection.rst
index ba364224c349..0feaf7146dd6 100644
--- a/Documentation/driver-api/device_connection.rst
+++ b/Documentation/driver-api/device_connection.rst
@@ -40,4 +40,4 @@ API
 ---
 
 .. kernel-doc:: drivers/base/devcon.c
-   :functions: device_connection_find_match device_connection_find device_connection_add device_connection_remove
+   :specific: device_connection_find_match device_connection_find device_connection_add device_connection_remove
diff --git a/Documentation/driver-api/device_link.rst b/Documentation/driver-api/device_link.rst
index 1b5020ec6517..6e79007d41cd 100644
--- a/Documentation/driver-api/device_link.rst
+++ b/Documentation/driver-api/device_link.rst
@@ -258,7 +258,7 @@ State machine
 =============
 
 .. kernel-doc:: include/linux/device.h
-   :functions: device_link_state
+   :specific: device_link_state
 
 ::
 
@@ -321,4 +321,4 @@ API
 ===
 
 .. kernel-doc:: drivers/base/core.c
-   :functions: device_link_add device_link_del device_link_remove
+   :specific: device_link_add device_link_del device_link_remove
diff --git a/Documentation/driver-api/firmware/fallback-mechanisms.rst b/Documentation/driver-api/firmware/fallback-mechanisms.rst
index 8b041d0ab426..08d60ae4e138 100644
--- a/Documentation/driver-api/firmware/fallback-mechanisms.rst
+++ b/Documentation/driver-api/firmware/fallback-mechanisms.rst
@@ -111,7 +111,7 @@ expected to be used regularly by userspace.
 firmware_fallback_sysfs
 -----------------------
 .. kernel-doc:: drivers/base/firmware_loader/fallback.c
-   :functions: firmware_fallback_sysfs
+   :specific: firmware_fallback_sysfs
 
 Firmware kobject uevent fallback mechanism
 ==========================================
diff --git a/Documentation/driver-api/firmware/other_interfaces.rst b/Documentation/driver-api/firmware/other_interfaces.rst
index b81794e0cfbb..da948488a4c4 100644
--- a/Documentation/driver-api/firmware/other_interfaces.rst
+++ b/Documentation/driver-api/firmware/other_interfaces.rst
@@ -27,19 +27,19 @@ and processed one by one. ARM’s SMCCC is used to pass the execution
 of the requests on to a secure monitor (EL3).
 
 .. kernel-doc:: include/linux/firmware/intel/stratix10-svc-client.h
-   :functions: stratix10_svc_command_code
+   :specific: stratix10_svc_command_code
 
 .. kernel-doc:: include/linux/firmware/intel/stratix10-svc-client.h
-   :functions: stratix10_svc_client_msg
+   :specific: stratix10_svc_client_msg
 
 .. kernel-doc:: include/linux/firmware/intel/stratix10-svc-client.h
-   :functions: stratix10_svc_command_config_type
+   :specific: stratix10_svc_command_config_type
 
 .. kernel-doc:: include/linux/firmware/intel/stratix10-svc-client.h
-   :functions: stratix10_svc_cb_data
+   :specific: stratix10_svc_cb_data
 
 .. kernel-doc:: include/linux/firmware/intel/stratix10-svc-client.h
-   :functions: stratix10_svc_client
+   :specific: stratix10_svc_client
 
 .. kernel-doc:: drivers/firmware/stratix10-svc.c
    :export:
diff --git a/Documentation/driver-api/firmware/request_firmware.rst b/Documentation/driver-api/firmware/request_firmware.rst
index f62bdcbfed5b..5d3cee760735 100644
--- a/Documentation/driver-api/firmware/request_firmware.rst
+++ b/Documentation/driver-api/firmware/request_firmware.rst
@@ -18,22 +18,22 @@ an error is returned.
 request_firmware
 ----------------
 .. kernel-doc:: drivers/base/firmware_loader/main.c
-   :functions: request_firmware
+   :specific: request_firmware
 
 firmware_request_nowarn
 -----------------------
 .. kernel-doc:: drivers/base/firmware_loader/main.c
-   :functions: firmware_request_nowarn
+   :specific: firmware_request_nowarn
 
 request_firmware_direct
 -----------------------
 .. kernel-doc:: drivers/base/firmware_loader/main.c
-   :functions: request_firmware_direct
+   :specific: request_firmware_direct
 
 request_firmware_into_buf
 -------------------------
 .. kernel-doc:: drivers/base/firmware_loader/main.c
-   :functions: request_firmware_into_buf
+   :specific: request_firmware_into_buf
 
 Asynchronous firmware requests
 ==============================
@@ -47,7 +47,7 @@ in atomic contexts.
 request_firmware_nowait
 -----------------------
 .. kernel-doc:: drivers/base/firmware_loader/main.c
-   :functions: request_firmware_nowait
+   :specific: request_firmware_nowait
 
 Special optimizations on reboot
 ===============================
@@ -61,7 +61,7 @@ firmware to be loaded.
 firmware_request_cache()
 ------------------------
 .. kernel-doc:: drivers/base/firmware_loader/main.c
-   :functions: firmware_request_cache
+   :specific: firmware_request_cache
 
 request firmware API expected driver use
 ========================================
diff --git a/Documentation/driver-api/fpga/fpga-bridge.rst b/Documentation/driver-api/fpga/fpga-bridge.rst
index 71c5a40da320..3aaecbffcf97 100644
--- a/Documentation/driver-api/fpga/fpga-bridge.rst
+++ b/Documentation/driver-api/fpga/fpga-bridge.rst
@@ -11,16 +11,16 @@ API to implement a new FPGA bridge
 * :c:func:`fpga_bridge_unregister()` — Unregister a bridge
 
 .. kernel-doc:: include/linux/fpga/fpga-bridge.h
-   :functions: fpga_bridge
+   :specific: fpga_bridge
 
 .. kernel-doc:: include/linux/fpga/fpga-bridge.h
-   :functions: fpga_bridge_ops
+   :specific: fpga_bridge_ops
 
 .. kernel-doc:: drivers/fpga/fpga-bridge.c
-   :functions: devm_fpga_bridge_create
+   :specific: devm_fpga_bridge_create
 
 .. kernel-doc:: drivers/fpga/fpga-bridge.c
-   :functions: fpga_bridge_register
+   :specific: fpga_bridge_register
 
 .. kernel-doc:: drivers/fpga/fpga-bridge.c
-   :functions: fpga_bridge_unregister
+   :specific: fpga_bridge_unregister
diff --git a/Documentation/driver-api/fpga/fpga-mgr.rst b/Documentation/driver-api/fpga/fpga-mgr.rst
index 576f1945eacd..5445f66910ca 100644
--- a/Documentation/driver-api/fpga/fpga-mgr.rst
+++ b/Documentation/driver-api/fpga/fpga-mgr.rst
@@ -109,19 +109,19 @@ API for implementing a new FPGA Manager driver
 * :c:func:`fpga_mgr_unregister` —  Unregister an FPGA manager
 
 .. kernel-doc:: include/linux/fpga/fpga-mgr.h
-   :functions: fpga_mgr_states
+   :specific: fpga_mgr_states
 
 .. kernel-doc:: include/linux/fpga/fpga-mgr.h
-   :functions: fpga_manager
+   :specific: fpga_manager
 
 .. kernel-doc:: include/linux/fpga/fpga-mgr.h
-   :functions: fpga_manager_ops
+   :specific: fpga_manager_ops
 
 .. kernel-doc:: drivers/fpga/fpga-mgr.c
-   :functions: devm_fpga_mgr_create
+   :specific: devm_fpga_mgr_create
 
 .. kernel-doc:: drivers/fpga/fpga-mgr.c
-   :functions: fpga_mgr_register
+   :specific: fpga_mgr_register
 
 .. kernel-doc:: drivers/fpga/fpga-mgr.c
-   :functions: fpga_mgr_unregister
+   :specific: fpga_mgr_unregister
diff --git a/Documentation/driver-api/fpga/fpga-programming.rst b/Documentation/driver-api/fpga/fpga-programming.rst
index b5484df6ff0f..4abf868898e9 100644
--- a/Documentation/driver-api/fpga/fpga-programming.rst
+++ b/Documentation/driver-api/fpga/fpga-programming.rst
@@ -90,7 +90,7 @@ API for programming an FPGA
 * :c:func:`fpga_image_info_free()` —  Free an FPGA image info struct
 
 .. kernel-doc:: drivers/fpga/fpga-region.c
-   :functions: fpga_region_program_fpga
+   :specific: fpga_region_program_fpga
 
 FPGA Manager flags
 
@@ -98,10 +98,10 @@ FPGA Manager flags
    :doc: FPGA Manager flags
 
 .. kernel-doc:: include/linux/fpga/fpga-mgr.h
-   :functions: fpga_image_info
+   :specific: fpga_image_info
 
 .. kernel-doc:: drivers/fpga/fpga-mgr.c
-   :functions: fpga_image_info_alloc
+   :specific: fpga_image_info_alloc
 
 .. kernel-doc:: drivers/fpga/fpga-mgr.c
-   :functions: fpga_image_info_free
+   :specific: fpga_image_info_free
diff --git a/Documentation/driver-api/fpga/fpga-region.rst b/Documentation/driver-api/fpga/fpga-region.rst
index 0529b2d2231a..94344f1a4d0c 100644
--- a/Documentation/driver-api/fpga/fpga-region.rst
+++ b/Documentation/driver-api/fpga/fpga-region.rst
@@ -73,31 +73,31 @@ following APIs to handle building or tearing down that list.
 * :c:func:`fpga_bridges_put` — Given a list of bridges, put them
 
 .. kernel-doc:: include/linux/fpga/fpga-region.h
-   :functions: fpga_region
+   :specific: fpga_region
 
 .. kernel-doc:: drivers/fpga/fpga-region.c
-   :functions: devm_fpga_region_create
+   :specific: devm_fpga_region_create
 
 .. kernel-doc:: drivers/fpga/fpga-region.c
-   :functions: fpga_region_register
+   :specific: fpga_region_register
 
 .. kernel-doc:: drivers/fpga/fpga-region.c
-   :functions: fpga_region_unregister
+   :specific: fpga_region_unregister
 
 .. kernel-doc:: drivers/fpga/fpga-mgr.c
-   :functions: fpga_mgr_get
+   :specific: fpga_mgr_get
 
 .. kernel-doc:: drivers/fpga/fpga-mgr.c
-   :functions: of_fpga_mgr_get
+   :specific: of_fpga_mgr_get
 
 .. kernel-doc:: drivers/fpga/fpga-mgr.c
-   :functions: fpga_mgr_put
+   :specific: fpga_mgr_put
 
 .. kernel-doc:: drivers/fpga/fpga-bridge.c
-   :functions: fpga_bridge_get_to_list
+   :specific: fpga_bridge_get_to_list
 
 .. kernel-doc:: drivers/fpga/fpga-bridge.c
-   :functions: of_fpga_bridge_get_to_list
+   :specific: of_fpga_bridge_get_to_list
 
 .. kernel-doc:: drivers/fpga/fpga-bridge.c
-   :functions: fpga_bridges_put
+   :specific: fpga_bridges_put
diff --git a/Documentation/driver-api/i2c.rst b/Documentation/driver-api/i2c.rst
index 7582c079d747..8f585d9adf62 100644
--- a/Documentation/driver-api/i2c.rst
+++ b/Documentation/driver-api/i2c.rst
@@ -39,7 +39,7 @@ i2c_adapter devices which don't support those I2C operations.
    :internal:
 
 .. kernel-doc:: drivers/i2c/i2c-boardinfo.c
-   :functions: i2c_register_board_info
+   :specific: i2c_register_board_info
 
 .. kernel-doc:: drivers/i2c/i2c-core-base.c
    :export:
diff --git a/Documentation/driver-api/mei/hdcp.rst b/Documentation/driver-api/mei/hdcp.rst
index e85a065b1cdc..aebfc3378cab 100644
--- a/Documentation/driver-api/mei/hdcp.rst
+++ b/Documentation/driver-api/mei/hdcp.rst
@@ -28,5 +28,5 @@ mei_hdcp api
 ------------
 
 .. kernel-doc:: drivers/misc/mei/hdcp/mei_hdcp.c
-    :functions:
+    :specific:
 
diff --git a/Documentation/driver-api/spi.rst b/Documentation/driver-api/spi.rst
index f64cb666498a..288d0b315931 100644
--- a/Documentation/driver-api/spi.rst
+++ b/Documentation/driver-api/spi.rst
@@ -47,7 +47,7 @@ policies for how they use the bits transferred with SPI.
    :internal:
 
 .. kernel-doc:: drivers/spi/spi.c
-   :functions: spi_register_board_info
+   :specific: spi_register_board_info
 
 .. kernel-doc:: drivers/spi/spi.c
    :export:
diff --git a/Documentation/driver-api/usb/typec.rst b/Documentation/driver-api/usb/typec.rst
index 201163d8c13e..a3782833b6ea 100644
--- a/Documentation/driver-api/usb/typec.rst
+++ b/Documentation/driver-api/usb/typec.rst
@@ -63,7 +63,7 @@ The port drivers will describe every Type-C port they control with struct
 typec_capability data structure, and register them with the following API:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_register_port typec_unregister_port
+   :specific: typec_register_port typec_unregister_port
 
 When registering the ports, the prefer_role member in struct typec_capability
 deserves special notice. If the port that is being registered does not have
@@ -82,7 +82,7 @@ registration. The class offers the following API for registering/unregistering
 partners.
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_register_partner typec_unregister_partner
+   :specific: typec_register_partner typec_unregister_partner
 
 The class will provide a handle to struct typec_partner if the registration was
 successful, or NULL.
@@ -94,7 +94,7 @@ create a sysfs directory for the identity under the partner device. The result
 of Discover Identity command can then be reported with the following API:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_partner_set_identity
+   :specific: typec_partner_set_identity
 
 Registering Cables
 ~~~~~~~~~~~~~~~~~~
@@ -115,7 +115,7 @@ the details during registration. The class offers the following API for
 registering/unregistering cables and their plugs:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_register_cable typec_unregister_cable typec_register_plug typec_unregister_plug
+   :specific: typec_register_cable typec_unregister_cable typec_register_plug typec_unregister_plug
 
 The class will provide a handle to struct typec_cable and struct typec_plug if
 the registration is successful, or NULL if it isn't.
@@ -127,7 +127,7 @@ sysfs directory for the identity under the cable device. The result of Discover
 Identity command can then be reported with the following API:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_cable_set_identity
+   :specific: typec_cable_set_identity
 
 Notifications
 ~~~~~~~~~~~~~
@@ -137,7 +137,7 @@ during connection of a partner or cable, the port driver must use the following
 APIs to report it to the class:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_set_data_role typec_set_pwr_role typec_set_vconn_role typec_set_pwr_opmode
+   :specific: typec_set_data_role typec_set_pwr_role typec_set_vconn_role typec_set_pwr_opmode
 
 Alternate Modes
 ~~~~~~~~~~~~~~~
@@ -152,7 +152,7 @@ Ports that support Alternate Modes need to register each SVID they support with
 the following API:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_port_register_altmode
+   :specific: typec_port_register_altmode
 
 If a partner or cable plug provides a list of SVIDs as response to USB Power
 Delivery Structured VDM Discover SVIDs message, each SVID needs to be
@@ -161,12 +161,12 @@ registered.
 API for the partners:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_partner_register_altmode
+   :specific: typec_partner_register_altmode
 
 API for the Cable Plugs:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_plug_register_altmode
+   :specific: typec_plug_register_altmode
 
 So ports, partners and cable plugs will register the alternate modes with their
 own functions, but the registration will always return a handle to struct
@@ -174,13 +174,13 @@ typec_altmode on success, or NULL. The unregistration will happen with the same
 function:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_unregister_altmode
+   :specific: typec_unregister_altmode
 
 If a partner or cable plug enters or exits a mode, the port driver needs to
 notify the class with the following API:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_altmode_update_active
+   :specific: typec_altmode_update_active
 
 Multiplexer/DeMultiplexer Switches
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -193,7 +193,7 @@ route the pins on the connector to some other component besides USB. USB Type-C
 Connector Class supplies an API for registering those switches.
 
 .. kernel-doc:: drivers/usb/typec/mux.c
-   :functions: typec_switch_register typec_switch_unregister typec_mux_register typec_mux_unregister
+   :specific: typec_switch_register typec_switch_unregister typec_mux_register typec_mux_unregister
 
 In most cases the same physical mux will handle both the orientation and mode.
 However, as the port drivers will be responsible for the orientation, and the
@@ -205,7 +205,7 @@ the switch for the port. The drivers can then use the following API for
 controlling them:
 
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_set_orientation typec_set_mode
+   :specific: typec_set_orientation typec_set_mode
 
 If the connector is dual-role capable, there may also be a switch for the data
 role. USB Type-C Connector Class does not supply separate API for them. The
diff --git a/Documentation/driver-api/usb/typec_bus.rst b/Documentation/driver-api/usb/typec_bus.rst
index f47a69bff498..762e53b66665 100644
--- a/Documentation/driver-api/usb/typec_bus.rst
+++ b/Documentation/driver-api/usb/typec_bus.rst
@@ -110,27 +110,27 @@ Alternate mode driver registering/unregistering
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. kernel-doc:: drivers/usb/typec/bus.c
-   :functions: typec_altmode_register_driver typec_altmode_unregister_driver
+   :specific: typec_altmode_register_driver typec_altmode_unregister_driver
 
 Alternate mode driver operations
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. kernel-doc:: drivers/usb/typec/bus.c
-   :functions: typec_altmode_enter typec_altmode_exit typec_altmode_attention typec_altmode_vdm typec_altmode_notify
+   :specific: typec_altmode_enter typec_altmode_exit typec_altmode_attention typec_altmode_vdm typec_altmode_notify
 
 API for the port drivers
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. kernel-doc:: drivers/usb/typec/bus.c
-   :functions: typec_match_altmode
+   :specific: typec_match_altmode
 
 Cable Plug operations
 ~~~~~~~~~~~~~~~~~~~~~
 
 .. kernel-doc:: drivers/usb/typec/bus.c
-   :functions: typec_altmode_get_plug typec_altmode_put_plug
+   :specific: typec_altmode_get_plug typec_altmode_put_plug
 
 Notifications
 ~~~~~~~~~~~~~
 .. kernel-doc:: drivers/usb/typec/class.c
-   :functions: typec_altmode_register_notifier typec_altmode_unregister_notifier
+   :specific: typec_altmode_register_notifier typec_altmode_unregister_notifier
diff --git a/Documentation/gpu/amdgpu-dc.rst b/Documentation/gpu/amdgpu-dc.rst
index cc89b0fc11df..ec95a5a0aea4 100644
--- a/Documentation/gpu/amdgpu-dc.rst
+++ b/Documentation/gpu/amdgpu-dc.rst
@@ -39,7 +39,7 @@ Lifecycle
    :doc: DM Lifecycle
 
 .. kernel-doc:: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-   :functions: dm_hw_init dm_hw_fini
+   :specific: dm_hw_init dm_hw_fini
 
 Interrupts
 ----------
@@ -51,7 +51,7 @@ Interrupts
    :internal:
 
 .. kernel-doc:: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-   :functions: register_hpd_handlers dm_crtc_high_irq dm_pflip_high_irq
+   :specific: register_hpd_handlers dm_crtc_high_irq dm_pflip_high_irq
 
 Atomic Implementation
 ---------------------
@@ -60,7 +60,7 @@ Atomic Implementation
    :doc: atomic
 
 .. kernel-doc:: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-   :functions: amdgpu_dm_atomic_check amdgpu_dm_atomic_commit_tail
+   :specific: amdgpu_dm_atomic_check amdgpu_dm_atomic_commit_tail
 
 Display Core
 ============
diff --git a/Documentation/gpu/drm-kms-helpers.rst b/Documentation/gpu/drm-kms-helpers.rst
index 3868008db8a9..78a0457a9434 100644
--- a/Documentation/gpu/drm-kms-helpers.rst
+++ b/Documentation/gpu/drm-kms-helpers.rst
@@ -257,7 +257,7 @@ These functions aren't exported to drivers, but are documented here to help make
 the MST topology helpers easier to understand
 
 .. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
-   :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb
+   :specific: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb
                drm_dp_mst_topology_put_mstb
                drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port
                drm_dp_mst_topology_put_port
diff --git a/Documentation/gpu/i915.rst b/Documentation/gpu/i915.rst
index 3415255ad3dc..c0c6d5e4a35c 100644
--- a/Documentation/gpu/i915.rst
+++ b/Documentation/gpu/i915.rst
@@ -32,13 +32,13 @@ Interrupt Handling
    :doc: interrupt handling
 
 .. kernel-doc:: drivers/gpu/drm/i915/i915_irq.c
-   :functions: intel_irq_init intel_irq_init_hw intel_hpd_init
+   :specific: intel_irq_init intel_irq_init_hw intel_hpd_init
 
 .. kernel-doc:: drivers/gpu/drm/i915/i915_irq.c
-   :functions: intel_runtime_pm_disable_interrupts
+   :specific: intel_runtime_pm_disable_interrupts
 
 .. kernel-doc:: drivers/gpu/drm/i915/i915_irq.c
-   :functions: intel_runtime_pm_enable_interrupts
+   :specific: intel_runtime_pm_enable_interrupts
 
 Intel GVT-g Guest Support(vGPU)
 -------------------------------
@@ -181,22 +181,22 @@ Display Refresh Rate Switching (DRRS)
    :doc: Display Refresh Rate Switching (DRRS)
 
 .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
-   :functions: intel_dp_set_drrs_state
+   :specific: intel_dp_set_drrs_state
 
 .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
-   :functions: intel_edp_drrs_enable
+   :specific: intel_edp_drrs_enable
 
 .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
-   :functions: intel_edp_drrs_disable
+   :specific: intel_edp_drrs_disable
 
 .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
-   :functions: intel_edp_drrs_invalidate
+   :specific: intel_edp_drrs_invalidate
 
 .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
-   :functions: intel_edp_drrs_flush
+   :specific: intel_edp_drrs_flush
 
 .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
-   :functions: intel_dp_drrs_init
+   :specific: intel_dp_drrs_init
 
 DPIO
 ----
@@ -492,21 +492,21 @@ This section covers the entrypoints exported outside of i915_perf.c to
 integrate with drm/i915 and to handle the `DRM_I915_PERF_OPEN` ioctl.
 
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_init
+   :specific: i915_perf_init
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_fini
+   :specific: i915_perf_fini
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_register
+   :specific: i915_perf_register
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_unregister
+   :specific: i915_perf_unregister
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_open_ioctl
+   :specific: i915_perf_open_ioctl
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_release
+   :specific: i915_perf_release
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_add_config_ioctl
+   :specific: i915_perf_add_config_ioctl
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_remove_config_ioctl
+   :specific: i915_perf_remove_config_ioctl
 
 i915 Perf Stream
 ----------------
@@ -515,47 +515,47 @@ This section covers the stream-semantics-agnostic structures and functions
 for representing an i915 perf stream FD and associated file operations.
 
 .. kernel-doc:: drivers/gpu/drm/i915/i915_drv.h
-   :functions: i915_perf_stream
+   :specific: i915_perf_stream
 .. kernel-doc:: drivers/gpu/drm/i915/i915_drv.h
-   :functions: i915_perf_stream_ops
+   :specific: i915_perf_stream_ops
 
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: read_properties_unlocked
+   :specific: read_properties_unlocked
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_open_ioctl_locked
+   :specific: i915_perf_open_ioctl_locked
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_destroy_locked
+   :specific: i915_perf_destroy_locked
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_read
+   :specific: i915_perf_read
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_ioctl
+   :specific: i915_perf_ioctl
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_enable_locked
+   :specific: i915_perf_enable_locked
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_disable_locked
+   :specific: i915_perf_disable_locked
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_poll
+   :specific: i915_perf_poll
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_perf_poll_locked
+   :specific: i915_perf_poll_locked
 
 i915 Perf Observation Architecture Stream
 -----------------------------------------
 
 .. kernel-doc:: drivers/gpu/drm/i915/i915_drv.h
-   :functions: i915_oa_ops
+   :specific: i915_oa_ops
 
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_oa_stream_init
+   :specific: i915_oa_stream_init
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_oa_read
+   :specific: i915_oa_read
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_oa_stream_enable
+   :specific: i915_oa_stream_enable
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_oa_stream_disable
+   :specific: i915_oa_stream_disable
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_oa_wait_unlocked
+   :specific: i915_oa_wait_unlocked
 .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
-   :functions: i915_oa_poll_wait
+   :specific: i915_oa_poll_wait
 
 All i915 Perf Internals
 -----------------------
diff --git a/Documentation/gpu/vga-switcheroo.rst b/Documentation/gpu/vga-switcheroo.rst
index cbbdb994f1dd..d490b01919fd 100644
--- a/Documentation/gpu/vga-switcheroo.rst
+++ b/Documentation/gpu/vga-switcheroo.rst
@@ -35,31 +35,31 @@ Public structures
 -----------------
 
 .. kernel-doc:: include/linux/vga_switcheroo.h
-   :functions: vga_switcheroo_handler
+   :specific: vga_switcheroo_handler
 
 .. kernel-doc:: include/linux/vga_switcheroo.h
-   :functions: vga_switcheroo_client_ops
+   :specific: vga_switcheroo_client_ops
 
 Public constants
 ----------------
 
 .. kernel-doc:: include/linux/vga_switcheroo.h
-   :functions: vga_switcheroo_handler_flags_t
+   :specific: vga_switcheroo_handler_flags_t
 
 .. kernel-doc:: include/linux/vga_switcheroo.h
-   :functions: vga_switcheroo_client_id
+   :specific: vga_switcheroo_client_id
 
 .. kernel-doc:: include/linux/vga_switcheroo.h
-   :functions: vga_switcheroo_state
+   :specific: vga_switcheroo_state
 
 Private structures
 ------------------
 
 .. kernel-doc:: drivers/gpu/vga/vga_switcheroo.c
-   :functions: vgasr_priv
+   :specific: vgasr_priv
 
 .. kernel-doc:: drivers/gpu/vga/vga_switcheroo.c
-   :functions: vga_switcheroo_client
+   :specific: vga_switcheroo_client
 
 Handlers
 ========
diff --git a/Documentation/security/tpm/tpm_vtpm_proxy.rst b/Documentation/security/tpm/tpm_vtpm_proxy.rst
index ea08e76b17f5..8583cd970393 100644
--- a/Documentation/security/tpm/tpm_vtpm_proxy.rst
+++ b/Documentation/security/tpm/tpm_vtpm_proxy.rst
@@ -47,4 +47,4 @@ UAPI
 .. kernel-doc:: include/uapi/linux/vtpm_proxy.h
 
 .. kernel-doc:: drivers/char/tpm/tpm_vtpm_proxy.c
-   :functions: vtpmx_ioc_new_dev
+   :specific: vtpmx_ioc_new_dev
diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py
index 1159405cb920..1232d0324927 100644
--- a/Documentation/sphinx/kerneldoc.py
+++ b/Documentation/sphinx/kerneldoc.py
@@ -59,7 +59,7 @@ class KernelDocDirective(Directive):
     optional_arguments = 4
     option_spec = {
         'doc': directives.unchanged_required,
-        'functions': directives.unchanged,
+        'specific': directives.unchanged,
         'export': directives.unchanged,
         'internal': directives.unchanged,
     }
@@ -84,15 +84,15 @@ class KernelDocDirective(Directive):
         elif 'internal' in self.options:
             cmd += ['-internal']
             export_file_patterns = str(self.options.get('internal')).split()
-        elif 'doc' in self.options:
-            cmd += ['-function', str(self.options.get('doc'))]
-        elif 'functions' in self.options:
-            functions = self.options.get('functions').split()
+        elif 'specific' in self.options:
+            functions = self.options.get('specific').split()
             if functions:
                 for f in functions:
                     cmd += ['-function', f]
             else:
                 cmd += ['-no-doc-sections']
+        elif 'doc' in self.options:
+            cmd += ['-function', str(self.options.get('doc'))]
 
         for pattern in export_file_patterns:
             for f in glob.glob(env.config.kerneldoc_srctree + '/' + pattern):
diff --git a/Documentation/translations/it_IT/doc-guide/kernel-doc.rst b/Documentation/translations/it_IT/doc-guide/kernel-doc.rst
index a4ecd8f27631..1a4a3c3774e9 100644
--- a/Documentation/translations/it_IT/doc-guide/kernel-doc.rst
+++ b/Documentation/translations/it_IT/doc-guide/kernel-doc.rst
@@ -535,7 +535,7 @@ functions: *function* *[...]*
   Esempio::
 
     .. kernel-doc:: lib/bitmap.c
-       :functions: bitmap_parselist bitmap_parselist_user
+       :specific: bitmap_parselist bitmap_parselist_user
 
 Senza alcuna opzione, la direttiva kernel-doc include tutti i commenti di
 documentazione presenti nel file sorgente (*source*).
diff --git a/Documentation/vm/ksm.rst b/Documentation/vm/ksm.rst
index d32016d9be2c..c518a7985ce1 100644
--- a/Documentation/vm/ksm.rst
+++ b/Documentation/vm/ksm.rst
@@ -80,7 +80,7 @@ The frequency of such scans is defined by
 Reference
 ---------
 .. kernel-doc:: mm/ksm.c
-   :functions: mm_slot ksm_scan stable_node rmap_item
+   :specific: mm_slot ksm_scan stable_node rmap_item
 
 --
 Izik Eidus,
diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index 81dc91760b23..cd3d2ca52c34 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -1475,8 +1475,13 @@ sub push_parameter($$$$) {
 		$parameterdescs{$param} = $undescribed;
 
 	        if (show_warnings($type, $declaration_name) && $param !~ /\./) {
-			print STDERR
-			      "${file}:$.: warning: Function parameter or member '$param' not described in '$declaration_name'\n";
+			if ($decl_type eq "struct" or $decl_type eq 'union') {
+				print STDERR
+					"${file}:$.: warning: $decl_type member '$param' not described in '$declaration_name'\n";
+			} else {
+				print STDERR
+					"${file}:$.: warning: $decl_type parameter '$param' not described in '$declaration_name'\n";
+			}
 			++$warnings;
 		}
 	}
-- 
2.20.1


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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-13  5:53 [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific' Changbin Du
@ 2019-10-13 19:29 ` kbuild test robot
  2019-10-14  8:59 ` Jani Nikula
  2019-10-15 18:27 ` Jonathan Corbet
  2 siblings, 0 replies; 13+ messages in thread
From: kbuild test robot @ 2019-10-13 19:29 UTC (permalink / raw)
  To: Changbin Du
  Cc: kbuild-all, Jonathan Corbet, linux-pci, linux-doc, linux-kernel,
	linux-mm, linux-crypto, linux-kselftest, linux-wireless,
	linux-fpga, linux-usb, dri-devel, intel-gfx, Changbin Du

[-- Attachment #1: Type: text/plain, Size: 16652 bytes --]

Hi Changbin,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[cannot apply to v5.4-rc2 next-20191010]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Changbin-Du/kernel-doc-rename-the-kernel-doc-directive-functions-to-specific/20191014-013215
reproduce: make htmldocs

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   Warning: The Sphinx 'sphinx_rtd_theme' HTML theme was not found. Make sure you have the theme installed to produce pretty HTML output. Falling back to the default theme.
   WARNING: dot(1) not found, for better output quality install graphviz from http://www.graphviz.org
   WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org)
   Error: Cannot open file drivers/dma-buf/reservation.c
   Error: Cannot open file drivers/dma-buf/reservation.c
   Error: Cannot open file drivers/dma-buf/reservation.c
   Error: Cannot open file include/linux/reservation.h
   Error: Cannot open file include/linux/reservation.h
>> include/linux/regulator/machine.h:196: warning: struct member 'max_uV_step' not described in 'regulation_constraints'
>> include/linux/regulator/driver.h:223: warning: struct member 'resume' not described in 'regulator_ops'
>> include/linux/i2c.h:337: warning: struct member 'init_irq' not described in 'i2c_client'
   drivers/gpio/gpiolib-of.c:92: warning: Excess function parameter 'dev' description in 'of_gpio_need_valid_mask'
>> include/linux/spi/spi.h:190: warning: struct member 'driver_override' not described in 'spi_device'
   mm/util.c:1: warning: 'get_user_pages_fast' not found
>> mm/slab.c:4215: warning: function parameter 'objp' not described in '__ksize'
   drivers/usb/typec/bus.c:1: warning: 'typec_altmode_register_driver' not found
   drivers/usb/typec/bus.c:1: warning: 'typec_altmode_unregister_driver' not found
   drivers/usb/typec/class.c:1: warning: 'typec_altmode_unregister_notifier' not found
   drivers/usb/typec/class.c:1: warning: 'typec_altmode_register_notifier' not found
>> include/linux/w1.h:277: warning: struct member 'of_match_table' not described in 'w1_family'
   drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c:335: warning: Excess function parameter 'dev' description in 'amdgpu_gem_prime_export'
   drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c:336: warning: Excess function parameter 'dev' description in 'amdgpu_gem_prime_export'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:142: warning: function parameter 'blockable' not described in 'amdgpu_mn_read_lock'
   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:347: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:348: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:494: warning: function parameter 'start' not described in 'amdgpu_vm_pt_first_dfs'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: function parameter 'adev' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: function parameter 'vm' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: function parameter 'start' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: function parameter 'cursor' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: function parameter 'entry' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:821: warning: function parameter 'level' not described in 'amdgpu_vm_bo_param'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: function parameter 'params' not described in 'amdgpu_vm_update_flags'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: function parameter 'bo' not described in 'amdgpu_vm_update_flags'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: function parameter 'level' not described in 'amdgpu_vm_update_flags'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: function parameter 'pe' not described in 'amdgpu_vm_update_flags'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: function parameter 'addr' not described in 'amdgpu_vm_update_flags'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: function parameter 'count' not described in 'amdgpu_vm_update_flags'

vim +1207 drivers/gpu/drm/i915/i915_drv.h

eec688e1420da5 Robert Bragg          2016-11-07  1069  
16d98b31f80775 Robert Bragg          2016-12-07  1070  /**
16d98b31f80775 Robert Bragg          2016-12-07  1071   * struct i915_perf_stream - state for a single open stream FD
16d98b31f80775 Robert Bragg          2016-12-07  1072   */
eec688e1420da5 Robert Bragg          2016-11-07  1073  struct i915_perf_stream {
16d98b31f80775 Robert Bragg          2016-12-07  1074  	/**
16d98b31f80775 Robert Bragg          2016-12-07  1075  	 * @dev_priv: i915 drm device
16d98b31f80775 Robert Bragg          2016-12-07  1076  	 */
eec688e1420da5 Robert Bragg          2016-11-07  1077  	struct drm_i915_private *dev_priv;
eec688e1420da5 Robert Bragg          2016-11-07  1078  
16d98b31f80775 Robert Bragg          2016-12-07  1079  	/**
16d98b31f80775 Robert Bragg          2016-12-07  1080  	 * @link: Links the stream into ``&drm_i915_private->streams``
16d98b31f80775 Robert Bragg          2016-12-07  1081  	 */
eec688e1420da5 Robert Bragg          2016-11-07  1082  	struct list_head link;
eec688e1420da5 Robert Bragg          2016-11-07  1083  
6d2438c8233bd0 Chris Wilson          2019-01-15  1084  	/**
6d2438c8233bd0 Chris Wilson          2019-01-15  1085  	 * @wakeref: As we keep the device awake while the perf stream is
6d2438c8233bd0 Chris Wilson          2019-01-15  1086  	 * active, we track our runtime pm reference for later release.
6d2438c8233bd0 Chris Wilson          2019-01-15  1087  	 */
6619c0075f784d Chris Wilson          2019-01-14  1088  	intel_wakeref_t wakeref;
6619c0075f784d Chris Wilson          2019-01-14  1089  
16d98b31f80775 Robert Bragg          2016-12-07  1090  	/**
16d98b31f80775 Robert Bragg          2016-12-07  1091  	 * @sample_flags: Flags representing the `DRM_I915_PERF_PROP_SAMPLE_*`
16d98b31f80775 Robert Bragg          2016-12-07  1092  	 * properties given when opening a stream, representing the contents
16d98b31f80775 Robert Bragg          2016-12-07  1093  	 * of a single sample as read() by userspace.
16d98b31f80775 Robert Bragg          2016-12-07  1094  	 */
eec688e1420da5 Robert Bragg          2016-11-07  1095  	u32 sample_flags;
16d98b31f80775 Robert Bragg          2016-12-07  1096  
16d98b31f80775 Robert Bragg          2016-12-07  1097  	/**
16d98b31f80775 Robert Bragg          2016-12-07  1098  	 * @sample_size: Considering the configured contents of a sample
16d98b31f80775 Robert Bragg          2016-12-07  1099  	 * combined with the required header size, this is the total size
16d98b31f80775 Robert Bragg          2016-12-07  1100  	 * of a single sample record.
16d98b31f80775 Robert Bragg          2016-12-07  1101  	 */
d79651522e89c4 Robert Bragg          2016-11-07  1102  	int sample_size;
eec688e1420da5 Robert Bragg          2016-11-07  1103  
16d98b31f80775 Robert Bragg          2016-12-07  1104  	/**
16d98b31f80775 Robert Bragg          2016-12-07  1105  	 * @ctx: %NULL if measuring system-wide across all contexts or a
16d98b31f80775 Robert Bragg          2016-12-07  1106  	 * specific context that is being monitored.
16d98b31f80775 Robert Bragg          2016-12-07  1107  	 */
eec688e1420da5 Robert Bragg          2016-11-07  1108  	struct i915_gem_context *ctx;
16d98b31f80775 Robert Bragg          2016-12-07  1109  
16d98b31f80775 Robert Bragg          2016-12-07  1110  	/**
16d98b31f80775 Robert Bragg          2016-12-07  1111  	 * @enabled: Whether the stream is currently enabled, considering
16d98b31f80775 Robert Bragg          2016-12-07  1112  	 * whether the stream was opened in a disabled state and based
16d98b31f80775 Robert Bragg          2016-12-07  1113  	 * on `I915_PERF_IOCTL_ENABLE` and `I915_PERF_IOCTL_DISABLE` calls.
16d98b31f80775 Robert Bragg          2016-12-07  1114  	 */
eec688e1420da5 Robert Bragg          2016-11-07  1115  	bool enabled;
eec688e1420da5 Robert Bragg          2016-11-07  1116  
16d98b31f80775 Robert Bragg          2016-12-07  1117  	/**
16d98b31f80775 Robert Bragg          2016-12-07  1118  	 * @ops: The callbacks providing the implementation of this specific
16d98b31f80775 Robert Bragg          2016-12-07  1119  	 * type of configured stream.
16d98b31f80775 Robert Bragg          2016-12-07  1120  	 */
d79651522e89c4 Robert Bragg          2016-11-07  1121  	const struct i915_perf_stream_ops *ops;
701f8231a2fe17 Lionel Landwerlin     2017-08-03  1122  
701f8231a2fe17 Lionel Landwerlin     2017-08-03  1123  	/**
701f8231a2fe17 Lionel Landwerlin     2017-08-03  1124  	 * @oa_config: The OA configuration used by the stream.
701f8231a2fe17 Lionel Landwerlin     2017-08-03  1125  	 */
701f8231a2fe17 Lionel Landwerlin     2017-08-03  1126  	struct i915_oa_config *oa_config;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1127  
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1128  	/**
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06 @1129  	 * The OA context specific information.
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1130  	 */
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1131  	struct intel_context *pinned_ctx;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1132  	u32 specific_ctx_id;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1133  	u32 specific_ctx_id_mask;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1134  
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1135  	struct hrtimer poll_check_timer;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1136  	wait_queue_head_t poll_wq;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1137  	bool pollin;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1138  
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1139  	bool periodic;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1140  	int period_exponent;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1141  
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1142  	/**
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06 @1143  	 * State of the OA buffer.
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1144  	 */
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1145  	struct {
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1146  		struct i915_vma *vma;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1147  		u8 *vaddr;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1148  		u32 last_ctx_id;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1149  		int format;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1150  		int format_size;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1151  		int size_exponent;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1152  
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1153  		/**
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06 @1154  		 * Locks reads and writes to all head/tail state
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1155  		 *
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1156  		 * Consider: the head and tail pointer state needs to be read
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1157  		 * consistently from a hrtimer callback (atomic context) and
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1158  		 * read() fop (user context) with tail pointer updates happening
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1159  		 * in atomic context and head updates in user context and the
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1160  		 * (unlikely) possibility of read() errors needing to reset all
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1161  		 * head/tail state.
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1162  		 *
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1163  		 * Note: Contention/performance aren't currently a significant
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1164  		 * concern here considering the relatively low frequency of
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1165  		 * hrtimer callbacks (5ms period) and that reads typically only
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1166  		 * happen in response to a hrtimer event and likely complete
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1167  		 * before the next callback.
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1168  		 *
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1169  		 * Note: This lock is not held *while* reading and copying data
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1170  		 * to userspace so the value of head observed in htrimer
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1171  		 * callbacks won't represent any partial consumption of data.
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1172  		 */
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1173  		spinlock_t ptr_lock;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1174  
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1175  		/**
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06 @1176  		 * One 'aging' tail pointer and one 'aged' tail pointer ready to
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1177  		 * used for reading.
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1178  		 *
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1179  		 * Initial values of 0xffffffff are invalid and imply that an
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1180  		 * update is required (and should be ignored by an attempted
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1181  		 * read)
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1182  		 */
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1183  		struct {
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1184  			u32 offset;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1185  		} tails[2];
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1186  
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1187  		/**
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06 @1188  		 * Index for the aged tail ready to read() data up to.
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1189  		 */
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1190  		unsigned int aged_tail_idx;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1191  
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1192  		/**
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06 @1193  		 * A monotonic timestamp for when the current aging tail pointer
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1194  		 * was read; used to determine when it is old enough to trust.
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1195  		 */
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1196  		u64 aging_timestamp;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1197  
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1198  		/**
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06 @1199  		 * Although we can always read back the head pointer register,
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1200  		 * we prefer to avoid trusting the HW state, just to avoid any
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1201  		 * risk that some hardware condition could * somehow bump the
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1202  		 * head pointer unpredictably and cause us to forward the wrong
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1203  		 * OA buffer data to userspace.
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1204  		 */
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1205  		u32 head;
a37f08a882b01a Umesh Nerlige Ramappa 2019-08-06  1206  	} oa_buffer;
d79651522e89c4 Robert Bragg          2016-11-07 @1207  };
d79651522e89c4 Robert Bragg          2016-11-07  1208  

:::::: The code at line 1207 was first introduced by commit
:::::: d79651522e89c4ffa8992b48dfe449f0c583f809 drm/i915: Enable i915 perf stream for Haswell OA unit

:::::: TO: Robert Bragg <robert@sixbynine.org>
:::::: CC: Daniel Vetter <daniel.vetter@ffwll.ch>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 7279 bytes --]

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-13  5:53 [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific' Changbin Du
  2019-10-13 19:29 ` kbuild test robot
@ 2019-10-14  8:59 ` Jani Nikula
  2019-10-14 20:48   ` Tim.Bird
  2019-10-15 18:27 ` Jonathan Corbet
  2 siblings, 1 reply; 13+ messages in thread
From: Jani Nikula @ 2019-10-14  8:59 UTC (permalink / raw)
  To: Changbin Du, Jonathan Corbet
  Cc: linux-pci, linux-doc, linux-kernel, linux-mm, linux-crypto,
	linux-kselftest, linux-wireless, linux-fpga, linux-usb,
	dri-devel, intel-gfx, Changbin Du

On Sun, 13 Oct 2019, Changbin Du <changbin.du@gmail.com> wrote:
> The 'functions' directive is not only for functions, but also works for
> structs/unions. So the name is misleading. This patch renames it to
> 'specific', so now we have export/internal/specific directives to limit
> the functions/types to be included in documentation. Meanwhile we improved
> the warning message.

Agreed on "functions" being less than perfect. It directly exposes the
idiosyncrasies of scripts/kernel-doc. I'm not sure "specific" is any
better, though.

Perhaps "symbols" would be more self-explanatory. Or, actually make
"functions" only work on functions, and add a separate keyword for other
stuff. *shrug*

Seems like the patch is way too big. I'd probably add "symbols" (or
whatever) as a synonym for "functions" for starters, and convert
documents piecemeal, and finally drop the old one.

The scripts/kernel-doc change should be a patch of its own.

BR,
Jani.


-- 
Jani Nikula, Intel Open Source Graphics Center

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

* RE: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-14  8:59 ` Jani Nikula
@ 2019-10-14 20:48   ` Tim.Bird
  2019-10-15  3:15     ` Matthew Wilcox
  2019-10-15  9:25     ` Thomas Zimmermann
  0 siblings, 2 replies; 13+ messages in thread
From: Tim.Bird @ 2019-10-14 20:48 UTC (permalink / raw)
  To: jani.nikula, changbin.du, corbet
  Cc: linux-pci, linux-doc, linux-kernel, linux-mm, linux-crypto,
	linux-kselftest, linux-wireless, linux-fpga, linux-usb,
	dri-devel, intel-gfx, changbin.du



> -----Original Message-----
> From: Jani Nikula on October 13, 2019 11:00 PM
> On Sun, 13 Oct 2019, Changbin Du <changbin.du@gmail.com> wrote:
> > The 'functions' directive is not only for functions, but also works for
> > structs/unions. So the name is misleading. This patch renames it to
> > 'specific', so now we have export/internal/specific directives to limit
> > the functions/types to be included in documentation. Meanwhile we
> improved
> > the warning message.
> 
> Agreed on "functions" being less than perfect. It directly exposes the
> idiosyncrasies of scripts/kernel-doc. I'm not sure "specific" is any
> better, though.

I strongly agree with this.  'specific' IMHO, has no semantic value and
I'd rather just leave the only-sometimes-wrong 'functions' than convert
to something that obscures the meaning always.

> 
> Perhaps "symbols" would be more self-explanatory. Or, actually make
> "functions" only work on functions, and add a separate keyword for other
> stuff. *shrug*
My preference would be to use 'symbols'.  I tried to come up with something
but 'symbols' is better than anything I came up with.

> 
> Seems like the patch is way too big. I'd probably add "symbols" (or
> whatever) as a synonym for "functions" for starters, and convert
> documents piecemeal, and finally drop the old one.
> 
> The scripts/kernel-doc change should be a patch of its own.
Agreed on these two points as well.

Just adding my 2 cents.
 -- Tim

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-14 20:48   ` Tim.Bird
@ 2019-10-15  3:15     ` Matthew Wilcox
  2019-10-15  9:25     ` Thomas Zimmermann
  1 sibling, 0 replies; 13+ messages in thread
From: Matthew Wilcox @ 2019-10-15  3:15 UTC (permalink / raw)
  To: Tim.Bird
  Cc: jani.nikula, changbin.du, corbet, linux-pci, linux-doc,
	linux-kernel, linux-mm, linux-crypto, linux-kselftest,
	linux-wireless, linux-fpga, linux-usb, dri-devel, intel-gfx

On Mon, Oct 14, 2019 at 08:48:48PM +0000, Tim.Bird@sony.com wrote:
> 
> 
> > -----Original Message-----
> > From: Jani Nikula on October 13, 2019 11:00 PM
> > On Sun, 13 Oct 2019, Changbin Du <changbin.du@gmail.com> wrote:
> > > The 'functions' directive is not only for functions, but also works for
> > > structs/unions. So the name is misleading. This patch renames it to
> > > 'specific', so now we have export/internal/specific directives to limit
> > > the functions/types to be included in documentation. Meanwhile we
> > improved
> > > the warning message.
> > 
> > Agreed on "functions" being less than perfect. It directly exposes the
> > idiosyncrasies of scripts/kernel-doc. I'm not sure "specific" is any
> > better, though.
> 
> I strongly agree with this.  'specific' IMHO, has no semantic value and
> I'd rather just leave the only-sometimes-wrong 'functions' than convert
> to something that obscures the meaning always.
> 
> > 
> > Perhaps "symbols" would be more self-explanatory. Or, actually make
> > "functions" only work on functions, and add a separate keyword for other
> > stuff. *shrug*
> My preference would be to use 'symbols'.  I tried to come up with something
> but 'symbols' is better than anything I came up with.

structures aren't symbols though ... How about 'identifier'?

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-14 20:48   ` Tim.Bird
  2019-10-15  3:15     ` Matthew Wilcox
@ 2019-10-15  9:25     ` Thomas Zimmermann
  2019-10-15 11:54       ` Matthew Wilcox
  1 sibling, 1 reply; 13+ messages in thread
From: Thomas Zimmermann @ 2019-10-15  9:25 UTC (permalink / raw)
  To: Tim.Bird, jani.nikula, changbin.du, corbet
  Cc: linux-doc, linux-pci, linux-fpga, linux-usb, linux-wireless,
	linux-kernel, dri-devel, linux-mm, linux-crypto, linux-kselftest,
	intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 2084 bytes --]

Hi

Am 14.10.19 um 22:48 schrieb Tim.Bird@sony.com:
> 
> 
>> -----Original Message-----
>> From: Jani Nikula on October 13, 2019 11:00 PM
>> On Sun, 13 Oct 2019, Changbin Du <changbin.du@gmail.com> wrote:
>>> The 'functions' directive is not only for functions, but also works for
>>> structs/unions. So the name is misleading. This patch renames it to
>>> 'specific', so now we have export/internal/specific directives to limit
>>> the functions/types to be included in documentation. Meanwhile we
>> improved
>>> the warning message.
>>
>> Agreed on "functions" being less than perfect. It directly exposes the
>> idiosyncrasies of scripts/kernel-doc. I'm not sure "specific" is any
>> better, though.
> 
> I strongly agree with this.  'specific' IMHO, has no semantic value and
> I'd rather just leave the only-sometimes-wrong 'functions' than convert
> to something that obscures the meaning always.
> 
>>
>> Perhaps "symbols" would be more self-explanatory. Or, actually make
>> "functions" only work on functions, and add a separate keyword for other
>> stuff. *shrug*
> My preference would be to use 'symbols'.  I tried to come up with something
> but 'symbols' is better than anything I came up with.

Maybe 'interfaces' or 'artifacts'. The term 'symbols' is just as
imprecise as 'functions'.

Best regards
Thomas

>>
>> Seems like the patch is way too big. I'd probably add "symbols" (or
>> whatever) as a synonym for "functions" for starters, and convert
>> documents piecemeal, and finally drop the old one.
>>
>> The scripts/kernel-doc change should be a patch of its own.
> Agreed on these two points as well.
> 
> Just adding my 2 cents.
>  -- Tim
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-15  9:25     ` Thomas Zimmermann
@ 2019-10-15 11:54       ` Matthew Wilcox
  2019-10-15 12:08         ` Thomas Zimmermann
                           ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Matthew Wilcox @ 2019-10-15 11:54 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: Tim.Bird, jani.nikula, changbin.du, corbet, linux-doc, linux-pci,
	linux-fpga, linux-usb, linux-wireless, linux-kernel, dri-devel,
	linux-mm, linux-crypto, linux-kselftest, intel-gfx

On Tue, Oct 15, 2019 at 11:25:53AM +0200, Thomas Zimmermann wrote:
> > My preference would be to use 'symbols'.  I tried to come up with something
> > but 'symbols' is better than anything I came up with.
> 
> Maybe 'interfaces' or 'artifacts'. The term 'symbols' is just as
> imprecise as 'functions'.

I suggested 'identifier' because that's the term used in the C spec (6.2.1):

: An identifier can denote an object; a function; a tag or a member
: of a structure, union, or enumeration; a typedef name; a label name;
: a macro name; or a macro parameter.

We don't allow documenting all those things separately, but it does cover
all the things we do allow to be individually documented.

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-15 11:54       ` Matthew Wilcox
@ 2019-10-15 12:08         ` Thomas Zimmermann
  2019-10-15 13:19         ` Jani Nikula
  2019-10-16  0:03         ` Changbin Du
  2 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2019-10-15 12:08 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Tim.Bird, jani.nikula, changbin.du, corbet, linux-doc, linux-pci,
	linux-fpga, linux-usb, linux-wireless, linux-kernel, dri-devel,
	linux-mm, linux-crypto, linux-kselftest, intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 1031 bytes --]

Hi

Am 15.10.19 um 13:54 schrieb Matthew Wilcox:
> On Tue, Oct 15, 2019 at 11:25:53AM +0200, Thomas Zimmermann wrote:
>>> My preference would be to use 'symbols'.  I tried to come up with something
>>> but 'symbols' is better than anything I came up with.
>>
>> Maybe 'interfaces' or 'artifacts'. The term 'symbols' is just as
>> imprecise as 'functions'.
> 
> I suggested 'identifier' because that's the term used in the C spec (6.2.1):
> 
> : An identifier can denote an object; a function; a tag or a member
> : of a structure, union, or enumeration; a typedef name; a label name;
> : a macro name; or a macro parameter.
> 
> We don't allow documenting all those things separately, but it does cover
> all the things we do allow to be individually documented.
> 

Yeah, makes sense.

Best regards
Thomas

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-15 11:54       ` Matthew Wilcox
  2019-10-15 12:08         ` Thomas Zimmermann
@ 2019-10-15 13:19         ` Jani Nikula
  2019-10-16  0:03         ` Changbin Du
  2 siblings, 0 replies; 13+ messages in thread
From: Jani Nikula @ 2019-10-15 13:19 UTC (permalink / raw)
  To: Matthew Wilcox, Thomas Zimmermann
  Cc: Tim.Bird, changbin.du, corbet, linux-doc, linux-pci, linux-fpga,
	linux-usb, linux-wireless, linux-kernel, dri-devel, linux-mm,
	linux-crypto, linux-kselftest, intel-gfx

On Tue, 15 Oct 2019, Matthew Wilcox <willy@infradead.org> wrote:
> On Tue, Oct 15, 2019 at 11:25:53AM +0200, Thomas Zimmermann wrote:
>> > My preference would be to use 'symbols'.  I tried to come up with something
>> > but 'symbols' is better than anything I came up with.
>> 
>> Maybe 'interfaces' or 'artifacts'. The term 'symbols' is just as
>> imprecise as 'functions'.
>
> I suggested 'identifier' because that's the term used in the C spec (6.2.1):
>
> : An identifier can denote an object; a function; a tag or a member
> : of a structure, union, or enumeration; a typedef name; a label name;
> : a macro name; or a macro parameter.
>
> We don't allow documenting all those things separately, but it does cover
> all the things we do allow to be individually documented.

Agreed.

BR,
Jani.


-- 
Jani Nikula, Intel Open Source Graphics Center

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-13  5:53 [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific' Changbin Du
  2019-10-13 19:29 ` kbuild test robot
  2019-10-14  8:59 ` Jani Nikula
@ 2019-10-15 18:27 ` Jonathan Corbet
  2019-10-16  0:10   ` Changbin Du
  2 siblings, 1 reply; 13+ messages in thread
From: Jonathan Corbet @ 2019-10-15 18:27 UTC (permalink / raw)
  To: Changbin Du
  Cc: linux-pci, linux-doc, linux-kernel, linux-mm, linux-crypto,
	linux-kselftest, linux-wireless, linux-fpga, linux-usb,
	dri-devel, intel-gfx

On Sun, 13 Oct 2019 13:53:59 +0800
Changbin Du <changbin.du@gmail.com> wrote:

> The 'functions' directive is not only for functions, but also works for
> structs/unions. So the name is misleading. This patch renames it to
> 'specific', so now we have export/internal/specific directives to limit
> the functions/types to be included in documentation. Meanwhile we improved
> the warning message.

I agree with the others that "specific" doesn't really make things
better.  "Interfaces" maybe; otherwise we could go for something like
"filter" or "select".

Paint mine green :)

Whatever we end up with, I think it should be added as a synonym for
"functions".  Then the various selectors that are actually pulling out
docs for functions could be changed at leisure - or not at all.  I'd
rather not see a big patch changing everything at once.

Thanks,

jon

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-15 11:54       ` Matthew Wilcox
  2019-10-15 12:08         ` Thomas Zimmermann
  2019-10-15 13:19         ` Jani Nikula
@ 2019-10-16  0:03         ` Changbin Du
  2019-10-16  0:48           ` Matthew Wilcox
  2 siblings, 1 reply; 13+ messages in thread
From: Changbin Du @ 2019-10-16  0:03 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Thomas Zimmermann, Tim.Bird, jani.nikula, changbin.du, corbet,
	linux-doc, linux-pci, linux-fpga, linux-usb, linux-wireless,
	linux-kernel, dri-devel, linux-mm, linux-crypto, linux-kselftest,
	intel-gfx

On Tue, Oct 15, 2019 at 04:54:39AM -0700, Matthew Wilcox wrote:
> On Tue, Oct 15, 2019 at 11:25:53AM +0200, Thomas Zimmermann wrote:
> > > My preference would be to use 'symbols'.  I tried to come up with something
> > > but 'symbols' is better than anything I came up with.
> > 
> > Maybe 'interfaces' or 'artifacts'. The term 'symbols' is just as
> > imprecise as 'functions'.
> 
> I suggested 'identifier' because that's the term used in the C spec (6.2.1):
> 
> : An identifier can denote an object; a function; a tag or a member
> : of a structure, union, or enumeration; a typedef name; a label name;
> : a macro name; or a macro parameter.
>
I also prefer this one now. I was looking for something like this. My original
idea is 'prototype', but that is only for function.

> We don't allow documenting all those things separately, but it does cover
> all the things we do allow to be individually documented.

-- 
Cheers,
Changbin Du

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-15 18:27 ` Jonathan Corbet
@ 2019-10-16  0:10   ` Changbin Du
  0 siblings, 0 replies; 13+ messages in thread
From: Changbin Du @ 2019-10-16  0:10 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Changbin Du, linux-pci, linux-doc, linux-kernel, linux-mm,
	linux-crypto, linux-kselftest, linux-wireless, linux-fpga,
	linux-usb, dri-devel, intel-gfx

On Tue, Oct 15, 2019 at 12:27:26PM -0600, Jonathan Corbet wrote:
> On Sun, 13 Oct 2019 13:53:59 +0800
> Changbin Du <changbin.du@gmail.com> wrote:
> 
> > The 'functions' directive is not only for functions, but also works for
> > structs/unions. So the name is misleading. This patch renames it to
> > 'specific', so now we have export/internal/specific directives to limit
> > the functions/types to be included in documentation. Meanwhile we improved
> > the warning message.
> 
> I agree with the others that "specific" doesn't really make things
> better.  "Interfaces" maybe; otherwise we could go for something like
> "filter" or "select".
>
Jonathan, How about 'identifier' suggested by Matthew as it is mentioned in Then
C spec?

> Paint mine green :)
> 
> Whatever we end up with, I think it should be added as a synonym for
> "functions".  Then the various selectors that are actually pulling out
> docs for functions could be changed at leisure - or not at all.  I'd
> rather not see a big patch changing everything at once.
>
Sure, I'll make 'functions' deprecated and as an alias to our new directive name.

> Thanks,
> 
> jon

-- 
Cheers,
Changbin Du

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

* Re: [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific'
  2019-10-16  0:03         ` Changbin Du
@ 2019-10-16  0:48           ` Matthew Wilcox
  0 siblings, 0 replies; 13+ messages in thread
From: Matthew Wilcox @ 2019-10-16  0:48 UTC (permalink / raw)
  To: Changbin Du
  Cc: Thomas Zimmermann, Tim.Bird, jani.nikula, corbet, linux-doc,
	linux-pci, linux-fpga, linux-usb, linux-wireless, linux-kernel,
	dri-devel, linux-mm, linux-crypto, linux-kselftest, intel-gfx

On Wed, Oct 16, 2019 at 08:03:24AM +0800, Changbin Du wrote:
> On Tue, Oct 15, 2019 at 04:54:39AM -0700, Matthew Wilcox wrote:
> > On Tue, Oct 15, 2019 at 11:25:53AM +0200, Thomas Zimmermann wrote:
> > > > My preference would be to use 'symbols'.  I tried to come up with something
> > > > but 'symbols' is better than anything I came up with.
> > > 
> > > Maybe 'interfaces' or 'artifacts'. The term 'symbols' is just as
> > > imprecise as 'functions'.
> > 
> > I suggested 'identifier' because that's the term used in the C spec (6.2.1):
> > 
> > : An identifier can denote an object; a function; a tag or a member
> > : of a structure, union, or enumeration; a typedef name; a label name;
> > : a macro name; or a macro parameter.
>
> I also prefer this one now. I was looking for something like this. My original
> idea is 'prototype', but that is only for function.

We could also go with 'declaration' or 'definition'.  But I prefer
'identifier'.

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

end of thread, other threads:[~2019-10-16  0:48 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-13  5:53 [PATCH] kernel-doc: rename the kernel-doc directive 'functions' to 'specific' Changbin Du
2019-10-13 19:29 ` kbuild test robot
2019-10-14  8:59 ` Jani Nikula
2019-10-14 20:48   ` Tim.Bird
2019-10-15  3:15     ` Matthew Wilcox
2019-10-15  9:25     ` Thomas Zimmermann
2019-10-15 11:54       ` Matthew Wilcox
2019-10-15 12:08         ` Thomas Zimmermann
2019-10-15 13:19         ` Jani Nikula
2019-10-16  0:03         ` Changbin Du
2019-10-16  0:48           ` Matthew Wilcox
2019-10-15 18:27 ` Jonathan Corbet
2019-10-16  0:10   ` Changbin Du

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).