Skip to content

Conversation

fsammoura1980
Copy link
Contributor

@fsammoura1980 fsammoura1980 commented Oct 6, 2025

The arrays used for M-mode Physical Memory Protection (PMP), specifically for the stack guard feature (CONFIG_PMP_STACK_GUARD), were previously sized using the hardcoded PMP_M_MODE_SLOTS macro, defined as 8. This affected arrays in both the _thread_arch struct (m_mode_pmpaddr_regs, m_mode_pmpcfg_regs) and local variables within the z_riscv_pmp_stackguard_disable function.

This commit changes the array sizing to use the Kconfig option CONFIG_PMP_SLOTS. This option reflects the total number of PMP slots available and configured for the target hardware.

Using CONFIG_PMP_SLOTS ensures these arrays are dimensioned according to the system's actual capabilities, providing better flexibility and correctness over a fixed size.

The PMP_M_MODE_SLOTS macro definition has been removed from thread.h as it is no longer used.

dcpleung
dcpleung previously approved these changes Oct 6, 2025
Copy link

sonarqubecloud bot commented Oct 8, 2025

The arrays used for M-mode Physical Memory Protection (PMP),
specifically for the stack guard feature (CONFIG_PMP_STACK_GUARD),
were previously sized using the hardcoded PMP_M_MODE_SLOTS macro,
defined as 8. This affected arrays in both the _thread_arch
struct (m_mode_pmpaddr_regs, m_mode_pmpcfg_regs) and local
variables within the z_riscv_pmp_stackguard_disable function.

This commit changes the array sizing to use the Kconfig option
CONFIG_PMP_SLOTS. This option reflects the total number of PMP
slots available and configured for the target hardware.

Using CONFIG_PMP_SLOTS ensures these arrays are dimensioned
according to the system's actual capabilities, providing better
flexibility and correctness over a fixed size.

The PMP_M_MODE_SLOTS macro definition has been removed from
thread.h as it is no longer used.

Signed-off-by: Firas Sammoura <fsammoura@google.com>
@cfriedt cfriedt merged commit 93464d0 into zephyrproject-rtos:main Oct 9, 2025
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: Architectures area: RISCV RISCV Architecture (32-bit & 64-bit)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants