diff --git a/.gitignore b/.gitignore
index 2347858..aa02fbf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,9 +16,10 @@
 /config.log
 /config.status
 /configure
-/cov-int
 /coverage
-/kmod-*.tar.*
+/cov-int
+/doltcompile
+/doltlibtool
 /libtool
 /stamp-h1
 /test-suite.log
diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml
new file mode 100644
index 0000000..db47ca1
--- /dev/null
+++ b/.semaphore/semaphore.yml
@@ -0,0 +1,46 @@
+version: v1.0
+name: Build and Check
+agent:
+  machine:
+    type: e1-standard-2
+    os_image: ubuntu1804
+
+blocks:
+  - name: "Build"
+    task:
+      jobs:
+        - name: Build gcc-8
+          commands:
+            - sem-version c 8
+        - name: Build gcc-7
+          commands:
+            - sem-version c 7
+        - name: Build gcc-6
+          commands:
+            - sem-version c 6
+
+      prologue:
+        commands:
+          - sudo apt update
+          - sudo apt --yes install docbook-xsl liblzma-dev zlib1g-dev cython linux-headers-generic libssl-dev
+          - checkout
+
+      epilogue:
+        commands:
+          - ./autogen.sh c
+          - make
+
+  - name: "Unit tests"
+    task:
+      jobs:
+        - name: check
+          commands:
+            - sem-version c 8
+            - ./autogen.sh c
+            - make check
+
+      prologue:
+        commands:
+          - sudo apt update
+          - sudo apt --yes install docbook-xsl liblzma-dev zlib1g-dev cython linux-headers-generic libssl-dev
+          - checkout
diff --git a/.travis.yml b/.travis.yml
index 2adb3c6..4b36e1f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,30 +1,28 @@
 language: c
-dist: focal
-
-matrix:
-  include:
-    - compiler: gcc
-      env: CC=gcc
-    - compiler: clang
-      env: CC=clang
-
 before_install:
+  - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
   - sudo apt-get update -qq
-  - sudo apt-get install -qq libzstd-dev zstd
   - sudo apt-get install -qq liblzma-dev
   - sudo apt-get install -qq zlib1g-dev
   - sudo apt-get install -qq xsltproc docbook-xsl
   - sudo apt-get install -qq cython
   - sudo apt-get install -qq linux-headers-generic
-
+  - if [ "$MYCC" = "gcc-4.8" ]; then sudo apt-get install -qq gcc-4.8; sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 90; gcc --version; fi
+  - if [ "$MYCC" = "gcc-4.9" ]; then sudo apt-get install -qq gcc-4.9; sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 90; gcc --version; fi
 before_script:
   - unset PYTHON_CFLAGS # hack to broken travis setup
   - export KDIR="$(find  /lib/modules/* -maxdepth  1 -name build | sort -n --reverse | head -1)"
-
-script:
-  - ./autogen.sh c --without-openssl && make -j
-  - make -j check
-
+matrix:
+  include:
+    - compiler: gcc
+      env: MYCC=gcc
+    - compiler: gcc
+      env: MYCC=gcc-4.8
+    - compiler: gcc
+      env: MYCC=gcc-4.9
+    - compiler: clang
+      env: MYCC=clang
+script: ./autogen.sh c --without-openssl && make -j && make -j check
 notifications:
   irc:
     channels:
diff --git a/Android.bp b/Android.bp
index 466f34c..f6edaa0 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,43 +1,3 @@
-package {
-    default_applicable_licenses: ["external_kmod_license"],
-}
-
-// Added automatically by a large-scale-change that took the approach of
-// 'apply every license found to every target'. While this makes sure we respect
-// every license restriction, it may not be entirely correct.
-//
-// e.g. GPL in an MIT project might only apply to the contrib/ directory.
-//
-// Please consider splitting the single license below into multiple licenses,
-// taking care not to lose any license_kind information, and overriding the
-// default license using the 'licenses: [...]' property on targets as needed.
-//
-// For unused files, consider creating a 'fileGroup' with "//visibility:private"
-// to attach the license to, and including a comment whether the files may be
-// used in the current project.
-//
-// large-scale-change included anything that looked like it might be a license
-// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
-//
-// Please consider removing redundant or irrelevant files from 'license_text:'.
-// See: http://go/android-license-faq
-license {
-    name: "external_kmod_license",
-    visibility: [":__subpackages__"],
-    license_kinds: [
-        "SPDX-license-identifier-GPL",
-        "SPDX-license-identifier-GPL-2.0",
-        "SPDX-license-identifier-LGPL",
-        "SPDX-license-identifier-LGPL-2.1",
-        "SPDX-license-identifier-LGPL-3.0",
-        "legacy_unencumbered",
-    ],
-    license_text: [
-        "COPYING",
-        "NOTICE",
-    ],
-}
-
 cc_defaults {
     name: "libkmod_cflags_common",
     local_include_dirs: ["port-gnu"],
@@ -70,7 +30,6 @@
     name: "libkmod",
     srcs: [
         "libkmod/libkmod.c",
-        "libkmod/libkmod-builtin.c",
         "libkmod/libkmod-file.c",
         "libkmod/libkmod-module.c",
         "libkmod/libkmod-config.c",
diff --git a/METADATA b/METADATA
index 6422324..11a0872 100644
--- a/METADATA
+++ b/METADATA
@@ -5,11 +5,10 @@
     type: GIT
     value: "https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git"
   }
-  version: "v28"
-  license_type: RESTRICTED
+  version: "v26"
   last_upgrade_date {
-    year: 2021
-    month: 1
+    year: 2019
+    month: 2
     day: 7
   }
 }
diff --git a/Makefile.am b/Makefile.am
index acde92b..ddb25f0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -31,34 +31,19 @@
 	-e 's,@exec_prefix\@,$(exec_prefix),g' \
 	-e 's,@libdir\@,$(libdir),g' \
 	-e 's,@includedir\@,$(includedir),g' \
-	-e 's,@libzstd_CFLAGS\@,${libzstd_CFLAGS},g' \
-	-e 's,@libzstd_LIBS\@,${libzstd_LIBS},g' \
 	-e 's,@liblzma_CFLAGS\@,${liblzma_CFLAGS},g' \
 	-e 's,@liblzma_LIBS\@,${liblzma_LIBS},g' \
 	-e 's,@zlib_CFLAGS\@,${zlib_CFLAGS},g' \
 	-e 's,@zlib_LIBS\@,${zlib_LIBS},g' \
-	-e 's,@libcrypto_CFLAGS\@,${libcrypto_CFLAGS},g' \
-	-e 's,@libcrypto_LIBS\@,${libcrypto_LIBS},g' \
+	-e 's,@openssl_CFLAGS\@,${openssl_CFLAGS},g' \
+	-e 's,@openssl_LIBS\@,${openssl_LIBS},g' \
 	< $< > $@ || rm $@
 
 %.pc: %.pc.in Makefile
 	$(SED_PROCESS)
 
-# Rules for libtool versioning (from https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html)
-# 1. Start with version information of ‘0:0:0’ for each libtool library.
-# 2. Update the version information only immediately before a public release of
-#    your software. More frequent updates are unnecessary, and only guarantee that
-#    the current interface number gets larger faster.
-# 3. If the library source code has changed at all since the last update, then
-#    increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
-# 4. If any interfaces have been added, removed, or changed since the last
-#    update, increment current, and set revision to 0.
-# 5. If any interfaces have been added since the last public release, then
-#    increment age.
-# 6. If any interfaces have been removed or changed since the last public
-#    release, then set age to 0.
 LIBKMOD_CURRENT=5
-LIBKMOD_REVISION=6
+LIBKMOD_REVISION=4
 LIBKMOD_AGE=3
 
 noinst_LTLIBRARIES = shared/libshared.la
@@ -83,7 +68,6 @@
 	libkmod/libkmod.h \
 	libkmod/libkmod-internal.h \
 	libkmod/libkmod.c \
-	libkmod/libkmod-builtin.c \
 	libkmod/libkmod-list.c \
 	libkmod/libkmod-config.c \
 	libkmod/libkmod-index.c \
@@ -105,7 +89,7 @@
 	${top_srcdir}/libkmod/libkmod.sym
 libkmod_libkmod_la_LIBADD = \
 	shared/libshared.la \
-	${libzstd_LIBS} ${liblzma_LIBS} ${zlib_LIBS} ${libcrypto_LIBS}
+	${liblzma_LIBS} ${zlib_LIBS} ${openssl_LIBS}
 
 noinst_LTLIBRARIES += libkmod/libkmod-internal.la
 libkmod_libkmod_internal_la_SOURCES = $(libkmod_libkmod_la_SOURCES)
@@ -189,10 +173,7 @@
 	$(AM_CFLAGS) -DCPYTHON_COMPILING_IN_PYPY=0 \
 	$(PYTHON_NOWARN) $(PYTHON_CFLAGS) \
 	-fvisibility=default
-# Filter -Wl,--no-undefined to fix build with python 3.8
-comma = ,
-CPYTHON_MODULE_LDFLAGS = $(subst -Wl$(comma)--no-undefined,,$(AM_LDFLAGS))
-CPYTHON_MODULE_LDFLAGS += -module -avoid-version -shared
+CPYTHON_MODULE_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version -shared
 
 if BUILD_PYTHON
 pkgpyexec_LTLIBRARIES = \
@@ -426,7 +407,7 @@
 EXTRA_DIST += testsuite/rootfs-pristine
 
 DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc --enable-python --sysconfdir=/etc \
-	--with-zlib --with-zstd --with-openssl \
+	--with-zlib --with-openssl \
 	--with-bashcompletiondir=$$dc_install_base/$(bashcompletiondir)
 
 distclean-local: $(DISTCLEAN_LOCAL_HOOKS)
@@ -434,6 +415,8 @@
 buildtest-TESTS:
 	$(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS)
 
