From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [tip:ras/core] x86/mce: Always use 64-bit timestamps From: tip-bot for Borislav Petkov Message-Id: Date: Fri, 22 Jun 2018 05:40:44 -0700 To: linux-tip-commits@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-edac@vger.kernel.org, arnd@arndb.de, tony.luck@intel.com, bp@suse.de, mingo@kernel.org, hpa@zytor.com, tglx@linutronix.de List-ID: Q29tbWl0LUlEOiAgYmMzOWYwMTAyMDBkMDlkYzZkNGQ1ZTYxM2U4NmRmZDBiMjJjNjNiMwpHaXR3 ZWI6ICAgICBodHRwczovL2dpdC5rZXJuZWwub3JnL3RpcC9iYzM5ZjAxMDIwMGQwOWRjNmQ0ZDVl NjEzZTg2ZGZkMGIyMmM2M2IzCkF1dGhvcjogICAgIEFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIu ZGU+CkF1dGhvckRhdGU6IEZyaSwgMjIgSnVuIDIwMTggMTE6NTQ6MjIgKzAyMDAKQ29tbWl0dGVy OiAgVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CkNvbW1pdERhdGU6IEZyaSwg MjIgSnVuIDIwMTggMTQ6Mzc6MjIgKzAyMDAKCng4Ni9tY2U6IEFsd2F5cyB1c2UgNjQtYml0IHRp bWVzdGFtcHMKClRoZSBtYWNoaW5lIGNoZWNrIHRpbWVzdGFtcCB1c2VzIGdldF9zZWNvbmRzKCks IHdoaWNoIHJldHVybnMgYW4KJ3Vuc2lnbmVkIGxvbmcnIG51bWJlciB0aGF0IG1pZ2h0IG92ZXJm bG93IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzIChpbgp0aGUgZGlzdGFudCBmdXR1cmUpIGFuZCBp cyB0aGVyZWZvcmUgZGVwcmVjYXRlZC4KClRoZSBub3JtYWwgcmVwbGFjZW1lbnQgd291bGQgYmUg a3RpbWVfZ2V0X3JlYWxfc2Vjb25kcygpLCBidXQgdGhhdCBuZWVkcwp0byB1c2UgYSBzZXF1ZW5j ZSBsb2NrIHRoYXQgbWlnaHQgY2F1c2UgYSBkZWFkbG9jayBpZiB0aGUgTUNFIGhhcHBlbnMgYXQK anVzdCB0aGUgd3JvbmcgbW9tZW50LiBUaGUgX19rdGltZV9nZXRfcmVhbF9zZWNvbmRzKCkgc2tp cHMgdGhhdCBsb2NrCmFuZCBpcyBzYWZlciBoZXJlLCBidXQgaGFzIGEgbWluaXNjdWxlIHJpc2sg b2YgcmV0dXJuaW5nIHRoZSB3cm9uZyB0aW1lCndoZW4gd2UgcmVhZCBpdCBvbiBhIDMyLWJpdCBh cmNoaXRlY3R1cmUgYXQgdGhlIHNhbWUgdGltZSBhcyB1cGRhdGluZwp0aGUgZXBvY2gsIGkuZS4g ZnJvbSBiZWZvcmUgeTIxMDYgb3ZlcmZsb3cgdGltZSB0byBhZnRlciwgb3IgdmljZSB2ZXJzYS4K ClRoaXMgc2VlbXMgdG8gYmUgYW4gYWNjZXB0YWJsZSByaXNrIGluIHRoaXMgcGFydGljdWxhciBj YXNlLCBhbmQgaXMgdGhlCnNhbWUgdGhpbmcgd2UgZG8gaW4ga2RiLgoKU2lnbmVkLW9mZi1ieTog QXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KU2lnbmVkLW9mZi1ieTogQm9yaXNsYXYgUGV0 a292IDxicEBzdXNlLmRlPgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGlu dXRyb25peC5kZT4KQWNrZWQtYnk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRl PgpDYzogVG9ueSBMdWNrIDx0b255Lmx1Y2tAaW50ZWwuY29tPgpDYzogbGludXgtZWRhYyA8bGlu dXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmc+CkNjOiB5MjAzOEBsaXN0cy5saW5hcm8ub3JnCkxpbms6 IGh0dHA6Ly9sa21sLmtlcm5lbC5vcmcvci8yMDE4MDYxODEwMDc1OS4xOTIxNzUwLTEtYXJuZEBh cm5kYi5kZQotLS0KIGFyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jIHwgNCArKy0tCiAx IGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKLS0KVG8gdW5z dWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4 LWVkYWMiIGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwu b3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jk b21vLWluZm8uaHRtbAoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21j ZS5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMKaW5kZXggZTkzNjcwZDczNmE2 Li5kNjIyMDFlNDAwMjcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21j ZS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jCkBAIC0xMjMsOCArMTIz LDggQEAgdm9pZCBtY2Vfc2V0dXAoc3RydWN0IG1jZSAqbSkKIHsKIAltZW1zZXQobSwgMCwgc2l6 ZW9mKHN0cnVjdCBtY2UpKTsKIAltLT5jcHUgPSBtLT5leHRjcHUgPSBzbXBfcHJvY2Vzc29yX2lk KCk7Ci0JLyogV2UgaG9wZSBnZXRfc2Vjb25kcyBzdGF5cyBsb2NrbGVzcyAqLwotCW0tPnRpbWUg PSBnZXRfc2Vjb25kcygpOworCS8qIG5lZWQgdGhlIGludGVybmFsIF9fIHZlcnNpb24gdG8gYXZv aWQgZGVhZGxvY2tzICovCisJbS0+dGltZSA9IF9fa3RpbWVfZ2V0X3JlYWxfc2Vjb25kcygpOwog CW0tPmNwdXZlbmRvciA9IGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvcjsKIAltLT5jcHVpZCA9IGNw dWlkX2VheCgxKTsKIAltLT5zb2NrZXRpZCA9IGNwdV9kYXRhKG0tPmV4dGNwdSkucGh5c19wcm9j X2lkOwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 603C9C43142 for ; Fri, 22 Jun 2018 12:41:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2068B241EE for ; Fri, 22 Jun 2018 12:41:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2068B241EE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=zytor.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751444AbeFVMlC (ORCPT ); Fri, 22 Jun 2018 08:41:02 -0400 Received: from terminus.zytor.com ([198.137.202.136]:60187 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751284AbeFVMlB (ORCPT ); Fri, 22 Jun 2018 08:41:01 -0400 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id w5MCeiuQ069348 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 22 Jun 2018 05:40:44 -0700 Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id w5MCeiGt069345; Fri, 22 Jun 2018 05:40:44 -0700 Date: Fri, 22 Jun 2018 05:40:44 -0700 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Arnd Bergmann Message-ID: Cc: linux-kernel@vger.kernel.org, linux-edac@vger.kernel.org, arnd@arndb.de, tony.luck@intel.com, bp@suse.de, mingo@kernel.org, hpa@zytor.com, tglx@linutronix.de Reply-To: mingo@kernel.org, hpa@zytor.com, bp@suse.de, tglx@linutronix.de, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, tony.luck@intel.com, arnd@arndb.de In-Reply-To: <20180618100759.1921750-1-arnd@arndb.de> References: <20180618100759.1921750-1-arnd@arndb.de> To: linux-tip-commits@vger.kernel.org Subject: [tip:ras/core] x86/mce: Always use 64-bit timestamps Git-Commit-ID: bc39f010200d09dc6d4d5e613e86dfd0b22c63b3 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: bc39f010200d09dc6d4d5e613e86dfd0b22c63b3 Gitweb: https://git.kernel.org/tip/bc39f010200d09dc6d4d5e613e86dfd0b22c63b3 Author: Arnd Bergmann AuthorDate: Fri, 22 Jun 2018 11:54:22 +0200 Committer: Thomas Gleixner CommitDate: Fri, 22 Jun 2018 14:37:22 +0200 x86/mce: Always use 64-bit timestamps The machine check timestamp uses get_seconds(), which returns an 'unsigned long' number that might overflow on 32-bit architectures (in the distant future) and is therefore deprecated. The normal replacement would be ktime_get_real_seconds(), but that needs to use a sequence lock that might cause a deadlock if the MCE happens at just the wrong moment. The __ktime_get_real_seconds() skips that lock and is safer here, but has a miniscule risk of returning the wrong time when we read it on a 32-bit architecture at the same time as updating the epoch, i.e. from before y2106 overflow time to after, or vice versa. This seems to be an acceptable risk in this particular case, and is the same thing we do in kdb. Signed-off-by: Arnd Bergmann Signed-off-by: Borislav Petkov Signed-off-by: Thomas Gleixner Acked-by: Thomas Gleixner Cc: Tony Luck Cc: linux-edac Cc: y2038@lists.linaro.org Link: http://lkml.kernel.org/r/20180618100759.1921750-1-arnd@arndb.de --- arch/x86/kernel/cpu/mcheck/mce.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index e93670d736a6..d62201e40027 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -123,8 +123,8 @@ void mce_setup(struct mce *m) { memset(m, 0, sizeof(struct mce)); m->cpu = m->extcpu = smp_processor_id(); - /* We hope get_seconds stays lockless */ - m->time = get_seconds(); + /* need the internal __ version to avoid deadlocks */ + m->time = __ktime_get_real_seconds(); m->cpuvendor = boot_cpu_data.x86_vendor; m->cpuid = cpuid_eax(1); m->socketid = cpu_data(m->extcpu).phys_proc_id;