This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
realtime:documentation:known_limitations [2016/12/01 15:16] bigeasy |
realtime:documentation:known_limitations [2023/10/02 20:16] (current) costa.shul - elixir |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Known Limitations ====== | ====== Known Limitations ====== | ||
- | Some environments are currently not working well with Preempt-RT. Here is an overview of known limitations and workarounds. | + | |
+ | Some environments are currently not working well with Preempt-RT. Here is an overview of known limitations and workarounds. [[realtime:communication:send_rt_patches|Patches]] fixing the known limitations are welcome! | ||
+ | |||
+ | ===== Disabled CONFIG_ options ===== | ||
+ | |||
+ | Several features are disabled by CONFIG_PREEMPT_RT=y because of incompatibility. | ||
+ | |||
+ | <WRAP center round todo 80%> | ||
+ | A more detailed information, why a specific config option is deactivated, is required! | ||
+ | </WRAP> | ||
+ | |||
+ | |||
+ | Disabled config options: | ||
+ | |||
+ | * CONFIG_TRANSPARENT_HUGEPAGE | ||
+ | * CONFIG_DRM_I915 | ||
+ | * CONFIG_NUMA_BALANCING | ||
+ | * CONFIG_LEDS_TRIGGER_CPU | ||
+ | * CONFIG_KVM_MPIC (powerpc) | ||
+ | * CONFIG_OPROFILE (until v5.12-rc2-rt1) | ||
+ | * CONFIG_XEN (until v4.18-rc8-rt1) | ||
+ | * CONFIG_X86_POWERNOW_K8 (until v5.2.21-rt13) | ||
+ | * CONFIG_BCACHE (until v5.6.17-rt10) | ||
+ | * CONFIG_HIGHMEM (mips, powerpc, until v5.10-rc1-rt2) | ||
+ | * CONFIG_RT_GROUP_SCHED (until v5.15-rc2-rt3) | ||
+ | * CONFIG_CPUMASK_OFFSTACK (until 5.4.5-rt3) | ||
===== Platforms ===== | ===== Platforms ===== | ||
Line 18: | Line 43: | ||
===== Runtime ===== | ===== Runtime ===== | ||
==== Code live patching on ARM ==== | ==== Code live patching on ARM ==== | ||
- | ARM is using stop_machine() while patching assembly opcodes at run time which can cause high latencies. | + | ARM is using ''stop_machine()'' while patching assembly opcodes at run time which can cause high latencies. |
- | This means "jump labels" support is deactivated because the may be used for instance by changing scheduler options. | + | This means "jump labels" support is deactivated because it may be used for instance by changing scheduler options. |
kprobe and kgdb is also patching code at run time but are not disabled. They should only be used in a development environment for debug so it should be safe. | kprobe and kgdb is also patching code at run time but are not disabled. They should only be used in a development environment for debug so it should be safe. | ||
+ | |||
+ | ==== pthread_cond_{wait|signal} ==== | ||
+ | The //pthread_cond_t// variable in glibc implementation contains a mutex. This mutex can not be initialized as PI. | ||
+ | More information can be found in [[https://sourceware.org/bugzilla/show_bug.cgi?id=11588|glibc's bug report]]. | ||
+ | |||
+ | ==== EFI ==== | ||
+ | [[https://elixir.bootlin.com/linux/latest/A/ident/CONFIG_EFI_DISABLE_RUNTIME|EFI runtime services are disabled]] because using them may case high latencies. This includes accessing the RTC device or updating the variables. | ||
+ | If you need to use the EFI runtime services add **efi=runtime** to the kernel command line. | ||
+ | |||
+ | ==== Memory compaction ==== | ||
+ | With CONFIG_COMPACTION=y the kernel may change the physical address for an existing virtual address. This may lead to a minor page fault and may happen even to pages which are protected with //mlock()//. | ||
+ | In order to avoid memory compaction on //mlock()// pages exclude them via | ||
+ | |||
+ | echo 0 > /proc/sys/vm/compact_unevictable_allowed |