+DISTCLEANFILES += $(DOLT_CLEANFILES)
+
 # ------------------------------------------------------------------------------
 # coverage
 # ------------------------------------------------------------------------------
diff --git a/NEWS b/NEWS
index ae56657..58c4e2f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,65 +1,3 @@
-kmod 28
-=======
-
-- Improvements
-	- Add Zstandard to the supported compression formats using libzstd
-	  (pass --with-zstd to configure)
-
-- Bug fixes
-	- Ignore ill-formed kernel command line, e.g. with "ivrs_acpihid[00:14.5]=AMD0020:0"
-	  option in it
-	- Fix some memory leaks
-	- Fix 0-length builtin.alias.bin: it needs at least the index header
-
-kmod 27
-=======
-
-- Improvements
-	- Link to libcrypto rather than requiring openssl
-
-	- Print a better error message when kernel doesn't support module unload
-
-	- Use PKCS#7 instead of CMS for parsing module signature to be
-	  compatible with LibreSSL and OpenSSL < 1.1.0
-
-	- Teach modinfo to parse modules.builtin.modinfo. When using Linux kernel
-	  >= v5.2-rc1 it's possible to get module information from this new file. Now
-	  modinfo is able to show it instead of an error message that the module is
-	  built-in:
-
-	  Before:
-	  $ modinfo ext4
-	  modinfo: ERROR: Module ext4 not found.
-
-	  After:
-	  $ modinfo ext4
-	  name:           ext4
-	  filename:       (builtin)
-	  softdep:        pre: crc32c
-	  license:        GPL
-	  description:    Fourth Extended Filesystem
-	  author:         Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
-	  alias:          fs-ext4
-	  alias:          ext3
-	  alias:          fs-ext3
-	  alias:          ext2
-	  alias:          fs-ext2
-
-- Bug fixes
-	- Do not link python bindings with libpython to be compatible with
-	  python3.8
-
-	- Fix module removal with `modprobe -r` when a dependency is built-in.
-	  Now it properly ignores them and proceed with removal of other
-	  dependencies
-
-	- Fix propagation of return code from install/remove commands to the
-	  the probe function. The return values of kmod_module_probe_insert_module()
-	  have very specific meanings, do not confuse the caller by return codes
-	  from system()
-
-	- Fix softdep config parsing leading to buffer overflow
-
 kmod 26
 =======
 
@@ -428,7 +366,7 @@
 - New features:
 	- libkmod now keeps a file opened after the first call to
 	  kmod_module_get_{info,versions,symbols,dependency_symbols}. This
-	  reduces significantly the amount of time depmod tool takes to
+	  reduces signficantly the amount of time depmod tool takes to
 	  execute. Particularly if compressed modules are used.
 	- Remove --with-rootprefix from build system. It was not a great idea
 	  after all and should not be use since it causes more harm then
diff --git a/autogen.sh b/autogen.sh
index e4997c4..67b119f 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -32,14 +32,7 @@
 
 cd $oldpwd
 
-hackargs="\
---enable-debug \
---enable-python \
---with-zstd \
---with-xz \
---with-zlib \
---with-openssl \
-"
+hackargs="--enable-debug --enable-python --with-xz --with-zlib --with-openssl"
 
 if [ "x$1" = "xc" ]; then
         shift
diff --git a/configure.ac b/configure.ac
index 0cf2eda..ee72283 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 AC_PREREQ(2.64)
 AC_INIT([kmod],
-	[28],
+	[26],
 	[linux-modules@vger.kernel.org],
 	[kmod],
 	[http://git.kernel.org/?p=utils/kernel/kmod/kmod.git])
@@ -17,6 +17,7 @@
 AM_INIT_AUTOMAKE([check-news foreign 1.11 silent-rules tar-pax no-dist-gzip dist-xz subdir-objects color-tests parallel-tests])
 AM_SILENT_RULES([yes])
 LT_INIT([disable-static pic-only])
+DOLT
 
 AS_IF([test "x$enable_static" = "xyes"], [AC_MSG_ERROR([--enable-static is not supported by kmod])])
 AS_IF([test "x$enable_largefile" = "xno"], [AC_MSG_ERROR([--disable-largefile is not supported by kmod])])
@@ -83,17 +84,6 @@
         [], [with_rootlibdir=$libdir])
 AC_SUBST([rootlibdir], [$with_rootlibdir])
 
-AC_ARG_WITH([zstd],
-	AS_HELP_STRING([--with-zstd], [handle Zstandard-compressed modules @<:@default=disabled@:>@]),
-	[], [with_zstd=no])
-AS_IF([test "x$with_zstd" != "xno"], [
-	PKG_CHECK_MODULES([libzstd], [libzstd >= 1.4.4])
-	AC_DEFINE([ENABLE_ZSTD], [1], [Enable Zstandard for modules.])
-], [
-	AC_MSG_NOTICE([Zstandard support not requested])
-])
-CC_FEATURE_APPEND([with_features], [with_zstd], [ZSTD])
-
 AC_ARG_WITH([xz],
 	AS_HELP_STRING([--with-xz], [handle Xz-compressed modules @<:@default=disabled@:>@]),
 	[], [with_xz=no])
@@ -120,12 +110,12 @@
 	AS_HELP_STRING([--with-openssl], [handle PKCS7 signatures @<:@default=disabled@:>@]),
 	[], [with_openssl=no])
 AS_IF([test "x$with_openssl" != "xno"], [
-	PKG_CHECK_MODULES([libcrypto], [libcrypto >= 1.1.0])
+	PKG_CHECK_MODULES([openssl], [openssl >= 1.1.0])
 	AC_DEFINE([ENABLE_OPENSSL], [1], [Enable openssl for modinfo.])
 ], [
 	AC_MSG_NOTICE([openssl support not requested])
 ])
-CC_FEATURE_APPEND([with_features], [with_openssl], [LIBCRYPTO])
+CC_FEATURE_APPEND([with_features], [with_openssl], [OPENSSL])
 
 AC_ARG_WITH([bashcompletiondir],
 	AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]),
@@ -318,7 +308,7 @@
 	tools:			${enable_tools}
 	python bindings:	${enable_python}
 	logging:		${enable_logging}
-	compression:		zstd=${with_zstd}  xz=${with_xz}  zlib=${with_zlib}
+	compression:		xz=${with_xz}  zlib=${with_zlib}
 	debug:			${enable_debug}
 	coverage:		${enable_coverage}
 	doc:			${enable_gtk_doc}
