From nobody Sun Nov 16 02:00:44 2025 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 4d8DcF1cFPz6Gj1n; Sun, 16 Nov 2025 02:00:45 +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 4d8DcF18M4z3bHN; Sun, 16 Nov 2025 02:00:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763258445; 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=xvcY9IovmotSxOW8kyFy7VXT5Q/tBXmelXlEHfya5Xs=; b=uAFGfY7JIZMjOfOsu8eOuISXBP8dllc7OWl0PYIOxnuoI5lpfvQdkdwsq0UdiW+kfC+wWr LdI5TiOU7zrrpa7pgY9RfV/gsUsR997Pc5y6bHh8LqP5UbMyK4IcWTCbsLbG09vDVe1U9z Q47mHhETFXsHPqZQX0fh9K+22roMmoZRTGOlwqlgPfcWp5EFa8OZfMKLDHdV3lkXzgryXl YDy7FqRSjGjaj6Svv+xgXosSLsFS+b44rpzj7h94WiR1jFlHf+Jsnq7cbO6AG3yIEfqFrv 0Gd1c2eKKeoXYY9SuDf4VQ8iZ0eIT5dSLXGOozGcLnwKJ9kKaCMarH9OMaw4fA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763258445; 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=xvcY9IovmotSxOW8kyFy7VXT5Q/tBXmelXlEHfya5Xs=; b=qPiTSJ7DXNoqYhnFFZQMl+uAijPFliVNBK7ce7Z17+3E1cocAvA3p2U+9hQ+HtfBtgJgoh trz95erMVdCNOGqe2MGFuGGCXhhKbUeA7AN9tB3uMIr8juHhZPuY4lxrLjEz702SIy3eO7 fI6To+O5rWDCtOizNfgrX2S6sKSg9i0iTGqpdEcrVXB+oA0vAO2Obdgrp5WS8I0MejRlw9 2IpapmNZ7rZ/BGjdPAk4s/n3DST9/FZaLqxRwt81yjXHeqE6pTVvkSlfX10VOtUxJXkn/Q zF6ix+whKTckatkdukKYMfPcfg/bNExjymAzsq+z2DqIkia31ltcxYklLRMnrw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1763258445; a=rsa-sha256; cv=none; b=kehxtyFb1+BGpvnTQ1pDmdKDQIicBgPL1rh/wirnQV1KHid4KZDzhLMrZWJsNwS6HQw+xQ z6KiVM71Riv56izFnq/JKjO96dLIauCmnEzZPFgkVqXMNq73hGfnAL8gSzS0DF2Qpu/OX7 OFBrxxdyZmMGm92R9Lqw8UHEgdNvRkTvPKB1zMN8p7toTkb+4eU0wtXZdyQHjt9ciY2Ggd TuEqQV12jUw/D3Gwj/eIQjYrZ8ODiRPEx9Wn2AHq8U8S5D/rBkVlBQIgDPefGj1vJU7FYa 6zftN46ewszOBXVgdbLmMBwxGDUfe3IeGUvVUlPwfYPjbI+1Aj/pLUNdkdvSnQ== 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 4d8DcF0jqXz2jr; Sun, 16 Nov 2025 02:00:45 +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 5AG20jjC052997; Sun, 16 Nov 2025 02:00:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5AG20iwO052994; Sun, 16 Nov 2025 02:00:44 GMT (envelope-from git) Date: Sun, 16 Nov 2025 02:00:44 GMT Message-Id: <202511160200.5AG20iwO052994@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: a44a95b00199 - releng/15.0 - arm64/vmm: Don't set MDSCR_EL1.KDE when enabling single-stepping 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: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: a44a95b00199dbf97c2b22cfb59a610c07f0af58 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=a44a95b00199dbf97c2b22cfb59a610c07f0af58 commit a44a95b00199dbf97c2b22cfb59a610c07f0af58 Author: Mark Johnston AuthorDate: 2025-11-05 20:54:30 +0000 Commit: Colin Percival CommitDate: 2025-11-16 02:00:30 +0000 arm64/vmm: Don't set MDSCR_EL1.KDE when enabling single-stepping When VHE mode is enabled, this results in a hang on the host. In particular, when MDSCR_EL2.KDE is set to 1 and the CPU is executing at EL_D, i.e., EL2, debug exceptions are enabled. In non-VHE mode, we call into the guest by trapping to EL2, which implicitly masks debug exceptions by setting PSTATE.D. However, in VHE mode, PSTATE.D remains clear, so when the guest's MDSCR_EL1 value is loaded, we immediately begin single-stepping. In non-VHE mode there is no need to set KDE either, so just stop setting it. Approved by: re (cperciva) Reviewed by: andrew MFC after: 3 days Sponsored by: CHERI Research Centre (EPSRC grant UKRI3001) Differential Revision: https://reviews.freebsd.org/D48965 (cherry picked from commit ac0032344ca256f758a5eeb0fd6089dd647b0496) (cherry picked from commit 47fdacee69ec8ccb18df76b7584ffc5ce9862ec2) --- sys/arm64/vmm/vmm_arm64.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sys/arm64/vmm/vmm_arm64.c b/sys/arm64/vmm/vmm_arm64.c index e293c99a6646..5bb038dec2d3 100644 --- a/sys/arm64/vmm/vmm_arm64.c +++ b/sys/arm64/vmm/vmm_arm64.c @@ -1365,19 +1365,18 @@ vmmops_setcap(void *vcpui, int num, int val) if (val != 0) { hypctx->debug_spsr |= (hypctx->tf.tf_spsr & PSR_SS); - hypctx->debug_mdscr |= hypctx->mdscr_el1 & - (MDSCR_SS | MDSCR_KDE); + hypctx->debug_mdscr |= (hypctx->mdscr_el1 & MDSCR_SS); hypctx->tf.tf_spsr |= PSR_SS; - hypctx->mdscr_el1 |= MDSCR_SS | MDSCR_KDE; + hypctx->mdscr_el1 |= MDSCR_SS; hypctx->mdcr_el2 |= MDCR_EL2_TDE; } else { hypctx->tf.tf_spsr &= ~PSR_SS; hypctx->tf.tf_spsr |= hypctx->debug_spsr; hypctx->debug_spsr &= ~PSR_SS; - hypctx->mdscr_el1 &= ~(MDSCR_SS | MDSCR_KDE); + hypctx->mdscr_el1 &= ~MDSCR_SS; hypctx->mdscr_el1 |= hypctx->debug_mdscr; - hypctx->debug_mdscr &= ~(MDSCR_SS | MDSCR_KDE); + hypctx->debug_mdscr &= ~MDSCR_SS; hypctx->mdcr_el2 &= ~MDCR_EL2_TDE; } break;