Documentation build fixes against upstream
Subsystems (10)
v3 cover Documentation build fixes against upstream
As we're close to the end of the merge window for Kernel 5.10, this series contain the patches from the past two documentation fix series I sent during the merge window and that required more work.
It is based on the top of upstream. The full series with the patches that either didn't generate any reply or have been acked is on this branch:
https://git.linuxtv.org/mchehab/experimental.git/log/?h=docs_for_v5.10
There are a couple of warnings that aren't addressed here, because they don't show at linux-next. I'm keeping a second patch series against next-20201021 fixing additional warnings caused by patches pending merges.
I'll be posting those in separate.
Regards,
Mauro
Mauro Carvalho Chehab (6):
drm: amdgpu: kernel-doc: update some adev parameters
docs: lockdep-design: fix some warning issues locking/refcount: move kernel-doc markups to the proper place IB/srpt: docs: add a description for cq_size member
kunit: test: fix remaining kernel-doc warnings
docs: fs: api-summary.rst: get rid of kernel-doc include
Documentation/filesystems/api-summary.rst | 3 - Documentation/locking/lockdep-design.rst | 51 +++--- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 28 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 6 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 7 +- drivers/infiniband/ulp/srpt/ib_srpt.h | 1 + include/kunit/test.h | 16 +- include/linux/refcount.h | 158 +++++++++---------- 8 files changed, 139 insertions(+), 131 deletions(-)
Signature · 1 line
2.26.2
PATCH v3 1/6 drm: amdgpu: kernel-doc: update some adev parameters
Running "make htmldocs: produce lots of warnings on those files:
./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'p_size' description in 'amdgpu_vram_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:211: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_fini' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'p_size' description in 'amdgpu_vram_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:211: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_fini' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'p_size' description in 'amdgpu_vram_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:211: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_fini' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'p_size' description in 'amdgpu_vram_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:211: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_fini' ./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:90: warning: Excess function parameter 'man' description in 'amdgpu_gtt_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:90: warning: Excess function parameter 'p_size' description in 'amdgpu_gtt_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:134: warning: Excess function parameter 'man' description in 'amdgpu_gtt_mgr_fini' ./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:90: warning: Excess function parameter 'man' description in 'amdgpu_gtt_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:90: warning: Excess function parameter 'p_size' description in 'amdgpu_gtt_mgr_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:134: warning: Excess function parameter 'man' description in 'amdgpu_gtt_mgr_fini' ./drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:675: warning: Excess function parameter 'dev' description in 'amdgpu_device_asic_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:675: warning: Excess function parameter 'dev' description in 'amdgpu_device_asic_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:675: warning: Excess function parameter 'dev' description in 'amdgpu_device_asic_init' ./drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:675: warning: Excess function parameter 'dev' description in 'amdgpu_device_asic_init'
They're related to the repacement of some parameters by adev, and due to a few renamed parameters.
While here, uniform the name of the parameter for it to be the same on all functions using a pointer to struct amdgpu_device.
Update the kernel-doc documentation accordingly.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 28 ++++++++++---------- drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 6 ++--- drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 7 +++-- 3 files changed, 20 insertions(+), 21 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +14 -14
@@ -705,7 +705,7 @@ void amdgpu_device_indirect_wreg64(struct amdgpu_device *adev,/** * amdgpu_invalid_rreg - dummy reg read function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @reg: offset of register * * Dummy register read function. Used for register blocks
@@ -722,7 +722,7 @@ static uint32_t amdgpu_invalid_rreg(struct amdgpu_device *adev, uint32_t reg)/** * amdgpu_invalid_wreg - dummy reg write function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @reg: offset of register * @v: value to write to the register *
@@ -739,7 +739,7 @@ static void amdgpu_invalid_wreg(struct amdgpu_device *adev, uint32_t reg, uint32/** * amdgpu_invalid_rreg64 - dummy 64 bit reg read function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @reg: offset of register * * Dummy register read function. Used for register blocks
@@ -756,7 +756,7 @@ static uint64_t amdgpu_invalid_rreg64(struct amdgpu_device *adev, uint32_t reg)/** * amdgpu_invalid_wreg64 - dummy reg write function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @reg: offset of register * @v: value to write to the register *
@@ -773,7 +773,7 @@ static void amdgpu_invalid_wreg64(struct amdgpu_device *adev, uint32_t reg, uint/** * amdgpu_block_invalid_rreg - dummy reg read function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @block: offset of instance * @reg: offset of register *
@@ -793,7 +793,7 @@ static uint32_t amdgpu_block_invalid_rreg(struct amdgpu_device *adev,/** * amdgpu_block_invalid_wreg - dummy reg write function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @block: offset of instance * @reg: offset of register * @v: value to write to the register
@@ -813,7 +813,7 @@ static void amdgpu_block_invalid_wreg(struct amdgpu_device *adev,/** * amdgpu_device_asic_init - Wrapper for atom asic_init * -* @dev: drm_device pointer +* @adev: amdgpu_device pointer * * Does any asic specific work and then calls atom asic init. */
@@ -827,7 +827,7 @@ static int amdgpu_device_asic_init(struct amdgpu_device *adev)/** * amdgpu_device_vram_scratch_init - allocate the VRAM scratch page * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * * Allocates a scratch page of VRAM for use by various things in the * driver.
@@ -844,7 +844,7 @@ static int amdgpu_device_vram_scratch_init(struct amdgpu_device *adev)/** * amdgpu_device_vram_scratch_fini - Free the VRAM scratch page * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * * Frees the VRAM scratch page. */
@@ -3011,7 +3011,7 @@ bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type)/** * amdgpu_device_has_dc_support - check if dc is supported * -* @adev: amdgpu_device_pointer +* @adev: amdgpu_device pointer * * Returns true for supported, false for not supported */
@@ -4045,7 +4045,7 @@ static int amdgpu_device_recover_vram(struct amdgpu_device *adev)/** * amdgpu_device_reset_sriov - reset ASIC for SR-IOV vf * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @from_hypervisor: request from hypervisor * * do VF FLR and reinitialize Asic
@@ -4100,7 +4100,7 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device *adev,/** * amdgpu_device_has_job_running - check if there is any job in mirror list * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * * check if there is any job in mirror list */
@@ -4128,7 +4128,7 @@ bool amdgpu_device_has_job_running(struct amdgpu_device *adev)/** * amdgpu_device_should_recover_gpu - check if we should try GPU recovery * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * * Check amdgpu_gpu_recovery and SRIOV status to see if we should try to recover * a hung GPU.
@@ -4477,7 +4477,7 @@ static int amdgpu_device_suspend_display_audio(struct amdgpu_device *adev)/** * amdgpu_device_gpu_recover - reset the asic and recover scheduler * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @job: which job trigger hang * * Attempt to reset the GPU if it has hung (all asics).
drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c +3 -3
@@ -81,8 +81,8 @@ static const struct ttm_resource_manager_func amdgpu_gtt_mgr_func;/** * amdgpu_gtt_mgr_init - init GTT manager and DRM MM * -* @man: TTM memory type manager -* @p_size: maximum size of GTT +* @adev: amdgpu_device pointer +* @gtt_size: maximum size of GTT * * Allocate and initialize the GTT manager. */
@@ -123,7 +123,7 @@ int amdgpu_gtt_mgr_init(struct amdgpu_device *adev, uint64_t gtt_size)/** * amdgpu_gtt_mgr_fini - free and destroy GTT manager * -* @man: TTM memory type manager +* @adev: amdgpu_device pointer * * Destroy and free the GTT manager, returns -EBUSY if ranges are still * allocated inside it.
drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +3 -4
@@ -168,8 +168,7 @@ static const struct ttm_resource_manager_func amdgpu_vram_mgr_func;/** * amdgpu_vram_mgr_init - init VRAM manager and DRM MM * -* @man: TTM memory type manager -* @p_size: maximum size of VRAM +* @adev: amdgpu_device pointer * * Allocate and initialize the VRAM manager. */
@@ -199,7 +198,7 @@ int amdgpu_vram_mgr_init(struct amdgpu_device *adev)/** * amdgpu_vram_mgr_fini - free and destroy VRAM manager * -* @man: TTM memory type manager +* @adev: amdgpu_device pointer * * Destroy and free the VRAM manager, returns -EBUSY if ranges are still * allocated inside it.
@@ -229,7 +228,7 @@ void amdgpu_vram_mgr_fini(struct amdgpu_device *adev)/** * amdgpu_vram_mgr_vis_size - Calculate visible node size * -* @adev: amdgpu device structure +* @adev: amdgpu_device pointer * @node: MM node structure * * Calculate how many bytes of the MM node are inside visible VRAM
Signature · 6 lines
2.26.2 _______________________________________________ amd-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Alex Deucher
AppliedRe: [PATCH v3 1/6] drm: amdgpu: kernel-doc: update some adev parameters
Applied. Thanks!
Alex
Quoted 233 lines · Mauro Carvalho Chehab
Running "make htmldocs: produce lots of warnings on those files:
./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'p_size' description in 'amdgpu_vram_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:211: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_fini'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'p_size' description in 'amdgpu_vram_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:211: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_fini'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'p_size' description in 'amdgpu_vram_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:211: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_fini'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:177: warning: Excess function parameter 'p_size' description in 'amdgpu_vram_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c:211: warning: Excess function parameter 'man' description in 'amdgpu_vram_mgr_fini'./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:90: warning: Excess function parameter 'man' description in 'amdgpu_gtt_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:90: warning: Excess function parameter 'p_size' description in 'amdgpu_gtt_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:134: warning: Excess function parameter 'man' description in 'amdgpu_gtt_mgr_fini'./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:90: warning: Excess function parameter 'man' description in 'amdgpu_gtt_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:90: warning: Excess function parameter 'p_size' description in 'amdgpu_gtt_mgr_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c:134: warning: Excess function parameter 'man' description in 'amdgpu_gtt_mgr_fini'./drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:675: warning: Excess function parameter 'dev' description in 'amdgpu_device_asic_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:675: warning: Excess function parameter 'dev' description in 'amdgpu_device_asic_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:675: warning: Excess function parameter 'dev' description in 'amdgpu_device_asic_init'./drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:675: warning: Excess function parameter 'dev' description in 'amdgpu_device_asic_init'They're related to the repacement of some parameters by adev, and due to a few renamed parameters.
While here, uniform the name of the parameter for it to be the same on all functions using a pointer to struct
amdgpu_device.Update the kernel-doc documentation accordingly.
Signed-off-by Mauro Carvalho Chehab <[email protected]>--- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 28 ++++++++++---------- drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 6 ++--- drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 7 +++-- 3 files changed, 20 insertions(+), 21 deletions(-)drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +14
-14@@ -705,7 +705,7 @@ void amdgpu_device_indirect_wreg64(struct amdgpu_device *adev,/** * amdgpu_invalid_rreg - dummy reg read function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @reg: offset of register * * Dummy register read function. Used for register blocks @@ -722,7 +722,7 @@ static uint32_t amdgpu_invalid_rreg(struct amdgpu_device *adev, uint32_t reg)/** * amdgpu_invalid_wreg - dummy reg write function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @reg: offset of register * @v: value to write to the register * @@ -739,7 +739,7 @@ static void amdgpu_invalid_wreg(struct amdgpu_device *adev, uint32_t reg, uint32/** * amdgpu_invalid_rreg64 - dummy 64 bit reg read function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @reg: offset of register * * Dummy register read function. Used for register blocks @@ -756,7 +756,7 @@ static uint64_t amdgpu_invalid_rreg64(struct amdgpu_device *adev, uint32_t reg)/** * amdgpu_invalid_wreg64 - dummy reg write function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @reg: offset of register * @v: value to write to the register * @@ -773,7 +773,7 @@ static void amdgpu_invalid_wreg64(struct amdgpu_device *adev, uint32_t reg, uint/** * amdgpu_block_invalid_rreg - dummy reg read function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @block: offset of instance * @reg: offset of register * @@ -793,7 +793,7 @@ static uint32_t amdgpu_block_invalid_rreg(struct amdgpu_device *adev,/** * amdgpu_block_invalid_wreg - dummy reg write function * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @block: offset of instance * @reg: offset of register * @v: value to write to the register @@ -813,7 +813,7 @@ static void amdgpu_block_invalid_wreg(struct amdgpu_device *adev,/** * amdgpu_device_asic_init - Wrapper for atom asic_init * -* @dev: drm_device pointer +* @adev: amdgpu_device pointer * * Does any asic specific work and then calls atom asic init. */ @@ -827,7 +827,7 @@ static int amdgpu_device_asic_init(struct amdgpu_device *adev)/** * amdgpu_device_vram_scratch_init - allocate the VRAM scratch page * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * * Allocates a scratch page of VRAM for use by various things in the * driver. @@ -844,7 +844,7 @@ static int amdgpu_device_vram_scratch_init(struct amdgpu_device *adev)/** * amdgpu_device_vram_scratch_fini - Free the VRAM scratch page * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * * Frees the VRAM scratch page. */ @@ -3011,7 +3011,7 @@ bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type)/** * amdgpu_device_has_dc_support - check if dc is supported * -* @adev: amdgpu_device_pointer +* @adev: amdgpu_device pointer * * Returns true for supported, false for not supported */ @@ -4045,7 +4045,7 @@ static int amdgpu_device_recover_vram(struct amdgpu_device *adev)/** * amdgpu_device_reset_sriov - reset ASIC for SR-IOV vf * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @from_hypervisor: request from hypervisor * * do VF FLR and reinitialize Asic @@ -4100,7 +4100,7 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device *adev,/** * amdgpu_device_has_job_running - check if there is any job in mirror list * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * * check if there is any job in mirror list */ @@ -4128,7 +4128,7 @@ bool amdgpu_device_has_job_running(struct amdgpu_device *adev)/** * amdgpu_device_should_recover_gpu - check if we should try GPU recovery * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * * Check amdgpu_gpu_recovery and SRIOV status to see if we should try to recover * a hung GPU. @@ -4477,7 +4477,7 @@ static int amdgpu_device_suspend_display_audio(struct amdgpu_device *adev)/** * amdgpu_device_gpu_recover - reset the asic and recover scheduler * -* @adev: amdgpu device pointer +* @adev: amdgpu_device pointer * @job: which job trigger hang * * Attempt to reset the GPU if it has hung (all asics). drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c +3
-3@@ -81,8 +81,8 @@ static const struct ttm_resource_manager_func amdgpu_gtt_mgr_func;/** * amdgpu_gtt_mgr_init - init GTT manager and DRM MM * -* @man: TTM memory type manager -* @p_size: maximum size of GTT +* @adev: amdgpu_device pointer +* @gtt_size: maximum size of GTT * * Allocate and initialize the GTT manager. */ @@ -123,7 +123,7 @@ int amdgpu_gtt_mgr_init(struct amdgpu_device *adev, uint64_t gtt_size)/** * amdgpu_gtt_mgr_fini - free and destroy GTT manager * -* @man: TTM memory type manager +* @adev: amdgpu_device pointer * * Destroy and free the GTT manager, returns -EBUSY if ranges are still * allocated inside it. drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +3
-5@@ -168,8 +168,7 @@ static const struct ttm_resource_manager_func amdgpu_vram_mgr_func;/** * amdgpu_vram_mgr_init - init VRAM manager and DRM MM * -* @man: TTM memory type manager -* @p_size: maximum size of VRAM +* @adev: amdgpu_device pointer * * Allocate and initialize the VRAM manager. */ @@ -199,7 +198,7 @@ int amdgpu_vram_mgr_init(struct amdgpu_device *adev)/** * amdgpu_vram_mgr_fini - free and destroy VRAM manager * -* @man: TTM memory type manager +* @adev: amdgpu_device pointer * * Destroy and free the VRAM manager, returns -EBUSY if ranges are still * allocated inside it. @@ -229,7 +228,7 @@ void amdgpu_vram_mgr_fini(struct amdgpu_device *adev)/** * amdgpu_vram_mgr_vis_size - Calculate visible node size * -* @adev: amdgpu device structure +* @adev: amdgpu_device pointer * @node: MM node structure * * Calculate how many bytes of the MM node are inside visible VRAM -- 2.26.2
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
PATCH v3 2/6 docs: lockdep-design: fix some warning issues
In reply to Mauro Carvalho ChehabThere are several warnings caused by a recent change224ec489d3cd ("lockdep/Documention: Recursive read lock detection reasoning")
Those are reported by htmldocs build:
Documentation/locking/lockdep-design.rst:429: WARNING: Definition list ends without a blank line; unexpected unindent. Documentation/locking/lockdep-design.rst:452: WARNING: Block quote ends without a blank line; unexpected unindent. Documentation/locking/lockdep-design.rst:453: WARNING: Unexpected indentation. Documentation/locking/lockdep-design.rst:453: WARNING: Blank line required after table. Documentation/locking/lockdep-design.rst:454: WARNING: Block quote ends without a blank line; unexpected unindent. Documentation/locking/lockdep-design.rst:455: WARNING: Unexpected indentation. Documentation/locking/lockdep-design.rst:455: WARNING: Blank line required after table. Documentation/locking/lockdep-design.rst:456: WARNING: Block quote ends without a blank line; unexpected unindent. Documentation/locking/lockdep-design.rst:457: WARNING: Unexpected indentation. Documentation/locking/lockdep-design.rst:457: WARNING: Blank line required after table.
Besides the reported issues, there are some missing blank lines that ended producing wrong html output, and some literals are not properly identified.
Also, the symbols used at the irq enabled/disable table are not displayed as expected, as they're not literals. Also, on another table they're using a different notation.
--- Documentation/locking/lockdep-design.rst | 51 ++++++++++++++---------- 1 file changed, 31 insertions(+), 20 deletions(-)
Documentation/locking/lockdep-design.rst +31 -20
@@ -42,6 +42,7 @@ The validator tracks lock-class usage history and divides the usage into (4 usages * n STATEs + 1) categories: where the 4 usages can be: + - 'ever held in STATE context' - 'ever held as readlock in STATE context' - 'ever held with STATE enabled'
@@ -49,10 +50,12 @@ where the 4 usages can be: where the n STATEs are coded in kernel/locking/lockdep_states.h and as of now they include: + - hardirq - softirq where the last 1 category is: + - 'ever used' [ == !unused ] When locking rules are violated, these usage bits are presented in the
@@ -96,9 +99,9 @@ exact case is for the lock as of the reporting time. +--------------+-------------+--------------+ | | irq enabled | irq disabled | +--------------+-------------+--------------+ - | ever in irq | ? | - | + | ever in irq | '?' | '-' | +--------------+-------------+--------------+ - | never in irq | + | . | + | never in irq | '+' | '.' | +--------------+-------------+--------------+ The character '-' suggests irq is disabled because if otherwise the
@@ -216,7 +219,7 @@ looks like this:: BD_MUTEX_PARTITION }; -mutex_lock_nested(&bdev->bd_contains->bd_mutex, BD_MUTEX_PARTITION); + mutex_lock_nested(&bdev->bd_contains->bd_mutex, BD_MUTEX_PARTITION); In this case the locking is done on a bdev object that is known to be a partition.
@@ -334,7 +337,7 @@ Troubleshooting: ---------------- The validator tracks a maximum of MAX_LOCKDEP_KEYS number of lock classes. -Exceeding this number will trigger the following lockdep warning: +Exceeding this number will trigger the following lockdep warning:: (DEBUG_LOCKS_WARN_ON(id >= MAX_LOCKDEP_KEYS))
@@ -420,7 +423,8 @@ the critical section of another reader of the same lock instance. The difference between recursive readers and non-recursive readers is because: recursive readers get blocked only by a write lock *holder*, while non-recursive -readers could get blocked by a write lock *waiter*. Considering the follow example: +readers could get blocked by a write lock *waiter*. Considering the follow +example:: TASK A: TASK B:
@@ -448,20 +452,22 @@ There are simply four block conditions: Block condition matrix, Y means the row blocks the column, and N means otherwise. - | E | r | R | +---+---+---+---+ - E | Y | Y | Y | + | | E | r | R | +---+---+---+---+ - r | Y | Y | N | + | E | Y | Y | Y | + +---+---+---+---+ + | r | Y | Y | N | + +---+---+---+---+ + | R | Y | Y | N | +---+---+---+---+ - R | Y | Y | N | (W: writers, r: non-recursive readers, R: recursive readers) acquired recursively. Unlike non-recursive read locks, recursive read locks only get blocked by current write lock *holders* other than write lock -*waiters*, for example: +*waiters*, for example:: TASK A: TASK B:
@@ -491,7 +497,7 @@ Recursive locks don't block each other, while non-recursive locks do (this is even true for two non-recursive read locks). A non-recursive lock can block the corresponding recursive lock, and vice versa. -A deadlock case with recursive locks involved is as follow: +A deadlock case with recursive locks involved is as follow:: TASK A: TASK B:
@@ -510,7 +516,7 @@ because there are 3 types for lockers, there are, in theory, 9 types of lock dependencies, but we can show that 4 types of lock dependencies are enough for deadlock detection. -For each lock dependency: +For each lock dependency:: L1 -> L2
@@ -525,20 +531,25 @@ same types). With the above combination for simplification, there are 4 types of dependency edges in the lockdep graph: -1) -(ER)->: exclusive writer to recursive reader dependency, "X -(ER)-> Y" means +1) -(ER)->: + exclusive writer to recursive reader dependency, "X -(ER)-> Y" means X -> Y and X is a writer and Y is a recursive reader. -2) -(EN)->: exclusive writer to non-recursive locker dependency, "X -(EN)-> Y" means +2) -(EN)->: + exclusive writer to non-recursive locker dependency, "X -(EN)-> Y" means X -> Y and X is a writer and Y is either a writer or non-recursive reader. -3) -(SR)->: shared reader to recursive reader dependency, "X -(SR)-> Y" means +3) -(SR)->: + shared reader to recursive reader dependency, "X -(SR)-> Y" means X -> Y and X is a reader (recursive or not) and Y is a recursive reader. -4) -(SN)->: shared reader to non-recursive locker dependency, "X -(SN)-> Y" means +4) -(SN)->: + shared reader to non-recursive locker dependency, "X -(SN)-> Y" means X -> Y and X is a reader (recursive or not) and Y is either a writer or non-recursive reader. -Note that given two locks, they may have multiple dependencies between them, for example: +Note that given two locks, they may have multiple dependencies between them, +for example:: TASK A:
@@ -592,11 +603,11 @@ circles that won't cause deadlocks. Proof for sufficiency (Lemma 1): -Let's say we have a strong circle: +Let's say we have a strong circle:: L1 -> L2 ... -> Ln -> L1 -, which means we have dependencies: +, which means we have dependencies:: L1 -> L2 L2 -> L3
@@ -633,7 +644,7 @@ a lock held by P2, and P2 is waiting for a lock held by P3, ... and Pn is waitin for a lock held by P1. Let's name the lock Px is waiting as Lx, so since P1 is waiting for L1 and holding Ln, so we will have Ln -> L1 in the dependency graph. Similarly, we have L1 -> L2, L2 -> L3, ..., Ln-1 -> Ln in the dependency graph, which means we -have a circle: +have a circle:: Ln -> L1 -> L2 -> ... -> Ln
Signature · 1 line
2.26.2
Re: [PATCH v3 2/6] docs: lockdep-design: fix some warning issues
Quoted 20 lines · Mauro Carvalho Chehab
There are several warnings caused by a recent change
224ec489d3cd("lockdep/Documention: Recursive read lock detection reasoning")Those are reported by htmldocs build:
Documentation/locking/lockdep-design.rst:429: WARNING: Definition list ends without a blank line; unexpected unindent.Documentation/locking/lockdep-design.rst:452: WARNING: Block quote ends without a blank line; unexpected unindent.Documentation/locking/lockdep-design.rst:453: WARNING: Unexpected indentation.Documentation/locking/lockdep-design.rst:453: WARNING: Blank line required after table.Documentation/locking/lockdep-design.rst:454: WARNING: Block quote ends without a blank line; unexpected unindent.Documentation/locking/lockdep-design.rst:455: WARNING: Unexpected indentation.Documentation/locking/lockdep-design.rst:455: WARNING: Blank line required after table.Documentation/locking/lockdep-design.rst:456: WARNING: Block quote ends without a blank line; unexpected unindent.Documentation/locking/lockdep-design.rst:457: WARNING: Unexpected indentation.Documentation/locking/lockdep-design.rst:457: WARNING: Blank line required after table.Besides the reported issues, there are some missing blank lines that ended producing wrong html output, and some literals are not properly identified.
Quoted 6 lines
Also, the symbols used at the irq enabled/disable table are not displayed as expected, as they're not literals. Also, on another table they're using a different notation.
Fixes 224ec489d3cd ("lockdep/Documention: Recursive read lock detection reasoning")Signed-off-by Mauro Carvalho Chehab <[email protected]>
Regards,
Boqun
Quoted 172 lines
--- Documentation/locking/lockdep-design.rst | 51 ++++++++++++++---------- 1 file changed, 31 insertions(+), 20 deletions(-)Documentation/locking/lockdep-design.rst +31
-20@@ -42,6 +42,7 @@ The validator tracks lock-class usage history and divides the usage into (4 usages * n STATEs + 1) categories: where the 4 usages can be: + - 'ever held in STATE context' - 'ever held as readlock in STATE context' - 'ever held with STATE enabled'@@ -49,10 +50,12 @@ where the 4 usages can be: where the n STATEs are coded in kernel/locking/lockdep_states.h and as of now they include: + - hardirq - softirq where the last 1 category is: + - 'ever used' [ == !unused ] When locking rules are violated, these usage bits are presented in the@@ -96,9 +99,9 @@ exact case is for the lock as of the reporting time. +--------------+-------------+--------------+ | | irq enabled | irq disabled | +--------------+-------------+--------------+ - | ever in irq | ? | - | + | ever in irq | '?' | '-' | +--------------+-------------+--------------+ - | never in irq | + | . | + | never in irq | '+' | '.' | +--------------+-------------+--------------+ The character '-' suggests irq is disabled because if otherwise the@@ -216,7 +219,7 @@ looks like this:: BD_MUTEX_PARTITION }; -mutex_lock_nested(&bdev->bd_contains->bd_mutex, BD_MUTEX_PARTITION); + mutex_lock_nested(&bdev->bd_contains->bd_mutex, BD_MUTEX_PARTITION); In this case the locking is done on a bdev object that is known to be a partition.@@ -334,7 +337,7 @@ Troubleshooting: ---------------- The validator tracks a maximum of MAX_LOCKDEP_KEYS number of lock classes. -Exceeding this number will trigger the following lockdep warning: +Exceeding this number will trigger the following lockdep warning:: (DEBUG_LOCKS_WARN_ON(id >= MAX_LOCKDEP_KEYS))@@ -420,7 +423,8 @@ the critical section of another reader of the same lock instance. The difference between recursive readers and non-recursive readers is because: recursive readers get blocked only by a write lock *holder*, while non-recursive -readers could get blocked by a write lock *waiter*. Considering the follow example: +readers could get blocked by a write lock *waiter*. Considering the follow +example:: TASK A: TASK B:@@ -448,20 +452,22 @@ There are simply four block conditions: Block condition matrix, Y means the row blocks the column, and N means otherwise. - | E | r | R | +---+---+---+---+ - E | Y | Y | Y | + | | E | r | R | +---+---+---+---+ - r | Y | Y | N | + | E | Y | Y | Y | + +---+---+---+---+ + | r | Y | Y | N | + +---+---+---+---+ + | R | Y | Y | N | +---+---+---+---+ - R | Y | Y | N | (W: writers, r: non-recursive readers, R: recursive readers) acquired recursively. Unlike non-recursive read locks, recursive read locks only get blocked by current write lock *holders* other than write lock -*waiters*, for example: +*waiters*, for example:: TASK A: TASK B:@@ -491,7 +497,7 @@ Recursive locks don't block each other, while non-recursive locks do (this is even true for two non-recursive read locks). A non-recursive lock can block the corresponding recursive lock, and vice versa. -A deadlock case with recursive locks involved is as follow: +A deadlock case with recursive locks involved is as follow:: TASK A: TASK B:@@ -510,7 +516,7 @@ because there are 3 types for lockers, there are, in theory, 9 types of lock dependencies, but we can show that 4 types of lock dependencies are enough for deadlock detection. -For each lock dependency: +For each lock dependency:: L1 -> L2@@ -525,20 +531,25 @@ same types). With the above combination for simplification, there are 4 types of dependency edges in the lockdep graph: -1) -(ER)->: exclusive writer to recursive reader dependency, "X -(ER)-> Y" means +1) -(ER)->: + exclusive writer to recursive reader dependency, "X -(ER)-> Y" means X -> Y and X is a writer and Y is a recursive reader. -2) -(EN)->: exclusive writer to non-recursive locker dependency, "X -(EN)-> Y" means +2) -(EN)->: + exclusive writer to non-recursive locker dependency, "X -(EN)-> Y" means X -> Y and X is a writer and Y is either a writer or non-recursive reader. -3) -(SR)->: shared reader to recursive reader dependency, "X -(SR)-> Y" means +3) -(SR)->: + shared reader to recursive reader dependency, "X -(SR)-> Y" means X -> Y and X is a reader (recursive or not) and Y is a recursive reader. -4) -(SN)->: shared reader to non-recursive locker dependency, "X -(SN)-> Y" means +4) -(SN)->: + shared reader to non-recursive locker dependency, "X -(SN)-> Y" means X -> Y and X is a reader (recursive or not) and Y is either a writer or non-recursive reader. -Note that given two locks, they may have multiple dependencies between them, for example: +Note that given two locks, they may have multiple dependencies between them, +for example:: TASK A:@@ -592,11 +603,11 @@ circles that won't cause deadlocks. Proof for sufficiency (Lemma 1): -Let's say we have a strong circle: +Let's say we have a strong circle:: L1 -> L2 ... -> Ln -> L1 -, which means we have dependencies: +, which means we have dependencies:: L1 -> L2 L2 -> L3@@ -633,7 +644,7 @@ a lock held by P2, and P2 is waiting for a lock held by P3, ... and Pn is waitin for a lock held by P1. Let's name the lock Px is waiting as Lx, so since P1 is waiting for L1 and holding Ln, so we will have Ln -> L1 in the dependency graph. Similarly, we have L1 -> L2, L2 -> L3, ..., Ln-1 -> Ln in the dependency graph, which means we -have a circle: +have a circle:: Ln -> L1 -> L2 -> ... -> LnSignature · 1 line
2.26.2
PATCH v3 3/6 locking/refcount: move kernel-doc markups to the proper place
In reply to Mauro Carvalho ChehabChangeset a435b9a14356 ("locking/refcount: Provide __refcount API to obtain the old value") added a set of functions starting with __ that have a new
parameter, adding a series of new warnings:
$ ./scripts/kernel-doc -none include/linux/refcount.h include/linux/refcount.h:169: warning: Function parameter or member 'oldp' not described in '__refcount_add_not_zero' include/linux/refcount.h:208: warning: Function parameter or member 'oldp' not described in '__refcount_add' include/linux/refcount.h:239: warning: Function parameter or member 'oldp' not described in '__refcount_inc_not_zero' include/linux/refcount.h:261: warning: Function parameter or member 'oldp' not described in '__refcount_inc' include/linux/refcount.h:291: warning: Function parameter or member 'oldp' not described in '__refcount_sub_and_test' include/linux/refcount.h:327: warning: Function parameter or member 'oldp' not described in '__refcount_dec_and_test' include/linux/refcount.h:347: warning: Function parameter or member 'oldp' not described in '__refcount_dec'
The issue is that the kernel-doc markups are now misplaced, as they should be added just before the functions.
So, move the kernel-doc markups to the proper places, in order to drop the warnings.
It should be noticed that git show produces a crappy output, for this patch without "--patience" flag.
--- include/linux/refcount.h | 158 +++++++++++++++++++-------------------- 1 file changed, 79 insertions(+), 79 deletions(-)
include/linux/refcount.h +79 -79
@@ -147,24 +147,6 @@ static inline unsigned int refcount_read(const refcount_t *r)return atomic_read (&r->refs); } -/** -* refcount_add_not_zero - add a value to a refcount unless it is 0 -* @i: the value to add to the refcount -* @r: the refcount -* -* Will saturate at REFCOUNT_SATURATED and WARN. -* -* Provides no memory ordering, it is assumed the caller has guaranteed the -* object memory to be stable (RCU, etc.). It does provide a control dependency -* and thereby orders future stores. See the comment on top. -* -* Use of this function is not recommended for the normal reference counting -* use case in which references are taken and released one at a time. In these -* cases, refcount_inc(), or one of its variants, should instead be used to -* increment a reference count. -* -* Return: false if the passed refcount is 0, true otherwise -*/ static inline __must_check bool __refcount_add_not_zero (int i,refcount_t *r,int *oldp) {int old =refcount_read (r);
@@ -183,27 +165,29 @@ static inline __must_check bool __refcount_add_not_zero(int i, refcount_t *r, inreturn old; } +/** +* refcount_add_not_zero - add a value to a refcount unless it is 0 +* @i: the value to add to the refcount +* @r: the refcount +* +* Will saturate at REFCOUNT_SATURATED and WARN. +* +* Provides no memory ordering, it is assumed the caller has guaranteed the +* object memory to be stable (RCU, etc.). It does provide a control dependency +* and thereby orders future stores. See the comment on top. +* +* Use of this function is not recommended for the normal reference counting +* use case in which references are taken and released one at a time. In these +* cases, refcount_inc(), or one of its variants, should instead be used to +* increment a reference count. +* +* Return: false if the passed refcount is 0, true otherwise +*/ static inline __must_check bool refcount_add_not_zero (int i,refcount_t *r) {return __refcount_add_not_zero (i, r,NULL ); } -/** -* refcount_add - add a value to a refcount -* @i: the value to add to the refcount -* @r: the refcount -* -* Similar to atomic_add(), but will saturate at REFCOUNT_SATURATED and WARN. -* -* Provides no memory ordering, it is assumed the caller has guaranteed the -* object memory to be stable (RCU, etc.). It does provide a control dependency -* and thereby orders future stores. See the comment on top. -* -* Use of this function is not recommended for the normal reference counting -* use case in which references are taken and released one at a time. In these -* cases, refcount_inc(), or one of its variants, should instead be used to -* increment a reference count. -*/ static inline void __refcount_add (int i,refcount_t *r,int *oldp) {int old =atomic_fetch_add_relaxed (i, &r->refs);
@@ -217,11 +201,32 @@ static inline void __refcount_add(int i, refcount_t *r, int *oldp)refcount_warn_saturate (r,REFCOUNT_ADD_OVF ); } +/** +* refcount_add - add a value to a refcount +* @i: the value to add to the refcount +* @r: the refcount +* +* Similar to atomic_add(), but will saturate at REFCOUNT_SATURATED and WARN. +* +* Provides no memory ordering, it is assumed the caller has guaranteed the +* object memory to be stable (RCU, etc.). It does provide a control dependency +* and thereby orders future stores. See the comment on top. +* +* Use of this function is not recommended for the normal reference counting +* use case in which references are taken and released one at a time. In these +* cases, refcount_inc(), or one of its variants, should instead be used to +* increment a reference count. +*/ static inline void refcount_add (int i,refcount_t *r) {__refcount_add (i, r,NULL ); } +static inline __must_check bool __refcount_inc_not_zero (refcount_t *r,int *oldp) +{ +return __refcount_add_not_zero (1 , r, oldp); +} +/** * refcount_inc_not_zero - increment a refcount unless it is 0 * @r: the refcount to increment
@@ -235,16 +240,16 @@ static inline void refcount_add(int i, refcount_t *r)* * Return: true if the increment was successful, false otherwise */ -static inline __must_check bool __refcount_inc_not_zero (refcount_t *r,int *oldp) -{ -return __refcount_add_not_zero (1 , r, oldp); -} -static inline __must_check bool refcount_inc_not_zero (refcount_t *r) {return __refcount_inc_not_zero (r,NULL ); } +static inline void __refcount_inc (refcount_t *r,int *oldp) +{ +__refcount_add (1 , r, oldp); +} +/** * refcount_inc - increment a refcount * @r: the refcount to increment
@@ -257,36 +262,11 @@ static inline __must_check bool refcount_inc_not_zero(refcount_t *r)* Will WARN if the refcount is 0, as this represents a possible use-after-free * condition. */ -static inline void __refcount_inc (refcount_t *r,int *oldp) -{ -__refcount_add (1 , r, oldp); -} -static inline void refcount_inc (refcount_t *r) {__refcount_inc (r,NULL ); } -/** -* refcount_sub_and_test - subtract from a refcount and test if it is 0 -* @i: amount to subtract from the refcount -* @r: the refcount -* -* Similar to atomic_dec_and_test(), but it will WARN, return false and -* ultimately leak on underflow and will fail to decrement when saturated -* at REFCOUNT_SATURATED. -* -* Provides release memory ordering, such that prior loads and stores are done -* before, and provides an acquire ordering on success such that free() -* must come after. -* -* Use of this function is not recommended for the normal reference counting -* use case in which references are taken and released one at a time. In these -* cases, refcount_dec(), or one of its variants, should instead be used to -* decrement a reference count. -* -* Return: true if the resulting refcount is 0, false otherwise -*/ static inline __must_check bool __refcount_sub_and_test (int i,refcount_t *r,int *oldp) {int old =atomic_fetch_sub_release (i, &r->refs);
@@ -305,11 +285,36 @@ static inline __must_check bool __refcount_sub_and_test(int i, refcount_t *r, inreturn false; } +/** +* refcount_sub_and_test - subtract from a refcount and test if it is 0 +* @i: amount to subtract from the refcount +* @r: the refcount +* +* Similar to atomic_dec_and_test(), but it will WARN, return false and +* ultimately leak on underflow and will fail to decrement when saturated +* at REFCOUNT_SATURATED. +* +* Provides release memory ordering, such that prior loads and stores are done +* before, and provides an acquire ordering on success such that free() +* must come after. +* +* Use of this function is not recommended for the normal reference counting +* use case in which references are taken and released one at a time. In these +* cases, refcount_dec(), or one of its variants, should instead be used to +* decrement a reference count. +* +* Return: true if the resulting refcount is 0, false otherwise +*/ static inline __must_check bool refcount_sub_and_test (int i,refcount_t *r) {return __refcount_sub_and_test (i, r,NULL ); } +static inline __must_check bool __refcount_dec_and_test (refcount_t *r,int *oldp) +{ +return __refcount_sub_and_test (1 , r, oldp); +} +/** * refcount_dec_and_test - decrement a refcount and test if it is 0 * @r: the refcount
@@ -323,26 +328,11 @@ static inline __must_check bool refcount_sub_and_test(int i, refcount_t *r)* * Return: true if the resulting refcount is 0, false otherwise */ -static inline __must_check bool __refcount_dec_and_test (refcount_t *r,int *oldp) -{ -return __refcount_sub_and_test (1 , r, oldp); -} -static inline __must_check bool refcount_dec_and_test (refcount_t *r) {return __refcount_dec_and_test (r,NULL ); } -/** -* refcount_dec - decrement a refcount -* @r: the refcount -* -* Similar to atomic_dec(), it will WARN on underflow and fail to decrement -* when saturated at REFCOUNT_SATURATED. -* -* Provides release memory ordering, such that prior loads and stores are done -* before. -*/ static inline void __refcount_dec (refcount_t *r,int *oldp) {int old =atomic_fetch_sub_release (1 , &r->refs);
@@ -354,6 +344,16 @@ static inline void __refcount_dec(refcount_t *r, int *oldp)refcount_warn_saturate (r,REFCOUNT_DEC_LEAK ); } +/** +* refcount_dec - decrement a refcount +* @r: the refcount +* +* Similar to atomic_dec(), it will WARN on underflow and fail to decrement +* when saturated at REFCOUNT_SATURATED. +* +* Provides release memory ordering, such that prior loads and stores are done +* before. +*/ static inline void refcount_dec (refcount_t *r) {__refcount_dec (r,NULL );
Signature · 1 line
2.26.2
PATCH v3 4/6 IB/srpt: docs: add a description for cq_size member
In reply to Mauro Carvalho ChehabChangeset c804af2c1d31 ("IB/srpt: use new shared CQ mechanism") added a new member for struct srpt_rdma_ch, but didn't add the corresponding kernel-doc markup, as repoted when doing "make htmldocs":
./drivers/infiniband/ulp/srpt/ib_srpt.h:331: warning: Function parameter or member 'cq_size' not described in 'srpt_rdma_ch'
Add a description for it.
--- drivers/infiniband/ulp/srpt/ib_srpt.h | 1 + 1 file changed, 1 insertion(+)
drivers/infiniband/ulp/srpt/ib_srpt.h +1 -0
@@ -256,6 +256,7 @@ enum rdma_ch_state {* @rdma_cm: See below. * @rdma_cm.cm_id: RDMA CM ID associated with the channel. * @cq: IB completion queue for this channel. +* @cq_size: Number of CQEs in @cq. * @zw_cqe: Zero-length write CQE. * @rcu: RCU head. * @kref: kref for this channel.
Signature · 1 line
2.26.2
Re: [PATCH v3 4/6] IB/srpt: docs: add a description for cq_size member
Quoted 20 lines · Mauro Carvalho Chehab
Changeset
c804af2c1d31("IB/srpt: use new shared CQ mechanism") added a new member for structsrpt_rdma_ch, but didn't add the corresponding kernel-doc markup, as repoted when doing "make htmldocs":
./drivers/infiniband/ulp/srpt/ib_srpt.h:331: warning: Function parameter or member 'cq_size' not described in 'srpt_rdma_ch'Add a description for it.
Fixes c804af2c1d31 ("IB/srpt: use new shared CQ mechanism")Signed-off-by Mauro Carvalho Chehab <[email protected]>--- drivers/infiniband/ulp/srpt/ib_srpt.h | 1 + 1 file changed, 1 insertion(+)drivers/infiniband/ulp/srpt/ib_srpt.h +0
-0
drivers/infiniband/ulp/srpt/ib_srpt.h enum rdma_ch_state { · line 262
Quoted 7 lines
drivers/infiniband/ulp/srpt/ib_srpt.h +1
-0@@ -256,6 +256,7 @@ enum rdma_ch_state {* @rdma_cm: See below. * @rdma_cm.cm_id: RDMA CM ID associated with the channel. * @cq: IB completion queue for this channel. +* @cq_size: Number of CQEs in @cq. * @zw_cqe: Zero-length write CQE. * @rcu: RCU head. * @kref: kref for this channel.
PATCH v3 5/6 kunit: test: fix remaining kernel-doc warnings
In reply to Mauro Carvalho Chehabtest.h still produce three warnings:
include/kunit/test.h:282: warning: Function parameter or member '__suites' not described in 'kunit_test_suites_for_module' include/kunit/test.h:282: warning: Excess function parameter 'suites_list' description in 'kunit_test_suites_for_module' include/kunit/test.h:314: warning: Excess function parameter 'suites' description in 'kunit_test_suites'
They're all due to errors at kernel-doc markups. Update them.
It should be noticed that this patch moved a kernel-doc markup that were located at the wrong place, and using a wrong name. Kernel-doc only supports kaving the markup just before the function/macro declaration. Placing it elsewhere will make it do wrong assumptions.
--- include/kunit/test.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
include/kunit/test.h +8 -8
@@ -252,13 +252,14 @@ static inline int kunit_run_all_tests(void) }#endif /* IS_BUILTIN(CONFIG_KUNIT) */ +#ifdef MODULE /** -* kunit_test_suites() - used to register one or more &struct kunit_suite -* with KUnit. +* kunit_test_suites_for_module() - used to register one or more +* &struct kunit_suite with KUnit. * -* @suites_list...: a statically allocated list of &struct kunit_suite. +* @__suites: a statically allocated list of &struct kunit_suite. * -* Registers @suites_list with the test framework. See &struct kunit_suite for +* Registers @__suites with the test framework. See &struct kunit_suite for * more information. * * If a test suite is built-in, module_init() gets translated into
@@ -267,7 +268,6 @@ static inline int kunit_run_all_tests(void)* module_{init|exit} functions for the builtin case when registering * suites via kunit_test_suites() below. */ -#ifdef MODULE #define kunit_test_suites_for_module (__suites) \ static int __init kunit_test_suites_init(void) \ { \
@@ -294,7 +294,7 @@ static inline int kunit_run_all_tests(void)* kunit_test_suites() - used to register one or more &struct kunit_suite * with KUnit. * -* @suites: a statically allocated list of &struct kunit_suite. +* @__suites: a statically allocated list of &struct kunit_suite. * * Registers @suites with the test framework. See &struct kunit_suite for * more information.
@@ -308,10 +308,10 @@ static inline int kunit_run_all_tests(void)* module. * */ -#define kunit_test_suites (...) \ +#define kunit_test_suites(__suites...) \ __kunit_test_suites(__UNIQUE_ID(array), \ __UNIQUE_ID(suites), \ - __VA_ARGS__) + ##__suites)#define kunit_test_suite (suite) kunit_test_suites(&suite)
Signature · 1 line
2.26.2
Re: [PATCH v3 5/6] kunit: test: fix remaining kernel-doc warnings
Quoted 9 lines · Mauro Carvalho Chehab
test.hstill produce three warnings:
include/kunit/test.h:282: warning: Function parameter or member '__suites' not described in 'kunit_test_suites_for_module'include/kunit/test.h:282: warning: Excess function parameter 'suites_list' description in 'kunit_test_suites_for_module'include/kunit/test.h:314: warning: Excess function parameter 'suites' description in 'kunit_test_suites'They're all due to errors at kernel-doc markups. Update them.
Quoted 8 lines
It should be noticed that this patch moved a kernel-doc markup that were located at the wrong place, and using a wrong name. Kernel-doc only supports kaving the markup just before the function/macro declaration. Placing it elsewhere will make it do wrong assumptions.
Fixes aac35468ca20 ("kunit: test: create a single centralized executor for all tests")Signed-off-by Mauro Carvalho Chehab <[email protected]>
Shuah Khan
maintainerRe: [PATCH v3 5/6] kunit: test: fix remaining kernel-doc warnings
In reply to Mauro Carvalho Chehabinclude/kunit/test.h
Quoted 24 lines · Mauro Carvalho Chehab
test.hstill produce three warnings:
include/kunit/test.h:282: warning: Function parameter or member '__suites' not described in 'kunit_test_suites_for_module'include/kunit/test.h:282: warning: Excess function parameter 'suites_list' description in 'kunit_test_suites_for_module'include/kunit/test.h:314: warning: Excess function parameter 'suites' description in 'kunit_test_suites'They're all due to errors at kernel-doc markups. Update them.
It should be noticed that this patch moved a kernel-doc markup that were located at the wrong place, and using a wrong name. Kernel-doc only supports kaving the markup just before the function/macro declaration. Placing it elsewhere will make it do wrong assumptions.
Fixes aac35468ca20 ("kunit: test: create a single centralized executor for all tests")Signed-off-by Mauro Carvalho Chehab <[email protected]>--- include/kunit/test.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)include/kunit/test.h +0
-0
Applied to linux-kselftest kunit-fixes branch
after auto-fixing the checkpatch warn
WARNING: please, no space before tabs
#108: FILE: include/kunit/test.h:258:
+ * ^I^I^I &struct kunit_suite with KUnit.$
total: 0 errors, 1 warnings, 45 lines checked
thanks,
-- Shuah
PATCH v3 6/6 docs: fs: api-summary.rst: get rid of kernel-doc include
In reply to Mauro Carvalho ChehabThe direct-io.c file used to have just two exported symbols:
- dio_end_io()
- __blockdev_direct_IO()
The first one was removed by changeset c33fe275b530 ("fs: remove no longer used dio_end_io()")
And the last one is used on most places indirectly, via the inline macro blockdev_direct_IO() provided by fs.h. Yet, neither the macro or the function have kernel-doc markups.
So, drop the inclusion of fs/direct-io.c at the docs.
--- Documentation/filesystems/api-summary.rst | 3 --- 1 file changed, 3 deletions(-)
Documentation/filesystems/api-summary.rst +0 -3
@@ -86,9 +86,6 @@ Other Functions .. kernel-doc:: fs/dax.c :export: -.. kernel-doc:: fs/direct-io.c - :export: - .. kernel-doc:: fs/libfs.c :export:
Signature · 1 line
2.26.2