diff --git a/libkmod/libkmod-builtin.c b/libkmod/libkmod-builtin.c
deleted file mode 100644
index fc9a376..0000000
--- a/libkmod/libkmod-builtin.c
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * libkmod - interface to kernel built-in modules
- *
- * Copyright (C) 2019  Alexey Gladkov <gladkov.alexey@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#include "libkmod.h"
-#include "libkmod-internal.h"
-
-#define MODULES_BUILTIN_MODINFO "modules.builtin.modinfo"
-
-struct kmod_builtin_iter {
-	struct kmod_ctx *ctx;
-
-	// The file descriptor.
-	int file;
-
-	// The total size in bytes.
-	ssize_t size;
-
-	// The offset of current module.
-	off_t pos;
-
-	// The offset at which the next module is located.
-	off_t next;
-
-	// Number of strings in the current block.
-	ssize_t nstrings;
-
-	// Internal buffer and its size.
-	size_t bufsz;
-	char *buf;
-};
-
-struct kmod_builtin_iter *kmod_builtin_iter_new(struct kmod_ctx *ctx)
-{
-	char path[PATH_MAX];
-	int file, sv_errno;
-	struct stat sb;
-	struct kmod_builtin_iter *iter = NULL;
-	const char *dirname = kmod_get_dirname(ctx);
-	size_t len = strlen(dirname);
-
-	file = -1;
-
-	if ((len + 1 + strlen(MODULES_BUILTIN_MODINFO) + 1) >= PATH_MAX) {
-		sv_errno = ENAMETOOLONG;
-		goto fail;
-	}
-
-	snprintf(path, PATH_MAX, "%s/%s", dirname, MODULES_BUILTIN_MODINFO);
-
-	file = open(path, O_RDONLY|O_CLOEXEC);
-	if (file < 0) {
-		sv_errno = errno;
-		goto fail;
-	}
-
-	if (fstat(file, &sb) < 0) {
-		sv_errno = errno;
-		goto fail;
-	}
-
-	iter = malloc(sizeof(*iter));
-	if (!iter) {
-		sv_errno = ENOMEM;
-		goto fail;
-	}
-
-	iter->ctx = ctx;
-	iter->file = file;
-	iter->size = sb.st_size;
-	iter->nstrings = 0;
-	iter->pos = 0;
-	iter->next = 0;
-	iter->bufsz = 0;
-	iter->buf = NULL;
-
-	return iter;
-fail:
-	if (file >= 0)
-		close(file);
-
-	errno = sv_errno;
-
-	return iter;
-}
-
-void kmod_builtin_iter_free(struct kmod_builtin_iter *iter)
-{
-	close(iter->file);
-	free(iter->buf);
-	free(iter);
-}
-
-static off_t get_string(struct kmod_builtin_iter *iter, off_t offset,
-			char **line, size_t *size)
-{
-	int sv_errno;
-	char *nullp = NULL;
-	size_t linesz = 0;
-
-	while (!nullp) {
-		char buf[BUFSIZ];
-		ssize_t sz;
-		size_t partsz;
-
-		sz = pread(iter->file, buf, BUFSIZ, offset);
-		if (sz < 0) {
-			sv_errno = errno;
-			goto fail;
-		} else if (sz == 0) {
-			offset = 0;
-			break;
-		}
-
-		nullp = memchr(buf, '\0', (size_t) sz);
-		partsz = (size_t)((nullp) ? (nullp - buf) + 1 : sz);
-		offset += (off_t) partsz;
-
-		if (iter->bufsz < linesz + partsz) {
-			iter->bufsz = linesz + partsz;
-			iter->buf = realloc(iter->buf, iter->bufsz);
-
-			if (!iter->buf) {
-				sv_errno = errno;
-				goto fail;
-			}
-		}
-
-		strncpy(iter->buf + linesz, buf, partsz);
-		linesz += partsz;
-	}
-
-	if (linesz) {
-		*line = iter->buf;
-		*size = linesz;
-	}
-
-	return offset;
-fail:
-	errno = sv_errno;
-	return -1;
-}
-
-bool kmod_builtin_iter_next(struct kmod_builtin_iter *iter)
-{
-	char *line,  *modname;
-	size_t linesz;
-	off_t pos, offset, modlen;
-
-	modname = NULL;
-
-	iter->nstrings = 0;
-	offset = pos = iter->next;
-
-	while (offset < iter->size) {
-		char *dot;
-		off_t len;
-
-		offset = get_string(iter, pos, &line, &linesz);
-		if (offset <= 0) {
-			if (offset)
-				ERR(iter->ctx, "get_string: %s\n", strerror(errno));
-			pos = iter->size;
-			break;
-		}
-
-		dot = strchr(line, '.');
-		if (!dot) {
-			ERR(iter->ctx, "kmod_builtin_iter_next: unexpected string without modname prefix\n");
-			pos = iter->size;
-			break;
-		}
-
-		len = dot - line;
-
-		if (!modname) {
-			modname = strdup(line);
-			modlen = len;
-		} else if (modlen != len || strncmp(modname, line, len)) {
-			break;
-		}
-
-		iter->nstrings++;
-		pos = offset;
-	}
-
-	iter->pos = iter->next;
-	iter->next = pos;
-
-	free(modname);
-
-	return (iter->pos < iter->size);
-}
-
-bool kmod_builtin_iter_get_modname(struct kmod_builtin_iter *iter,
-				char modname[static PATH_MAX])
-{
-	int sv_errno;
-	char *line, *dot;
-	size_t linesz, len;
-	off_t offset;
-
-	if (iter->pos == iter->size)
-		return false;
-
-	line = NULL;
-
-	offset = get_string(iter, iter->pos, &line, &linesz);
-	if (offset <= 0) {
-		sv_errno = errno;
-		if (offset)
-			ERR(iter->ctx, "get_string: %s\n", strerror(errno));
-		goto fail;
-	}
-
-	dot = strchr(line, '.');
-	if (!dot) {
-		sv_errno = errno;
-		ERR(iter->ctx, "kmod_builtin_iter_get_modname: unexpected string without modname prefix\n");
-		goto fail;
-	}
-
-	len = dot - line;
-
-	if (len > PATH_MAX) {
-		sv_errno = ENAMETOOLONG;
-		goto fail;
-	}
-
-	strncpy(modname, line, len);
-	modname[len] = '\0';
-
-	return true;
-fail:
-	errno = sv_errno;
-	return false;
-}
-
-/* array will be allocated with strings in a single malloc, just free *array */
-ssize_t kmod_builtin_get_modinfo(struct kmod_ctx *ctx, const char *modname,
-				char ***modinfo)
-{
-	ssize_t count = 0;
-	char *s, *line = NULL;
-	size_t i, n, linesz, modlen, size;
-	off_t pos, offset;
-
-	char *name = NULL;
-	char buf[PATH_MAX];
-
-	struct kmod_builtin_iter *iter = kmod_builtin_iter_new(ctx);
-
-	if (!iter)
-		return -errno;
-
-	while (!name && kmod_builtin_iter_next(iter)) {
-		if (!kmod_builtin_iter_get_modname(iter, buf)) {
-			count = -errno;
-			goto fail;
-		}
-
-		if (strcmp(modname, buf))
-			continue;
-
-		name = buf;
-	}
-
-	if (!name) {
-		count = -ENOSYS;
-		goto fail;
-	}
-
-	modlen = strlen(modname) + 1;
-	count = iter->nstrings;
-	size = iter->next - iter->pos - (modlen * count);
-
-	*modinfo = malloc(size + sizeof(char *) * (count + 1));
-	if (!*modinfo) {
-		count = -errno;
-		goto fail;
-	}
-
-	s = (char *)(*modinfo + count + 1);
-	i = 0;
-
-	n = 0;
-	offset = pos = iter->pos;
-
-	while (offset < iter->next) {
-		offset = get_string(iter, pos, &line, &linesz);
-		if (offset <= 0) {
-			count = (offset) ? -errno : -EOF;
-			free(*modinfo);
-			goto fail;
-		}
-
-		strcpy(s + i, line + modlen);
-		(*modinfo)[n++] = s + i;
-		i += linesz - modlen;
-
-		pos = offset;
-	}
-fail:
-	kmod_builtin_iter_free(iter);
-	return count;
-}
diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c
index 971f20b..aaac0a1 100644
--- a/libkmod/libkmod-config.c
+++ b/libkmod/libkmod-config.c
@@ -335,7 +335,6 @@
 	n_pre = 0;
 	n_post = 0;
 	mode = S_NONE;
-	was_space = false;
 	for (p = s = line; ; s++) {
 		size_t plen;
 
@@ -488,9 +487,8 @@
 		if (underscores(modname) < 0) {
 			ERR(config->ctx, "Ignoring bad option on kernel command line while parsing module name: '%s'\n",
 			    modname);
-		} else {
-			kmod_config_add_options(config, modname, param);
 		}
+		kmod_config_add_options(config, modname, param);
 	}
 }
 
diff --git a/libkmod/libkmod-file.c b/libkmod/libkmod-file.c
index b6a8cc9..5eeba6a 100644
--- a/libkmod/libkmod-file.c
+++ b/libkmod/libkmod-file.c
@@ -26,9 +26,6 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
-#ifdef ENABLE_ZSTD
-#include <zstd.h>
-#endif
 #ifdef ENABLE_XZ
 #include <lzma.h>
 #endif
@@ -48,9 +45,6 @@
 };
 
 struct kmod_file {
-#ifdef ENABLE_ZSTD
-	bool zstd_used;
-#endif
 #ifdef ENABLE_XZ
 	bool xz_used;
 #endif
@@ -66,141 +60,6 @@
 	struct kmod_elf *elf;
 };
 
