From nobody Wed Sep 11 08:44:30 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4X3Yz25sYdz5W7gp; Wed, 11 Sep 2024 08:44:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4X3Yz23Zbdz41g3; Wed, 11 Sep 2024 08:44:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1726044270; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Gjp7VwbMcKrl+iuuMiOwexe1VtX47IvevKA/aFRVn0I=; b=wEavmPYGaCLttZscYOaodrWd5JBvt90GifWXOJfACgo29SE/+6kZLbSDd9kkbadPIq3mnz s6jTSv8T3G8R/NzlxRJLYbJSXbKQAm66A91p7N2U4SRLaq1dYjnorBwMfuA4nP1t4d37OC UiMK3LIpB3KpYlfpZTgB3K8NXxThFkFTI47rr2cYdjQaxH4VjeR70IaP0qiN6/w/GUd/fh JdQzAIqYXmpC8eLxQm/R7SWnP211vlOquZhV92J/E8mS/eA9vKG0omrFrHL6ldYKO8+GoL DCxj3iPyoOdeY/F/2qrsM28CGn/2QqcoXct7P+0vL0gzsbDukIlXYM5bpl/FEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1726044270; a=rsa-sha256; cv=none; b=sscjXC1ZJjgGpm/B+yWXyY0XHTPaGAVxSMVpRtC5C0XMSrYQkjxOuK+gmC+Uhaye5owfzM Tn7Cd1FNSHZeskgsXNJQk6Scw7WeCQpDbN2lS5DBtKV1jT+QaGEhYcxU+MwHZ9xZ0wSuy2 dpIJXkTnG0BxDbJ6bWvJKSvm8nwDUrPOyK3rRxk5NBLM+nyLOUlJlcoLozMSqw/2LTYHfZ ASz6UP6mEpCHa7q70y+/brjTn3A8qoTEltVZNiCdNn8/N09A/YIZIL7GA21Gk3t4+Etbf2 EFRFakHMc1hpH1AfGDS/tG5lLC+1oxJspYRb66J8Eu+GbkAocNhZhsaSd5g8WQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1726044270; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Gjp7VwbMcKrl+iuuMiOwexe1VtX47IvevKA/aFRVn0I=; b=mgqVHBi1DyhFIuv5VF9cHA6W54gbww+9MiPNQplPmodixdk/R91d44Un5a/CpJcOvw+/xH cBeetSDbm0u0WXtVo0/GF7+ihj2jvtYqgIg/W85uHUitkOpDwbdEKwEqcKI7flha2qJvJ5 LHwWS0OerfP/YpkvALXMu6kr/UF29otmXZH3S1+lCC+PrknNb+0MnUVvCIZmu6XRo87MBO KyKPMoPAYwcePQ+XEsHlAKvIrKdWnKhMts4aUKSZRG0QA99h8KKzQQnhgrQV//wXm9Dfob wz88xerpOfpsoY2TOcICNJh+kDh/YFIwHbI/fYAhQHJrQ/6x/dyqR3Is9WY88Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4X3Yz23CNzzP9j; Wed, 11 Sep 2024 08:44:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 48B8iULi007762; Wed, 11 Sep 2024 08:44:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 48B8iUlX007759; Wed, 11 Sep 2024 08:44:30 GMT (envelope-from git) Date: Wed, 11 Sep 2024 08:44:30 GMT Message-Id: <202409110844.48B8iUlX007759@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: c7447c45fb00 - stable/14 - x86 dmar: generalize dmar_domain_free_entry() into iommu_domain_free_entry() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c7447c45fb00cfd06b639d9b78f7b5b7ab79520c Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=c7447c45fb00cfd06b639d9b78f7b5b7ab79520c commit c7447c45fb00cfd06b639d9b78f7b5b7ab79520c Author: Konstantin Belousov AuthorDate: 2024-07-07 03:22:00 +0000 Commit: Konstantin Belousov CommitDate: 2024-09-11 08:44:00 +0000 x86 dmar: generalize dmar_domain_free_entry() into iommu_domain_free_entry() (cherry picked from commit b3042e3a7c6ffee3867d52b192c6a9f4f49faf4b) --- sys/x86/iommu/intel_ctx.c | 19 +++---------------- sys/x86/iommu/intel_dmar.h | 1 - sys/x86/iommu/iommu_utils.c | 14 ++++++++++++++ sys/x86/iommu/x86_iommu.h | 2 ++ 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/sys/x86/iommu/intel_ctx.c b/sys/x86/iommu/intel_ctx.c index 41135628ffa8..814a5a8c7105 100644 --- a/sys/x86/iommu/intel_ctx.c +++ b/sys/x86/iommu/intel_ctx.c @@ -834,19 +834,6 @@ dmar_find_ctx_locked(struct dmar_unit *dmar, uint16_t rid) return (NULL); } -void -dmar_domain_free_entry(struct iommu_map_entry *entry, bool free) -{ - if ((entry->flags & IOMMU_MAP_ENTRY_RMRR) != 0) - iommu_gas_free_region(entry); - else - iommu_gas_free_space(entry); - if (free) - iommu_gas_free_entry(entry); - else - entry->flags = 0; -} - /* * If the given value for "free" is true, then the caller must not be using * the entry's dmamap_link field. @@ -875,12 +862,12 @@ dmar_domain_unload_entry(struct iommu_map_entry *entry, bool free, } else { iommu_qi_invalidate_sync(&domain->iodom, entry->start, entry->end - entry->start, cansleep); - dmar_domain_free_entry(entry, false); + iommu_domain_free_entry(entry, false); } } else { domain_flush_iotlb_sync(domain, entry->start, entry->end - entry->start); - dmar_domain_free_entry(entry, free); + iommu_domain_free_entry(entry, free); } } @@ -916,7 +903,7 @@ dmar_domain_unload(struct iommu_domain *iodom, domain_flush_iotlb_sync(domain, entry->start, entry->end - entry->start); TAILQ_REMOVE(entries, entry, dmamap_link); - dmar_domain_free_entry(entry, true); + iommu_domain_free_entry(entry, true); } } if (TAILQ_EMPTY(entries)) diff --git a/sys/x86/iommu/intel_dmar.h b/sys/x86/iommu/intel_dmar.h index 0242e0cb954f..edb152f42fe7 100644 --- a/sys/x86/iommu/intel_dmar.h +++ b/sys/x86/iommu/intel_dmar.h @@ -243,7 +243,6 @@ void dmar_free_ctx_method(struct iommu_ctx *ctx); struct dmar_ctx *dmar_find_ctx_locked(struct dmar_unit *dmar, uint16_t rid); struct iommu_ctx *dmar_get_ctx(struct iommu_unit *iommu, device_t dev, uint16_t rid, bool id_mapped, bool rmrr_init); -void dmar_domain_free_entry(struct iommu_map_entry *entry, bool free); void dmar_domain_unload_entry(struct iommu_map_entry *entry, bool free, bool cansleep); void dmar_domain_unload(struct iommu_domain *iodom, diff --git a/sys/x86/iommu/iommu_utils.c b/sys/x86/iommu/iommu_utils.c index 20ca7890ce65..9c6cae5ff51f 100644 --- a/sys/x86/iommu/iommu_utils.c +++ b/sys/x86/iommu/iommu_utils.c @@ -605,3 +605,17 @@ iommu_device_tag_init(struct iommu_ctx *ctx, device_t dev) ctx->tag->ctx = ctx; ctx->tag->owner = dev; } + +void +iommu_domain_free_entry(struct iommu_map_entry *entry, bool free) +{ + if ((entry->flags & IOMMU_MAP_ENTRY_RMRR) != 0) + iommu_gas_free_region(entry); + else + iommu_gas_free_space(entry); + if (free) + iommu_gas_free_entry(entry); + else + entry->flags = 0; +} + diff --git a/sys/x86/iommu/x86_iommu.h b/sys/x86/iommu/x86_iommu.h index 5f56a2db74b5..9e3a82283729 100644 --- a/sys/x86/iommu/x86_iommu.h +++ b/sys/x86/iommu/x86_iommu.h @@ -167,6 +167,8 @@ struct x86_unit_common { struct iommu_msi_data intrs[IOMMU_MAX_MSI]; }; +void iommu_domain_free_entry(struct iommu_map_entry *entry, bool free); + void iommu_qi_emit_wait_seq(struct iommu_unit *unit, struct iommu_qi_genseq * pseq, bool emit_wait); void iommu_qi_wait_for_seq(struct iommu_unit *unit, const struct