diff --git a/tools/pci.hpp b/tools/pci.hpp
index ae74e9d..33878c8 100644
--- a/tools/pci.hpp
+++ b/tools/pci.hpp
@@ -49,8 +49,7 @@
     virtual ~PciAccessBridge();
 
     virtual void write(const stdplus::span<const std::uint8_t> data) override;
-    virtual void
-        configure(const ipmi_flash::PciConfigResponse& configResp) override{};
+    virtual void configure(const ipmi_flash::PciConfigResponse&) override{};
 
     std::size_t getDataLength() override
     {
@@ -102,7 +101,7 @@
     static constexpr int bar = 0;
     static constexpr struct pci_id_match match
     {
-        vid, did, PCI_MATCH_ANY, PCI_MATCH_ANY
+        vid, did, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0
     };
 
     static constexpr pciaddr_t bridge = 0x04;
@@ -142,7 +141,7 @@
     static constexpr int bar = 1;
     static constexpr struct pci_id_match match
     {
-        vid, did, PCI_MATCH_ANY, PCI_MATCH_ANY
+        vid, did, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0
     };
 
     static constexpr std::size_t config = 0x0f000;
diff --git a/tools/test/tools_bt_unittest.cpp b/tools/test/tools_bt_unittest.cpp
index a5fab59..2ff5231 100644
--- a/tools/test/tools_bt_unittest.cpp
+++ b/tools/test/tools_bt_unittest.cpp
@@ -57,7 +57,7 @@
     EXPECT_CALL(progMock, start(fakeFileSize));
 
     EXPECT_CALL(sysMock, read(fd, NotNull(), _))
-        .WillOnce(Invoke([&](int fd, void* buf, std::size_t count) {
+        .WillOnce(Invoke([&](int, void* buf, std::size_t count) {
             EXPECT_TRUE(count > bytes.size());
             std::memcpy(buf, bytes.data(), bytes.size());
             return bytes.size();
@@ -110,7 +110,7 @@
     EXPECT_CALL(progMock, start(fakeFileSize));
 
     EXPECT_CALL(sysMock, read(fd, NotNull(), _))
-        .WillOnce(Invoke([&](int fd, void* buf, std::size_t count) {
+        .WillOnce(Invoke([&](int, void* buf, std::size_t count) {
             EXPECT_TRUE(count > bytes.size());
             std::memcpy(buf, bytes.data(), bytes.size());
             return bytes.size();
diff --git a/tools/test/tools_lpc_unittest.cpp b/tools/test/tools_lpc_unittest.cpp
index 7699609..b180df5 100644
--- a/tools/test/tools_lpc_unittest.cpp
+++ b/tools/test/tools_lpc_unittest.cpp
@@ -62,7 +62,7 @@
         .WillOnce(Return(0));
 
     EXPECT_CALL(ioMock, write(_, data.size(), _))
-        .WillOnce(Invoke([&data](const std::size_t, const std::size_t length,
+        .WillOnce(Invoke([&data](const std::size_t, const std::size_t,
                                  const void* const source) {
             EXPECT_THAT(std::memcmp(source, data.data(), data.size()), 0);
             return true;
diff --git a/tools/test/tools_pci_unittest.cpp b/tools/test/tools_pci_unittest.cpp
index 6906851..ca6b7ab 100644
--- a/tools/test/tools_pci_unittest.cpp
+++ b/tools/test/tools_pci_unittest.cpp
@@ -69,8 +69,7 @@
     virtual ~Device() = default;
     virtual const struct pci_id_match* getMatch() const = 0;
     virtual struct pci_device getDevice() const = 0;
-    virtual void expectSetup(PciAccessMock& pciMock,
-                             const struct pci_device& dev) const {};
+    virtual void expectSetup(PciAccessMock&, const struct pci_device&) const {};
     virtual std::unique_ptr<PciBridgeIntf>
         getBridge(PciAccess* pci, bool skipBridgeDisable = false) const = 0;
     virtual std::string getName() const = 0;
@@ -140,7 +139,7 @@
   private:
     static constexpr struct pci_id_match match
     {
-        0x1050, 0x0750, PCI_MATCH_ANY, PCI_MATCH_ANY
+        0x1050, 0x0750, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0
     };
 };
 
@@ -187,7 +186,7 @@
   private:
     static constexpr struct pci_id_match match
     {
-        0x1a03, 0x2000, PCI_MATCH_ANY, PCI_MATCH_ANY
+        0x1a03, 0x2000, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0
     };
 };
 
