Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp4654989img; Tue, 26 Mar 2019 13:56:41 -0700 (PDT) X-Google-Smtp-Source: APXvYqyOjAdu3TDJcdQgaMtXcvIhT6v6xTd2JwgrtWcCbEe1+/n2+IU0w/DNOc7goUXhZD+pAChS X-Received: by 2002:a17:902:7b93:: with SMTP id w19mr33124505pll.141.1553633801802; Tue, 26 Mar 2019 13:56:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553633801; cv=none; d=google.com; s=arc-20160816; b=sOM9Q1JD8LNmDijE1B+cwQZDZIAbmYxAK5COyfgQ0iJH5swM0MLKHxkWILiuTQ6mbB 3G5ieDCwSnzoepcFMcjRL9SjJqHzj6wSj1Z7YIogriEAR4+XQj7sKJsI/xsAF8HFBfSz GJBTzq9upBh2aIVMc677CYIrzM1wDPQ8B3GWInmGUHJ7DJkmUr2qY+q8fdlnq1rXKz1E S4xh/NGT8ECe6W2tThYtMuMUTx3E/J1dbXjWd/yF/OIvZjMsgRbcc4OKIY2CiWWgpDaG wittgyZhpg1KmcP+NIRPuhEPw+8Mr8m6dXGIoCdnaKAIvr/0uDBU24569RiQVysDY5NW jY/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date; bh=6dpA/c/BWZCHZZNbu50c4KX+B+DLLm1gPttC0GhbMP8=; b=zMd6ahbAOexwAKfV0W4bRUDHhfWt3rOT7fnE8iuHG/6foGdUfrF7O1BwZ+VQwlCDgG LQ4+JDzYICKMiMFNUOL8d+WoJV35iBEQUCulybMesqRuLtg1swZ+afzecjc9ouo3cWga g+L5TsrCDJaqhqlrzKpYXIfHsxK1hrCtQqfDGgOJ9agtKsd8FWx/GCzAkSVtydMf4hPQ GQG9cGCTimT+QrpeL7EQmL3cJ+JMLhmkQFFPmR+4R99Cdu85oLEmjs/8hgofY9TWoxkd 0qWiFMMoAEKRGZdFcgi8iHSDkvucStVefI0HK82XcStgxYJECAbkHMbWVtDS1gnPayir ++zg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m7si17271481pfb.272.2019.03.26.13.56.25; Tue, 26 Mar 2019 13:56:41 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732696AbfCZUzo (ORCPT + 99 others); Tue, 26 Mar 2019 16:55:44 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:49336 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726811AbfCZUzo (ORCPT ); Tue, 26 Mar 2019 16:55:44 -0400 Received: from p5492e2fc.dip0.t-ipconnect.de ([84.146.226.252] helo=nanos) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1h8t6e-000669-8B; Tue, 26 Mar 2019 21:55:36 +0100 Date: Tue, 26 Mar 2019 21:55:35 +0100 (CET) From: Thomas Gleixner To: Ricardo Neri cc: Ingo Molnar , Borislav Petkov , Ashok Raj , Andi Kleen , Peter Zijlstra , "Ravi V. Shankar" , x86@kernel.org, linux-kernel@vger.kernel.org, Ricardo Neri , "H. Peter Anvin" , Tony Luck , Clemens Ladisch , Arnd Bergmann , Philippe Ombredanne , Kate Stewart , "Rafael J. Wysocki" , Mimi Zohar , Jan Kiszka , Nick Desaulniers , Masahiro Yamada , Nayna Jain Subject: Re: [RFC PATCH v2 12/14] x86/watchdog/hardlockup/hpet: Determine if HPET timer caused NMI In-Reply-To: <1551283518-18922-13-git-send-email-ricardo.neri-calderon@linux.intel.com> Message-ID: References: <1551283518-18922-1-git-send-email-ricardo.neri-calderon@linux.intel.com> <1551283518-18922-13-git-send-email-ricardo.neri-calderon@linux.intel.com> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 27 Feb 2019, Ricardo Neri wrote: > @@ -62,7 +67,18 @@ static inline void set_comparator(struct hpet_hld_data *hdata, > static void kick_timer(struct hpet_hld_data *hdata, bool force) > { > bool kick_needed = force || !(hdata->flags & HPET_DEV_PERI_CAP); > - unsigned long new_compare, count; > + unsigned long tsc_curr, tsc_delta, new_compare, count; > + > + /* Start obtaining the current TSC and HPET counts. */ > + tsc_curr = rdtsc(); > + > + if (kick_needed) > + count = get_count(); Can you please keep the TSC code in one block and the HPET block in the next one? Having this inbetween is really bad to follow. It really does not matter whether you read the HPET counter before or after the calculation. This is a crystal ball estimation anyway so a few cyles more or less are completely irrelevant. > + tsc_delta = (unsigned long)watchdog_thresh * (unsigned long)tsc_khz > + * 1000L; > + hdata->tsc_next = tsc_curr + tsc_delta; > + hdata->tsc_next_error = tsc_delta >> 6; Thanks, tglx