CONFIG_KERNEL_COHERENCE

Place all shared data into coherent memory

Type: bool

Help

When available and selected, the kernel will build in a mode where all shared data is placed in multiprocessor-coherent (generally “uncached”) memory. Thread stacks will remain cached, as will application memory declared with __incoherent. This is intended for Zephyr SMP kernels running on cache-incoherent architectures only. Note that when this is selected, there is an implicit API change that assumes cache coherence to any memory passed to the kernel. Code that creates kernel data structures in uncached regions may fail strangely. Some assertions exist to catch these mistakes, but not all circumstances can be tested.

Direct dependencies

ARCH_HAS_COHERENCE

(Includes any dependencies from ifs and menus.)

Default

Symbols selected by this symbol

Kconfig definition

At <Zephyr>/kernel/Kconfig:814

Included via <Zephyr>/Kconfig:8<Zephyr>/Kconfig.zephyr:30

Menu path: (Top) → General Kernel Options → SMP Options

config KERNEL_COHERENCE
    bool "Place all shared data into coherent memory"
    default y if SMP && MP_NUM_CPUS > 1
    select THREAD_STACK_INFO
    depends on ARCH_HAS_COHERENCE
    help
      When available and selected, the kernel will build in a mode
      where all shared data is placed in multiprocessor-coherent
      (generally "uncached") memory.  Thread stacks will remain
      cached, as will application memory declared with
      __incoherent.  This is intended for Zephyr SMP kernels
      running on cache-incoherent architectures only.  Note that
      when this is selected, there is an implicit API change that
      assumes cache coherence to any memory passed to the kernel.
      Code that creates kernel data structures in uncached regions
      may fail strangely.  Some assertions exist to catch these
      mistakes, but not all circumstances can be tested.

(The ‘depends on’ condition includes propagated dependencies from ifs and menus.)