Radeon 9070 XT on Ubuntu 24.04 with ZFS

I rarely update my desktop but when I do I like to buy the latest things right when they come out. This can lead to some issues with Linux and drivers and most recently I bought a Radeon 9070 XT which the kernel AMD driver does not support in Ubuntu’s 6.8 kernel. I also use ZFS for much of my storage so I needed to have the kernel modules for that as well. The lates Mesa version and some addition GRUB command line settings are needed to prevent Steam from crashing.

(I briefly tried AMD’s proprietary driver and Steam would crash while running that with the default 6.8 kernel. I decided to go with the kernel driver since that seemed like a more documented path.)

1. Updating the Kernel

This blog post summarizes the options for drivers, however the Linux kernel drivers only support the Radeon 9070 XT after 6.12.

The latest kernels are readily built and distributed by Ubutu from the Mainline server.

1.1. Installing from Mainline

  1. Download all .deb packages from a version and arch directory of your choice. For example, v6.14.8/amd64
  2. Install them all with apt install ./*.deb. (Note the path specifier ./ which will make apt look for files instead of package names.)
  3. Reboot and verify the running kernel with uname -a.

But, make sure you don’t depend on ZFS for anything because you don’t have kernel modules for this kernel verison yet.

2. Installing the Latest OpenZFS

OpenZFS doesn’t support kernel 6.14 until version 2.3.2 so trying to use Ubuntu’s zfs-dkms package to build kernel drivers for the default version 2.2.2 won’t work. Now you’ll need to update ZFS to the latest release. They have nice support for building Debian DKMS packages though. However, because the mainline kernels are built with gcc-14, you will also need to install that compiler in order to build kernel modules for it.

2.1 Remove Default Ubuntu ZFS Packages

First the old version of ZFS has to go:

  1. apt remove zfs-zed zfsutils-linux zfs-dkms libzfs4linux
  2. apt auto-remove

2.2 Installing gcc-14

OpenZFS has a history of having a misleading error message for when the compiler does not match the one used to build the running kernel. If you see this error when trying to build OpenZFS:

*** This kernel does not include the required loadable module
*** support!
***
*** To build OpenZFS as a loadable Linux kernel module
*** enable loadable module support by setting
*** `CONFIG_MODULES=y` in the kernel configuration and run
*** `make modules_prepare` in the Linux source tree.
***
*** If you don't intend to enable loadable kernel module
*** support, please compile OpenZFS as a Linux kernel built-in.
***
*** Prepare the Linux source tree by running `make prepare`,
*** use the OpenZFS `--enable-linux-builtin` configure option,
*** copy the OpenZFS sources into the Linux source tree using
*** `./copy-builtin <linux source directory>`,
*** set `CONFIG_ZFS=y` in the kernel configuration and compile
*** kernel as usual.

Then check the build log in build/build.log.configure for a real error message. Chances are you do not have gcc-14 installed. Fortunately, that’s availible from Universe.

  1. Verify you have Universe enabled by looking for “universe” in the Components line in /etc/apt/sources.list.d/ubuntu.sources
  2. Install with apt install gcc-14

2.2 Building OpenZFS DKMS Packages and Installing

  1. Install needed packages with apt install build-essential autoconf automake libtool gawk alien fakeroot dkms libblkid-dev uuid-dev libudev-dev libssl-dev zlib1g-dev libaio-dev libattr1-dev libelf-dev linux-headers-generic python3 python3-dev python3-setuptools python3-cffi libffi-dev python3-packaging debhelper-compat dh-python po-debconf python3-all-dev python3-sphinx libpam0g-dev dh-dkms libtirpc-dev libcurl4-openssl-dev
  2. Download OpenZFS source tarball from a release, EG v2.3.2
  3. Extract with tar -xf zfs*.tar.gz
  4. Change to the zfs directory with cd zfs
  5. While running the new kernel, configure with ./configure
  6. Compile with make native-deb-utils
  7. In the directory above zfs, there will now be a bunch of packages. Delete an uneeded one with rm openzfs-zfs-dracut_2.3.2-1_all.deb and install the rest with apt install ./*.deb

You can now check with zfs or zpool commands to verify that the kernel module is finding your existing volumes.

After rebooting, you will need to run zpool import -a to re-import pools.

3. Installing the Latest Mesa Packages

The latest version of Mesa (25) is needed as well. A kind person runs a PPA with the latest Mesa packages.

  1. add-apt-repository ppa:kisak/kisak-mesa
  2. apt update
  3. apt upgrade

4. Adding GRUB Command Line Setting to Disable split-lock

This seems to be a common recommendation for performance and stability with Steam and gaming. There’s a long opinionated article on it, but I just disabled it and Steam stopped crashing.

  1. Edit /etc/default/grub and add split_lock_detect=off to the command line.
  2. Reboot and verify with cat /proc/cmdline

4. Bonus: Overclocking and Monitoring

Of course you want a handy control panel for managing the card with status monitoring:

LACT