From nobody Fri Jun 19 11:03:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 695CEC4167D for ; Mon, 4 Apr 2022 22:08:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380533AbiDDWHS (ORCPT ); Mon, 4 Apr 2022 18:07:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379596AbiDDRoK (ORCPT ); Mon, 4 Apr 2022 13:44:10 -0400 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 11E7131DE8; Mon, 4 Apr 2022 10:42:14 -0700 (PDT) Received: from pps.filterd (m0150242.ppops.net [127.0.0.1]) by mx0a-002e3701.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 234Gitsk001178; Mon, 4 Apr 2022 17:41:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pps0720; bh=v6iZXwA2Am8swC6551Es3v1s4q+s9epkgRTwcKxjD5I=; b=iE5NPwcDy/K9FbjSFhvk0i813cqcvehb4sAcAHz7wD64lG8v7HD6SmKbmXY3UprsyKWc BXcJ5/4OOhO+4+tJclJSWM1jpYm8C/3Juqriv6suZSvA64UlyBWC0MK2oy4KPzq2F9vE rvEJmp71L4/OcnJTaN9yGcQmu9X7toMDwuLTnSlKqclUM6+25Xfa3ZITGzciJfmM00Ed jaG7h3W/ffnX81zIByIVSN7s42uWZJkqRBGUnU5gqaLWrEWJLOlVo1RyikkGfI1ciOfr tAfmcB/7nqr2t0dFrI3HM1nwnEoPtiFHQFOvHSVK3sWKd5eIOUBUQm1/gj1+TmY+JDDs Lw== Received: from g4t3425.houston.hpe.com (g4t3425.houston.hpe.com [15.241.140.78]) by mx0a-002e3701.pphosted.com (PPS) with ESMTPS id 3f84f6rmj6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 04 Apr 2022 17:41:37 +0000 Received: from g9t2301.houston.hpecorp.net (g9t2301.houston.hpecorp.net [16.220.97.129]) by g4t3425.houston.hpe.com (Postfix) with ESMTP id 2366D8D; Mon, 4 Apr 2022 17:41:36 +0000 (UTC) Received: from dog.eag.rdlabs.hpecorp.net (dog.eag.rdlabs.hpecorp.net [128.162.243.181]) by g9t2301.houston.hpecorp.net (Postfix) with ESMTP id 461B650; Mon, 4 Apr 2022 17:41:35 +0000 (UTC) From: Mike Travis To: Borislav Petkov , Ingo Molnar , Thomas Gleixner , Steve Wahl , x86@kernel.org Cc: Mike Travis , Dimitri Sivanich , Andy Shevchenko , Darren Hart , "H. Peter Anvin" , Russ Anderson , linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org Subject: [PATCH v3 1/3] x86/platform/uv: Update NMI Handler for UV5 Date: Mon, 4 Apr 2022 12:41:09 -0500 Message-Id: <20220404174111.262414-2-mike.travis@hpe.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220404174111.262414-1-mike.travis@hpe.com> References: <20220404174111.262414-1-mike.travis@hpe.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: mF3WG-gxurDNXS8dqyI5j0_zPu2UiUly X-Proofpoint-GUID: mF3WG-gxurDNXS8dqyI5j0_zPu2UiUly X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-04-04_06,2022-03-31_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 mlxlogscore=999 phishscore=0 mlxscore=0 bulkscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204040100 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Update NMI handler to interface with UV5 hardware. This involves changing the EVENT_OCCURRED MMR used by the hardware and removes the check for which NMI function is supported by UV BIOS. The newer NMI function is assumed supported on UV5 and above. Signed-off-by: Mike Travis Reviewed-by: Dimitri Sivanich Reviewed-by: Steve Wahl --- v3: Fix mistake in UVH_EXTIO_INT0_BROADCAST check. Use true/false in setting bool flag. v2: Use bool flag to assume NMI support for UV5 and above. --- arch/x86/platform/uv/uv_nmi.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/arch/x86/platform/uv/uv_nmi.c b/arch/x86/platform/uv/uv_nmi.c index 1e9ff28bc2e0..6d2e9ae8576b 100644 --- a/arch/x86/platform/uv/uv_nmi.c +++ b/arch/x86/platform/uv/uv_nmi.c @@ -244,8 +244,10 @@ static inline bool uv_nmi_action_is(const char *action) /* Setup which NMI support is present in system */ static void uv_nmi_setup_mmrs(void) { + bool nmi_supported =3D false; + /* First determine arch specific MMRs to handshake with BIOS */ - if (UVH_EVENT_OCCURRED0_EXTIO_INT0_MASK) { + if (UVH_EVENT_OCCURRED0_EXTIO_INT0_MASK) { /* UV2,3,4 setup */ uvh_nmi_mmrx =3D UVH_EVENT_OCCURRED0; uvh_nmi_mmrx_clear =3D UVH_EVENT_OCCURRED0_ALIAS; uvh_nmi_mmrx_shift =3D UVH_EVENT_OCCURRED0_EXTIO_INT0_SHFT; @@ -255,26 +257,25 @@ static void uv_nmi_setup_mmrs(void) uvh_nmi_mmrx_req =3D UVH_BIOS_KERNEL_MMR_ALIAS_2; uvh_nmi_mmrx_req_shift =3D 62; =20 - } else if (UVH_EVENT_OCCURRED1_EXTIO_INT0_MASK) { + } else if (UVH_EVENT_OCCURRED1_EXTIO_INT0_MASK) { /* UV5+ setup */ uvh_nmi_mmrx =3D UVH_EVENT_OCCURRED1; uvh_nmi_mmrx_clear =3D UVH_EVENT_OCCURRED1_ALIAS; uvh_nmi_mmrx_shift =3D UVH_EVENT_OCCURRED1_EXTIO_INT0_SHFT; uvh_nmi_mmrx_type =3D "OCRD1-EXTIO_INT0"; =20 - uvh_nmi_mmrx_supported =3D UVH_EXTIO_INT0_BROADCAST; - uvh_nmi_mmrx_req =3D UVH_BIOS_KERNEL_MMR_ALIAS_2; - uvh_nmi_mmrx_req_shift =3D 62; + nmi_supported =3D true; /* assume sync valid on UV5+ */ + uvh_nmi_mmrx_req =3D 0; /* no request bit to clear */ =20 } else { - pr_err("UV:%s:cannot find EVENT_OCCURRED*_EXTIO_INT0\n", - __func__); + pr_err("UV:%s:NMI support not available on this system\n", __func__); return; } =20 /* Then find out if new NMI is supported */ - if (likely(uv_read_local_mmr(uvh_nmi_mmrx_supported))) { - uv_write_local_mmr(uvh_nmi_mmrx_req, - 1UL << uvh_nmi_mmrx_req_shift); + if (likely(nmi_supported) || (uv_read_local_mmr(uvh_nmi_mmrx_supported)))= { + if (uvh_nmi_mmrx_req) + uv_write_local_mmr(uvh_nmi_mmrx_req, + 1UL << uvh_nmi_mmrx_req_shift); nmi_mmr =3D uvh_nmi_mmrx; nmi_mmr_clear =3D uvh_nmi_mmrx_clear; nmi_mmr_pending =3D 1UL << uvh_nmi_mmrx_shift; --=20 2.26.2 From nobody Fri Jun 19 11:03:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C715EC43217 for ; Mon, 4 Apr 2022 22:08:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379205AbiDDWGn (ORCPT ); Mon, 4 Apr 2022 18:06:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49494 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379595AbiDDRoK (ORCPT ); Mon, 4 Apr 2022 13:44:10 -0400 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCF2A31DE7; Mon, 4 Apr 2022 10:42:13 -0700 (PDT) Received: from pps.filterd (m0134422.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 234E2gkY030861; Mon, 4 Apr 2022 17:41:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pps0720; bh=lQMbAI0WUSuh5F+0VfEzQy0lsk/SJtkm5QIg+JH7Q08=; b=R2S9vpmT+QtF3R2OehXzBc1NiaJbxXxsRSxvF7sX9x2noB0HBmR9tWcYteSYDCS65yso 4+bPhKEAVCvT5OaCWxnl5G1zbCS4z0WHt3B/NwwobOtzYCX4xllOmrm8UhTkmGJoZeeI EKKVRsDN3wehvbAkzVyKVTjQw5bQRB8VqhHXvZiylZ8hlv3mfge+gTStfzBDZSYwvRS1 LoTXnYiT7ZlIemgpTaWGRMN+z77ayDyD8OiJ2b3hzhQWL/8R/1nfnobuVRzVArFUSXjT zDgKFVIovD8ynSHGApXzoHLVv7VH2oAL1ZHWsolasQUYq58r/PelSKYW6BeFmwO10J+i ZA== Received: from g4t3427.houston.hpe.com (g4t3427.houston.hpe.com [15.241.140.73]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 3f7tbexfnt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 04 Apr 2022 17:41:38 +0000 Received: from g9t2301.houston.hpecorp.net (g9t2301.houston.hpecorp.net [16.220.97.129]) by g4t3427.houston.hpe.com (Postfix) with ESMTP id 135A25C; Mon, 4 Apr 2022 17:41:37 +0000 (UTC) Received: from dog.eag.rdlabs.hpecorp.net (dog.eag.rdlabs.hpecorp.net [128.162.243.181]) by g9t2301.houston.hpecorp.net (Postfix) with ESMTP id 3608352; Mon, 4 Apr 2022 17:41:36 +0000 (UTC) From: Mike Travis To: Borislav Petkov , Ingo Molnar , Thomas Gleixner , Steve Wahl , x86@kernel.org Cc: Mike Travis , Dimitri Sivanich , Andy Shevchenko , Darren Hart , "H. Peter Anvin" , Russ Anderson , linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org Subject: [PATCH v3 2/3] x86/platform/uv: Update TSC sync state for UV5 Date: Mon, 4 Apr 2022 12:41:10 -0500 Message-Id: <20220404174111.262414-3-mike.travis@hpe.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220404174111.262414-1-mike.travis@hpe.com> References: <20220404174111.262414-1-mike.travis@hpe.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: k9v-34RVMVa6jXVCWMkjmyP7IkYKhrKH X-Proofpoint-ORIG-GUID: k9v-34RVMVa6jXVCWMkjmyP7IkYKhrKH X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-04-04_06,2022-03-31_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 adultscore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 mlxscore=0 malwarescore=0 clxscore=1015 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204040100 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Update to not check TSC sync state for uv5+ as it is not available. It is assumed that TSC will always be in sync for multiple chassis and will pass the tests for the kernel to accept it as the clocksource. To disable this check use the kernel start options tsc=3Dreliable clocksource=3Dtsc. Signed-off-by: Mike Travis Reviewed-by: Dimitri Sivanich Reviewed-by: Steve Wahl --- v2: Update patch description to be more explanatory. --- arch/x86/kernel/apic/x2apic_uv_x.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2ap= ic_uv_x.c index f5a48e66e4f5..387d6533549a 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c @@ -199,10 +199,16 @@ static void __init uv_tsc_check_sync(void) int mmr_shift; char *state; =20 - /* Different returns from different UV BIOS versions */ + /* UV5+, sync state from bios not available, assumed valid */ + if (!is_uv(UV2|UV3|UV4)) { + pr_debug("UV: TSC sync state for UV5+ assumed valid\n"); + mark_tsc_async_resets("UV5+"); + return; + } + + /* UV2,3,4, UV BIOS TSC sync state available */ mmr =3D uv_early_read_mmr(UVH_TSC_SYNC_MMR); - mmr_shift =3D - is_uv2_hub() ? UVH_TSC_SYNC_SHIFT_UV2K : UVH_TSC_SYNC_SHIFT; + mmr_shift =3D is_uv2_hub() ? UVH_TSC_SYNC_SHIFT_UV2K : UVH_TSC_SYNC_SHIFT; sync_state =3D (mmr >> mmr_shift) & UVH_TSC_SYNC_MASK; =20 /* Check if TSC is valid for all sockets */ --=20 2.26.2 From nobody Fri Jun 19 11:03:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C199C433F5 for ; Mon, 4 Apr 2022 22:01:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244056AbiDDWDk (ORCPT ); Mon, 4 Apr 2022 18:03:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49498 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379597AbiDDRoL (ORCPT ); Mon, 4 Apr 2022 13:44:11 -0400 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38A8A31DF0; Mon, 4 Apr 2022 10:42:14 -0700 (PDT) Received: from pps.filterd (m0150242.ppops.net [127.0.0.1]) by mx0a-002e3701.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 234GjdVc003316; Mon, 4 Apr 2022 17:41:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pps0720; bh=EqEV7oOPRCwvP9zFRtxS2amJ0sojOOK340QCkQmT5GQ=; b=EV0Vr4+6eloFzWx5Y1ZMrKC5Px9evjvYC7Z4dxkoQLYxRnv7UzMwAxlrsr7NnwpOKpnV VoW37agoBOd20YXvRgnY3Mx6POmmLawnAg2RhtvBOe6m/HoRB+YWLzIdkw0d+N5sdLWN k6t2X6heFO1Tvtj/8UP0zNwh7Kd93QcU9jaOD6xLa6To6yBNg8zawkMVnM75dnd31xdZ aLxL9jzgW+EGdD8omvyPhF6rwHEm8YCBxywmt4zRgMbLLxwVQBVW8V1EdcqJoFDbx5Ec mMAvm28AiG6/OyB4213RhN2m/0LhMrDWX8VkuP073MHNT6RQnbyCQ4vkJOx4wgvcyXhz SA== Received: from g9t5009.houston.hpe.com (g9t5009.houston.hpe.com [15.241.48.73]) by mx0a-002e3701.pphosted.com (PPS) with ESMTPS id 3f84f6rmjf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 04 Apr 2022 17:41:38 +0000 Received: from g9t2301.houston.hpecorp.net (g9t2301.houston.hpecorp.net [16.220.97.129]) by g9t5009.houston.hpe.com (Postfix) with ESMTP id 038E755; Mon, 4 Apr 2022 17:41:38 +0000 (UTC) Received: from dog.eag.rdlabs.hpecorp.net (dog.eag.rdlabs.hpecorp.net [128.162.243.181]) by g9t2301.houston.hpecorp.net (Postfix) with ESMTP id 2682C5C; Mon, 4 Apr 2022 17:41:37 +0000 (UTC) From: Mike Travis To: Borislav Petkov , Ingo Molnar , Thomas Gleixner , Steve Wahl , x86@kernel.org Cc: Mike Travis , Andy Shevchenko , Darren Hart , Dimitri Sivanich , "H. Peter Anvin" , Russ Anderson , linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org Subject: [PATCH v3 3/3] x86/platform/uv: Log gap hole end size Date: Mon, 4 Apr 2022 12:41:11 -0500 Message-Id: <20220404174111.262414-4-mike.travis@hpe.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220404174111.262414-1-mike.travis@hpe.com> References: <20220404174111.262414-1-mike.travis@hpe.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: kTl_aozcDXnjKZ6sWmQ_-q3atMRYhzkm X-Proofpoint-GUID: kTl_aozcDXnjKZ6sWmQ_-q3atMRYhzkm X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-04-04_06,2022-03-31_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 mlxlogscore=911 phishscore=0 mlxscore=0 bulkscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204040100 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Show value of gap end in the kernel log which equates to number of physical address bits used by system. The end address of the gap holds PA bits 56:26 which gives the range up to 64PB max size with 64MB of granularity. Signed-off-by: Mike Travis Reviewed-by: Steve Wahl --- v2: Update patch description to be more explanatory. --- arch/x86/kernel/apic/x2apic_uv_x.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2ap= ic_uv_x.c index 387d6533549a..146f0f63a43b 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c @@ -1346,7 +1346,7 @@ static void __init decode_gam_params(unsigned long pt= r) static void __init decode_gam_rng_tbl(unsigned long ptr) { struct uv_gam_range_entry *gre =3D (struct uv_gam_range_entry *)ptr; - unsigned long lgre =3D 0; + unsigned long lgre =3D 0, gend =3D 0; int index =3D 0; int sock_min =3D 999999, pnode_min =3D 99999; int sock_max =3D -1, pnode_max =3D -1; @@ -1380,6 +1380,9 @@ static void __init decode_gam_rng_tbl(unsigned long p= tr) flag, size, suffix[order], gre->type, gre->nasid, gre->sockid, gre->pnode); =20 + if (gre->type =3D=3D UV_GAM_RANGE_TYPE_HOLE) + gend =3D (unsigned long)gre->limit << UV_GAM_RANGE_SHFT; + /* update to next range start */ lgre =3D gre->limit; if (sock_min > gre->sockid) @@ -1397,7 +1400,8 @@ static void __init decode_gam_rng_tbl(unsigned long p= tr) _max_pnode =3D pnode_max; _gr_table_len =3D index; =20 - pr_info("UV: GRT: %d entries, sockets(min:%x,max:%x) pnodes(min:%x,max:%x= )\n", index, _min_socket, _max_socket, _min_pnode, _max_pnode); + pr_info("UV: GRT: %d entries, sockets(min:%x,max:%x), pnodes(min:%x,max:%= x), gap_end(%d)\n", + index, _min_socket, _max_socket, _min_pnode, _max_pnode, fls64(gend)); } =20 /* Walk through UVsystab decoding the fields */ --=20 2.26.2