From nobody Wed Nov 12 16:52:49 2025 X-Original-To: dev-commits-src-main@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 4d68bQ1KJMz6GGY1; Wed, 12 Nov 2025 16:52:50 +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 4d68bQ0TVDz3Q59; Wed, 12 Nov 2025 16:52:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762966370; 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=9ItUp8/bnA9twHH7AaNFMARcwEnZsBDHtZcag7RI2do=; b=kdi9i1I6jUM4Z4VDyh5lbHwIRWCXVIUMjGVu+u8+60nZ2TA4nVu4BWqxu4P0zDHxjeSIXa 5+YlgvBsPGGgnMDaQ+y3e4fNndQQKnssIG+Q78nZn38jDb7HhXQSCFfo1QLYBq5bDpnxNj plVlpU7qJRQDVN0ttU7hVa6AIdeGYAsSEGQ8dmTr+zxZVOsoROZVJXMjHpi2V/RRINn396 CGwyZhfba47Ymdo2zdT8O0d2oYCsrU3VEApZcyDy9d2QhTbAvMiM/6+ZCKYrPVD37vlbSx P3RNCdw3A4+OfS8O68vPgH2VPfbMrli7rmpvT2W1FpS8UPrp3B4l7JPzSIc+wQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762966370; 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=9ItUp8/bnA9twHH7AaNFMARcwEnZsBDHtZcag7RI2do=; b=u045u44sWpDhVKxzrMsJ8FDYSQgupIK5rJPs4Mbh3TWlrkjzcNW1V2AUKE6q3xIAtGX2pp MhMFdlqqms7GdZ/1DMyI8AP41fk9ZObIn3l3NC1ns8E+ChZAHsMTihGXLq3EblL4+N5gs9 ITi+p4O775ax273ftGyssIgnPLHWrJQFHtUStfh4MK6C4e4A4tN6ew+d9e0hct6IbHEEm3 bjeMUbDsAzs0wOeT5kFI2rw7d/LNgJ3wLMNPJ8VG7+IREzQXbj53a2XzV367w7QuHMOu7k ZEibTxgnpOoN79dkhdAc3Vc2pfanCi4VHXtR+Hu3/gySAmJzhHyULH4SPWCRsw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1762966370; a=rsa-sha256; cv=none; b=DW6XTuuenBilGsWU/zQX4pDbednb/qJm01wpwXrVvzR8QkurtumLBzzp5Wv+fLUtfhpdzk vHb3hOd+sOzHGxeJtTK6zdoyHakeMiOo1cYY38L+Arrvk5/RQQZStUf62PnHT35cXKA4Iw WnAPmdftnu5G152PBsJlqoEFMVIVMTMG1zjAbI78q6jPJme7eTye9IT+zwOLO4Mz2BdcAh KRmBjKzB4F2YdeJyMksydGj5OGTNwvW1olR/sCUporydbreW3CSal5dnZYU1wR6dyo0Voz n9ajL97AE+Sxcha67dXRe8sorMzErBaVp9jd9xqJWpiLKajyD87MpoZbucKImg== 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 4d68bQ04kyzkGs; Wed, 12 Nov 2025 16:52:50 +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 5ACGqn0g088544; Wed, 12 Nov 2025 16:52:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5ACGqn6a088542; Wed, 12 Nov 2025 16:52:49 GMT (envelope-from git) Date: Wed, 12 Nov 2025 16:52:49 GMT Message-Id: <202511121652.5ACGqn6a088542@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: ac0032344ca2 - main - arm64/vmm: Don't set MDSCR_EL1.KDE when enabling single-stepping List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ac0032344ca256f758a5eeb0fd6089dd647b0496 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=ac0032344ca256f758a5eeb0fd6089dd647b0496 commit ac0032344ca256f758a5eeb0fd6089dd647b0496 Author: Mark Johnston AuthorDate: 2025-11-05 20:54:30 +0000 Commit: Mark Johnston CommitDate: 2025-11-12 16:09:08 +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. Reviewed by: andrew MFC after: 3 days Sponsored by: CHERI Research Centre (EPSRC grant UKRI3001) Differential Revision: https://reviews.freebsd.org/D48965 --- 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 006239431f29..991b0d2bc345 100644 --- a/sys/arm64/vmm/vmm_arm64.c +++ b/sys/arm64/vmm/vmm_arm64.c @@ -1373,19 +1373,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;