[LINUX] Software emulation of deprecated SWP instruction (CONFIG_SWP_EMULATE)

https://www.kernel.org/doc/html/latest/arm/swp_emulation.html

Software emulation of deprecated SWP instruction (CONFIG_SWP_EMULATE)

ARMv6 architecture deprecates use of the SWP/SWPB instructions, and recommeds moving to the load-locked/store-conditional instructions LDREX and STREX.

In ARMv6 architecture, the use of SWP / SWPB instructions is abolished, and it is recommended to use LDREX / STREX as load-locked / store-conditional instructions.

ARMv7 multiprocessing extensions introduce the ability to disable these instructions, triggering an undefined instruction exception when executed. Trapped instructions are emulated using an LDREX/STREX or LDREXB/STREXB sequence. If a memory access fault (an abort) occurs, a segmentation fault is signalled to the triggering process.

The ARMv7 multiprocessing extension introduces the ability to disable these instructions and triggers undefined instruction exceptions at run time. Trapped instructions are emulated using the LDREX / STREX or LDREXV / STREXB sequences. If a memory access fault (an abort) occurs, a segfault will be propagated to the triggering process.

/proc/cpu/swp_emulation holds some statistics/information, including the PID of the last process to trigger the emulation to be invocated. For example:

/ proc / cpu / swp_emulation holds some statistics / information, including the PID of the last process that triggers the emulation to be called. For example:

Emulated SWP:         12
Emulated SWPB:                0
Aborted SWP{B}:               1
Last process:         314

NOTE:

when accessing uncached shared regions, LDREX/STREX rely on an external transaction monitoring block called a global monitor to maintain update atomicity.

When accessing an uncached shared area, LDREX / STREX relies on an external transaction monitoring block called the Global Monitor to maintain the atomicity of the update.

If your system does not implement a global monitor, this option can cause programs that perform SWP operations to uncached memory to deadlock, as the STREX operation will always fail.

If your system does not implement Global Monitor, STREX operations will always fail, and this option can deadlock programs that perform SWP operations on uncached memory.


Originally, it is a part of the Linux Kernel source code, so it will be treated as GPLv2 (recognition that it should be).

https://www.kernel.org/doc/html/latest/index.html

Licensing documentation

The following describes the license of the Linux kernel source code (GPLv2), how to properly mark the license of individual files in the source tree, as well as links to the full license text.

https://www.kernel.org/doc/html/latest/process/license-rules.html#kernel-licensing

Recommended Posts

Software emulation of deprecated SWP instruction (CONFIG_SWP_EMULATE)
Summary of logrotate software logrotate