-#ifdef ENABLE_ZSTD
-static int zstd_read_block(struct kmod_file *file, size_t block_size,
-			   ZSTD_inBuffer *input, size_t *input_capacity)
-{
-	ssize_t rdret;
-	int ret;
-
-	if (*input_capacity < block_size) {
-		free((void *)input->src);
-		input->src = malloc(block_size);
-		if (input->src == NULL) {
-			ret = -errno;
-			ERR(file->ctx, "zstd: %m\n");
-			return ret;
-		}
-		*input_capacity = block_size;
-	}
-
-	rdret = read(file->fd, (void *)input->src, block_size);
-	if (rdret < 0) {
-		ret = -errno;
-		ERR(file->ctx, "zstd: %m\n");
-		return ret;
-	}
-
-	input->pos = 0;
-	input->size = rdret;
-	return 0;
-}
-
-static int zstd_ensure_outbuffer_space(ZSTD_outBuffer *buffer, size_t min_free)
-{
-	uint8_t *old_buffer = buffer->dst;
-	int ret = 0;
-
-	if (buffer->size - buffer->pos >= min_free)
-		return 0;
-
-	buffer->size += min_free;
-	buffer->dst = realloc(buffer->dst, buffer->size);
-	if (buffer->dst == NULL) {
-		ret = -errno;
-		free(old_buffer);
-	}
-
-	return ret;
-}
-
-static int zstd_decompress_block(struct kmod_file *file, ZSTD_DStream *dstr,
-				 ZSTD_inBuffer *input, ZSTD_outBuffer *output,
-				 size_t *next_block_size)
-{
-	size_t out_buf_min_size = ZSTD_DStreamOutSize();
-	int ret = 0;
-
-	do {
-		ssize_t dsret;
-
-		ret = zstd_ensure_outbuffer_space(output, out_buf_min_size);
-		if (ret) {
-			ERR(file->ctx, "zstd: %s\n", strerror(-ret));
-			break;
-		}
-
-		dsret = ZSTD_decompressStream(dstr, output, input);
-		if (ZSTD_isError(dsret)) {
-			ret = -EINVAL;
-			ERR(file->ctx, "zstd: %s\n", ZSTD_getErrorName(dsret));
-			break;
-		}
-		if (dsret > 0)
-			*next_block_size = (size_t)dsret;
-	} while (input->pos < input->size
-		 || output->pos > output->size
-		 || output->size - output->pos < out_buf_min_size);
-
-	return ret;
-}
-
-static int load_zstd(struct kmod_file *file)
-{
-	ZSTD_DStream *dstr;
-	size_t next_block_size;
-	size_t zst_inb_capacity = 0;
-	ZSTD_inBuffer zst_inb = { 0 };
-	ZSTD_outBuffer zst_outb = { 0 };
-	int ret;
-
-	dstr = ZSTD_createDStream();
-	if (dstr == NULL) {
-		ret = -EINVAL;
-		ERR(file->ctx, "zstd: Failed to create decompression stream\n");
-		goto out;
-	}
-
-	next_block_size = ZSTD_initDStream(dstr);
-
-	while (true) {
-		ret = zstd_read_block(file, next_block_size, &zst_inb,
-				      &zst_inb_capacity);
-		if (ret != 0)
-			goto out;
-		if (zst_inb.size == 0) /* EOF */
-			break;
-
-		ret = zstd_decompress_block(file, dstr, &zst_inb, &zst_outb,
-					    &next_block_size);
-		if (ret != 0)
-			goto out;
-	}
-
-	ZSTD_freeDStream(dstr);
-	free((void *)zst_inb.src);
-	file->zstd_used = true;
-	file->memory = zst_outb.dst;
-	file->size = zst_outb.pos;
-	return 0;
-out:
-	if (dstr != NULL)
-		ZSTD_freeDStream(dstr);
-	free((void *)zst_inb.src);
-	free((void *)zst_outb.dst);
-	return ret;
-}
-
-static void unload_zstd(struct kmod_file *file)
-{
-	if (!file->zstd_used)
-		return;
-	free(file->memory);
-}
-
-static const char magic_zstd[] = {0x28, 0xB5, 0x2F, 0xFD};
-#endif
-
 #ifdef ENABLE_XZ
 static void xz_uncompress_belch(struct kmod_file *file, lzma_ret ret)
 {
@@ -379,9 +238,6 @@
 	const char *magic_bytes;
 	const struct file_ops ops;
 } comp_types[] = {
-#ifdef ENABLE_ZSTD
-	{sizeof(magic_zstd), magic_zstd, {load_zstd, unload_zstd}},
-#endif
 #ifdef ENABLE_XZ
 	{sizeof(magic_xz), magic_xz, {load_xz, unload_xz}},
 #endif
diff --git a/libkmod/libkmod-index.c b/libkmod/libkmod-index.c
index 2383e7e..05669dc 100644
--- a/libkmod/libkmod-index.c
+++ b/libkmod/libkmod-index.c
@@ -611,7 +611,7 @@
 static const char _idx_empty_str[] = "";
 
 struct index_mm {
-	const struct kmod_ctx *ctx;
+	struct kmod_ctx *ctx;
 	void *mm;
 	uint32_t root_offset;
 	size_t size;
@@ -739,10 +739,10 @@
 	free(node);
 }
 
-int index_mm_open(const struct kmod_ctx *ctx, const char *filename,
-		  unsigned long long *stamp, struct index_mm **pidx)
+struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename,
+						unsigned long long *stamp)
 {
-	int fd, err;
+	int fd;
 	struct stat st;
 	struct index_mm *idx;
 	struct {
@@ -752,32 +752,28 @@
 	} hdr;
 	void *p;
 
-	assert(pidx != NULL);
-
 	DBG(ctx, "file=%s\n", filename);
 
 	idx = malloc(sizeof(*idx));
 	if (idx == NULL) {
 		ERR(ctx, "malloc: %m\n");
-		return -ENOMEM;
+		return NULL;
 	}
 
 	if ((fd = open(filename, O_RDONLY|O_CLOEXEC)) < 0) {
 		DBG(ctx, "open(%s, O_RDONLY|O_CLOEXEC): %m\n", filename);
-		err = -errno;
 		goto fail_open;
 	}
 
-	if (fstat(fd, &st) < 0 || (size_t) st.st_size < sizeof(hdr)) {
-		err = -EINVAL;
+	if (fstat(fd, &st) < 0)
 		goto fail_nommap;
-	}
+	if ((size_t) st.st_size < sizeof(hdr))
+		goto fail_nommap;
 
-	idx->mm = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
-	if (idx->mm == MAP_FAILED) {
+	if ((idx->mm = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0))
+							== MAP_FAILED) {
 		ERR(ctx, "mmap(NULL, %"PRIu64", PROT_READ, %d, MAP_PRIVATE, 0): %m\n",
 							st.st_size, fd);
-		err = -errno;
 		goto fail_nommap;
 	}
 
@@ -789,14 +785,12 @@
 	if (hdr.magic != INDEX_MAGIC) {
 		ERR(ctx, "magic check fail: %x instead of %x\n", hdr.magic,
 								INDEX_MAGIC);
-		err = -EINVAL;
 		goto fail;
 	}
 
 	if (hdr.version >> 16 != INDEX_VERSION_MAJOR) {
 		ERR(ctx, "major version check fail: %u instead of %u\n",
 					hdr.version >> 16, INDEX_VERSION_MAJOR);
-		err = -EINVAL;
 		goto fail;
 	}
 
@@ -806,9 +800,8 @@
 	close(fd);
 
 	*stamp = stat_mstamp(&st);
-	*pidx = idx;
 
-	return 0;
+	return idx;
 
 fail:
 	munmap(idx->mm, st.st_size);
@@ -816,7 +809,7 @@
 	close(fd);
 fail_open:
 	free(idx);
-	return err;
+	return NULL;
 }
 
 void index_mm_close(struct index_mm *idx)
diff --git a/libkmod/libkmod-index.h b/libkmod/libkmod-index.h
index db671b0..52aebac 100644
--- a/libkmod/libkmod-index.h
+++ b/libkmod/libkmod-index.h
@@ -40,8 +40,8 @@
 
 /* Implementation using mmap */
 struct index_mm;
-int index_mm_open(const struct kmod_ctx *ctx, const char *filename,
-		  unsigned long long *stamp, struct index_mm **pidx);
+struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename,
+						unsigned long long *stamp);
 void index_mm_close(struct index_mm *index);
 char *index_mm_search(struct index_mm *idx, const char *key);
 struct index_value *index_mm_searchwild(struct index_mm *idx, const char *key);
diff --git a/libkmod/libkmod-internal.h b/libkmod/libkmod-internal.h
index 398af9c..a65ddd1 100644
--- a/libkmod/libkmod-internal.h
+++ b/libkmod/libkmod-internal.h
@@ -11,7 +11,7 @@
 #include "libkmod.h"
 
 static _always_inline_ _printf_format_(2, 3) void
-	kmod_log_null(const struct kmod_ctx *ctx, const char *format, ...) {}
+	kmod_log_null(struct kmod_ctx *ctx, const char *format, ...) {}
 
 #define kmod_log_cond(ctx, prio, arg...) \
 	do { \
@@ -89,7 +89,6 @@
 int kmod_lookup_alias_from_symbols_file(struct kmod_ctx *ctx, const char *name, struct kmod_list **list) __attribute__((nonnull(1, 2, 3)));
 int kmod_lookup_alias_from_aliases_file(struct kmod_ctx *ctx, const char *name, struct kmod_list **list) __attribute__((nonnull(1, 2, 3)));
 int kmod_lookup_alias_from_moddep_file(struct kmod_ctx *ctx, const char *name, struct kmod_list **list) __attribute__((nonnull(1, 2, 3)));
-int kmod_lookup_alias_from_kernel_builtin_file(struct kmod_ctx *ctx, const char *name, struct kmod_list **list) __attribute__((nonnull(1, 2, 3)));
 int kmod_lookup_alias_from_builtin_file(struct kmod_ctx *ctx, const char *name, struct kmod_list **list) __attribute__((nonnull(1, 2, 3)));
 bool kmod_lookup_alias_is_builtin(struct kmod_ctx *ctx, const char *name) __attribute__((nonnull(1, 2)));
 int kmod_lookup_alias_from_commands(struct kmod_ctx *ctx, const char *name, struct kmod_list **list) __attribute__((nonnull(1, 2, 3)));
@@ -146,7 +145,6 @@
 void kmod_module_set_builtin(struct kmod_module *mod, bool builtin) __attribute__((nonnull((1))));
 void kmod_module_set_required(struct kmod_module *mod, bool required) __attribute__((nonnull(1)));
 bool kmod_module_is_builtin(struct kmod_module *mod) __attribute__((nonnull(1)));
-int kmod_module_get_builtin(struct kmod_ctx *ctx, struct kmod_list **list) __attribute__((nonnull(1, 2)));
 
 /* libkmod-file.c */
 struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx, const char *filename) _must_check_ __attribute__((nonnull(1,2)));
@@ -195,11 +193,3 @@
 };
 bool kmod_module_signature_info(const struct kmod_file *file, struct kmod_signature_info *sig_info) _must_check_ __attribute__((nonnull(1, 2)));
 void kmod_module_signature_info_free(struct kmod_signature_info *sig_info) __attribute__((nonnull));
-
-/* libkmod-builtin.c */
-struct kmod_builtin_iter;
-struct kmod_builtin_iter *kmod_builtin_iter_new(struct kmod_ctx *ctx) __attribute__((nonnull(1)));
-void kmod_builtin_iter_free(struct kmod_builtin_iter *iter) __attribute__((nonnull(1)));
-bool kmod_builtin_iter_next(struct kmod_builtin_iter *iter) __attribute__((nonnull(1)));
-bool kmod_builtin_iter_get_modname(struct kmod_builtin_iter *iter, char modname[static PATH_MAX]) __attribute__((nonnull(1, 2)));
-ssize_t kmod_builtin_get_modinfo(struct kmod_ctx *ctx, const char *modname, char ***modinfo) __attribute__((nonnull(1, 2, 3)));
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
index 76a6dc3..bffe715 100644
--- a/libkmod/libkmod-module.c
+++ b/libkmod/libkmod-module.c
@@ -575,16 +575,10 @@
 	err = kmod_lookup_alias_from_aliases_file(ctx, alias, list);
 	CHECK_ERR_AND_FINISH(err, fail, list, finish);
 
-	DBG(ctx, "lookup modules.builtin.modinfo %s\n", alias);
-	err = kmod_lookup_alias_from_kernel_builtin_file(ctx, alias, list);
-	if (err == -ENOSYS) {
-		/* Optional index missing, try the old one */
-		DBG(ctx, "lookup modules.builtin %s\n", alias);
-		err = kmod_lookup_alias_from_builtin_file(ctx, alias, list);
-	}
+	DBG(ctx, "lookup modules.builtin %s\n", alias);
+	err = kmod_lookup_alias_from_builtin_file(ctx, alias, list);
 	CHECK_ERR_AND_FINISH(err, fail, list, finish);
 
-
 finish:
 	DBG(ctx, "lookup %s=%d, list=%p\n", alias, err, *list);
 	return err;
@@ -980,19 +974,14 @@
 	err = system(cmd);
 	unsetenv("MODPROBE_MODULE");
 
