diff --git a/sys-apps/pciutils/Manifest b/sys-apps/pciutils/Manifest
index c0806c4..af496ac 100644
--- a/sys-apps/pciutils/Manifest
+++ b/sys-apps/pciutils/Manifest
@@ -1,3 +1 @@
-DIST pciutils-3.10.0.tar.gz 931711 BLAKE2B 2e1255eb5508c9d1339f5bc772c2592a03cae4d8d097e8939748c9bb5d5d949be53d705d1b7d903f7ea88b2abeea91e39de16e39d2f46f0a1f62f8a9e32c6faa SHA512 3da1af4af8b0fa3cf4d3f06095524e25dc292182beec10aa2c16c5c6ba751fe469d0e7f54e43413b6f3f5bcdbd1fba3c66df1d8e39d2e1962ae36a2d9c06238e
-DIST pciutils-3.8.0.tar.gz 575255 BLAKE2B 7339189f7115af31ccc19663d54e12ef966fbcd75c6b6b4c28c8ddcaafa3e233313ca14300ef70100edb00f5f2e1e767af9d6527a9d836edd07b598f0a40f4f4 SHA512 4b0de02a54c6ed19d5ea85a01d89a62386000bc0f816498872479aba26fb007a8c394cba3f95e77a7ffe52d36ad2726169b7b83bda5ab0647f00e49d8a34bf15
-DIST pciutils-3.9.0.tar.gz 908219 BLAKE2B 59d2a151b114691980b8f0a0bfdf8e48b9e1a0a9976df6dbc94962c251d8bfc61e7bd3b0f3c47a4295f52b5df67ad0e44ed6f2e6a87728e213e4ef0b8a55c028 SHA512 e17225c2adcc21c9ff4253998aec5805ae5e031888fa01841a1ff680796f7515f9dd6e5c2e0588edba854f66f1268ba8e28ae1a2f794574e715fec8a8c8def4f
+DIST pciutils-3.7.0.tar.gz 516418 BLAKE2B fca6720cff73ec20559c666c76fdcd3b59cdf0e33e2c3894a82590d77c5d51cf22e667fe65d9f66a248a624c2b9c868f6e9b69f45f4b6d704b637afe55041e6a SHA512 8a8fb9dc44a8dd31f80e45a48f6693452c11d343b9dfed87dd5cea6846f38d001f294e4010cd7c0545e238fde45b0e9a8e88c67a43d80676a585336e3665a631
diff --git a/sys-apps/pciutils/files/pciutils-3.1.9-static-pc.patch b/sys-apps/pciutils/files/pciutils-3.1.9-static-pc.patch
new file mode 100644
index 0000000..9e63b7e
--- /dev/null
+++ b/sys-apps/pciutils/files/pciutils-3.1.9-static-pc.patch
@@ -0,0 +1,13 @@
+make sure all lib entries get into libs.private in the .pc file
+
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -61,7 +61,7 @@ $(PCILIBPC): libpci.pc.in
+ 		-e 's,@LIBDIR@,$(LIBDIR),' \
+ 		-e 's,@IDSDIR@,$(IDSDIR),' \
+ 		-e 's,@VERSION@,$(VERSION),' \
+-		-e 's,@LDLIBS@,$(LDLIBS),'
++		-e 's,@LDLIBS@,$(LDLIBS) $(LIB_LDLIBS),'
+ 
+ init.o: init.c $(INCL)
+ access.o: access.c $(INCL)
diff --git a/sys-apps/pciutils/files/pciutils-3.8.0-no-which.patch b/sys-apps/pciutils/files/pciutils-3.8.0-no-which.patch
deleted file mode 100644
index 3024d73..0000000
--- a/sys-apps/pciutils/files/pciutils-3.8.0-no-which.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-https://github.com/pciutils/pciutils/pull/105
-
-From 91bf24dd3c91f826377548b7e164b49cfed56f9a Mon Sep 17 00:00:00 2001
-From: Sam James <sam@gentoo.org>
-Date: Sun, 19 Jun 2022 23:52:22 +0100
-Subject: [PATCH 1/2] lib/configure: drop usage of which
-
-'which' is not required by POSIX and is an external command which may not be
-available, and 'command -v' does the job just fine.
-
-Debian and Gentoo at least are both making efforts to drop which from
-their base system package list.
-
-Signed-off-by: Sam James <sam@gentoo.org>
---- a/lib/configure
-+++ b/lib/configure
-@@ -238,7 +238,7 @@ if [ "$sys" = linux ] ; then
- 		PKG_CONFIG=pkg-config
- 	fi
- 	if [ "$LIBKMOD" != no ] ; then
--		if ! which $PKG_CONFIG >/dev/null ; then
-+		if ! command -v $PKG_CONFIG >/dev/null ; then
- 			echo_n "($PKG_CONFIG not found) "
- 		elif $PKG_CONFIG libkmod ; then
- 			LIBKMOD_DETECTED=1
-@@ -268,7 +268,7 @@ if [ "$sys" = linux ] ; then
- 	if [ "$HWDB" = yes -o "$HWDB" = no ] ; then
- 		echo "$HWDB (set manually)"
- 	else
--		if `which pkg-config >/dev/null && pkg-config --atleast-version=196 libudev` ; then
-+		if `command -v pkg-config >/dev/null && pkg-config --atleast-version=196 libudev` ; then
- 			HWDB=yes
- 		else
- 			HWDB=no
diff --git a/sys-apps/pciutils/files/pciutils-3.8.0-pkg-config.patch b/sys-apps/pciutils/files/pciutils-3.8.0-pkg-config.patch
deleted file mode 100644
index 4630609..0000000
--- a/sys-apps/pciutils/files/pciutils-3.8.0-pkg-config.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-https://github.com/pciutils/pciutils/pull/105
-
-From a74832198ab36683a867c79b3d6ef2cac9baad55 Mon Sep 17 00:00:00 2001
-From: Sam James <sam@gentoo.org>
-Date: Sun, 19 Jun 2022 23:53:42 +0100
-Subject: [PATCH 2/2] lib/configure: respect $PKG_CONFIG completely
-
-Signed-off-by: Sam James <sam@gentoo.org>
---- a/lib/configure
-+++ b/lib/configure
-@@ -268,7 +268,7 @@ if [ "$sys" = linux ] ; then
- 	if [ "$HWDB" = yes -o "$HWDB" = no ] ; then
- 		echo "$HWDB (set manually)"
- 	else
--		if `command -v pkg-config >/dev/null && pkg-config --atleast-version=196 libudev` ; then
-+		if `command -v $PKG_CONFIG >/dev/null && $PKG_CONFIG --atleast-version=196 libudev` ; then
- 			HWDB=yes
- 		else
- 			HWDB=no
diff --git a/sys-apps/pciutils/metadata.xml b/sys-apps/pciutils/metadata.xml
index 708b18c..c6961f2 100644
--- a/sys-apps/pciutils/metadata.xml
+++ b/sys-apps/pciutils/metadata.xml
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
-	<maintainer type="project">
-		<email>base-system@gentoo.org</email>
-		<name>Gentoo Base System</name>
-	</maintainer>
-	<use>
-		<flag name="dns">Enable support for querying the central database of PCI IDs using DNS</flag>
-		<flag name="kmod">Enable <pkg>sys-apps/kmod</pkg> support for the -k switch in lspci command</flag>
-		<flag name="zlib">Support compressed pci.ids database</flag>
-	</use>
-	<upstream>
-		<remote-id type="github">pciutils/pciutils</remote-id>
-	</upstream>
+<maintainer type="project">
+	<email>base-system@gentoo.org</email>
+	<name>Gentoo Base System</name>
+</maintainer>
+<use>
+	<flag name="dns">Enable support for querying the central database of PCI IDs using DNS</flag>
+	<flag name="kmod">Enable <pkg>sys-apps/kmod</pkg> support for the -k switch in lspci command</flag>
+	<flag name="zlib">Support compressed pci.ids database</flag>
+</use>
 </pkgmetadata>
