Kernel 6.8.9 Announcement Compatibility

๐Ÿš€ ๐—˜๐˜…๐—ฐ๐—ถ๐˜๐—ถ๐—ป๐—ด ๐—ก๐—ฒ๐˜„๐˜€ ๐—ณ๐—ผ๐—ฟ ๐—๐—ฒ๐˜๐˜€๐—ผ๐—ป ๐—˜๐—ป๐˜๐—ต๐˜‚๐˜€๐—ถ๐—ฎ๐˜€๐˜๐˜€! ๐Ÿš€

Iโ€™m thrilled to announce that I have successfully compiled ๐—ธ๐—ฒ๐—ฟ๐—ป๐—ฒ๐—น ๐Ÿฒ.๐Ÿด.๐Ÿต to ensure compatibility with ๐—๐—ฒ๐˜๐—ฃ๐—ฎ๐—ฐ๐—ธ ๐Ÿฒ ๐—š๐—” and its new drivers. This custom enhancement paves the way for a manual ๐˜‚๐—ฝ๐—ฑ๐—ฎ๐˜๐—ฒ ๐˜๐—ผ ๐—จ๐—ฏ๐˜‚๐—ป๐˜๐˜‚ ๐Ÿฎ๐Ÿฐ.๐Ÿฌ๐Ÿฐ, leveraging cutting-edge technology for improved performance and capabilities.

A huge thank you to the entire NVIDIA Robotics team for their support and collaboration in making this possible!

For more information, please visit ๐—๐—ฒ๐˜๐˜€๐—ผ๐—ป ๐—”๐—œ ๐—Ÿ๐—ฎ๐—ฏ: Jetson AI Lab Research Group - NVIDIA Jetson AI Lab
Great for AI developers and IT professionals aiming to stay at the forefront of technological advancements!

Awesome! Could you share a guide or document? Thank you!

1 Like

I will do a video

@suhash For you, Is it working wifi?
Iโ€™ve applied:

CONFIG_ARM64_PMEM=y
CONFIG_PCIE_TEGRA194=y
CONFIG_PCIE_TEGRA194_HOST=y
CONFIG_BLK_DEV_NVME=y
CONFIG_NVME_CORE=y
CONFIG_FB_SIMPLE=y

I donโ€™t know if I need another for wifi.

The WiFi driver is disabled for any kernel version != 5.15 inside file
nvidia-oot/drivers/net/wireless/realtek/Makefile

1 Like

By the way, Iโ€™m having issues booting R36.3 using 6.8.9 as a base, cbb error is triggered continuously around the time userspace should be reached.

I can boot by disabling the CBB driver, but then I get no display.

[   14.337644] CPU:0, Error: sce-fabric@0xde00000, irq=33
[   14.337824] **************************************
[   14.337979] CPU:0, Error:sce-fabric, Errmon:2
[   14.338124] CBB registers returning all 1's which is invalid
[   14.338314] CPU:0, Error: cbb-fabric@0x13a00000, irq=34
[   14.338475] **************************************
[   14.338628] CPU:0, Error:cbb-fabric, Errmon:2
[   14.338756]    Error Code            : FIREWALL_ERR
[   14.338886]    Overflow              : Multiple FIREWALL_ERR
[   14.339035] 
[   14.339082]    Error Code            : FIREWALL_ERR
[   14.339207]    MASTER_ID             : CCPLEX
[   14.339299]    Address               : 0xde12208
[   14.339400]    Cache                 : 0x1 -- Bufferable 
[   14.339516]    Protection            : 0x2 -- Unprivileged, Non-Secure, Data Access
[   14.339705]    Access_Type           : Read
[   14.339797]    Access_ID             : 0x13
[   14.339800]    Fabric                : cbb-fabric
[   14.340558]    Slave_Id              : 0x0
[   14.341023]    Burst_length          : 0x0
[   14.341529]    Burst_type            : 0x1
[   14.342030]    Beat_size             : 0x2
[   14.342499]    VQC                   : 0x0
[   14.342926]    GRPSEC                : 0x7e
[   14.343387]    FALCONSEC             : 0x0
[   14.345566]    Slave                 : AON
[   14.348366]  **************************************
[   14.353205] WARNING: CPU: 0 PID: 0 at drivers/soc/tegra/cbb/tegra234-cbb.c:604 tegra234_cbb_isr+0x138/0x170
[   14.363346] ---[ end trace 0000000000000000 ]---
[   14.367532] CPU:0, Error: sce-fabric@0xde00000, irq=33
[   14.372603] **************************************
[   14.377589] CPU:0, Error:sce-fabric, Errmon:2
[   14.382057] CBB registers returning all 1's which is invalid
[   14.387716] CPU:0, Error: sce-fabric@0xde00000, irq=33
[   14.392641] **************************************
[   14.392642] CPU:0, Error:sce-fabric, Errmon:2
[   14.392647] CBB registers returning all 1's which is invalid
[   14.392651] CPU:0, Error: cbb-fabric@0x13a00000, irq=34
[   14.392652] **************************************
[   14.392653] CPU:0, Error:cbb-fabric, Errmon:2
[   14.392658]    Error Code            : FIREWALL_ERR
[   14.426152]    Overflow              : Multiple FIREWALL_ERR
[   14.430708] 
[   14.432276]    Error Code            : FIREWALL_ERR
[   14.436389]    MASTER_ID             : CCPLEX
[   14.439714]    Address               : 0xde12208
[   14.443215]    Cache                 : 0x1 -- Bufferable 
[   14.447326]    Protection            : 0x2 -- Unprivileged, Non-Secure, Data Access
[   14.454066]    Access_Type           : Read
[   14.457478]    Access_ID             : 0x13
[   14.457479]    Fabric                : cbb-fabric
[   14.464301]    Slave_Id              : 0x0
[   14.467364]    Burst_length          : 0x0
[   14.470777]    Burst_type            : 0x1
[   14.474103]    Beat_size             : 0x2
[   14.477251]    VQC                   : 0x0
[   14.480141]    GRPSEC                : 0x7e
[   14.483115]    FALCONSEC             : 0x0
[   14.486265]    Slave                 : AON
[   14.489065]  **************************************