-	if (err == -1) {
-		ERR(mod->ctx, "Could not run %s command '%s' for module %s: %m\n",
-		    type, cmd, modname);
-		return -EINVAL;
+	if (err == -1 || WEXITSTATUS(err)) {
+		ERR(mod->ctx, "Error running %s command for %s\n",
+								type, modname);
+		if (err != -1)
+			err = -WEXITSTATUS(err);
 	}
 
-	if (WEXITSTATUS(err)) {
-		ERR(mod->ctx, "Error running %s command '%s' for module %s: retcode %d\n",
-		    type, cmd, modname, WEXITSTATUS(err));
-		return -EINVAL;
-	}
-
-	return 0;
+	return err;
 }
 
 struct probe_insert_cb {
@@ -2291,22 +2280,13 @@
 
 	assert(*list == NULL);
 
-	/* remove const: this can only change internal state */
-	if (kmod_module_is_builtin((struct kmod_module *)mod)) {
-		count = kmod_builtin_get_modinfo(mod->ctx,
-						kmod_module_get_name(mod),
-						&strings);
-		if (count < 0)
-			return count;
-	} else {
-		elf = kmod_module_get_elf(mod);
-		if (elf == NULL)
-			return -errno;
+	elf = kmod_module_get_elf(mod);
+	if (elf == NULL)
+		return -errno;
 
-		count = kmod_elf_get_strings(elf, ".modinfo", &strings);
-		if (count < 0)
-			return count;
-	}
+	count = kmod_elf_get_strings(elf, ".modinfo", &strings);
+	if (count < 0)
+		return count;
 
 	for (i = 0; i < count; i++) {
 		struct kmod_list *n;
@@ -2330,7 +2310,7 @@
 			goto list_error;
 	}
 
-	if (mod->file && kmod_module_signature_info(mod->file, &sig_info)) {
+	if (kmod_module_signature_info(mod->file, &sig_info)) {
 		struct kmod_list *n;
 
 		n = kmod_module_info_append(list, "sig_id", strlen("sig_id"),
@@ -2886,43 +2866,3 @@
 		list = kmod_list_remove(list);
 	}
 }
-
-/**
- * kmod_module_get_builtin:
- * @ctx: kmod library context
- * @list: where to save the builtin module list
- *
- * Returns: 0 on success or < 0 otherwise.
- */
-int kmod_module_get_builtin(struct kmod_ctx *ctx, struct kmod_list **list)
-{
-	struct kmod_builtin_iter *iter;
-	int err = 0;
-
-	iter = kmod_builtin_iter_new(ctx);
-	if (!iter)
-		return -errno;
-
-	while (kmod_builtin_iter_next(iter)) {
-		struct kmod_module *mod = NULL;
-		char modname[PATH_MAX];
-
-		if (!kmod_builtin_iter_get_modname(iter, modname)) {
-			err = -errno;
-			goto fail;
-		}
-
-		kmod_module_new_from_name(ctx, modname, &mod);
-		kmod_module_set_builtin(mod, true);
-
-		*list = kmod_list_append(*list, mod);
-	}
-
-	kmod_builtin_iter_free(iter);
-	return err;
-fail:
-	kmod_builtin_iter_free(iter);
-	kmod_module_unref_list(*list);
-	*list = NULL;
-	return err;
-}
diff --git a/libkmod/libkmod-signature.c b/libkmod/libkmod-signature.c
index 9877cf3..27d0a8f 100644
--- a/libkmod/libkmod-signature.c
+++ b/libkmod/libkmod-signature.c
@@ -19,7 +19,7 @@
 
 #include <inttypes.h>
 #ifdef ENABLE_OPENSSL
-#include <openssl/pkcs7.h>
+#include <openssl/cms.h>
 #include <openssl/ssl.h>
 #endif
 #include <stdio.h>
@@ -121,7 +121,7 @@
 #ifdef ENABLE_OPENSSL
 
 struct pkcs7_private {
-	PKCS7 *pkcs7;
+	CMS_ContentInfo *cms;
 	unsigned char *key_id;
 	BIGNUM *sno;
 };
@@ -131,7 +131,7 @@
 	struct kmod_signature_info *si = s;
 	struct pkcs7_private *pvt = si->private;
 
-	PKCS7_free(pvt->pkcs7);
+	CMS_ContentInfo_free(pvt->cms);
 	BN_free(pvt->sno);
 	free(pvt->key_id);
 	free(pvt);
@@ -196,10 +196,11 @@
 		       struct kmod_signature_info *sig_info)
 {
 	const char *pkcs7_raw;
-	PKCS7 *pkcs7;
-	STACK_OF(PKCS7_SIGNER_INFO) *sis;
-	PKCS7_SIGNER_INFO *si;
-	PKCS7_ISSUER_AND_SERIAL *is;
+	CMS_ContentInfo *cms;
+	STACK_OF(CMS_SignerInfo) *sis;
+	CMS_SignerInfo *si;
+	int rc;
+	ASN1_OCTET_STRING *key_id;
 	X509_NAME *issuer;
 	ASN1_INTEGER *sno;
 	ASN1_OCTET_STRING *sig;
@@ -218,33 +219,31 @@
 
 	in = BIO_new_mem_buf(pkcs7_raw, sig_len);
 
-	pkcs7 = d2i_PKCS7_bio(in, NULL);
-	if (pkcs7 == NULL) {
+	cms = d2i_CMS_bio(in, NULL);
+	if (cms == NULL) {
 		BIO_free(in);
 		return false;
 	}
 
 	BIO_free(in);
 
-	sis = PKCS7_get_signer_info(pkcs7);
+	sis = CMS_get0_SignerInfos(cms);
 	if (sis == NULL)
 		goto err;
 
-	si = sk_PKCS7_SIGNER_INFO_value(sis, 0);
+	si = sk_CMS_SignerInfo_value(sis, 0);
 	if (si == NULL)
 		goto err;
 
-	is = si->issuer_and_serial;
-	if (is == NULL)
+	rc = CMS_SignerInfo_get0_signer_id(si, &key_id, &issuer, &sno);
+	if (rc == 0)
 		goto err;
-	issuer = is->issuer;
-	sno = is->serial;
 
-	sig = si->enc_digest;
+	sig = CMS_SignerInfo_get0_signature(si);
 	if (sig == NULL)
 		goto err;
 
-	PKCS7_SIGNER_INFO_get0_algs(si, NULL, &dig_alg, &sig_alg);
+	CMS_SignerInfo_get0_algs(si, NULL, NULL, &dig_alg, &sig_alg);
 
 	sig_info->sig = (const char *)ASN1_STRING_get0_data(sig);
 	sig_info->sig_len = ASN1_STRING_length(sig);
@@ -277,7 +276,7 @@
 	if (pvt == NULL)
 		goto err3;
 
-	pvt->pkcs7 = pkcs7;
+	pvt->cms = cms;
 	pvt->key_id = key_id_str;
 	pvt->sno = sno_bn;
 	sig_info->private = pvt;
@@ -290,7 +289,7 @@
 err2:
 	BN_free(sno_bn);
 err:
-	PKCS7_free(pkcs7);
+	CMS_ContentInfo_free(cms);
 	return false;
 }
 
diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c
index 43423d6..69fe431 100644
--- a/libkmod/libkmod.c
+++ b/libkmod/libkmod.c
@@ -57,7 +57,6 @@
 	[KMOD_INDEX_MODULES_DEP] = { .fn = "modules.dep", .prefix = "" },
 	[KMOD_INDEX_MODULES_ALIAS] = { .fn = "modules.alias", .prefix = "alias " },
 	[KMOD_INDEX_MODULES_SYMBOL] = { .fn = "modules.symbols", .prefix = "alias "},
-	[KMOD_INDEX_MODULES_BUILTIN_ALIAS] = { .fn = "modules.builtin.alias", .prefix = "" },
 	[KMOD_INDEX_MODULES_BUILTIN] = { .fn = "modules.builtin", .prefix = ""},
 };
 
@@ -523,27 +522,6 @@
 	return line;
 }
 
-int kmod_lookup_alias_from_kernel_builtin_file(struct kmod_ctx *ctx,
-						const char *name,
-						struct kmod_list **list)
-{
-	struct kmod_list *l;
-	int ret;
-
-	assert(*list == NULL);
-
-	ret = kmod_lookup_alias_from_alias_bin(ctx,
-					       KMOD_INDEX_MODULES_BUILTIN_ALIAS,
-					       name, list);
-
-	kmod_list_foreach(l, *list) {
-		struct kmod_module *mod = l->data;
-		kmod_module_set_builtin(mod, true);
-	}
-
-	return ret;
-}
-
 int kmod_lookup_alias_from_builtin_file(struct kmod_ctx *ctx, const char *name,
 						struct kmod_list **list)
 {
@@ -855,7 +833,6 @@
  */
 KMOD_EXPORT int kmod_load_resources(struct kmod_ctx *ctx)
 {
-	int ret = 0;
 	size_t i;
 
 	if (ctx == NULL)
@@ -872,25 +849,17 @@
 
 		snprintf(path, sizeof(path), "%s/%s.bin", ctx->dirname,
 							index_files[i].fn);
-		ret = index_mm_open(ctx, path, &ctx->indexes_stamp[i],
-				    &ctx->indexes[i]);
-
-		/*
-		 * modules.builtin.alias are considered optional since it's
-		 * recently added and older installations may not have it;
-		 * we allow failing for any reason
-		 */
-		if (ret) {
-			if (i != KMOD_INDEX_MODULES_BUILTIN_ALIAS)
-				break;
-			ret = 0;
-		}
+		ctx->indexes[i] = index_mm_open(ctx, path,
+						&ctx->indexes_stamp[i]);
+		if (ctx->indexes[i] == NULL)
+			goto fail;
 	}
 
-	if (ret)
-		kmod_unload_resources(ctx);
+	return 0;
 
-	return ret;
+fail:
+	kmod_unload_resources(ctx);
+	return -ENOMEM;
 }
 
 /**
diff --git a/libkmod/libkmod.h b/libkmod/libkmod.h
index 3cab2e5..352627e 100644
--- a/libkmod/libkmod.h
+++ b/libkmod/libkmod.h
@@ -70,7 +70,6 @@
 	KMOD_INDEX_MODULES_DEP = 0,
 	KMOD_INDEX_MODULES_ALIAS,
 	KMOD_INDEX_MODULES_SYMBOL,
-	KMOD_INDEX_MODULES_BUILTIN_ALIAS,
 	KMOD_INDEX_MODULES_BUILTIN,
 	/* Padding to make sure enum is not mapped to char */
 	_KMOD_INDEX_PAD = 1U << 31,
