Tag Archives: Desktop Linux

AMD Posts New “AMD-PSTATE” CPUFreq Driver Leveraging CPPC For Better Perf-Per-Watt

AMD --

At last! AMD has posted the Linux kernel driver patches for their new “AMD-PSTATE” driver! This driver with modern AMD Zen CPUs (initially limited to Zen 3) to achieve greater performance per Watt / power efficiency on Linux than the conventional ACPI CPUFreq driver.

The new AMD-PSTATE driver is akin to Intel’s P-State driver long used by Intel CPUs as better catering to their hardware than the generic ACPI CPUFreq driver. AMD-PSTATE leverages ACPI Collaborative Processor Performance Controls (CPPC) for making more informed performance state decisions.

ACPI CPPC has been supported since Zen 2 processors but the initial AMD-PSTATE driver is limited to just Zen 3 processors. AMD says they will extend their coverage with time, which would mean going back to supporting Zen 2 processors too.

It was back in July 2019 that AMD originally posted “amd_cpufreq” as a CPPC-based driver right as they were launching the Zen 2 processors. However, that patch set was abandoned and never made it to mainline. Over the past two years I routinely asked AMD about the CPPC Linux support to which they commented on the lack of resources, but great to see this new AMD CPUFreq driver finally materializing.

It’s not entirely unexpected though. Last month I wrote about AMD and Valve working on a new CPU performance scaling design. In that prior article basically laid out that it would likely be the long-awaited CPPC-based approach and now this new driver patch series is delivering on just that.

Further pointing to the Valve / Steam Deck connection is that the initial AMD P-State patches are tested on AMD Cezanne APUs. AMD posted a few tests with their patch series showing nice gains out of this AMD-PSTATE driver compared to ACPI CPUFreq.

The code was posted today across 19 patches. Needless to say, I am currently building a new kernel with these patches and will be delivering a number of AMD Ryzen 5000 series and EPYC 7003 series benchmarks over the coming days looking at the performance and power efficiency of this new driver. It’s a long time with more than two years since the original AMD CPPC patches were posted, but great to see it come about and this time around hopefully has sufficient momentum to get worked on punctually and mainlined for benefiting the Steam Deck and the growing number of AMD Linux users at large. Stay tuned!

Not All Of The IBM POWER10 Firmware Is Currently Open-Source


Power E1080 server as their first in a new family of servers based on the IBM POWER10 processor. Sadly though not all of the POWER10 firmware is open-source.

While POWER9 was big for open-source fans with the formation of the OpenPOWER Foundation and Raptor Computing Systems designing POWER9-based systems that are fully open-source down to schematics and the motherboard firmware, the same can’t be currently said about POWER10.

Raptor Computing Systems previously hinted that it might not be all rosy for POWER10 when it comes to open-source and at least for the initial rollout, it does appear to be that way.

While IBM has published a lot of the POWER10 firmware as open-source, remaining closed for at least the time being is their off-chip OMI DRAM bridge and their on-chip PPE I/O processor.

Due to being blocked by not having open-source firmware in those areas, Raptor isn’t currently working on any POWER10-based designs but hopes that with time IBM will open-source the remaining components.

The OMI bridge firmware is binary only and the PPE I/O processor is also distributed as just compiled firmware.

At least the POWER10 firmware stack is more open than some other platforms, but hopefully they will be able to make it fully open-source in the not too distant future so Raptor Computing Systems and others can deliver fully open-source next-generation, high performance servers.

GhostBSD 21.09.06 Released For This FreeBSD-Based Desktop OS

BSD --

GhostBSD 21.09.06 is now available as the latest release of this desktop-minded, FreeBSD-based operating system.

The principal change with GhostBSD 21.09.06 is switching back from using OpenRC as the init system to FreeBSD’s rc.d for this handling of starting services. GhostBSD had enjoying OpenRC’s service status feature but in the end it wasn’t worthwhile due to GhostBSD needing to keep the OpenRC handling up-to-date with FreeBSD services catering to rc.d. After spending more than the past month transitioning back, GhostBSD is now ready to go with using rc.d.

OpenRC is expected to remain in the GhostBSD source tree at least until next year but there isn’t the manpower available to keep the services up-to-date with it compared to just using FreeBSD’s rc.d for starting services.

GhostBSD 21.09.06 also has a number of fixes and other improvements as laid out by the GhostBSD.org announcement.

Linux 5.15 Adds New Syscall To More Quickly Free Memory Of Dying Processes


To help out memory pressure / out-of-memory killing solutions like systemd-oomd or Android’s LMKD, Linux 5.15 is introducing the “process_mrelease” system call to more quickly free the memory of dying processes.

Earlier this summer I wrote about a proposed “process_reap” system call for more quickly reclaiming memory when under pressure. It’s that work that evolved into “process_mrelease” and this new system call is now ready to go for Linux 5.15.

The aim in that using this system call can allow for reclaiming memory of a dying process quickly and more predictably than the status quo.

Linux — particularly Linux on the desktop — traditionally hasn’t coped too well when under memory pressure but there has been steady progress in recent years with systemd-oomd, various kernel innovations, and now process_mrelease being the latest work in this area.

The patch merged to Linux 5.15 by way of Andrew Morton’s patch series goes on to explain this process_mrelease system call:

For such system component it’s important to be able to free memory quickly and efficiently. Unfortunately the time process takes to free up its memory after receiving a SIGKILL might vary based on the state of the process (uninterruptible sleep), size and OPP level of the core the process is running. A mechanism to free resources of the target process in a more predictable way would improve system’s ability to control its memory pressure.

Introduce process_mrelease system call that releases memory of a dying process from the context of the caller. This way the memory is freed in a more controllable way with CPU affinity and priority of the caller. The workload of freeing the memory will also be charged to the caller. The operation is allowed only on a dying process.

ASUS Platform Profile Support, Alder Lake PMC Support + More Land For Linux 5.15


The platform-drivers-x86 area of the kernel continues to be quite active with particularly offering better support for modern Intel/AMD laptops. With Linux 5.15 there is another big batch of improvements that landed at the end of last week.

Highlights of the x86 platform drivers work for Linux 5.15 includes:

– ASUS laptop support for ACPI platform profile handling has landed, similar to the platform profile support for Dell and Lenovo laptops for making it easy to manipulate the system’s power management behavior depending upon power or performance preferences.

– The ASUS WMI driver also has the additions around being able to enable a connected eGPU on select laptops and also being able to disable the dGPU on various ASUS laptops. There is also panel overdrive support too.

– Alder Lake support has been added to the Intel PMC driver.

– A platform driver for the meraki-mx100, a cloud managed security appliance from Meraki.

– The Gigabyte WMI driver now supports the X570 GAMINGX and B450M S2H V2 motherboards.

– Various fixes/quirks for a number of different laptops.

See the pull for the full list of changes.