git: e8fc8eb8b8f5 - main - msi_release(): consistently unlock msi_lock around iommu_unmap_msi_intr()

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Wed, 04 Sep 2024 21:50:57 UTC
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=e8fc8eb8b8f55072379f65f5f058b81870031b7d

commit e8fc8eb8b8f55072379f65f5f058b81870031b7d
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2024-08-27 02:28:49 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2024-09-04 21:50:20 +0000

    msi_release(): consistently unlock msi_lock around iommu_unmap_msi_intr()
    
    Sponsored by:   Advanced Micro Devices (AMD)
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
---
 sys/x86/x86/msi.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sys/x86/x86/msi.c b/sys/x86/x86/msi.c
index 177bd7868ec4..c8e7db9469ed 100644
--- a/sys/x86/x86/msi.c
+++ b/sys/x86/x86/msi.c
@@ -555,7 +555,9 @@ msi_release(int *irqs, int count)
 		KASSERT(msi->msi_first == first, ("message not in group"));
 		KASSERT(msi->msi_dev == first->msi_dev, ("owner mismatch"));
 #ifdef IOMMU
+		mtx_unlock(&msi_lock);
 		iommu_unmap_msi_intr(first->msi_dev, msi->msi_remap_cookie);
+		mtx_lock(&msi_lock);
 #endif
 		msi->msi_first = NULL;
 		msi->msi_dev = NULL;