From nobody Mon Mar 2 00:51:16 2026 X-Original-To: dev-commits-src-branches@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 4fPL381zvyz6Ty3f for ; Mon, 02 Mar 2026 00:51:16 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fPL380sdvz3Jcc for ; Mon, 02 Mar 2026 00:51:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772412676; 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=13gFq5rcdLKRRqLEN0g0MZ/9O0NCqwbxpGDKie4W2mc=; b=C8xX7WOpr0Jf6BCcY/n+MAZeERQJ+sod+DqVKEcxPHWmTB5hji1soALlEZbopBC9ifR3TC E5/VH+nfD+ffncX8uioIYpOnzNqMTitf6MbijdnEnpvkA/m5Al8QIPBdMfTnRxH2TfBDc5 H862uABQuCIzdn2Det9ErXL+vjjHVJvsCw7nu+343ffOWHtIvO+hSG5DQIjo17okfIyufA 0IZxMi5XX4m7/DaDhtYJEdHrekGkWmsPzQlKsX8VoytGlfeZyjTGcR9yXpSKIBZ3CvRyCF JT9WOh/Yo4SftHwfBwhJRGi5HiO5dRklwIAXplWZqeHk4W98soY9pzcKMdoaww== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772412676; a=rsa-sha256; cv=none; b=HqOH2tL+8YDQbdW+DZet9H/nhxv+rELE6eY7CgjawXZsmdbBFQ1Y+FPqukcxooxT6yTSbF D9de6FYs+q1TdKsOMWA9XlaHWuOgpW/Y1aPlHF9FdF58Zhns58FsoJs5ornTv44kaIgGHV Mnu647+dT5Hlbnw3/hR9Qg3voHNw1zL3Zmd5dP9+zBXgibCsCrJVCLtKFWtj+bV9dJnQXD T5pRcBhvIhFTJhCCzPJYMz+zgOAdITjFazYVEdkPtB8YfIp+QjT8FAqdFvdbZiSaT2N50h hcxPeidRrzKefCgqOdMQMo9ANXamSxI9SrCkwuZoZommxiH5lNPEXPldnzrlpA== 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=1772412676; 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=13gFq5rcdLKRRqLEN0g0MZ/9O0NCqwbxpGDKie4W2mc=; b=rXxLKiH6qYaDfKkp1S4CIEZkvUFJpvyXX16Zx78sl55rfz/LsgtbpvQcw2U52cqvXbhF9E 7tX9N7YmnU1xcB9vnWlGoF0Fkp6ovwnkylo5HiQ8P18oieNeJuBAiP9DGG0aZuG+lEW+p6 buX4XHTFXMwPp3a45O8hdmmMp7h3TSLfQ3/X3H0ovPOVMKfdahx+O07/ymj+kFRPNT9H0O QYVDZaSohs9VJD6BeG3ukKoXzc0ezDtNyJbKtIyiEY36RGBvvFRd02O8jRi1JLmtFU9ERr N31yJxzyQ53ZSk7PN6MKJ1XwcTwi/vN/9CcBI/UhUJ/zDtkVMN6jBCs37Khkyw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPL380T6jz1C5x for ; Mon, 02 Mar 2026 00:51:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 46857 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 00:51:16 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Chuck Tuffli Subject: git: e8b3ca9a1d02 - stable/15 - vmm: Initialize AMD IOMMU command buffers List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: chuck X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: e8b3ca9a1d02298b379fb034348b446bcaaf0974 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 00:51:16 +0000 Message-Id: <69a4df04.46857.68bf74ba@gitrepo.freebsd.org> The branch stable/15 has been updated by chuck: URL: https://cgit.FreeBSD.org/src/commit/?id=e8b3ca9a1d02298b379fb034348b446bcaaf0974 commit e8b3ca9a1d02298b379fb034348b446bcaaf0974 Author: Chuck Tuffli AuthorDate: 2025-11-12 15:39:29 +0000 Commit: Chuck Tuffli CommitDate: 2026-03-01 15:39:10 +0000 vmm: Initialize AMD IOMMU command buffers The driver communicates with the AMD IOMMU by writing to the tail of a fixed length command ring buffer. After issuing cmd_max commands, the tail pointer wraps back to the beginning of the ring buffer. Now, each command buffer entry will contain content from previous commands which may set bits in fields marked as Reserved for the current command. In some cases, the hardware will return an ILLEGAL_COMMAND_ERROR event when this occurs. Fix is to memset the command buffer prior to use. PR: 270966 (cherry picked from commit 6e68cd8666e14db265f00e9ee59b670ca2964e0d) --- sys/amd64/vmm/amd/amdvi_hw.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/sys/amd64/vmm/amd/amdvi_hw.c b/sys/amd64/vmm/amd/amdvi_hw.c index 831c31277570..4dd0339654a9 100644 --- a/sys/amd64/vmm/amd/amdvi_hw.c +++ b/sys/amd64/vmm/amd/amdvi_hw.c @@ -274,6 +274,7 @@ amdvi_get_cmd_tail(struct amdvi_softc *softc) tail = (struct amdvi_cmd *)((uint8_t *)softc->cmd + ctrl->cmd_tail); + memset(tail, 0, sizeof(*tail)); return (tail); } @@ -316,7 +317,6 @@ amdvi_cmd_cmp(struct amdvi_softc *softc, const uint64_t data) uint64_t pa; cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); pa = vtophys(&softc->cmp_data); cmd->opcode = AMDVI_CMP_WAIT_OPCODE; @@ -334,7 +334,6 @@ amdvi_cmd_inv_dte(struct amdvi_softc *softc, uint16_t devid) struct amdvi_cmd *cmd; cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); cmd->opcode = AMDVI_INVD_DTE_OPCODE; cmd->word0 = devid; amdvi_update_cmd_tail(softc); @@ -352,7 +351,6 @@ amdvi_cmd_inv_iommu_pages(struct amdvi_softc *softc, uint16_t domain_id, struct amdvi_cmd *cmd; cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); cmd->opcode = AMDVI_INVD_PAGE_OPCODE; cmd->word1 = domain_id; @@ -383,7 +381,6 @@ amdvi_cmd_inv_iotlb(struct amdvi_softc *softc, uint16_t devid) qlen, RID2PCI_STR(devid)); } cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); #ifdef AMDVI_DEBUG_CMD device_printf(softc->dev, "Invalidate IOTLB devID 0x%x" @@ -406,7 +403,6 @@ amdvi_cmd_inv_intr_map(struct amdvi_softc *softc, struct amdvi_cmd *cmd; cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); cmd->opcode = AMDVI_INVD_INTR_OPCODE; cmd->word0 = devid; amdvi_update_cmd_tail(softc); @@ -420,10 +416,6 @@ amdvi_cmd_inv_intr_map(struct amdvi_softc *softc, static void amdvi_inv_domain(struct amdvi_softc *softc, uint16_t domain_id) { - struct amdvi_cmd *cmd __diagused; - - cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); /* * See section 3.3.3 of IOMMU spec rev 2.0, software note