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/02 14:02] bigeasy [Code live patching on ARM] |
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 21: | Line 46: | ||
| This means "jump labels" support is deactivated because it 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 | ||