From nobody Wed Nov 12 15:43:12 2025 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 4d67342qHtz6G9gM; Wed, 12 Nov 2025 15:43:12 +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" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4d67341t5pz3DdH; Wed, 12 Nov 2025 15:43:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762962192; 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=9oIsH+MhcGzkGM5+/MvxeXUyYs7dQaS/qaOb49ZwpJQ=; b=dOtrDAsv9mv9Zf5ADXMd8kqvBR6HnN1/Kukw3YEDqIIupn495z/ZrYpXg+XLrh4gP2q1RS bHnZdpnKf/9rliSN9K79tTp70z1cemOI/IRRlDuz2FE+zKjxJjuuq+r0xKDicaDY4sbYqh bu8bTI2B+zMhRl03+A97j9VIyy5q9BZ5OXy8QirdISv9+j75QaZ3hJWGOJrJ44r3CRAsP9 SV6DUlSbrZNL5rtO3mC05wPzilskDa64QT8EKI/WpNuZ71cCm0ryCyiKjTuu0QqA94dqlv iY3WJwSRXbBp6dd/omVl6ZUdDkiDkXkR3BWOkB2DYUg0laXZ3jJhp1ylQydd1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762962192; 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=9oIsH+MhcGzkGM5+/MvxeXUyYs7dQaS/qaOb49ZwpJQ=; b=me3Ky3inD5nKM8JD4z/RUe+llg3f1B3iGSb/c43b3ii/Vw5U5AnQ/6E/dB4sl519y9S/li hx3kq9XR4qZsMSIFyptCd+rq3mpiO07ByDHvaEk6svGVCLTlAGttdAAeL+Ljkeuddlimf3 8Da/xcbx5ftTwLptipOAcdVIT0U4nmrwbZ1a3wJ1Gp52uHnaMUUPjCEly/vq34IZOg49iZ EaHopT+Hu1BUADp3oNhok0RGY3CewXjDKSy7YS3LeBVp3yoJo1yXsTUGMaoCAYyCZ7gv1g rUJAFg8BXcFyX0rX29fNVsob+ma25+B98Idzmg3uEwtElppSm2WGE7dDE8wNGw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1762962192; a=rsa-sha256; cv=none; b=jYXqGKueswAyb/ZVJjkLOZXAOjgCw0nxL2seUXU83jJyIc3lgAD9Mo7HfL7EN51hfqcxCF n3L31kSvPkB0aAurs/KEJq2y6zPEVRQu5NtbYcvOqWU8kWtQ8dIuGmvHlQd6NTuxPq7EZm RillBFYuHRxcRrnD1FJBTcQi6quX95SlOhw152GLJC2GfY0l4D11gVkmnV1E6SavVBegnn GGg0tbVUf2NH7wz5UHx3Hf1Vo9JDrFmYN5xvSgIL/xx8MB/J5ryL2ip9JTNFXxK/JSza6V wx9RsiyYTfAFdauj9K74ceR5Lg/gG2mjDFFFazDBV7aLJwf/iC1MgpgemZZhCw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4d67341PwwzhQ4; Wed, 12 Nov 2025 15:43:12 +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 5ACFhCAd057511; Wed, 12 Nov 2025 15:43:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5ACFhCe7057508; Wed, 12 Nov 2025 15:43:12 GMT (envelope-from git) Date: Wed, 12 Nov 2025 15:43:12 GMT Message-Id: <202511121543.5ACFhCe7057508@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Chuck Tuffli Subject: git: 6e68cd8666e1 - main - vmm: Initialize AMD IOMMU command buffers 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: chuck X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6e68cd8666e14db265f00e9ee59b670ca2964e0d Auto-Submitted: auto-generated The branch main has been updated by chuck: URL: https://cgit.FreeBSD.org/src/commit/?id=6e68cd8666e14db265f00e9ee59b670ca2964e0d commit 6e68cd8666e14db265f00e9ee59b670ca2964e0d Author: Chuck Tuffli AuthorDate: 2025-11-12 15:39:29 +0000 Commit: Chuck Tuffli CommitDate: 2025-11-12 15:39:29 +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 Reviewed by: corvink, kib, markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D53692 --- 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