Kernel RPM availability for Atom processor

Hello, up to now we build a complete release based on RL9.x to be run on servers from HPE.

Now, we have another HW to support (proprietary, based on a SOM with an AlderLake Atom without any graphic interface, only a serial link).

In test lab, we can run a 5.15.185-based kernel (compiled internally) on this target, but when we are using binary RPM (kernel-core, for example from an official RL repository) and setup the serial link in the kernel command line, then it crashes at 8250 serial driver usage.

The easiest way would be to have access to a kernel RPM package with the CONFIG_MATOM activated instead of CONFIG_GENERIC_CPU, as we did for the 5.15.185 kernel.

Does such a package/repository exist ?

Thanks & Best regards.

It would be helpful to know what this crash is and if it’s physical or virtual. We have not had any reports on crashes due to serial drivers with the base kernel. Speaking anecdotally, where my home hardware uses serial hardware (no backing VGA), I have not experienced any issues.

No.

You may need to consider building your own kernel RPM packages (instead of compiling by hand). See our kernel and elrepo for an example of how it looks, while looking into mock to build the RPMs. If all you’re looking for is to use CONFIG_MATOM vs the generic CPU option, then perhaps rebuilding the base kernel with those changed options will help you. However, that is up to you experiment in your lab.


1 Like

Hello Louis,

Thanks for your reply.
FYI, here is the log on kernel crash. Yet not had time to analyze it…

