Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp1375672pxp; Sun, 20 Mar 2022 15:09:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyJ0mrpx+glfXf+Xr1OjA2iFGmeWyd9rK9tT7EDadELD+3FBWQS22N8DjghPGrCeEfrR5BZ X-Received: by 2002:a17:906:974e:b0:6bb:4f90:a6ae with SMTP id o14-20020a170906974e00b006bb4f90a6aemr18905193ejy.452.1647814176681; Sun, 20 Mar 2022 15:09:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647814176; cv=none; d=google.com; s=arc-20160816; b=ZSWxcXEn4d0tNAckl53AlVePtnSLTEKneFLoqSXG2/Y+nUlbSg/UsAdzcagyFfg7DD 5EGgMxMZABIY0yvZGkfmqoxpzBhJiLCu5z3qKTgSxkVfQPk8Nkx4uFeEX2cpBlFTeWnr 2Gl54DVhgaSoC5Ldhz76CsE6dEAHvCHi/pFRRplLMo1wyDZzyauMQj+pMqL4cGUrz1ii kQs5FxQxJYnZ86eQ82+obQ4uFpFJHVuQ5pQj/cP3ydI62nnC4T+bTEItz4krTSUx5tjD CDTfQWiFCfFxJnpaBcy4IZi7F+UVJ2UeeX9ARiXq4qMXPm7c6+MGgZVACaWFtYAlegB1 doaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=v6iZXwA2Am8swC6551Es3v1s4q+s9epkgRTwcKxjD5I=; b=lnf8VNveJ5rOJnKNguT4pahF54es+qH8NWC1dPKtEVmcPSJ/ICJVuYaXBlCtD47WrS wIM1ionTuafk6Nd7m3OCK4GbShC8Kr55gzzym27Uaj0A0Z+TOuwFjAJkCdvSqo6+eYBp waH/9fm6N94RzVotDAe+NFLLwRl4JT69e3Xb6g7eUxgMp35WTuQ6OLRo8Mcfa1SPt0qO na4hdW/bJaLugKFJwCNYb9QhrEr+pwgDlEE3f0EOYR5t2sRiIcEj3S/N1ihBX4c/p7wJ zJk0b/kARQHfMIpbWDPZZ3VMzPTG2isTxkape8NgCtpCfZEXj+RoMrdFJr+su3LvDwLZ vGNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=ZKmXMzKA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hpe.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k17-20020a50c091000000b00418c2b5bde6si8368348edf.200.2022.03.20.15.09.11; Sun, 20 Mar 2022 15:09:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=ZKmXMzKA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hpe.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241355AbiCRWpV (ORCPT + 99 others); Fri, 18 Mar 2022 18:45:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56608 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241342AbiCRWpP (ORCPT ); Fri, 18 Mar 2022 18:45:15 -0400 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7FEDB19B07E; Fri, 18 Mar 2022 15:43:53 -0700 (PDT) Received: from pps.filterd (m0148664.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 22IK15Lm027630; Fri, 18 Mar 2022 22:43:14 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=ZKmXMzKAjSa1mG8zimYXg3cPnPYnqgGlgznfrG9o3jVlxuqzXFPIa7+nfXsRiU5toM7k LsCXeSzmaGGhAHBeblEAeUdF+dhtP3yMsT9nqJ9OhYdzmeZZSGORSQ5P0YwbCdFcPnEQ mZaNiVWrt284+hlO+nzNfVBc1231vXrP9T7tW8gANBuOLikY4K7W7367Noz//fyR5EGa KZwi89lEq8VnciKLkarFaq9rp5z5r7n78P91i8G0yocg6j4aZRVZV7aEuuB4tT9dUiY9 gUlPL3C0dJt5dUxvZnACEriUs7my+2T/DWIeLJcOYhAUx/ZDevw6gYajJx77pP0Lqdf0 dg== Received: from g9t5009.houston.hpe.com (g9t5009.houston.hpe.com [15.241.48.73]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 3evu2wc1hq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 18 Mar 2022 22:43:13 +0000 Received: from g4t3433.houston.hpecorp.net (g4t3433.houston.hpecorp.net [16.208.49.245]) by g9t5009.houston.hpe.com (Postfix) with ESMTP id D8C1858; Fri, 18 Mar 2022 22:43:12 +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 F00C74A; Fri, 18 Mar 2022 22:43:11 +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: Fri, 18 Mar 2022 17:43:02 -0500 Message-Id: <20220318224304.174967-2-mike.travis@hpe.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20220318224304.174967-1-mike.travis@hpe.com> References: <20220318224304.174967-1-mike.travis@hpe.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Proofpoint-ORIG-GUID: wEbrajT8OG6Uao5moFn5UQOCwWD0lOv3 X-Proofpoint-GUID: wEbrajT8OG6Uao5moFn5UQOCwWD0lOv3 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-18_14,2022-03-15_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 spamscore=0 mlxlogscore=999 priorityscore=1501 impostorscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 clxscore=1015 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203180122 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 = 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 = UVH_EVENT_OCCURRED0; uvh_nmi_mmrx_clear = UVH_EVENT_OCCURRED0_ALIAS; uvh_nmi_mmrx_shift = UVH_EVENT_OCCURRED0_EXTIO_INT0_SHFT; @@ -255,26 +257,25 @@ static void uv_nmi_setup_mmrs(void) uvh_nmi_mmrx_req = UVH_BIOS_KERNEL_MMR_ALIAS_2; uvh_nmi_mmrx_req_shift = 62; - } else if (UVH_EVENT_OCCURRED1_EXTIO_INT0_MASK) { + } else if (UVH_EVENT_OCCURRED1_EXTIO_INT0_MASK) { /* UV5+ setup */ uvh_nmi_mmrx = UVH_EVENT_OCCURRED1; uvh_nmi_mmrx_clear = UVH_EVENT_OCCURRED1_ALIAS; uvh_nmi_mmrx_shift = UVH_EVENT_OCCURRED1_EXTIO_INT0_SHFT; uvh_nmi_mmrx_type = "OCRD1-EXTIO_INT0"; - uvh_nmi_mmrx_supported = UVH_EXTIO_INT0_BROADCAST; - uvh_nmi_mmrx_req = UVH_BIOS_KERNEL_MMR_ALIAS_2; - uvh_nmi_mmrx_req_shift = 62; + nmi_supported = true; /* assume sync valid on UV5+ */ + uvh_nmi_mmrx_req = 0; /* no request bit to clear */ } 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; } /* 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 = uvh_nmi_mmrx; nmi_mmr_clear = uvh_nmi_mmrx_clear; nmi_mmr_pending = 1UL << uvh_nmi_mmrx_shift; -- 2.26.2