What's in a Steam Deck kernel anyway?

More than some people say. Less than is needed.

There is a lot more work than strictly just work for hardware support for the Steam Deck.

But also, a lot of it is unneeded if the goal is just to run a Linux, and not the best Linux that could be.


Valve, entirely going against the popular definition of Vendor[pejorative], is still actively working on improving and maintaining the kernel for their Steam Deck hardware. Let's see what they're up to in this 6.8 cycle.

To do so, I'm looking at the merges and explaining them. I've ignored the fix merging commits, as they are tautologically merge of commits intended to fix merges.

This is based on:

 $ git log --merges --oneline v6.8.12..6.8.12-valve7

The Jovian Experiements mirror of the vendor kernel has the relevant vendor tag.

The big chunks

These are the larger merges, containing generic changes to drivers. A large chunk of those changes are not specific to the Steam Deck, but upholds improved support for it.

The changes are from different origins, either from the kernel upstream, from the different sub-project WIP branches, or from further downstream suppliers/vendors.

Audio driver

8bda5bd86ba6f Merge branch 6.8/features/backport-asoc-amd-mf

Backports, WIP work, and workarounds on top of the upstream AMD audio drivers.

Video driver

c120f3501738f Merge branch 6.8/features/amd-drm-extra
382863a1f6b61 Merge branch 'rcardoso/6.8/display-fixes'

The biggest branch from the vendor. It contains AMDGPU work from different provenances. I won't pretend I deeply understand every one of them.

The nature of the changes differs just as much as provenance. Some of the changes are simple backports, some are fixes that can be or are upstreamed, and some changes are workarounds or hacks in waiting of a solution.

Work sent upstream

These changes are presumed to be intended to be re-sent upstream, if they are not already in their current form.

GPU reset events

ee1e196b89532 Merge branch 6.8/features/gpu-reset

This change set has been sent upstream, along with these follow-up changes.

It is not currently in Linux (6.12).

The cover letter explains why this is desirable.

The TLDR is: making userspace aware of GPU resets, allowing recovery to be attempted.

TSC work

66560a08a6a8b Merge branch 6.8/features/tsc

Part of the changes sent to upstream, status unclear.

All related to the TSC (Time Stamp Counter).

I do not know if or how these changes affects the experience for end-users.

Platform-specific changes

Steam Deck support

8c5c5df9a7b9f Merge branch 6.8/features/steamdeck-mfd

These changes are not strictly needed to operate the system, but should be considered required for top-tier platform support.

It adds:

Galileo (OLED model) support

543b13bbacdc5 Merge branch 6.8/features/bt
5596f56bddfac Merge branch 'rcardoso/6.8/bluez-revert'

Changes for Galileo's (OLED model) Bluetooth hardware.

Mostly changes from Quectel.

a70a12c7ce5f0 Merge branch 6.8/features/wifi-mf

Backports and vendor-provided changes (from Quectel) for the Wi-Fi chipset for Galileo (OLED model).

Workarounds and hacks

USB role switching

7bf5fadb8b74f Merge branch 6.8/features/usb

Purely workarounds for the DWC3 driver, mainly specific to the Steam Deck.

Notably, the USB driver side of the required changes for USB role switching.

Misc. quirks

609cc9fa91f2e Merge branch 6.8/features/quirks

A grab-bag of small workarounds. Other than the Galileo (OLED model) panel orientation, AFAICT none sent to upstream yet.

The nature of the changes varies a bit. Though it seems to mostly be specific to SteamOS or their hardware development process.

c83d6e33ed18c Merge branch 'rcardoso/6.8/reset-8821'

From the changes, it looks like this is actually two set of logical changes:

Hacks

09ffb3798e4c3 Merge branch 6.8/features/hacks

Workarounds and hacks for:

I believe f50574d9cdd94 is an interesting change to higlight. It seems that proprietary software (one game here, maybe more than one) may have surprising behaviour with regard to device "hotplug" on non-valve kernels.

What's even more surprising is that, if I understand the software stack from SteamOS correction, this would be experienced without actively changing the brightness of the system! Steam has support for automatic backlight control for the Steam Deck, which I suppose would cause gamepads to re-enumerate during gameplay.

Better generic hardware support

5ee35155a4ce9 Merge branch 6.8/features/hid-mf

Includes mainly backports for gamepad-orientated changes.

The main goal for this branch is to make SteamOS support the newer hardware out of the box.

Backports

(See also previous changes including backports…)

Misc.

7081518de4743 Merge branch 6.8/features/backport-misc-mf

Strictly upstream backports.

Quickly described:

sched-ext

ebb9d5db497c5 Merge branch 6.8/features/sched-ext

This is a backport of the Extensible Scheduler Class (sched-ext), plus the work to make it work on a 6.8 kernel.

Security

da4c38e075d09 Merge branch 'rcardoso/6.8/unicode-cve'

Backport for CVE-2024-50089.

“Uninteresting” CI changes

d580e338863eb Merge branch 6.8/features/setup-gitlabci

Stuff for their CI. I have not looked into it, other than checking with a pattern that it contains no other sneaky changes.

':!./ci' ':!./.gitlab-ci.yml' ':!./.config-fragment' ':!./.config-fragment-extra' ':!./kernel_test.sh'