User Tools

Site Tools


realtime:documentation:known_limitations

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
realtime:documentation:known_limitations [2016/11/28 15:40]
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. 
  
-===== Raspberry PI 3 =====+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 ===== 
 + 
 +==== Raspberry PI 2 and 3 ====
 The Raspberry PI 3 is currently not part of the mainline kernel and requires an out of tree patch for its Support. This support also includes an USB driver which may lock up the RT System. The Raspberry PI 3 is currently not part of the mainline kernel and requires an out of tree patch for its Support. This support also includes an USB driver which may lock up the RT System.
 Possible workarounds:​ Possible workarounds:​
Line 13: Line 40:
  
   * There is an article on [[https://​www.osadl.org/​Single-View.111+M5c03315dc57.0.html|OSADL]] about this problem ​ including a [[https://​www.osadl.org/​monitoring/​patches/​rbs3s/​usb-dwc_otg-fix-system-lockup-when-interrupts-are-threaded.patch|patch]] how to use the FIQ support and not lock up the system.   * There is an article on [[https://​www.osadl.org/​Single-View.111+M5c03315dc57.0.html|OSADL]] about this problem ​ including a [[https://​www.osadl.org/​monitoring/​patches/​rbs3s/​usb-dwc_otg-fix-system-lockup-when-interrupts-are-threaded.patch|patch]] how to use the FIQ support and not lock up the system.
 +
 +===== Runtime =====
 +==== Code live patching on ARM ====
 +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 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.
 +
 +==== 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
realtime/documentation/known_limitations.1480347632.txt.gz · Last modified: 2016/11/28 15:40 by bigeasy