From nobody Thu Jun 11 16:58:40 2026 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 4gbpkn1KC5z6hsrZ for ; Thu, 11 Jun 2026 16:58:41 +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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gbpkm6HNkz41W0 for ; Thu, 11 Jun 2026 16:58:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1781197120; 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=9tzJDPBapQT7cXAnu1Pb1+0mRPGX+CRc44q/fIBaBgk=; b=oBmrP5Qm7YUTRaORo9/vI4ke4fPp7fo4hwav9aiFvNThbGhtONvl3jbccJWoiu3ORGfY1f PJ21pzVZd2+QUm+8orKeaIvwpwC2GCwTCYlZ0QIQrGgtye72xMzr4/QfX8PftOMvWz2zby ZYQHanEmwnbCdgSQb2KNvGPadw6s7Ek9p0hrzZjO0UQy1o7RE/OMGjCRLzwI36QtSMdnVN +1OCLV/QrPJ2Q9GZ8KAD6PaF9GzZiTQuFz20OJKFa/EZwItUTnXxvgOl41W9+N76+gHueZ FErZ0b3TSRHEm6FJoDEir566R0BCtULY1QZBawqo2TXJwf+11I6f2e8dspw5HQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1781197120; a=rsa-sha256; cv=none; b=r2+XPoFiXW3TtB1iouRLrMdxYsFuB6q6G46fbCGAyRieIQduswTDYVEsk/TNY7vS/fImNt D4dCYLAu6dRmja0djNimHQ++iJrRai/O+5zkxU8rAr00BRiSxCj/aOoFZNvtji0jQrZKhG DS5lSmMjv9PgMDiFs/On7Rq3xs9DL2aLFMeQTDN3eWGDSd4g7Rqgkk5OAz+u8TfsK2zaCp Tpeh5RZ4BynHfYdHiBMTAhKXvW5tFgwKpacKrcfyyRvpog0uVLPSwO7aDLqjt3eyZqF+S6 qpLIj6i/uZAw+4AMfOEwh/2jXrm/M3rpNK4Nes8dQiVKyPKCX64OQNWEU2Iljg== 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=1781197120; 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=9tzJDPBapQT7cXAnu1Pb1+0mRPGX+CRc44q/fIBaBgk=; b=KqhZmtlFT52tTJpjqobLgttyR0ZaNI2VnSJDaAKqMxrux/CWprgIWcFXzRcvJvnpU9zIry my/sNjO/szg6rNo+euzz7D9ezKn+2dHh5Zn8D3ydD7vTScWR3btQrsz3p3RHdk8RaKOZZg XaMvFHKfVyL3MYhxxf3LNhIY9JOgqoxxNMCOg69mB2oLvsZy68tzG3+zAVZcap+siNxN0e HJKkk+dZhqSFD6p1VpweCW7AgdEuAEuaqlxAlhKGrttWjBergTw/A7PZY6zzYiJ+lWBpxU mPJaAXvVVoTTo+gH9oEE0Zs+YXn7oBB8WWJAWLNDEVVh1wfLF783l55Hnr9lDg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gbpkm5q2Hz102v for ; Thu, 11 Jun 2026 16:58:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3af9a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 11 Jun 2026 16:58:40 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mitchell Horne Subject: git: 7b8ee50937c0 - stable/15 - linux/io: handle memtype_wc mapping for !DMAP range 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 7b8ee50937c0db0925ac90d6d6a88fea35ac9451 Auto-Submitted: auto-generated Date: Thu, 11 Jun 2026 16:58:40 +0000 Message-Id: <6a2ae940.3af9a.7d787641@gitrepo.freebsd.org> The branch stable/15 has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=7b8ee50937c0db0925ac90d6d6a88fea35ac9451 commit 7b8ee50937c0db0925ac90d6d6a88fea35ac9451 Author: Mitchell Horne AuthorDate: 2026-05-14 14:20:22 +0000 Commit: Mitchell Horne CommitDate: 2026-06-11 16:38:37 +0000 linux/io: handle memtype_wc mapping for !DMAP range The amdgpu driver in drm-kmod will attempt to update/reserve certain GPU VRAM ranges as write-combining. Depending on the system, this address range may fall outside of FreeBSD's constructed DMAP. We cannot use pmap_change_attr() in this case. When INVARIANTS is enabled, this results in the following: panic: physical address 0x880000000 not covered by the DMAP Add a guard against triggering the KASSERT in PHYS_TO_DMAP(). This limitation in our implementation of arch_io_reserve_memtype_wc() is already known in drm-kmod's amdgpu_bo_init(), and errors are ignored there (see "BSDFIXME"). This change is only to eliminate the preventable assertion failure within this scheme. Tested by: kevans Reviewed by: kib, emaste MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D56971 (cherry picked from commit 988c03980452a56fb0fbb15e18b0a644602d0ab3) --- sys/compat/linuxkpi/common/include/linux/io.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/compat/linuxkpi/common/include/linux/io.h b/sys/compat/linuxkpi/common/include/linux/io.h index 2d6fef4e7c52..a9146d41d040 100644 --- a/sys/compat/linuxkpi/common/include/linux/io.h +++ b/sys/compat/linuxkpi/common/include/linux/io.h @@ -544,6 +544,9 @@ arch_io_reserve_memtype_wc(resource_size_t start, resource_size_t size) #if defined(__amd64__) vm_offset_t va; + if (!PHYS_IN_DMAP(start) || !PHYS_IN_DMAP(start + size)) + return (-EINVAL); + va = PHYS_TO_DMAP(start); return (-pmap_change_attr(va, size, VM_MEMATTR_WRITE_COMBINING)); #else @@ -557,8 +560,10 @@ arch_io_free_memtype_wc(resource_size_t start, resource_size_t size) #if defined(__amd64__) vm_offset_t va; - va = PHYS_TO_DMAP(start); + if (!PHYS_IN_DMAP(start) || !PHYS_IN_DMAP(start + size)) + return; + va = PHYS_TO_DMAP(start); pmap_change_attr(va, size, VM_MEMATTR_WRITE_BACK); #endif }