# Kyro CPU instruction set updates for kernel

Source: https://forum.modalai.com/topic/3107/kyro-cpu-instruction-set-updates-for-kernel
Category: VOXL 2 and VOXL 2 Mini (https://forum.modalai.com/category/26/voxl-2-and-voxl-2-mini)
Tags: voxl-2
Posted: 2024-02-09 20:30:20 UTC by mrawding
Replies: 4 · Views: 1640

## mrawding · 2024-02-09 20:30:20 UTC

Hi,

I'm curious if there is any ongoing work to update the native instruction sets into the kernel modalAI is building for the VOXL2. 

Here is the current instruction set listed by the kernel.  I'm having issue building newer projects that use the newer SIMD instruction sets provided by ARM. Here are most of the issues:

We are stuck with Ubuntu 18.04 - saw we are limited for the gcc version up to 8 (along side default gcc7.5) - there is a ppa that you can grab from to get up to the latest. I am able to run gcc-10 on the VOXL2, but the arm compiler march options aren't supported by the binutils 2.30 provided by Ubuntu 18.04. I maually built binutils to allow for assembly of those instruction sets.

The important ones are ```flagm, i8mm, and blfoat16``` - they've all been back-ported by ARM in the linux kernel to support up to armV8.3 supported chips, which should be the Kyro (8 Cortex78 cores)

At the very least we should have the instruction sets available in the kernel, so that we can pass the ```march=native``` and get all of the cpu operations needed. This will go along way when trying to build latest and greatest AI frameworks like accelerated tensorflow lite, ONNX runtime, and pytorch.

These are the native extensions available to gcc are:

```
cat /proc/cpuinfo 
Processor	: AArch64 Processor rev 0 (aarch64)
processor	: 0
BogoMIPS	: 38.40
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer	: 0x51
CPU architecture: 8
CPU variant	: 0xd
CPU part	: 0x805
CPU revision	: 14

```

If we could port some of the updates from the [official linux arm64 kernel](https://github.com/torvalds/linux/tree/master/arch/arm64/kernel) to the [modalAI kernel](https://gitlab.com/voxl-public/system-image-build/qrb5165-kernel/-/tree/master/arch/arm64/kernel?ref_type=heads)

Is this even possible to start cherry-picking these updates? I also see that qualcomm is developing or releasing a newer versionof the kernel?

I see that the default is qrb5165-ubun1.0-14 but under the package manager and createpoint I saw development for qrb5165-ubun2.0 - was curious if there was a known difference.

If I get pointed in the right direction I'd be glad to help out. I want to make sure we can run all the latsest and greatest neural nets and these SIMD instructions are the key.

## Reply by admin (ModalAI staff) · 2024-02-12 16:49:01 UTC

@mrawding ,

TLDR; we should likely try to collaborate on getting a bitbake recipe going that modifies what we need, and try to get this going in our next "Ubun2.0" update as I'm trying to gain momentum there.

-----

I'm up to get on the phone with you if it makes sense!  Maybe first it's worth us exploring how to best enable development for people on the kernel moving forward, and how to clean things up (e.g. branch names!)

Jumping around the questions a little right now, with likely what we need to do is have some working meetings together to figure out stuff....  Maybe a VOXL2 Kernel Steering Committee or something....

For the current active development for SDK 1.X releases, where system image is a 1.X version, and kernel is 4.19 based - I will continue to use qrb5165-ubun1.0-14.1a branches, eg.
- Chipcode Ubun1.0 / "UBUN1.0" / 4.19 kernel / Ubuntu 18.04
- kernel - https://gitlab.com/voxl-public/system-image-build/qrb5165-kernel/-/tree/qrb5165-ubun1.0-14.1a
----> note: I want to yank all custom 'commits' from the kernel source tree and put into recipes (slowly learning the ways of bitbake....)
- meta-voxl2-bsp - https://gitlab.com/voxl-public/system-image-build/meta-voxl2-bsp/-/tree/qrb5165-ubun1.0-14.1a
- meta-voxl2- https://gitlab.com/voxl-public/system-image-build/meta-voxl2/-/tree/qrb5165-ubun1.0-14.1a
- Note: I don't plan on using anything besides r14.1 in the ubun1.0 release path (e.g. the 

For next major SDK update (e.g. 2.X), we are targeting "Chipcode Ubun2.0":
- Chipcode Ubun2.0 / "UBUN2.0" / 5.4.233 kernel / Ubuntu 20.04
- In bring up (currently booting)
- kernel - I need to make this build public
- meta-voxl2 and meta-voxl2-bsp - these are WIP for Ubun2.0 but should follow similar pattern - basically I keep getting pulled into Ubun1.0 work and haven't made it over to Ubun2.0 for production but getting closer: 

E.g.

```
sh-5.0$ uname -a
Linux qrb5165-rb5 5.4.233 #1 SMP PREEMPT Tue Dec 5 17:56:30 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
```

```
sh-5.0$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.3 LTS
Release:	20.04
Codename:	focal
```

Here's info about the kernel we plan on moving to at this point:
kernel: https://git.codelinaro.org/clo/la/kernel/msm-5.4/-/tree/kernel.lnx.5.4.r47-rel
techpack/camera: https://git.codelinaro.org/clo/la/platform/vendor/opensource/camera-kernel/-/tree/camera-kernel-iot.lnx.2.0.r2-rel

-- -- --

If you want.... I can share rootfs and kernel to play with... zero warranties at this point ;)

## Reply by modaltb (ModalAI staff) · 2024-02-12 16:50:19 UTC

@mrawding was logged into wrong account for above, feel free to hit up email as well!

## Reply by mrawding · 2026-07-15 22:58:36 UTC

Digging up an old thread, any updates on the move to Ubuntu2.0 Kernel?

## Reply by Alex Kushleyev (ModalAI staff) · 2026-07-17 20:47:03 UTC

@mrawding , I am sorry, but it looks like we are not going to be officially supporting Ubuntu2.0 Kernel on VOXL2, as we are working on enabling next gen hardware.. We did start the effort but it is not going to be finished for the general availability for VOXL2.

Alex