<…>
\[    0.565156\] ACPI: thermal: Thermal Zone \[TZ00\] (65 C)
\[    0.565314\] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
\[    0.565486\] 00:02: ttyS0 at I/O 0x208 (irq = 4, base_baud = 115200) is a 16550A
\[    0.565537\] BUG: kernel NULL pointer dereference, address: 0000000000000000
\[    0.565539\] #PF: supervisor write access in kernel mode
\[    0.565540\] #PF: error_code(0x0002) - not-present page
\[    0.565541\] PGD 0 P4D 0
\[    0.565543\] Oops: 0002 \[#1\] PREEMPT SMP NOPTI
\[    0.565546\] CPU: 2 PID: 17 Comm: pr/ttyS1 Not tainted 5.14.0-570.17.1.el9_6.x86_64 #1
\[    0.565548\] Hardware name: Undefined Undefined/116344 MSC SM2S-ASL-X7405C-3NN01N0C PCBFTX, BIOS V2.11#V211-PXE 07/23/2025
\[    0.565549\] RIP: 0010:mem_serial_out+0x15/0x20
\[    0.565555\] Code: cc cc cc cc 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 0f b6 8f c1 00 00 00 d3 e6 48 63 f6 48 03 77 10 <88> 16 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90
\[    0.565557\] RSP: 0000:ffffaf38400dbdc0 EFLAGS: 00010046
\[    0.565558\] RAX: ffffffff95427160 RBX: ffffffff97bea818 RCX: 0000000000000000
\[    0.565560\] RDX: 000000000000006c RSI: 0000000000000000 RDI: ffffffff97bea818
\[    0.565561\] RBP: 000000000000006c R08: 0000000000000001 R09: 0000000000000001
\[    0.565562\] R10: 0000000000000001 R11: 00000000636f6c42 R12: ffffffff97bea818
\[    0.565563\] R13: ffff97b1c0187016 R14: 0000000000000000 R15: 0000000000000015
\[    0.565564\] FS:  0000000000000000(0000) GS:ffff97b337f00000(0000) knlGS:0000000000000000
\[    0.565565\] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
\[    0.565566\] CR2: 0000000000000000 CR3: 0000000008010000 CR4: 0000000000750ef0
\[    0.565567\] PKRU: 55555554
\[    0.565568\] Call Trace:
\[    0.565570\]  
\[    0.565572\]  ? show_trace_log_lvl+0x1c4/0x2df
\[    0.565576\]  ? show_trace_log_lvl+0x1c4/0x2df
\[    0.565578\]  ? serial8250_console_putchar+0x25/0x40
\[    0.565580\]  ? \__die_body.cold+0x8/0xd
\[    0.565582\]  ? page_fault_oops+0x134/0x170
\[    0.565586\]  ? exc_page_fault+0x62/0x150
\[    0.565590\]  ? asm_exc_page_fault+0x22/0x30
\[    0.565593\]  ? \__pfx_mem_serial_out+0x10/0x10
\[    0.565595\]  ? mem_serial_out+0x15/0x20
\[    0.565596\]  serial8250_console_putchar+0x25/0x40
\[    0.565598\]  ? \__pfx_serial8250_console_putchar+0x10/0x10
\[    0.565600\]  uart_console_write+0x40/0x60
\[    0.565604\]  serial8250_console_write_thread+0xfa/0x210
\[    0.565608\]  nbcon_emit_next_record+0x15c/0x1e0
\[    0.565612\]  nbcon_kthread_func+0x1fb/0x270
\[    0.565614\]  ? \__pfx_nbcon_kthread_func+0x10/0x10
\[    0.565616\]  kthread+0xdd/0x100
\[    0.565619\]  ? \__pfx_kthread+0x10/0x10
\[    0.565621\]  ret_from_fork+0x29/0x50
\[    0.565625\]  
\[    0.565625\] Modules linked in:
\[    0.565627\] CR2: 0000000000000000
\[    0.565628\] —\[ end trace 0000000000000000 \]—
\[    0.565630\] RIP: 0010:mem_serial_out+0x15/0x20
\[    0.565631\] Code: cc cc cc cc 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 0f b6 8f c1 00 00 00 d3 e6 48 63 f6 48 03 77 10 <88> 16 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90
\[    0.565632\] RSP: 0000:ffffaf38400dbdc0 EFLAGS: 00010046
\[    0.565634\] RAX: ffffffff95427160 RBX: ffffffff97bea818 RCX: 0000000000000000
\[    0.565634\] RDX: 000000000000006c RSI: 0000000000000000 RDI: ffffffff97bea818
\[    0.565635\] RBP: 000000000000006c R08: 0000000000000001 R09: 0000000000000001
\[    0.565636\] R10: 0000000000000001 R11: 00000000636f6c42 R12: ffffffff97bea818
\[    0.565637\] R13: ffff97b1c0187016 R14: 0000000000000000 R15: 0000000000000015
\[    0.565637\] FS:  0000000000000000(0000) GS:ffff97b337f00000(0000) knlGS:0000000000000000
\[    0.565639\] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
\[    0.565640\] CR2: 0000000000000000 CR3: 0000000008010000 CR4: 0000000000750ef0
\[    0.565641\] PKRU: 55555554
\[    0.565641\] Kernel panic - not syncing: Fatal exception
\[    0.566305\] Shutting down cpus with NMI
\[    0.566305\] Kernel Offset: 0x13c00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
\[    0.566305\] —\[ end Kernel panic - not syncing: Fatal exception \]—

OK, then if there is no easiest way, we will have to follow the other one: build our own kernel.
Thanks for pointing the tools and repo to refer at. We will have look at them.

Best regards,
Patrick Agrain

Hello.
Some news to close this topic: we finally succeeded to start a Rocky Linux 9.6 kernel on a MSC SM2S-ASL-X7405C-3NN01N0C SMART module.
Actually we had to solve (workaround) 3 root causes all ending up in a kernel crash.

  1. Defining ttyS1 as console in the grub.cfg lead us to the crash described above. Replace this with ‘earlycon=uart8250,mmio,0xfe03e000,115200n8 console=uart8250,mmio,0xfe03e000,115200n8‘ does the job.

  2. Deactivate the CONFIG_PAGE_POISONING option removes another crash quite at beginning of kernel loading.

  3. Deactivate the CONFIG_X86_KERNEL_IBT option will not add additional gcc options in the arch/x86/Makefile and avoids a third type of kernel crash.

After that, the module boots up with a Rocky Linux 9.6 kernel.

I’m not enough skilled to explain what happens with those options. Sorry for that.

Hope it helps anyway.
Best regards,
Patrick Agrain

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.