diff --git a/libkmod/libkmod.pc.in b/libkmod/libkmod.pc.in
index 3acca6a..e4fdf21 100644
--- a/libkmod/libkmod.pc.in
+++ b/libkmod/libkmod.pc.in
@@ -7,5 +7,5 @@
 Description: Library to deal with kernel modules
 Version: @VERSION@
 Libs: -L${libdir} -lkmod
-Libs.private: @libzstd_LIBS@ @liblzma_LIBS@ @zlib_LIBS@
+Libs.private: @liblzma_LIBS@ @zlib_LIBS@
 Cflags: -I${includedir}
diff --git a/m4/dolt.m4 b/m4/dolt.m4
new file mode 100644
index 0000000..775a572
--- /dev/null
+++ b/m4/dolt.m4
@@ -0,0 +1,181 @@
+dnl dolt, a replacement for libtool
+dnl Copyright © 2007-2010 Josh Triplett <josh@joshtriplett.org>
+dnl Copying and distribution of this file, with or without modification,
+dnl are permitted in any medium without royalty provided the copyright
+dnl notice and this notice are preserved.
+dnl
+dnl To use dolt, invoke the DOLT macro immediately after the libtool macros.
+dnl Optionally, copy this file into acinclude.m4, to avoid the need to have it
+dnl installed when running autoconf on your project.
+
+AC_DEFUN([DOLT], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+# dolt, a replacement for libtool
+# Josh Triplett <josh@freedesktop.org>
+AC_PATH_PROG([DOLT_BASH], [bash])
+AC_MSG_CHECKING([if dolt supports this host])
+dolt_supported=yes
+AS_IF([test x$DOLT_BASH = x], [dolt_supported=no])
+AS_IF([test x$GCC != xyes], [dolt_supported=no])
+
+AS_CASE([$host],
+    [*-*-linux*|*-*-freebsd*], [pic_options='-fPIC'],
+    [*-apple-darwin*],         [pic_options='-fno-common'],
+    [*mingw*|*nacl*],          [pic_options='']
+    [*],                       [dolt_supported=no]
+)
+AS_IF([test x$dolt_supported = xno], [
+    AC_MSG_RESULT([no, falling back to libtool])
+    LTCOMPILE='$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)'
+    LTCXXCOMPILE='$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)'
+    m4_pattern_allow([AM_V_lt])
+], [
+    AC_MSG_RESULT([yes, replacing libtool])
+
+dnl Start writing out doltcompile.
+    cat <<__DOLTCOMPILE__EOF__ >doltcompile
+#!$DOLT_BASH
+__DOLTCOMPILE__EOF__
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+args=("$[]@")
+for ((arg=0; arg<${#args@<:@@@:>@}; arg++)) ; do
+    if test x"${args@<:@$arg@:>@}" = x-o ; then
+        objarg=$((arg+1))
+        break
+    fi
+done
+if test x$objarg = x ; then
+    echo 'Error: no -o on compiler command line' 1>&2
+    exit 1
+fi
+lo="${args@<:@$objarg@:>@}"
+obj="${lo%.lo}"
+if test x"$lo" = x"$obj" ; then
+    echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2
+    exit 1
+fi
+objbase="${obj##*/}"
+__DOLTCOMPILE__EOF__
+
+dnl Write out shared compilation code.
+    if test x$enable_shared = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+libobjdir="${obj%$objbase}.libs"
+if test ! -d "$libobjdir" ; then
+    mkdir_out="$(mkdir "$libobjdir" 2>&1)"
+    mkdir_ret=$?
+    if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then
+	echo "$mkdir_out" 1>&2
+        exit $mkdir_ret
+    fi
+fi
+pic_object="$libobjdir/$objbase.o"
+args@<:@$objarg@:>@="$pic_object"
+__DOLTCOMPILE__EOF__
+    cat <<__DOLTCOMPILE__EOF__ >>doltcompile
+    pic_options="$pic_options"
+    if test x\$passthrough = xtrue; then
+        pic_options=""
+    fi
+__DOLTCOMPILE__EOF__
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+"${args@<:@@@:>@}" $pic_options -DPIC || exit $?
+__DOLTCOMPILE__EOF__
+    fi
+
+dnl Write out static compilation code.
+dnl Avoid duplicate compiler output if also building shared objects.
+    if test x$enable_static = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+non_pic_object="$obj.o"
+args@<:@$objarg@:>@="$non_pic_object"
+__DOLTCOMPILE__EOF__
+        if test x$enable_shared = xyes; then
+            cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+"${args@<:@@@:>@}" >/dev/null 2>&1 || exit $?
+__DOLTCOMPILE__EOF__
+        else
+            cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+"${args@<:@@@:>@}" || exit $?
+__DOLTCOMPILE__EOF__
+        fi
+    fi
+
+dnl Write out the code to write the .lo file.
+dnl The second line of the .lo file must match "^# Generated by .*libtool"
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+{
+echo "# $lo - a libtool object file"
+echo "# Generated by doltcompile, not libtool"
+__DOLTCOMPILE__EOF__
+
+    if test x$enable_shared = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo "pic_object='.libs/${objbase}.o'"
+__DOLTCOMPILE__EOF__
+    else
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo pic_object=none
+__DOLTCOMPILE__EOF__
+    fi
+
+    if test x$enable_static = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo "non_pic_object='${objbase}.o'"
+__DOLTCOMPILE__EOF__
+    else
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo non_pic_object=none
+__DOLTCOMPILE__EOF__
+    fi
+
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+} > "$lo"
+__DOLTCOMPILE__EOF__
+
+dnl Done writing out doltcompile; substitute it for libtool compilation.
+    chmod +x doltcompile
+    LTCOMPILE='$(top_builddir)/doltcompile $(COMPILE)'
+    LTCXXCOMPILE='$(top_builddir)/doltcompile $(CXXCOMPILE)'
+
+dnl automake ignores LTCOMPILE and LTCXXCOMPILE when it has separate CFLAGS for
+dnl a target, so write out a libtool wrapper to handle that case.
+dnl Note that doltlibtool does not handle inferred tags or option arguments
+dnl without '=', because automake does not use them.
+    cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+#!$DOLT_BASH
+__DOLTLIBTOOL__EOF__
+    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
+top_builddir_slash="${0%%doltlibtool}"
+: ${top_builddir_slash:=./}
+args=()
+modeok=false
+tagok=false
+for arg in "$[]@"; do
+    case "$arg" in
+        --mode=compile) modeok=true ;;
+        --tag=CC|--tag=CXX) tagok=true ;;
+        --tag=disable-static) tagok=true ;;
+        --tag=ASM|--tag=YASM) tagok=true; passthrough=true;;
+        --silent|--quiet) ;;
+        *) args@<:@${#args[@]}@:>@="$arg" ;;
+    esac
+done
+if $modeok && $tagok ; then
+    . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
+else
+    exec ${top_builddir_slash}libtool "$[]@"
+fi
+__DOLTLIBTOOL__EOF__
+
+dnl Done writing out doltlibtool; substitute it for libtool.
+    chmod +x doltlibtool
+    LIBTOOL='$(top_builddir)/doltlibtool'
+
+DOLT_CLEANFILES="doltlibtool doltcompile"
+AC_SUBST(DOLT_CLEANFILES)
+])
+AC_SUBST(LTCOMPILE)
+AC_SUBST(LTCXXCOMPILE)
+# end dolt
+])
diff --git a/man/modules.dep.xml b/man/modules.dep.xml
index ed63369..e53293a 100644
--- a/man/modules.dep.xml
+++ b/man/modules.dep.xml
@@ -48,7 +48,7 @@
       libkmod.
     </para>
     <para>
-      Its text counterpart is located in the same directory with the name
+      Its text counterpar is located in the same directory with the name
       <filename>modules.dep</filename>. The text version is maintained only
       for easy of reading by humans and is in no way used by any kmod tool.
     </para>
diff --git a/shared/macro.h b/shared/macro.h
index b59f7dc..4fc5405 100644
--- a/shared/macro.h
+++ b/shared/macro.h
@@ -45,14 +45,9 @@
 	})
 
 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + _array_size_chk(arr))
-
 #define XSTRINGIFY(x) #x
 #define STRINGIFY(x) XSTRINGIFY(x)
 
-#define XCONCATENATE(x, y) x ## y
-#define CONCATENATE(x, y) XCONCATENATE(x, y)
-#define UNIQ(x) CONCATENATE(x, __COUNTER__)
-
 /* Temporaries for importing index handling */
 #define NOFAIL(x) (x)
 #define fatal(x...) do { } while (0)
@@ -74,3 +69,5 @@
 #define noreturn __attribute__((noreturn))
 #endif
 #endif
+
+#define UNIQ __COUNTER__
diff --git a/shared/util.c b/shared/util.c
index b487b5f..fd2028d 100644
--- a/shared/util.c
+++ b/shared/util.c
@@ -46,9 +46,6 @@
 #ifdef ENABLE_XZ
 	{".ko.xz", sizeof(".ko.xz") - 1},
 #endif
