diff --git a/sources b/sources
index bbf1f48..56eb674 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (systemd-hs-255.3.tar.gz) = ef91fd510f323f08737f735820fc87cea2e0f40f858749caabfa18991b5ea7be9305a5fda6e7f12fc32f2e4a815d22cdb8a90cd463afd4462ccb8c3549bec0ea
-SHA512 (systemd-hs+fb-255.3.tar.gz) = 4daa3657e2608d544455aa9ce33d82dc7394c1793bbb6799208404d11eeb706b090e2d4c0bdb24dcc9f6b60dc6b2827f2e2fc1fc9f0c00cd397c04c2ad01d389
+SHA512 (systemd-hs-255.4.tar.gz) = a74b967bfabc7450d66d5e618f20fb08f1c17fce81da0b7bf21f8063c186d0746347265d33f32615a94eb8eb615f02e0473818df3fcde514f3a00e510d181b0b
+SHA512 (systemd-hs+fb-255.4.tar.gz) = 491f0c42168b10f427d7b98aa866ee542cca1b72b2f871ccab420a70ab104dd87f89f84c9dae56e964709248a70f930ef784729223b1fddf6aa0602c8d08f5e8
diff --git a/systemd.spec b/systemd.spec
index 39ad08c..6746c84 100644
--- a/systemd.spec
+++ b/systemd.spec
@@ -2,9 +2,9 @@
 %{?commit:%global shortcommit %(c=%{commit}; echo ${c:0:7})}
 
 %if 0%{?facebook}
-%define commit 60ba4f39786d86e81142ac863fc09674182a816a
+%define commit e7f976ec62dfd8398e4c0ac6bbaecb1ebeffc0f0
 %else
-%define commit 60ba4f39786d86e81142ac863fc09674182a816a
+%define commit e7f976ec62dfd8398e4c0ac6bbaecb1ebeffc0f0
 %endif
 
 # We ship a .pc file but don't want to have a dep on pkg-config. We
@@ -39,9 +39,9 @@
 
 Name:           systemd
 Url:            https://pagure.io/centos-sig-hyperscale/systemd
-# Allow users to specify the version and release when building the rpm by
+# Allow users to specify the version and release when building the rpm by 
 # setting the %%version_override and %%release_override macros.
-Version:        %{?version_override}%{!?version_override:255.3}
+Version:        %{?version_override}%{!?version_override:255.4}
 Release:        %{?release_override:%{release_override}%{?dist}}%{!?release_override:%autorelease}
 
 %global stable %(c="%version"; [ "$c" = "${c#*.*}" ]; echo $?)
@@ -112,11 +112,11 @@ Patch0001:      https://github.com/systemd/systemd/pull/26494.patch
 # https://bugzilla.redhat.com/show_bug.cgi?id=2251843
 Patch0491:      https://github.com/systemd/systemd/pull/30846.patch
 
+%endif
+
 # Adjust upstream config to use our shared stack
 Patch0499:      fedora-use-system-auth-in-pam-systemd-user.patch
 
-%endif
-
 %ifarch %{ix86} x86_64 aarch64
 %global want_bootloader 1
 %endif
@@ -293,6 +293,15 @@ Recommends:     libcryptsetup.so.12%{?elf_suffix}
 Recommends:     libcryptsetup.so.12(CRYPTSETUP_2.4)%{?elf_bits}
 
 %if %{with upstream}
+# Libkmod is used to load modules.
+Recommends:     libkmod.so.2%{?elf_suffix}
+# kmod_list_next, kmod_load_resources, kmod_module_get_initstate,
+# kmod_module_get_module, kmod_module_get_name, kmod_module_new_from_lookup,
+# kmod_module_probe_insert_module, kmod_module_unref, kmod_module_unref_list,
+# kmod_new, kmod_set_log_fn, kmod_unref, kmod_validate_resources
+# are part of LIBKMOD_5.
+Recommends:     libkmod.so.2(LIBKMOD_5)%{?elf_bits}
+
 Recommends:     libarchive.so.13%{?elf_suffix}
 %endif
 
@@ -382,6 +391,13 @@ Conflicts:      systemd-timesyncd < %{version}-%{release}
 Obsoletes:      systemd-timesyncd < %{version}-%{release}
 Provides:       systemd-timesyncd = %{version}-%{release}
 
+%if %{with upstream}
+# Libkmod is used to load modules. Assume that if we need udevd, we certainly
+# want to load modules, so make this into a hard dependency here.
+Requires:       libkmod.so.2%{?elf_suffix}
+Requires:       libkmod.so.2(LIBKMOD_5)%{?elf_bits}
+%endif
+
 # Recommends to replace normal Requires deps for stuff that is dlopen()ed
 # used by dissect, integritysetup, veritysetyp, growfs, repart, cryptenroll, home
 Recommends:     libcryptsetup.so.12%{?elf_suffix}
@@ -759,7 +775,7 @@ CONFIGURE_OPTS+=(
 %global _lto_cflags %nil
 %endif
 
-{ %meson "${CONFIGURE_OPTS[@]}"; }
+{ %meson "${CONFIGURE_OPTS[@]}" %{?meson_extra_configure_options} ; }
 
 %meson_build