From nobody Fri Dec 13 21:37:38 2024 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 4Y92kB4MDYz5g9Zn; Fri, 13 Dec 2024 21:37:38 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Y92kB3rmmz4dhf; Fri, 13 Dec 2024 21:37:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1734125858; 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=DOhTl5zFL2jliJ7mfsEPcDa7Pk1tgZ+zvyL/H5ZPkEA=; b=hEbrrL4wvgP8L8krYwVY/7cfAljx1N+zwWaS/4Wh2m1kTFunA72S1Sn8kzPkA9PhBvL+wb 1Dv9aAuLeJD8NAJjrby33hYGkm8H/HNODBpJK6PJ14iHxq2aWmGzYYE/T+zmpfHUReCINe 0u0S2pzzeyKjHwWjRaZwt4sv3N7EKTki6hcxMt1FJ7OMwcyf+bUu6Rg4f2eNySyjdsLCs5 BO/fuDRXUwWhxIAGBTSAQ1Mc/C4LpMD2h0SjT+BNfoh/J+A2W1rFJ57FtL8iP3ZoWGTcDe L6x/lXBljVi7a/yXVnP6m7bj07k/J6gL+G1LTR0hPY1eYO012nECyVATSz0P3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1734125858; 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=DOhTl5zFL2jliJ7mfsEPcDa7Pk1tgZ+zvyL/H5ZPkEA=; b=xjOC2Q9GmhYsqEYbbN6kl+fnTJ0LUCmNv5LHDFCl5XOzoy35q4FGrZB3MykFh9JtfC8fMw gheDd8gJax+hvP74BEk+OVa5Z+zZU4Hs1NRs2vs3ujv/499M0d3CGfUZujNoRlHLice+FP eHKY+REXVRrZ4ELRzbjMwwmPhTDadNDKU9iOtBSPwjzY7NGwRiIxl0hrCYz9ZpVOy7g+NB Pl050hnHk02tIROivJovq7ojD1C4IHJ/1sp4yymLWFMLXiRpD8yCn1Pdr70OIfHpmoupRs Zj7Xa6JamCp+gojkJcZiZ7Hvf25zi5TZz/OeS582QX3eG8ysdLdDQ4pJphEfLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1734125858; a=rsa-sha256; cv=none; b=ARGzfX0nzaKTkhCq5Bsie34cW0DpA6as1RvhEPJJfPoB/T4JnAmfUOidzzez6IL581bcW8 uRFrbBEBXjovCaB0tEEh3cPcGReQTm4t1mVdvYu3KiJqSNMztXJ1W0JoSe3thHRJuFx2m9 Hs2OZSyT8T9ztesc12/D5+dWfJtLBPHovPRv8XHK5P8n68qDBDp32aWr/abhRw29r+eiom OAtL4grthBoL72fMZFhygQN4hsbc3SwG8nbUSKa5WN6/FOxL+qm3YD5s/VN/hTd9FAu7ED XZ6Qi9tDnlUfqoFbSws3P3lcb38NsevTQ27Ahk5eKCKq3gkCU5zBA2isIOWUcg== 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 4Y92kB3LX2zv5H; Fri, 13 Dec 2024 21:37:38 +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 4BDLbcPR061628; Fri, 13 Dec 2024 21:37:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 4BDLbcHE061625; Fri, 13 Dec 2024 21:37:38 GMT (envelope-from git) Date: Fri, 13 Dec 2024 21:37:38 GMT Message-Id: <202412132137.4BDLbcHE061625@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: 8176157d69b8 - stable/13 - mips: Extract HWREna configuration and call from APs 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: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8176157d69b89a811f997cbbe490dfd57595f264 Auto-Submitted: auto-generated The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=8176157d69b89a811f997cbbe490dfd57595f264 commit 8176157d69b89a811f997cbbe490dfd57595f264 Author: Jessica Clarke AuthorDate: 2024-12-13 21:37:00 +0000 Commit: Jessica Clarke CommitDate: 2024-12-13 21:37:00 +0000 mips: Extract HWREna configuration and call from APs The intent of mips_get_identity is to perform any feature detection and corresponding global system configuration, but currently it is also abused to set HWREna.UL on the BSP when available, with APs being left unconfigured. Extract that part out into its own function that gets called after mips_get_identity on the BSP, and call it on the APs from smp_init_secondary. This is a direct commit to stable/13 as mips no longer exists in main. Reviewed by: jhibbits Differential Revision: https://reviews.freebsd.org/D48064 --- sys/mips/include/md_var.h | 1 + sys/mips/mips/cpu.c | 21 ++++++++++++++++++--- sys/mips/mips/mp_machdep.c | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/sys/mips/include/md_var.h b/sys/mips/include/md_var.h index ac2b7b692139..cfc13c950d4f 100644 --- a/sys/mips/include/md_var.h +++ b/sys/mips/include/md_var.h @@ -71,6 +71,7 @@ void mips_wait(void); void mips_vector_init(void); void mips_cpu_init(void); +void mips_hwrena_init(void); void mips_pcpu0_init(void); void mips_proc0_init(void); void mips_postboot_fixup(void); diff --git a/sys/mips/mips/cpu.c b/sys/mips/mips/cpu.c index d504d6c34d14..fc8c9bddbc42 100644 --- a/sys/mips/mips/cpu.c +++ b/sys/mips/mips/cpu.c @@ -141,10 +141,11 @@ mips_get_identity(struct mips_cpuinfo *cpuinfo) /* Check to see if UserLocal register is implemented. */ if (cfg3 & MIPS_CONFIG3_ULR) { - /* UserLocal register is implemented, enable it. */ + /* + * UserLocal register is implemented, enable it later in + * mips_hwrena_init. + */ cpuinfo->userlocal_reg = true; - tmp = mips_rd_hwrena(); - mips_wr_hwrena(tmp | MIPS_HWRENA_UL); } else { /* * UserLocal register is not implemented. Patch @@ -275,11 +276,25 @@ mips_get_identity(struct mips_cpuinfo *cpuinfo) #endif } +void +mips_hwrena_init(void) +{ + uint32_t reg; + + reg = mips_rd_hwrena(); + + if (cpuinfo.userlocal_reg) + reg |= MIPS_HWRENA_UL; + + mips_wr_hwrena(reg); +} + void mips_cpu_init(void) { platform_cpu_init(); mips_get_identity(&cpuinfo); + mips_hwrena_init(); num_tlbentries = cpuinfo.tlb_nentries; mips_wr_wired(0); tlb_invalidate_all(); diff --git a/sys/mips/mips/mp_machdep.c b/sys/mips/mips/mp_machdep.c index dfc3b59f0533..8a5903b2b514 100644 --- a/sys/mips/mips/mp_machdep.c +++ b/sys/mips/mips/mp_machdep.c @@ -52,6 +52,7 @@ #include #include #include +#include struct pcb stoppcbs[MAXCPU]; @@ -276,6 +277,8 @@ void smp_init_secondary(u_int32_t cpuid) { + mips_hwrena_init(); + /* TLB */ mips_wr_wired(0); tlb_invalidate_all();