-#ifdef ENABLE_ZSTD
-	{".ko.zst", sizeof(".ko.zst") - 1},
-#endif
 	{ }
 };
 
diff --git a/testsuite/mkosi/mkosi.fedora b/testsuite/mkosi/mkosi.fedora
index 7a2ee5e..5252f87 100644
--- a/testsuite/mkosi/mkosi.fedora
+++ b/testsuite/mkosi/mkosi.fedora
@@ -19,7 +19,6 @@
 	make
 	pkgconf-pkg-config
 	xml-common
-	libzstd-devel
 	xz-devel
 	zlib-devel
 	openssl-devel
diff --git a/testsuite/module-playground/.gitignore b/testsuite/module-playground/.gitignore
index fca12f3..6767e0e 100644
--- a/testsuite/module-playground/.gitignore
+++ b/testsuite/module-playground/.gitignore
@@ -2,15 +2,11 @@
 *.ko
 !mod-simple-*.ko
 !cache/*.ko
-.cache.mk
 *.mod.c
 .tmp_versions
-*.mod
-*.a
-*.cmd
-
 modules.order
 Module.symvers
+
 mod-simple-x86_64.c
 mod-simple-i386.c
 mod-simple-sparc64.c
diff --git a/testsuite/populate-modules.sh b/testsuite/populate-modules.sh
index 358e740..5140f7a 100755
--- a/testsuite/populate-modules.sh
+++ b/testsuite/populate-modules.sh
@@ -66,11 +66,8 @@
 
 gzip_array=(
     "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/block/cciss.ko"
-    "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko"
-    )
-
-zstd_array=(
     "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko"
+    "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko"
     )
 
 attach_sha256_array=(
@@ -104,11 +101,6 @@
     gzip $ROOTFS/$m
 done
 
-# zstd-compress these modules
-for m in "${zstd_array[@]}"; do
-    zstd --rm $ROOTFS/$m
-done
-
 for m in "${attach_sha1_array[@]}"; do
     cat ${MODULE_PLAYGROUND}/dummy.sha1 >> ${ROOTFS}/$m
 done
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias
deleted file mode 100644
index ba76e18..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias
+++ /dev/null
@@ -1 +0,0 @@
-# Aliases extracted from modules themselves.
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias.bin
deleted file mode 100644
index 7075435..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias.bin
+++ /dev/null
Binary files differ
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin
deleted file mode 100644
index 1cbec61..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin
+++ /dev/null
@@ -1 +0,0 @@
-kernel/fake_builtin.ko
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.alias.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.alias.bin
deleted file mode 100644
index 7075435..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.alias.bin
+++ /dev/null
Binary files differ
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.bin
deleted file mode 100644
index 0423f03..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.bin
+++ /dev/null
Binary files differ
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep
deleted file mode 100644
index e69de29..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep
+++ /dev/null
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep.bin
deleted file mode 100644
index 7075435..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep.bin
+++ /dev/null
Binary files differ
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.devname b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.devname
deleted file mode 100644
index 58f6d6d..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.devname
+++ /dev/null
@@ -1 +0,0 @@
-# Device nodes to trigger on-demand module loading.
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.softdep b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.softdep
deleted file mode 100644
index 5554ccc..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.softdep
+++ /dev/null
@@ -1 +0,0 @@
-# Soft dependencies extracted from modules themselves.
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols
deleted file mode 100644
index 618c345..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols
+++ /dev/null
@@ -1 +0,0 @@
-# Aliases for symbols, used by symbol_request().
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols.bin
deleted file mode 100644
index 7075435..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols.bin
+++ /dev/null
Binary files differ
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.alias b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.alias
deleted file mode 100644
index ba76e18..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.alias
+++ /dev/null
@@ -1 +0,0 @@
-# Aliases extracted from modules themselves.
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.alias.bin b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.alias.bin
deleted file mode 100644
index 7075435..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.alias.bin
+++ /dev/null
Binary files differ
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.builtin b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.builtin
deleted file mode 100644
index 1cbec61..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.builtin
+++ /dev/null
@@ -1 +0,0 @@
-kernel/fake_builtin.ko
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.builtin.bin b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.builtin.bin
deleted file mode 100644
index 0423f03..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.builtin.bin
+++ /dev/null
Binary files differ
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.dep b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.dep
deleted file mode 100644
index e69de29..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.dep
+++ /dev/null
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.dep.bin b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.dep.bin
deleted file mode 100644
index 7075435..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.dep.bin
+++ /dev/null
Binary files differ
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.devname b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.devname
deleted file mode 100644
index 58f6d6d..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.devname
+++ /dev/null
@@ -1 +0,0 @@
-# Device nodes to trigger on-demand module loading.
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.softdep b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.softdep
deleted file mode 100644
index 5554ccc..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.softdep
+++ /dev/null
@@ -1 +0,0 @@
-# Soft dependencies extracted from modules themselves.
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.symbols b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.symbols
deleted file mode 100644
index 618c345..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.symbols
+++ /dev/null
@@ -1 +0,0 @@
-# Aliases for symbols, used by symbol_request().
diff --git a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.symbols.bin b/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.symbols.bin
deleted file mode 100644
index 7075435..0000000
--- a/testsuite/rootfs-pristine/test-init-load-resources/lib/modules/5.6.0/modules.symbols.bin
+++ /dev/null
Binary files differ
diff --git a/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/correct.txt b/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/correct.txt
deleted file mode 100644
index 7a087ef..0000000
--- a/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/correct.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-options psmouse foo=2
-options psmouse bar=1
-options psmouse zinga=test
-
-# End of configuration files. Dumping indexes now:
-
diff --git a/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/proc/cmdline b/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/proc/cmdline
deleted file mode 100644
index 14bbd2e..0000000
--- a/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/proc/cmdline
+++ /dev/null
@@ -1 +0,0 @@
-psmouse.foo=2 ivrs_acpihid[14:00.5]=AMD0020:00 psmouse.bar=1 psmouse.zinga=test
diff --git a/testsuite/test-init.c b/testsuite/test-init.c
index edbfc23..9651280 100644
--- a/testsuite/test-init.c
+++ b/testsuite/test-init.c
@@ -29,44 +29,6 @@
 
 #include "testsuite.h"
 
-static noreturn int test_load_resources(const struct test *t)
-{
-	struct kmod_ctx *ctx;
-	const char *null_config = NULL;
-	int err;
-
-	ctx = kmod_new(NULL, &null_config);
-	if (ctx == NULL)
-		exit(EXIT_FAILURE);
-
-	kmod_set_log_priority(ctx, 7);
-
-	err = kmod_load_resources(ctx);
-	if (err != 0) {
-		ERR("could not load libkmod resources: %s\n", strerror(-err));
-		exit(EXIT_FAILURE);
-	}
-
-	kmod_unref(ctx);
-
-	exit(EXIT_SUCCESS);
-}
-DEFINE_TEST(test_load_resources,
-	    .description = "test if kmod_load_resources works (recent modprobe on kernel without modules.builtin.modinfo)",
-	    .config = {
-		[TC_ROOTFS] = TESTSUITE_ROOTFS "test-init-load-resources/",
-		[TC_UNAME_R] = "5.6.0",
-	    },
-	    .need_spawn = true);
-
-DEFINE_TEST(test_load_resources,
-	    .description = "test if kmod_load_resources works with empty modules.builtin.aliases.bin (recent depmod on kernel without modules.builtin.modinfo)",
-	    .config = {
-		[TC_ROOTFS] = TESTSUITE_ROOTFS "test-init-load-resources-empty-builtin-aliases-bin/",
-		[TC_UNAME_R] = "5.6.0",
-	    },
-	    .need_spawn = true);
-
 static noreturn int test_initlib(const struct test *t)
 {
 	struct kmod_ctx *ctx;
diff --git a/testsuite/test-modprobe.c b/testsuite/test-modprobe.c
index f908d56..1cace82 100644
--- a/testsuite/test-modprobe.c
+++ b/testsuite/test-modprobe.c
@@ -328,31 +328,6 @@
 	);
 
 
-static noreturn int modprobe_param_kcmdline6(const struct test *t)
-{
-	const char *progname = ABS_TOP_BUILDDIR "/tools/modprobe";
-	const char *const args[] = {
-		progname,
-		"-c",
-		NULL,
-	};
-
-	test_spawn_prog(progname, args);
-	exit(EXIT_FAILURE);
-}
-DEFINE_TEST(modprobe_param_kcmdline6,
-	.description = "check if dots on other parts of kcmdline don't confuse our parser",
-	.config = {
-		[TC_UNAME_R] = "4.4.4",
-		[TC_ROOTFS] = TESTSUITE_ROOTFS "test-modprobe/module-param-kcmdline6",
-	},
-	.output = {
-		.out = TESTSUITE_ROOTFS "test-modprobe/module-param-kcmdline6/correct.txt",
-	},
-	.modules_loaded = "",
-	);
-
-
 static noreturn int modprobe_force(const struct test *t)
 {
 	const char *progname = ABS_TOP_BUILDDIR "/tools/modprobe";
diff --git a/testsuite/test-util.c b/testsuite/test-util.c
index 621446b..5e25e58 100644
--- a/testsuite/test-util.c
+++ b/testsuite/test-util.c
@@ -157,9 +157,6 @@
 #ifdef ENABLE_XZ
 		{ "/bla.ko.xz", true },
 #endif
-#ifdef ENABLE_ZSTD
-		{ "/bla.ko.zst", true },
-#endif
 		{ "/bla.ko.x", false },
 		{ "/bla.ko.", false },
 		{ "/bla.koz", false },
diff --git a/testsuite/testsuite.h b/testsuite/testsuite.h
index f190249..7ed96bf 100644
--- a/testsuite/testsuite.h
+++ b/testsuite/testsuite.h
@@ -139,7 +139,7 @@
 
 /* Test definitions */
 #define DEFINE_TEST(_name, ...) \
