1

I am trying to get my own custom Real-time Linux on a Raspberry Pi 4B. My status is this:

  1. I built the Linux 5.9.1 version, and have my own version of U-Boot, RFS with which I am able to successfully load and start the kernel, mount RFS, as well as reach the Kernel console also.

  2. I need to apply the Real-time patch on top of the Linux Kernel that I am building and so I used the corresponding patch for Linux 5.9.1. Since I am building a 64-bit kernel, I use the following command to get into the Kernel config and update the preemptible option:

    make ARCH=arm64 CROSS_COMPILE=aarch64-rpi3-linux-gnu- menuconfig

But I do not see the fully preemptible kernel option here: .config - Linux/arm64 5.9.1 Kernel Configuration

General setup ─────────────────────────────────────────────────────────────────

     ┌────────────────────── Preemption Model ───────────────────────┐
     │  Use the arrow keys to navigate this window or press the      │  
     │  hotkey of the item you wish to select followed by the <SPACE │  
     │  BAR>. Press <?> for additional information about this        │  
     │ ┌───────────────────────────────────────────────────────────┐ │  
     │ │       ( ) No Forced Preemption (Server)                   │ │  
     │ │       ( ) Voluntary Kernel Preemption (Desktop)           │ │  
     │ │       (X) Preemptible Kernel (Low-Latency Desktop)        │ │  
     │ │                                                           │ │  
     │ │                                                           │ │  
     │ │                                                           │ │  
     │ └───────────────────────────────────────────────────────────┘ │  
     ├───────────────────────────────────────────────────────────────┤  
     │                    <Select>      < Help >                     │  

When I run:

make menuconfig

I do see that option though for the x86 option: .config - Linux/x86 5.9.1 Kernel Configuration

General setup ─────────────────────────────────────────────────────────────────

     ┌────────────────────── Preemption Model ───────────────────────┐
     │  Use the arrow keys to navigate this window or press the      │  
     │  hotkey of the item you wish to select followed by the <SPACE │  
     │  BAR>. Press <?> for additional information about this        │  
     │ ┌───────────────────────────────────────────────────────────┐ │  
     │ │       ( ) No Forced Preemption (Server)                   │ │  
     │ │       ( ) Voluntary Kernel Preemption (Desktop)           │ │  
     │ │       (X) Preemptible Kernel (Low-Latency Desktop)        │ │  
     │ │       ( ) Fully Preemptible Kernel (Real-Time)            │ │  
     │ │                                                           │ │  
     │ │                                                           │ │  

Linux Kernel: 5.9.1 Linux RT patch used: patch-5.9.1-rt19.patch.xz

I have enabled the expert mode also, as instructed in another post in unix.stackexchange .config - Linux/x86 5.9.1 Kernel Configuration

General setup ───────────────────────────────────────────────────────────────── ┌────────────────────────────── General setup ───────────────────────────────┐ │ Arrow keys navigate the menu. selects submenus ---> (or empty │
│ submenus ----). Highlighted letters are hotkeys. Pressing includes, │
│ excludes, modularizes features. Press to exit, <?> │
│ for Help, </> for Search. Legend: [] built-in [ ] excluded module │
│ ┌────^(-)────────────────────────────────────────────────────────────────┐ │
│ │ [
] Support initial ramdisk/ramfs compressed using LZMA │ │
│ │ [] Support initial ramdisk/ramfs compressed using XZ │ │
│ │ [
] Support initial ramdisk/ramfs compressed using LZO │ │
│ │ [] Support initial ramdisk/ramfs compressed using LZ4 │ │
│ │ [
] Support initial ramdisk/ramfs compressed using ZSTD │ │
│ │ [ ] Boot config support │ │
│ │ Compiler optimization level (Optimize for performance (-O2)) --│ │
│ │ -- Configure standard kernel features (expert users) ---> │ │
│ │ -
- Enable membarrier() system call │ │
│ │ -- Load all symbols for debugging/ksymoops │ │
│ │ -
- Include all symbols in kallsyms │ │
│ │ [] Enable bpf() system call │ │
│ │ [ ] Enable userfaultfd() system call │ │
│ │ [
] Enable rseq() system call │ │
│ │ [ ] Enabled debugging of rseq() system call │ │
│ │ [*] Embedded system │ │
│ │ [ ] PC/104 support │ │
│ │ Kernel Performance Events And Counters ---> │ │

I see that this problem does not happen in the previous RT-patch that was released for Linux 5.6.19. Is there something missing for the 64-bit case from my side?

1
  • This item needs to be selected before the full preempt will show, i ran into the same problem. -- Configure standard kernel features (expert users) ---> │ Nov 11 '20 at 1:51
2

I raised it in Kernel.org, and then got a response that apparently it was intended to behave that way.

https://lore.kernel.org/linux-rt-users/20200824154605.v66t2rsxobt3r5jg@linutronix.de/

This basically meant that when we use 5.9.1 version with arm64 architecture, we need to disable KVM and then the Fully preemptible option comes up immediately. I was able to test it successfully.

1
  • 1
    exactly go to Virtualization and uncheck "Kernel-based virtual machine (KVM). then go back to General Setup/ Preemption Model and the missing option will appear.
    – M.Hefny
    Sep 13 at 20:53
-1

Run,

make mrproper

Now run,

make menuconfig

The Realtime option must be visible now.

1
  • did not work ... are you using arm64 ?
    – M.Hefny
    Sep 13 at 20:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.