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, 2020 at 1:51

2 Answers 2

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/[email protected]/

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, 2021 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, 2021 at 20:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .