diff --git a/libvirt-regression-input-default-bus.patch b/libvirt-regression-input-default-bus.patch
new file mode 100644
index 0000000..eb687e5
--- /dev/null
+++ b/libvirt-regression-input-default-bus.patch
@@ -0,0 +1,31 @@
+From c9056e682a8a67dc29e39eb01392fcf8ee978c31 Mon Sep 17 00:00:00 2001
+From: Jonathan Wright <jonathan@almalinux.org>
+Date: Wed, 3 Jan 2024 09:26:59 -0600
+Subject: [PATCH] conf: Restore setting default bus for input devices
+
+Prior to v9.3.0-rc1~30 we used to set default bus for <input/>
+devices, during XML parsing. In the commit this code was moved to
+a post parse callback. But somehow the line that sets the bus in
+one specific case disappeared. Bring it back.
+
+Resolves: https://gitlab.com/libvirt/libvirt/-/issues/577
+Fixes: c4bc4d3b82fbe22e03c986ca896090f481df5c10
+Signed-off-by: Jonathan Wright <jonathan@almalinux.org>
+Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
+---
+ src/conf/domain_postparse.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/conf/domain_postparse.c b/src/conf/domain_postparse.c
+index e79913b73f..ee27023f3e 100644
+--- a/src/conf/domain_postparse.c
++++ b/src/conf/domain_postparse.c
+@@ -657,6 +657,7 @@ virDomainInputDefPostParse(virDomainInputDef *input,
+             if ((input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ||
+                  input->type == VIR_DOMAIN_INPUT_TYPE_KBD) &&
+                 (ARCH_IS_X86(def->os.arch) || def->os.arch == VIR_ARCH_NONE)) {
++                    input->bus = VIR_DOMAIN_INPUT_BUS_PS2;
+             } else if (ARCH_IS_S390(def->os.arch) ||
+                        input->type == VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH) {
+                 input->bus = VIR_DOMAIN_INPUT_BUS_VIRTIO;
+-- 
diff --git a/libvirt.spec b/libvirt.spec
index 7bd1dac..c9fc8ab 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -261,7 +261,7 @@
 Summary: Library providing a simple virtualization API
 Name: libvirt
 Version: 9.10.0
-Release: 3%{?dist}
+Release: 4%{?dist}
 License: GPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND OFL-1.1
 URL: https://libvirt.org/
 
@@ -270,6 +270,10 @@ URL: https://libvirt.org/
 %endif
 Source: https://download.libvirt.org/%{?mainturl}libvirt-%{version}.tar.xz
 
+# Fix regression in default input bus
+# https://gitlab.com/libvirt/libvirt/-/issues/577
+Patch1: libvirt-regression-input-default-bus.patch
+
 Requires: libvirt-daemon = %{version}-%{release}
 Requires: libvirt-daemon-config-network = %{version}-%{release}
 Requires: libvirt-daemon-config-nwfilter = %{version}-%{release}
@@ -2554,6 +2558,9 @@ exit 0
 
 
 %changelog
+* Wed Jan 03 2024 Jonathan Wright <jonathan@almalinux.org> - 9.10.0-4
+- conf: fix regression for default input bus
+
 * Fri Dec  8 2023 Richard W.M. Jones <rjones@redhat.com> - 9.10.0-3
 - Bump and rebuild for xen 4.18.0, third attempt