From nobody Mon Jun 22 22:47:38 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 AA46AC433EF for ; Tue, 15 Mar 2022 15:43:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349726AbiCOPpE (ORCPT ); Tue, 15 Mar 2022 11:45:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349702AbiCOPo5 (ORCPT ); Tue, 15 Mar 2022 11:44:57 -0400 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D330913CDD; Tue, 15 Mar 2022 08:43:44 -0700 (PDT) Received: from pps.filterd (m0134424.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 22FARJ3Q018367; Tue, 15 Mar 2022 15:43:07 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=TAo7Ep+DrB7wKhwVK2qoCBsJsS5PRjEodBXs1jfXTAY=; b=gNKu8J3F74wTjj8eayDzMDCgxTz/9mNF/TPvOTNckbgiXZFLOnKhGSfDay+VZkMN151n L43icPmbpFs25MlmASS89hU/mZ88O+dvoIQ2SG1UqbLsXORoixVNQmEr3V/ae1vxLzRv Kn6fhaKjmHsfTrlJoYerbw/9UU44RkQIIL795T45iJ/Acmkq9s17Afmb1e+z21RhwK7k YbaOHWduE4g78jXl9ZUf2nFOe9Uvz9twW3nZrYUvoO36twftwvWsYuiy0BWWJM32KtYF Xs8SmAR0OG9hfW3N+/VwKRsfKNhgrI5E5jI8fBHPmxYtd4jZTooGI92UsFtfmAykEX0H Bw== Received: from g4t3426.houston.hpe.com (g4t3426.houston.hpe.com [15.241.140.75]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 3etqyb3rpw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Mar 2022 15:43:07 +0000 Received: from g4t3433.houston.hpecorp.net (g4t3433.houston.hpecorp.net [16.208.49.245]) by g4t3426.houston.hpe.com (Postfix) with ESMTP id D15824E; Tue, 15 Mar 2022 15:43:06 +0000 (UTC) Received: from dog.eag.rdlabs.hpecorp.net (dog.eag.rdlabs.hpecorp.net [128.162.243.181]) by g4t3433.houston.hpecorp.net (Postfix) with ESMTP id F3DFB46; Tue, 15 Mar 2022 15:43:05 +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 v2 1/3] x86/platform/uv: Update NMI Handler for UV5 Date: Tue, 15 Mar 2022 10:42:47 -0500 Message-Id: <20220315154249.201067-2-mike.travis@hpe.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220315154249.201067-1-mike.travis@hpe.com> References: <20220315154249.201067-1-mike.travis@hpe.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 8z-i0VRx3kCzfXn6RmrEEdxnVlkxQzsU X-Proofpoint-ORIG-GUID: 8z-i0VRx3kCzfXn6RmrEEdxnVlkxQzsU 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-03-15_03,2022-03-15_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1015 mlxscore=0 mlxlogscore=999 impostorscore=0 suspectscore=0 adultscore=0 malwarescore=0 phishscore=0 spamscore=0 bulkscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203150101 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 --- v2: Use bool flag to assume NMI support for UV5 and above --- arch/x86/platform/uv/uv_nmi.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/arch/x86/platform/uv/uv_nmi.c b/arch/x86/platform/uv/uv_nmi.c index 1e9ff28bc2e0..4bab69fcd18c 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 0; + /* 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,26 @@ 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 1; /* 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) & 1UL << uvh_nmi_mmrx_req_s= hift)) { + 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 Mon Jun 22 22:47:38 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 E18BBC433EF for ; Tue, 15 Mar 2022 15:43:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349711AbiCOPo7 (ORCPT ); Tue, 15 Mar 2022 11:44:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51096 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349695AbiCOPo4 (ORCPT ); Tue, 15 Mar 2022 11:44:56 -0400 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 675E313CD6; Tue, 15 Mar 2022 08:43:44 -0700 (PDT) Received: from pps.filterd (m0150244.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 22FEP3ii027583; Tue, 15 Mar 2022 15:43:09 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=BqkAywTgWdlW1+XBiXg5Rfy8g9DvAfqYPHFJLBdTzOk=; b=Q/7VDq0U/7A11PDBhbJkzps7Kb4q633tqup7bOX7q8pxLrcsdf34HPzGuPNAchY4UiQF m9fWXGqo3/4gcRfUeWksNEOLetOc2rDQ5juSrLknsx48XnKufIdsnPm2Z/BwdP1tAEQg PSADIvWF0qTSnLuihQcPoCiEQ+bH7ket2x4mQoaF9jGimG7FJknP2ru+4JlroG31Gw7p kly8iwzegrvQRZCxc0KPZbXgHMF+Sg4fZgYRzFPBWgj5BgQEkKB9xNyi/Ifu5hvtMBOJ boiDxRL8ane/F7jtugcebtNjQwdl2CZCLGxU13qDcUxOJaw6St7uJZcc6hQC6ajbgcgy KQ== Received: from g4t3425.houston.hpe.com (g4t3425.houston.hpe.com [15.241.140.78]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 3etvhvrsnu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Mar 2022 15:43:08 +0000 Received: from g4t3433.houston.hpecorp.net (g4t3433.houston.hpecorp.net [16.208.49.245]) by g4t3425.houston.hpe.com (Postfix) with ESMTP id 3D99F8D; Tue, 15 Mar 2022 15:43:07 +0000 (UTC) Received: from dog.eag.rdlabs.hpecorp.net (dog.eag.rdlabs.hpecorp.net [128.162.243.181]) by g4t3433.houston.hpecorp.net (Postfix) with ESMTP id E4F634A; Tue, 15 Mar 2022 15:43:06 +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 v2 2/3] x86/platform/uv: Update TSC sync state for UV5 Date: Tue, 15 Mar 2022 10:42:48 -0500 Message-Id: <20220315154249.201067-3-mike.travis@hpe.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220315154249.201067-1-mike.travis@hpe.com> References: <20220315154249.201067-1-mike.travis@hpe.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: r2THen_Mma8MzJ0A4onq1MwKP4PAQ1q5 X-Proofpoint-GUID: r2THen_Mma8MzJ0A4onq1MwKP4PAQ1q5 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-03-15_03,2022-03-15_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 adultscore=0 spamscore=0 malwarescore=0 mlxscore=0 priorityscore=1501 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203150101 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Update TSC 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 Mon Jun 22 22:47:38 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 897D0C433F5 for ; Tue, 15 Mar 2022 15:43:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349734AbiCOPpG (ORCPT ); Tue, 15 Mar 2022 11:45:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349701AbiCOPo5 (ORCPT ); Tue, 15 Mar 2022 11:44:57 -0400 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B81DC12A88; Tue, 15 Mar 2022 08:43:44 -0700 (PDT) Received: from pps.filterd (m0150244.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 22FEP12T027492; Tue, 15 Mar 2022 15:43:09 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=MmbDNkZcN0nDJ/dIAy0JV5+9mSxYT+G5aSV76VaEeid11XLoJzABNDBNuI69a4n6Egqf oA4eAx2t7m6ByKzIzF+CmR9yNsKOV1PnCrgggwHE6ivDkCElQok1IVujap1MR2bd9f6f K+1snqnxI/v4bFnmeGMMLhrdObFohMHAa75bBa9F/6Clg46N+AgLWc/L6MxV7y/g/HL7 //V8/46GALm+6TrpdjYCk9PfffoZFT+U1LpfCCkU71+u2ntQdg6n+dGGxJlOcQjkduup OJGsidMIvW6bFpo+p0BU06VFmM0X+sDivrxeDfq4cJjvzEW5sT4qrsLz5ZHevUsBqOef tA== Received: from g9t5009.houston.hpe.com (g9t5009.houston.hpe.com [15.241.48.73]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 3etvhvrsny-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Mar 2022 15:43:09 +0000 Received: from g4t3433.houston.hpecorp.net (g4t3433.houston.hpecorp.net [16.208.49.245]) by g9t5009.houston.hpe.com (Postfix) with ESMTP id B87D865; Tue, 15 Mar 2022 15:43:08 +0000 (UTC) Received: from dog.eag.rdlabs.hpecorp.net (dog.eag.rdlabs.hpecorp.net [128.162.243.181]) by g4t3433.houston.hpecorp.net (Postfix) with ESMTP id D81E448; Tue, 15 Mar 2022 15:43:07 +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 v2 3/3] x86/platform/uv: Log gap hole end size Date: Tue, 15 Mar 2022 10:42:49 -0500 Message-Id: <20220315154249.201067-4-mike.travis@hpe.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220315154249.201067-1-mike.travis@hpe.com> References: <20220315154249.201067-1-mike.travis@hpe.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: BE3uXUHf4-i6l9HxgDzanucSqv8fiPR1 X-Proofpoint-GUID: BE3uXUHf4-i6l9HxgDzanucSqv8fiPR1 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-03-15_03,2022-03-15_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 adultscore=0 spamscore=0 malwarescore=0 mlxscore=0 priorityscore=1501 mlxlogscore=901 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203150101 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