I added some debugging and it seems like it happens after loading the nvidia_modeset module.
nvidia_modeset is also the last module being loaded, so it might be caused by something elseโ€ฆ

If you follow the steps of their manual it is correct.
Remember synchronize the folders.
./source_sync.sh -k -t jetson_36.3

You mean ./source_sync.sh -t jetson_36.3. Thatโ€™s what I did.

Do you copy the newly compiled kernel, modules and dtb manually onto the Tegra or how do you handle all that? I copy them manually, but I havenโ€™t tried updating the initrd yet. Whatโ€™s your process?

I want to do a video.
But I have to find the time, as I donโ€™t have much time with my job.
Basically you have to follow the tutorial.
I was trying to do a script.
But this is only my notes:

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

cd ~/
mkdir Projects && cd Projects
wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/release/jetson_linux_r36.3.0_aarch64.tbz2
wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/release/tegra_linux_sample-root-filesystem_r36.3.0_aarch64.tbz2
tar -xvjf jetson_linux_r36.3.0_aarch64.tbz2
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.9.tar.xz
wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/release/tegra_linux_sample-root-filesystem_r36.3.0_aarch64.tbz2
tar -xvjf tegra_linux_sample-root-filesystem_r36.3.0_aarch64.tbz2

 # -C ./Linux_for_Tegra/
xz -d linux-6.8.9.tar.xz
tar -xf linux-6.8.9.tar
mv linux-6.8.9 kernel-jammy-src
cd Linux_for_Tegra/source/
./source_sync.sh -k -t jetson_36.3
cd kernel && rm -rf kernel-jammy-src
cd ~/Projects
mv kernel-jammy-src Linux_for_Tegra/source/kernel/

cd Linux_for_Tegra/source/

# modify defconfig
cd /home/johnny/Projects/Linux_for_Tegra/source/kernel/kernel-jammy-src/configs/aarch
# Edit defconfig
CONFIG_ARM64_PMEM=y
CONFIG_PCIE_TEGRA194=y
CONFIG_PCIE_TEGRA194_HOST=y
CONFIG_BLK_DEV_NVME=y
CONFIG_NVME_CORE=y
CONFIG_FB_SIMPLE=y
or
make defconfig
scripts/config --file .config --enable ARM64_PMEM
scripts/config --file .config --enable PCIE_TEGRA194
scripts/config --file .config --enable PCIE_TEGRA194_HOST
scripts/config --file .config --enable BLK_DEV_NVME
scripts/config --file .config --enable NVME_CORE
scripts/config --file .config --enable FB_SIMPLE

# Build kernel
make -j $(nproc) -C kernel
export INSTALL_MOD_PATH=/home/johnny/Projects/Linux_for_Tegra/rootfs
sudo -E make install -C kernel
cp kernel/kernel-jammy-src/arch/arm64/boot/Image \
  /home/johnny/Projects/Linux_for_Tegra/kernel/Image
  
# make modules
export KERNEL_HEADERS=$PWD/kernel/kernel-jammy-src
export INSTALL_MOD_PATH=/home/johnny/Projects/Linux_for_Tegra/rootfs
make modules
sudo -E make modules_install

# OUT TREE MODULES
cd /home/johnny/Projects/Linux_for_Tegra/source
KERNEL_HEADERS=$PWD/kernel/kernel-jammy-src
make modules
sudo -E make modules_install

# edit boot
sudo gedit /boot/extlinux/exlinux.conf

