Is there a promise to not break non-Intel hardware?

Developer | Clear Linux* Project - “A Linux OS built for Linux developers”

I am a developer and would love to use Clear Linux on my main machine but I am on AMD Ryzen and I am curious if Clear Linux makes any guarantees to not break non-Intel hardware(I understand the “optimized for Intel CPUs” part but things like LTO are helpful for everybody)?

I worry for sudden breakages.

It is safe to use on non-Intel, x86 hardware or you would not recommend it?

2 Likes

We publish “minimum hardware requirements”. If your system meets these requirements, then it would be a bug if it doesn’t work. We recently removed the requirement for AES, so, a lot of hardware now can run Clear Linux OS.

If we add new requirements, then we will announce this well ahead of time, for the obvious reason that we would break many existing systems/installs. Note: we have no intentions of ever doing this.

So essentially, that’s about as close as a promise as we can get.

4 Likes

I’ve hit some issues with some AMD options being explicitly deactivated: linux/config at 26bf1495e7aac067651c33e199b6ae70c6627bd6 · clearlinux-pkgs/linux · GitHub

Is there a way for me to change the kernel config and still receive official kernel updates(Gentoo style, somehow through mixins or something like this?) or would I need to maintain/compile my own version of the kernel?

2 Likes

This just needs fixing… We should put some time to enable that and provide (if we can) the microcode images just like we do for the Intel ones.

Are there any other options you’ve found?

@miguelinux

I see CONFIG_AMD_MEM_ENCRYPT and CONFIG_AMD_NUMA activated in Ubuntu’s config files.
NUMA does not affect me directly, but I don’t know about people with Threadripper for example - the documentation says that it should work with CONFIG_X86_64_ACPI_NUMA, which is activated.

2 Likes

Btw, it did brake in the end, for all Zen CPUs, through a kernel update(the kernel version was reported) and after 2 weeks(I had a backup work system, so I could wait a bit), I had no choice but to switch to a more stable distro.
It affects cloud users also.

What broke? Nobody filed a github issue on this, as far as I can see.

I am not the OP but I’ve had no issues with Clear on my Ryzen APU system I built for Christmas. It doesn’t use the “haswell” path as expected however when I benchmarked that, adding it back in didn’t impact performance in any remarkable way. Link on AVX2 benchmark

I did file the firmware enablement request on github. I could see some people, especially on a server wanting the mem encrypt functionality but I wouldn’t want that enabled by default since it has a negative performance impact (hence I didn’t file any request on that). Other distros seem to enable it but not by default so it can be turned on with kernel command line flag. The AMD Numa flag appears to only be for some legacy systems as newer ones use already enabled code.

It runs next to a Skylake laptop also running Clear and its pretty transparent to go back and forth between them.

2 Likes

I’ve added AMD_MEM_ENCRYPT and AMD_NUMA

2 Likes

With the nature of the PTS tests that is kinda expected as they generally don’t use many system libs. If you test what’s actually executed, you may find the only difference of your patch in these tests is that it’s using /usr/lib64/haswell/libc.so.6 instead of /usr/lib64/libc.so.6 as the rest of the test files are compiled in a local directory for the native CPU. libc I can’t imagine is that sensitive to an AVX2 build as it already includes SSE4/AVX optimized paths where they do make a difference.

The r benchmark is the only test where I think there would be a discernable difference.

gnome-boxes does not work with amd cpu fx 8320.
After sudo usermod -a -G kvm $USER it works on my Intel machine.

It works with amd on all other distributions. (svm is the virt extension, not vmx).
Not sure if this is an issue with the kernel build or kvm.

tux@homed~ $ sudo dmesg | grep kvm
[ 0.894716] kvm: no hardware support

kvm broken on amd cpu's · Issue #1702 · clearlinux/distribution · GitHub

You may need to sudo modprobe amd_kvm - check that /dev/kvm exists.

modprobe: FATAL: Module amd_kvm not found in directory /lib/modules/5.4.18-902.native

I see this on a AMD Ryzen 3500U

Turns out it is named kvm-amd - sorry!

KVM installs, but libvirtd doesn’t setup to start. Set it up to start libvirtd at boot, and when I open the Virtual Machine Manager, I get GUI prompts to authenticate.

I authenticate, VMM starts. Set up a sample guest VM (lubuntu) and install completes but when the VM starts I get a libgtk-vnc error and the VM just runs in the background.

I go back and look and see at boot that there is a message by Clear that this is not a KVM compatible system.

[ 0.894716] kvm: no hardware support

But when I run the libvirt system check script, it reports the system as OK for running KVM.

So I assume that Clear has no accommodation for AMD-V and the AMD IOMMU in this build?

Is it possible to just have a bundle called “kernel-native-amd” that sets the correct params and loads the proper kernel modules?

We should just enable the IOMMU for AMD… @miguelinux

Looking at the linux kernel config I don’t see anything disabled under KVM or IOMMU for AMD so I’m not sure what is missing here.

I am going to reimage the device. Some other comments are placing the issue as an upstream change that occurred in kernel 5.4. The last OS image I tested wasn’t that high up in the kernel level yet.

There was also a BIOS change on the device which I applied after I scratched Clear to troubleshoot.

Will post back shortly.

I rebooted with a live CD (kernel 5.4.18).

I get the following warnings:

[3.936104] pci 0000:00.00.2: AMD-Vi: Unable to read/write to IOMMU perf counter.
[3.939039] kvm: no hardware support

I looked in the boot logs:

mcelog: ERROR: AMD Processor family 23: mcelog does not support this processor. Please use the edac_mce_amd module instead.
CPU is unsupported

and found the AMD-Vi module,

AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel
initcall amd_iommu_v2_init+0x0/0x1000 [amd-iommu_v2] returned 0 after 89 usecs

later in the boot log I find:

kvm: Nested Virtualization enabled
kvm: Nested Paging enabled
SVM: Virtual VMLOAD VMSAVE supported
SVM: Virtual GIF supported

So I can only assume even though the KVM modules loaded, since it is a unsupported CPU in mcelogs, it cant set up the IOMMU.