Re: [PATCH v1 02/10] kconfig-checker: Introduce PREEMPT_RT configuration rules

From: sashiko-bot

Date: Sat Nov 07 2026 - 04:21:32 EST


Thank you for your contribution! Sashiko AI review found 3 potential
issues to consider:
- [Medium] kconfig-checker: incomplete CONFIG_DEBUG_INFO and
CONFIG_DEBUG_FS exemptions
- [Medium] kconfig-checker: missing CONFIG_NO_HZ_IDLE rule in
preempt_rt.yml
- [Low] kconfig-checker: wrong rationale and exemption for
CONFIG_DEBUG_MISC
--

commit e938c2a281eebdc8d9e5b3bc80f568d54980b699
Author: Ahmed S. Darwish <darwi@xxxxxxxxxxxxx>

kconfig-checker: Introduce PREEMPT_RT configuration rules

This commit adds a PREEMPT_RT configuration rules file for kconfig-checker
based on the real-time kernel configuration documentation.

> diff --git a/tools/kconfig-checker/rules/preempt_rt.yml b/tools/kconfig-checker/rules/preempt_rt.yml
> new file mode 100644
> index 0000000000000..5c1b80adc846f
> --- /dev/null
> +++ b/tools/kconfig-checker/rules/preempt_rt.yml
[ ... ]
> + - name: CONFIG_NO_HZ
> + expected: n
> + severity: medium
> + docs_hint: config-no-hz-config-no-hz-full
> +
> + - name: CONFIG_NO_HZ_FULL
> + expected: n
> + severity: medium
> + docs_hint: config-no-hz-config-no-hz-full

[Severity: Medium]
Should this also check CONFIG_NO_HZ_IDLE?

In kernel/time/Kconfig, CONFIG_NO_HZ is only a legacy compatibility symbol
used as a default hint, while the active "Timer tick handling" choice symbol
for tickless idle is CONFIG_NO_HZ_IDLE (which selects CONFIG_NO_HZ_COMMON
without setting CONFIG_NO_HZ). A .config that selects CONFIG_NO_HZ_IDLE=y
with CONFIG_NO_HZ unset will pass kconfig-checker without reporting that
tickless idle is enabled.

[ ... ]
> + #
> + # Debugging
> + #
> +
> + - name_pattern: CONFIG_DEBUG_.*
> + expected: n
> + severity: medium
> + docs_hint: kernel-debug-options
[ ... ]
> + - name: CONFIG_DEBUG_FS
> + expected: allowed
> + severity: low
> +
> + - name: CONFIG_DEBUG_FS_ALLOW_ALL
> + expected: allowed
> + severity: low
> +
> + - name: CONFIG_DEBUG_INFO
> + expected: allowed
> + severity: low
> +
> + - name: CONFIG_DEBUG_INFO_NONE
> + expected: allowed
> + severity: low

[Severity: Medium]
Will any .config with CONFIG_DEBUG_INFO=y or CONFIG_DEBUG_FS_ALLOW_NONE=y
still fail against the CONFIG_DEBUG_.* pattern rule?

In lib/Kconfig.debug, CONFIG_DEBUG_INFO is a promptless bool selected by the
mandatory DWARF version choice (such as
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT) and forces a mandatory compression
choice (such as CONFIG_DEBUG_INFO_COMPRESSED_NONE). Because only the exact
symbols CONFIG_DEBUG_INFO and CONFIG_DEBUG_INFO_NONE are exempted here
(whereas Documentation/core-api/real-time/kernel-configuration.rst allows the
wildcard CONFIG_DEBUG_INFO*), enabling CONFIG_DEBUG_INFO=y always leaves
companion CONFIG_DEBUG_INFO_* symbols that trigger medium-severity violations
under CONFIG_DEBUG_.*.

Similarly, enabling CONFIG_DEBUG_FS=y requires choosing either
CONFIG_DEBUG_FS_ALLOW_ALL or CONFIG_DEBUG_FS_ALLOW_NONE, so omitting
CONFIG_DEBUG_FS_ALLOW_NONE flags the more restrictive debugfs access mode as
a violation.

> + - name: CONFIG_DEBUG_KERNEL
> + expected: allowed
> + severity: low
> +
> + - name: CONFIG_DEBUG_MISC
> + expected: allowed
> + severity: low
> + rationale:
> + A menu option which enables the display of other debug symbols.

[Severity: Low]
Is this rationale meant for CONFIG_DEBUG_KERNEL rather than
CONFIG_DEBUG_MISC?

In lib/Kconfig.debug, CONFIG_DEBUG_KERNEL is the menu option that gates
other debug options (and is listed as allowed in
Documentation/core-api/real-time/kernel-configuration.rst), whereas
CONFIG_DEBUG_MISC enables miscellaneous runtime debug checks in the kernel
and is not listed as allowed in the documentation.

--
Sashiko AI review · https://sashiko.dev/#/patchset/20261106091922.7560-1-darwi@xxxxxxxxxxxxx?part=2