I've purchased a Flex 3 AMD based laptop last year, as a way to try and avoid screen tearing issues I had with Intel hardware. Ever since work stopped on the legacy driver, the Intel modesetting driver works ok but offers no option for "TearFree" option, which is an issue with certain compositors like XFWM4 used in XFCE.
The laptop itself is decent, though the keyboard is not great. Linux compatibility is ok, though there are some hoops to jump through and it is unfortunately the case with the CPU itself (AMD 3020e, also known as RAVEN2).
UEFI
UEFI is kind of a weak point here. It doesn't support legacy boot and there are lots of issues when trying to enter the BIOS. Most of the time it boots to Windows and one needs to use 'advanced reboot' functionality to get UEFI access.
The hotkeys are as follows:
- F2 / Fn+F2 - UEFI settings, before the logo shows up.
- F12 / Fn + F12 - Boot device selection.
Linux Issues
I've found that some older UEFI versions result in a trackpad that randomly hiccups for no good reason. This is Linux specific and I recommend using BIOS v21, which you can access only through Lenovo support staff.
With this BIOS everything works well but you must not change the Fn lock/hotkey mode setting in UEFI. After changing this setting, something goes wrong and the trackpad doesn't work in Linux. To restore, you need to enable "BIOS back flash" and reflash v21, as restoring the settings doesn't solve the issue.
Suspend to RAM works well with kernel 5.16.xx but some recent versions frequently crash on return to operation. I haven't tracked down if this is fixed in later kernels.
eMMC Support
Being a dual core refresh of "Raven Ridge" means the Linux kernel doesn't have support for things like eMMC until a few kernel versions after launch. The result is only the MMC slot shows up and you can't see the device or Windows partitions on the eMMC.
Version 5.14 is the first one where I found no issues and everything worked, UEFI troubles aside.
AMD 3020e / RAVEN2 Throttling
There is a firmware bug that affects Windows and Linux, where the CPU will enter a power throttling mode that puts the CPU as low as 400MHz.
AMD issued a firmware update recently that should solve these issues but I haven't managed to get hold of it yet. As it is, the platform power is set to a max of 6W sustained and the bug seems to set the RAM clock at 2.4GHz, which eats most of the power budget. I am almost sure other parts of the SoC don't do proper clock or power gating and it also impacts platform power.
The result is the CPU cores have their power budget diverted and have to clock between 400 and 800MHz. This is obviously terribly slow, where normally the CPU hovers around 1600MHz after the turbo window ends.
The most direct fix right now is to use the RyzenAdj program, which you can download in Github[1]. You need to add 'iomem=relaxed' to Grub. On Windows it works the same and one only needs to issue the following command at boot:
ryzenadj -c 10000 -a 10000 -i # with sudo / root permissions
This will increase the power budget for sustained and turbo, and everything seems to be ok since it still respects current and temperature limits for the device (you should not touch those). Keep in mind, there is still risk of damage to the device, so don't do this if that might be an issue. One can also set sustained power at 8W, which is the default for turbo.
At 10W temperatures are sub 75ÂșC and I haven't had issues with throttling. I will also test the new firmware and see if one can get by with 8W sustained for full performance.
This is reset after suspend to RAM, so it is necessary to run some suspend hook to set the MSRs again with RyzenAdj.
AMDGPU and OpenCL
AMDGPU drivers have been working great for me and are a very big improvement over what Intel provides right now. Besides "TearFree" support, they also do dithering correctly (or the LCD panel does), so the picture looks as good as possible on this laptop.
VA-API video acceleration also works well, with HEVC and VP9 10-bit modes supported. AV1 is not supported on the chipset, which is now some two years old. Were it not for the throttling issue, this would be a great CPU for low end devices.
On the other hand, as of this post, there is no OpenCL support on recent AMD APUs. There have been bugs submitted to AMD developers but libclc doesn't have the required plumbing to support it. As of LLVM 14, creating missing symlinks results in a crash when running software other than 'clinfo'.
No comments:
Post a Comment