From nobody Mon May 12 12:50:25 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 4Zwzwf0jTHz5w0f2; Mon, 12 May 2025 12:50:26 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Zwzwd57MFz3rLy; Mon, 12 May 2025 12:50:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1747054225; 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=KDNF1l/x1seQzfZ9Jrct/00E8zc0aA/ECIOzC+PBGf4=; b=xKgpgqALi/FDJK/cXRohnIq43MDfFdNp5VSQsQ7sblNWG6R2i5NX/e4GMQb/8V4M5dVEke sGYZ2xalI1wY4Du1T7woMoVnTo+pZC530W0ksbwnl6Jfvy6pdVnUC8DsuV7ra40WFQlPnq C6LwJVk+ntJAFPA+jFAAE2d22VuywfjcRESiS1d12dwmufSY6botV2rOWuw5wae6ylzP1w qeEfEyGhwPo/pq+L//FYVn69jxaogagDRmHWPfKk+4obaLtvintBKBMJcdvH/IWXVlwYPL nHC01R4KtH/BaKqbsVe4h2bt/0KlvRTjUdMoQUmmOTOnMs8tvz3GjzxlEigijw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1747054225; 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=KDNF1l/x1seQzfZ9Jrct/00E8zc0aA/ECIOzC+PBGf4=; b=DoVCerM/nlWALQkrpu0n4D1+B29Os9VqMhCT9epEUD5Rcrc2JzMM8IxIMyiNW0giUHyKyW x3852qeNumUt/bIl0/LJMyEuZTywBtmOy5Ek+KRXvfNw4qG8lDERv+g7mTOtiwkxSuAge/ mbs1s+F1OV4FWItLwo/P6eAeLGQIYzSI7LX5i2CFlKVq4i+oKaJ54MboEEHxgTiMZf7hQ3 buI3CpnxoDXL6G1+s9kj30cEikyWjlxpAxLK/Ghf0Wii4S5x+vJ+VURVsWGPb2RVFCeLDm FmwiDVtaDLlOSNhJ/pJdsjAbSIYtnsbiBw4441WWC9FQfW/4ODXDRur+sXJrPg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1747054225; a=rsa-sha256; cv=none; b=lHFPUPePFu+19PpZFDBeKbVQRiGyE0gb53vRdSUu+NwO15PCw0Jybf623yxUzNvYsTlh9L bc0zJN6EuwiY+MVT+MUxmZobC8NE3xIShOj7nyk7BM4MtayGqxlA+jJ9eU8Eg+iGd6dOBv jaF4SSmEPX2l9Wa6KT9TtYIqx2F5pgP8FczwQc7mlo3NkxWQ9xt1yQ3COE8DvddEwKAKod 3aEleKuDw04y78RFCvU68cGcib0Ja6aUTsTU1KilY0Ft2zZ/SvsvoSezOEk2cqI/iMIFAa PaIh4vyFHtsWgsntSnBJrwPPksduIj9vpzQ0KsCpFe30+2ZNVgWGy5LxHML1hw== 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 4Zwzwd4l2xz1Gdd; Mon, 12 May 2025 12:50:25 +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 54CCoP4q083000; Mon, 12 May 2025 12:50:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 54CCoPJ0082997; Mon, 12 May 2025 12:50:25 GMT (envelope-from git) Date: Mon, 12 May 2025 12:50:25 GMT Message-Id: <202505121250.54CCoPJ0082997@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 0b521e322c32 - main - arm: Switch the timer to the new sys handler 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: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0b521e322c32a16e1ae91d88d9e5ea32775af110 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=0b521e322c32a16e1ae91d88d9e5ea32775af110 commit 0b521e322c32a16e1ae91d88d9e5ea32775af110 Author: Andrew Turner AuthorDate: 2025-05-12 11:06:53 +0000 Commit: Andrew Turner CommitDate: 2025-05-12 11:06:53 +0000 arm: Switch the timer to the new sys handler Use the new sys handling to implement the trapped cntpct_el0 support. Reviewed by: harry.moulton_arm.com Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D50209 --- sys/arm/arm/generic_timer.c | 22 ++++++++++++---------- sys/arm64/include/armreg.h | 1 + 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/sys/arm/arm/generic_timer.c b/sys/arm/arm/generic_timer.c index a82f8756b806..a8c779dcba6d 100644 --- a/sys/arm/arm/generic_timer.c +++ b/sys/arm/arm/generic_timer.c @@ -289,20 +289,22 @@ setup_user_access(void *arg __unused) } #ifdef __aarch64__ -static int -cntpct_handler(vm_offset_t va, uint32_t insn, struct trapframe *frame, - uint32_t esr) +static bool +cntpct_handler(uint64_t esr, struct trapframe *frame) { uint64_t val; int reg; - if ((insn & MRS_MASK) != MRS_VALUE) - return (0); + if (ESR_ELx_EXCEPTION(esr) != EXCP_MSR) + return (false); - if (MRS_SPECIAL(insn) != MRS_SPECIAL(CNTPCT_EL0)) - return (0); + if ((esr & ISS_MSR_DIR) == 0) + return (false); + + if ((esr & ISS_MSR_REG_MASK) != CNTPCT_EL0_ISS) + return (false); - reg = MRS_REGISTER(insn); + reg = ISS_MSR_Rt(esr); val = READ_SPECIALREG(cntvct_el0); if (reg < nitems(frame->tf_x)) { frame->tf_x[reg] = val; @@ -316,7 +318,7 @@ cntpct_handler(vm_offset_t va, uint32_t insn, struct trapframe *frame, */ frame->tf_elr += INSN_SIZE; - return (1); + return (true); } #endif @@ -332,7 +334,7 @@ tmr_setup_user_access(void *arg __unused) #ifdef __aarch64__ if (TUNABLE_INT_FETCH("hw.emulate_phys_counter", &emulate) && emulate != 0) { - install_undef_handler(cntpct_handler); + install_sys_handler(cntpct_handler); } #endif } diff --git a/sys/arm64/include/armreg.h b/sys/arm64/include/armreg.h index aff33055a51d..8691e4b89649 100644 --- a/sys/arm64/include/armreg.h +++ b/sys/arm64/include/armreg.h @@ -278,6 +278,7 @@ /* CNTPCT_EL0 - Counter-timer Physical Count register */ #define CNTPCT_EL0 MRS_REG(CNTPCT_EL0) +#define CNTPCT_EL0_ISS ISS_MSR_REG(CNTPCT_EL0) #define CNTPCT_EL0_op0 3 #define CNTPCT_EL0_op1 3 #define CNTPCT_EL0_CRn 14