# make dtbs
export KERNEL_HEADERS=$PWD/kernel/kernel-jammy-src
make dtbs
sudo cp nvidia-oot/device-tree/platform/generic-dts/dtbs/* /boot/dtb

Basically, you have to do the process for compiling etc with the โ€œINSTALL_MOD_PATHโ€. Then for install in Jetson, you have to open another terminal and put headers etc without โ€œINSTALL_MOD_PATHโ€.
export KERNEL_HEADERS=$PWD/kernel/kernel-jammy-src
sudo -E make install -C kernel

for edit config of kernel, I did it manually. Be careful because some variables are with N. So put Y. Not duplicate variables

Thanks.

I managed to get to userspace without errors now after also updating initrd.

Xorg (and xrandr) detects my display but I get no output on the screen.

Plugging & unplugging doesnโ€™t help.

SimpleFB does show the boot-up process though.

analog@ubuntu:~$ xrandr -q
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-0.8 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 296mm
   1920x1080     60.00*+  59.94    50.00  
   1600x1200     60.00  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93

By the wayโ€ฆ
IVC driver fails to load because of a change in the IOSYS API.
Hereโ€™s a patch to solve it.
I donโ€™t know what the driver does but I fixed it while trying to fix display.

Before:

[   11.644504] queue regions overlap: 0x0 + 400 > 0x0
[   11.644650] tegra-ivc-bus bc00000.rtcpu:ivc-bus:echo@0: IVC initialization error: -22
[   11.644862] tegra-ivc-bus bc00000.rtcpu:ivc-bus: bus start failed: -22
[   11.654051] tegra186-cam-rtcpu: probe of bc00000.rtcpu failed with error -22

After: (matches 5.15 output)

[   16.213345] tegra-ivc-bus bc00000.rtcpu:ivc-bus: region 0: iova=0xbfec0000-0xbfee027f size=131712
[   16.216561] tegra-ivc-bus bc00000.rtcpu:ivc-bus:echo@0: echo: ver=0 grp=1 RX[16x64]=0x1000-0x1480 TX[16x64]=0x1480-0x1900
[   16.216654] tegra-ivc-bus bc00000.rtcpu:ivc-bus:dbg@1: dbg: ver=0 grp=1 RX[1x512]=0x1900-0x1b80 TX[1x512]=0x1b80-0x1e00
[   16.216696] tegra-ivc-bus bc00000.rtcpu:ivc-bus:dbg@2: dbg: ver=0 grp=1 RX[1x8192]=0x1e00-0x3e80 TX[1x8192]=0x3e80-0x5f00
[   16.216740] tegra-ivc-bus bc00000.rtcpu:ivc-bus:ivccontrol@3: ivccontrol: ver=0 grp=1 RX[64x320]=0x5f00-0xaf80 TX[64x320]=0xaf80-0x10000
[   16.216868] tegra-ivc-bus bc00000.rtcpu:ivc-bus:ivccapture@4: ivccapture: ver=0 grp=1 RX[512x64]=0x10000-0x18080 TX[512x64]=0x18080-0x20100
[   16.217766] tegra-ivc-bus bc00000.rtcpu:ivc-bus:diag@5: diag: ver=0 grp=1 RX[1x64]=0x20100-0x201c0 TX[1x64]=0x201c0-0x20280
[   16.219183] tegra186-cam-rtcpu bc00000.rtcpu: using cam RTCPU IRQ (181)
[   16.219193] tegra186-cam-rtcpu bc00000.rtcpu: tegra_camrtc_mon_create is successful
[   16.221759] tegra186-cam-rtcpu bc00000.rtcpu: firmware version cpu=rce cmd=6 sha1=e2238c99959d2df9350d393f04e1f44e5bef98cb
[   16.222053] tegra-ivc-bus bc00000.rtcpu:ivc-bus:echo@0: ivc channel driver missing
[   16.222665] tegra-ivc-bus bc00000.rtcpu:ivc-bus:dbg@1: ivc channel driver missing
[   16.223219] tegra-ivc-bus bc00000.rtcpu:ivc-bus:dbg@2: ivc channel driver missing
[   16.223750] tegra-ivc-bus bc00000.rtcpu:ivc-bus:diag@5: ivc channel driver missing

0001-tegra-rtcpu-fix-tegra_ivc_init-call.zip (954 Bytes)

did you applied patches correctly? It was my problem on old version from JetPack.

Also did you copy Image file and modify extlinux.conf?
Did you install sudo make install modules?

Yes.

analog@ubuntu:~$ cat /etc/nv_tegra_release
# R36 (release), REVISION: 3.0, GCID: 36191598, BOARD: generic, EABI: aarch64, DATE: Mon May  6 17:34:21 UTC 2024
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia
analog@ubuntu:~$ uname -a
Linux ubuntu 6.8.9-tegra #1 SMP PREEMPT Fri May 24 19:59:32 EEST 2024 aarch64 aarch64 aarch64 GNU/Linux

It wouldnโ€™t boot to userspace without proper modules, obviously.

Old JetPack version wouldnโ€™t even build with 6.8.

Another addition.

You donโ€™t need these options:
CONFIG_PCIE_TEGRA194=y
CONFIG_PCIE_TEGRA194_HOST=y
CONFIG_BLK_DEV_NVME=y
CONFIG_NVME_CORE=y

The drivers themselves are already built as modules, theyโ€™re just not included in initrd, but by running nv-update-initrd they will get included.

Hereโ€™s another patch to build rtl8822ce driver (for WiFi) with 6.8.

0001-net-wireless-rtl8822ce-fix-build-on-6.zip (1.4 KB)

I base this on this: How to build last kernel linux(6.6.6) for JP6?