diff --git a/sys-apps/pciutils/pciutils-3.10.0.ebuild b/sys-apps/pciutils/pciutils-3.10.0.ebuild
deleted file mode 100644
index 0dd9a47..0000000
--- a/sys-apps/pciutils/pciutils-3.10.0.ebuild
+++ /dev/null
@@ -1,174 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit toolchain-funcs multilib-minimal flag-o-matic
-
-DESCRIPTION="Various utilities dealing with the PCI bus"
-HOMEPAGE="https://mj.ucw.cz/sw/pciutils/ https://git.kernel.org/?p=utils/pciutils/pciutils.git"
-SRC_URI="https://mj.ucw.cz/download/linux/pci/${P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="dns +kmod static-libs +udev zlib"
-REQUIRED_USE="static-libs? ( !udev )"
-
-# Have the sub-libs in RDEPEND with [static-libs] since, logically,
-# our libpci.a depends on libz.a/etc... at runtime.
-LIB_DEPEND="zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+),${MULTILIB_USEDEP}] )"
-DEPEND="
-	kmod? ( sys-apps/kmod )
-	udev? ( >=virtual/libudev-208[${MULTILIB_USEDEP}] )
-	static-libs? ( ${LIB_DEPEND} )
-	!static-libs? ( ${LIB_DEPEND//static-libs([+-]),} )
-"
-RDEPEND="
-	${DEPEND}
-	sys-apps/hwdata
-"
-# See bug #847133 re binutils check
-BDEPEND="
-	|| ( >=sys-devel/binutils-2.37:* sys-devel/lld sys-devel/native-cctools )
-	kmod? ( virtual/pkgconfig )
-"
-
-MULTILIB_WRAPPED_HEADERS=( /usr/include/pci/config.h )
-
-switch_config() {
-	[[ $# -ne 2 ]] && return 1
-	local opt=$1 val=$2
-
-	sed "s@^\(${opt}=\).*\$@\1${val}@" -i Makefile || die
-	return 0
-}
-
-check_binutils_version() {
-	if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && ! tc-ld-is-gold && ! tc-ld-is-lld ; then
-		# Okay, hopefully it's Binutils' bfd.
-		# bug #847133
-
-		# Convert this:
-		# ```
-		# GNU ld (Gentoo 2.38 p4) 2.38
-		# Copyright (C) 2022 Free Software Foundation, Inc.
-		# This program is free software; you may redistribute it under the terms of
-		# the GNU General Public License version 3 or (at your option) a later version.
-		# This program has absolutely no warranty.
-		# ```
-		#
-		# into...
-		# ```
-		# 2.38
-		# ```
-		local ver=$($(tc-getLD) --version 2>&1 | head -n 1 | rev | cut -d' ' -f1 | rev)
-
-		if ! [[ ${ver} =~ [0-9].[0-9][0-9] ]] ; then
-			# Skip if unrecognised format so we don't pass something
-			# odd into ver_cut.
-			return
-		fi
-
-		ver_major=$(ver_cut 1 "${ver}")
-		ver_minor=$(ver_cut 2 "${ver}")
-
-		# We use 2.37 here, not 2.35, as https://github.com/pciutils/pciutils/issues/98 mentions
-		# because we've had other miscompiles with older Binutils (not just build failures!)
-		# and we don't want people running any unsupported versions of Binutils. An example
-		# of this is where glibc is completely broken with old binutils: bug #802036. It's
-		# just not sustainable to support.
-		if [[ ${ver_major} -eq 2 && ${ver_minor} -lt 37 ]] ; then
-			eerror "Old version of binutils activated! ${P} cannot be built with an old version."
-			eerror "Please follow these steps:"
-			eerror "1. Select a newer binutils (>= 2.37) using binutils-config"
-			eerror " (If no such version is installed, run emerge -v1 sys-devel/binutils)"
-			eerror "2. Run: . /etc/profile"
-			eerror "3. Try emerging again with: emerge -v1 ${CATEGORY}/${P}"
-			eerror "4. Complete your world upgrade if you were performing one."
-			eerror "5. Perform a depclean (emerge -acv)"
-			eerror "\tYou MUST depclean after every world upgrade in future!"
-			die "Old binutils found! Change to a newer ld using binutils-config (bug #847133)."
-		fi
-	fi
-}
-
-pkg_pretend() {
-	[[ ${MERGE_TYPE} != binary ]] && check_binutils_version
-}
-
-pkg_setup() {
-	[[ ${MERGE_TYPE} != binary ]] && check_binutils_version
-}
-
-src_prepare() {
-	default
-
-	if use static-libs ; then
-		cp -pPR "${S}" "${S}.static" || die
-		mv "${S}.static" "${S}/static" || die
-	fi
-
-	multilib_copy_sources
-}
-
-multilib_src_configure() {
-	# bug #640836, bug #852929
-	# Seems to be fixed in 3.10.0:
-	# https://github.com/pciutils/pciutils/commit/2d16e3a7875a9cb5abd60713bb2e39b536a7dec4
-	#filter-lto
-
-	# bug #471102
-	append-lfs-flags
-}
-
-pemake() {
-	emake \
-		HOST="${CHOST}" \
-		CROSS_COMPILE="${CHOST}-" \
-		CC="$(tc-getCC)" \
-		AR="$(tc-getAR)" \
-		PKG_CONFIG="$(tc-getPKG_CONFIG)" \
-		RANLIB="$(tc-getRANLIB)" \
-		DNS=$(usex dns) \
-		IDSDIR='$(SHAREDIR)/hwdata' \
-		MANDIR='$(SHAREDIR)/man' \
-		PREFIX="${EPREFIX}/usr" \
-		SHARED="yes" \
-		STRIP="" \
-		ZLIB=$(usex zlib) \
-		PCI_COMPRESSED_IDS=0 \
-		PCI_IDS=pci.ids \
-		LIBDIR="\${PREFIX}/$(get_libdir)" \
-		LIBKMOD=$(multilib_native_usex kmod) \
-		HWDB=$(usex udev) \
-		"$@"
-}
-
-multilib_src_compile() {
-	pemake OPT="${CFLAGS}" all
-
-	if use static-libs ; then
-		pemake \
-			-C "${BUILD_DIR}"/static \
-			OPT="${CFLAGS}" \
-			SHARED="no" \
-			lib/libpci.a
-	fi
-}
-
-multilib_src_install() {
-	pemake DESTDIR="${D}" install install-lib
-
-	use static-libs && dolib.a "${BUILD_DIR}"/static/lib/libpci.a
-}
-
-multilib_src_install_all() {
-	dodoc ChangeLog README TODO
-
-	rm "${ED}"/usr/sbin/update-pciids "${ED}"/usr/share/man/man8/update-pciids.8* || die
-	rm -r "${ED}"/usr/share/hwdata || die
-
-	newinitd "${FILESDIR}"/init.d-pciparm pciparm
-	newconfd "${FILESDIR}"/conf.d-pciparm pciparm
-}
diff --git a/sys-apps/pciutils/pciutils-3.7.0-r2.ebuild b/sys-apps/pciutils/pciutils-3.7.0-r2.ebuild
new file mode 100644
index 0000000..e1e6c1f
--- /dev/null
+++ b/sys-apps/pciutils/pciutils-3.7.0-r2.ebuild
@@ -0,0 +1,111 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit multilib toolchain-funcs multilib-minimal flag-o-matic
+
+DESCRIPTION="Various utilities dealing with the PCI bus"
+HOMEPAGE="https://mj.ucw.cz/sw/pciutils/ https://git.kernel.org/?p=utils/pciutils/pciutils.git"
+SRC_URI="https://mj.ucw.cz/download/linux/pci/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="dns +kmod static-libs +udev zlib"
+REQUIRED_USE="static-libs? ( !udev )"
+
+# Have the sub-libs in RDEPEND with [static-libs] since, logically,
+# our libpci.a depends on libz.a/etc... at runtime.
+LIB_DEPEND="
+	zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+),${MULTILIB_USEDEP}] )
+"
+DEPEND="
+	kmod? ( sys-apps/kmod )
+	udev? ( >=virtual/libudev-208[${MULTILIB_USEDEP}] )
+	static-libs? ( ${LIB_DEPEND} )
+	!static-libs? ( ${LIB_DEPEND//static-libs([+-]),} )
+"
+RDEPEND="
+	${DEPEND}
+	sys-apps/hwdata
+"
+BDEPEND="kmod? ( virtual/pkgconfig )"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-3.1.9-static-pc.patch
+)
+
+MULTILIB_WRAPPED_HEADERS=( /usr/include/pci/config.h )
+
+switch_config() {
+	[[ $# -ne 2 ]] && return 1
+	local opt=$1 val=$2
+
+	sed "s@^\(${opt}=\).*\$@\1${val}@" -i Makefile || die
+	return 0
+}
+
+src_prepare() {
+	default
+
+	if use static-libs ; then
+		cp -pPR "${S}" "${S}.static" || die
+		mv "${S}.static" "${S}/static" || die
+	fi
+
+	multilib_copy_sources
+}
+
+multilib_src_configure() {
+	append-lfs-flags #471102
+}
+
+pemake() {
+	emake \
+		HOST="${CHOST}" \
+		CROSS_COMPILE="${CHOST}-" \
+		CC="$(tc-getCC)" \
+		AR="$(tc-getAR)" \
+		PKG_CONFIG="$(tc-getPKG_CONFIG)" \
+		RANLIB="$(tc-getRANLIB)" \
+		DNS=$(usex dns) \
+		IDSDIR='$(SHAREDIR)/hwdata' \
+		MANDIR='$(SHAREDIR)/man' \
+		PREFIX="${EPREFIX}/usr" \
+		SHARED="yes" \
+		STRIP="" \
+		ZLIB=$(usex zlib) \
+		PCI_COMPRESSED_IDS=0 \
+		PCI_IDS=pci.ids \
+		LIBDIR="\${PREFIX}/$(get_libdir)" \
+		LIBKMOD=$(multilib_native_usex kmod) \
+		HWDB=$(usex udev) \
+		"$@"
+}
+
+multilib_src_compile() {
+	pemake OPT="${CFLAGS}" all
+	if use static-libs ; then
+		pemake \
+			-C "${BUILD_DIR}/static" \
+			OPT="${CFLAGS}" \
+			SHARED="no" \
+			lib/libpci.a
+	fi
+}
+
+multilib_src_install() {
+	pemake DESTDIR="${D}" install install-lib
+	use static-libs && dolib.a "${BUILD_DIR}/static/lib/libpci.a"
+}
+
+multilib_src_install_all() {
+	dodoc ChangeLog README TODO
+
+	rm "${ED}"/usr/sbin/update-pciids "${ED}"/usr/share/man/man8/update-pciids.8* || die
+	rm -r "${ED}"/usr/share/hwdata || die
+
+	newinitd "${FILESDIR}"/init.d-pciparm pciparm
+	newconfd "${FILESDIR}"/conf.d-pciparm pciparm
+}