-	static const struct test UNIQ(s##_name) \
+	static const struct test s##_name##UNIQ \
 	__attribute__((used, section("kmod_tests"), aligned(8))) = { \
 		.name = #_name, \
 		.func = _name, \
diff --git a/tools/depmod.c b/tools/depmod.c
index 3f31cdf..391afe9 100644
--- a/tools/depmod.c
+++ b/tools/depmod.c
@@ -2402,71 +2402,6 @@
 	return 0;
 }
 
-static int output_builtin_alias_bin(struct depmod *depmod, FILE *out)
-{
-	int ret = 0, count = 0;
-	struct index_node *idx;
-	struct kmod_list *l, *builtin = NULL;
-
-	if (out == stdout)
-		return 0;
-
-	idx = index_create();
-	if (idx == NULL)
-		return -ENOMEM;
-
-	ret = kmod_module_get_builtin(depmod->ctx, &builtin);
-	if (ret < 0) {
-		if (ret == -ENOENT)
-			ret = 0;
-		goto out;
-	}
-
-	kmod_list_foreach(l, builtin) {
-		struct kmod_list *ll, *info_list = NULL;
-		struct kmod_module *mod = l->data;
-		const char *modname = kmod_module_get_name(mod);
-
-		ret = kmod_module_get_info(mod, &info_list);
-		if (ret < 0)
-			goto out;
-
-		kmod_list_foreach(ll, info_list) {
-			char alias[PATH_MAX];
-			const char *key = kmod_module_info_get_key(ll);
-			const char *value = kmod_module_info_get_value(ll);
-
-			if (!streq(key, "alias"))
-				continue;
-
-			alias[0] = '\0';
-			if (alias_normalize(value, alias, NULL) < 0) {
-				WRN("Unmatched bracket in %s\n", value);
-				continue;
-			}
-
-			index_insert(idx, alias, modname, 0);
-		}
-
-		kmod_module_info_free_list(info_list);
-
-		index_insert(idx, modname, modname, 0);
-		count++;
-	}
-
-out:
-	/* do not bother writing the index if we are going to discard it */
-	if (!ret)
-		index_write(idx, out);
-
-	if (builtin)
-		kmod_module_unref_list(builtin);
-
-	index_destroy(idx);
-
-	return ret;
-}
-
 static int depmod_output(struct depmod *depmod, FILE *out)
 {
 	static const struct depfile {
@@ -2481,7 +2416,6 @@
 		{ "modules.symbols", output_symbols },
 		{ "modules.symbols.bin", output_symbols_bin },
 		{ "modules.builtin.bin", output_builtin_bin },
-		{ "modules.builtin.alias.bin", output_builtin_alias_bin },
 		{ "modules.devname", output_devname },
 		{ }
 	};
diff --git a/tools/modinfo.c b/tools/modinfo.c
index 0231bb0..86ac04b 100644
--- a/tools/modinfo.c
+++ b/tools/modinfo.c
@@ -172,33 +172,18 @@
 {
 	struct kmod_list *l, *list = NULL;
 	struct param *params = NULL;
-	int err, is_builtin;
-	const char *filename = kmod_module_get_path(mod);
-
-	is_builtin = (filename == NULL);
-
-	if (is_builtin) {
-		printf("%-16s%s%c", "name:", kmod_module_get_name(mod), separator);
-		filename = "(builtin)";
-	}
+	int err;
 
 	if (field != NULL && streq(field, "filename")) {
-		printf("%s%c", filename, separator);
+		printf("%s%c", kmod_module_get_path(mod), separator);
 		return 0;
 	} else if (field == NULL) {
 		printf("%-16s%s%c", "filename:",
-		       filename, separator);
+		       kmod_module_get_path(mod), separator);
 	}
 
 	err = kmod_module_get_info(mod, &list);
 	if (err < 0) {
-		if (is_builtin && err == -ENOENT) {
-			/*
-			 * This is an old kernel that does not have a file
-			 * with information about built-in modules.
-			 */
-			return 0;
-		}
 		ERR("could not get modinfo from '%s': %s\n",
 			kmod_module_get_name(mod), strerror(-err));
 		return err;
@@ -291,7 +276,7 @@
 
 static int modinfo_alias_do(struct kmod_ctx *ctx, const char *alias)
 {
-	struct kmod_list *l, *list = NULL;
+	struct kmod_list *l, *filtered, *list = NULL;
 	int err = kmod_module_new_from_lookup(ctx, alias, &list);
 	if (err < 0) {
 		ERR("Module alias %s not found.\n", alias);
@@ -303,14 +288,26 @@
 		return -ENOENT;
 	}
 
-	kmod_list_foreach(l, list) {
+	err = kmod_module_apply_filter(ctx, KMOD_FILTER_BUILTIN, list, &filtered);
+	kmod_module_unref_list(list);
+	if (err < 0) {
+		ERR("Failed to filter list: %m\n");
+		return err;
+	}
+
+	if (filtered == NULL) {
+		ERR("Module %s not found.\n", alias);
+		return -ENOENT;
+	}
+
+	kmod_list_foreach(l, filtered) {
 		struct kmod_module *mod = kmod_module_get_module(l);
 		int r = modinfo_do(mod);
 		kmod_module_unref(mod);
 		if (r < 0)
 			err = r;
 	}
-	kmod_module_unref_list(list);
+	kmod_module_unref_list(filtered);
 	return err;
 }
 
diff --git a/tools/modprobe.c b/tools/modprobe.c
index 9387537..a9e2331 100644
--- a/tools/modprobe.c
+++ b/tools/modprobe.c
@@ -353,9 +353,7 @@
 	return err;
 }
 
-#define RMMOD_FLAG_DO_DEPENDENCIES	0x1
-#define RMMOD_FLAG_IGNORE_BUILTIN	0x2
-static int rmmod_do_module(struct kmod_module *mod, int flags);
+static int rmmod_do_module(struct kmod_module *mod, bool do_dependencies);
 
 static int rmmod_do_deps_list(struct kmod_list *list, bool stop_on_errors)
 {
@@ -363,7 +361,7 @@
 
 	kmod_list_foreach_reverse(l, list) {
 		struct kmod_module *m = kmod_module_get_module(l);
-		int r = rmmod_do_module(m, RMMOD_FLAG_IGNORE_BUILTIN);
+		int r = rmmod_do_module(m, false);
 		kmod_module_unref(m);
 
 		if (r < 0 && stop_on_errors)
@@ -373,7 +371,7 @@
 	return 0;
 }
 
-static int rmmod_do_module(struct kmod_module *mod, int flags)
+static int rmmod_do_module(struct kmod_module *mod, bool do_dependencies)
 {
 	const char *modname = kmod_module_get_name(mod);
 	struct kmod_list *pre = NULL, *post = NULL;
@@ -403,19 +401,15 @@
 			}
 			goto error;
 		} else if (state == KMOD_MODULE_BUILTIN) {
-			if (flags & RMMOD_FLAG_IGNORE_BUILTIN) {
-				err = 0;
-			} else {
-				LOG("Module %s is builtin.\n", modname);
-				err = -ENOENT;
-			}
+			LOG("Module %s is builtin.\n", modname);
+			err = -ENOENT;
 			goto error;
 		}
 	}
 
 	rmmod_do_deps_list(post, false);
 
-	if ((flags & RMMOD_FLAG_DO_DEPENDENCIES) && remove_dependencies) {
+	if (do_dependencies && remove_dependencies) {
 		struct kmod_list *deps = kmod_module_get_dependencies(mod);
 
 		err = rmmod_do_deps_list(deps, true);
@@ -468,7 +462,7 @@
 
 	kmod_list_foreach(l, list) {
 		struct kmod_module *mod = kmod_module_get_module(l);
-		err = rmmod_do_module(mod, RMMOD_FLAG_DO_DEPENDENCIES);
+		err = rmmod_do_module(mod, true);
 		kmod_module_unref(mod);
 		if (err < 0)
 			break;
diff --git a/tools/remove.c b/tools/remove.c
index 387ef0e..07e2cc0 100644
--- a/tools/remove.c
+++ b/tools/remove.c
@@ -44,7 +44,7 @@
 
 static int check_module_inuse(struct kmod_module *mod) {
 	struct kmod_list *holders;
-	int state, ret;
+	int state;
 
 	state = kmod_module_get_initstate(mod);
 
@@ -74,15 +74,12 @@
 		return -EBUSY;
 	}
 
-	ret = kmod_module_get_refcnt(mod);
-	if (ret > 0) {
+	if (kmod_module_get_refcnt(mod) != 0) {
 		ERR("Module %s is in use\n", kmod_module_get_name(mod));
 		return -EBUSY;
-	} else if (ret == -ENOENT) {
-		ERR("Module unloading is not supported\n");
 	}
 
-	return ret;
+	return 0;
 }
 
 static int do_remove(int argc, char *argv[])
diff --git a/tools/rmmod.c b/tools/rmmod.c
index 3942e7b..bcdea4c 100644
--- a/tools/rmmod.c
+++ b/tools/rmmod.c
@@ -63,7 +63,7 @@
 
 static int check_module_inuse(struct kmod_module *mod) {
 	struct kmod_list *holders;
-	int state, ret;
+	int state;
 
 	state = kmod_module_get_initstate(mod);
 
@@ -93,15 +93,12 @@
 		return -EBUSY;
 	}
 
-	ret = kmod_module_get_refcnt(mod);
-	if (ret > 0) {
+	if (kmod_module_get_refcnt(mod) != 0) {
 		ERR("Module %s is in use\n", kmod_module_get_name(mod));
 		return -EBUSY;
-	} else if (ret == -ENOENT) {
-		ERR("Module unloading is not supported\n");
 	}
 
-	return ret;
+	return 0;
 }
 
 static int do_rmmod(int argc, char *argv[])
