Received: by 10.223.164.202 with SMTP id h10csp1586830wrb; Thu, 23 Nov 2017 21:29:47 -0800 (PST) X-Google-Smtp-Source: AGs4zMa46J4lfPenk4zO6lUaL/M9UFEd/QqcLBKuPS2ydKy+MguRaYrgbyQoqGZsHKW3v1CiVXbN X-Received: by 10.84.179.165 with SMTP id b34mr28173520plc.17.1511501387536; Thu, 23 Nov 2017 21:29:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511501387; cv=none; d=google.com; s=arc-20160816; b=tILD/HC31x0HP8jeoRRgd5VR1y9HsjtqCRuE+pJOfCWbCBoHWKGH7+DFOnJy5NNMCq equ6q76XrPzlHVnOd8YWS5ewcQvzQP45QKWjqxIV072tGk2ZzZj2UYN6iP8kmHIAzN0s BYyFyR0Qug1PDG6BIJ1Y61uWnKmo5yUMI/TgQsai1K2Ca6XuOPFwo4kMloJqIxjez3xC Ors+BQogkuULRTXzw3hiW74KPoKkjA3uGineccOh8AEzL4NFVZHt2aOzJDAbyeKsKigw I7+4ffnEUioWRb6GaKJxDfDOdyj5sDWqU/q9pjQLUhS6COZn40o/ACxZWGej5vfFs1Ie IGAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=EMzj87IAzvFQ2Q+0dbHZdOGGyM060rIH0+1iFPfBfeY=; b=bqjOKbCoMXMrbED2PCagXZk9fgJJAmtKdb5mSgo1ZEq48Fu2zSCuIb/j0qQDwJm8JN 9oZz43JM82UPCY9HPUcfdHOo2R28X9NfVhFhNP8z9NXE4txXT0a6ewcqEAwLwBupMDC3 XeNapQxM1pFhnqrZrpHh2EuDYX+P4zZmVWyrVpp4FCw5UeMubqL7vAjKRXfClk89m7HO zUCdHaAFgHaTCToH4pZzkMQOFeHNrymEbu5Fbhs5mvlK8SeI1FXdGmABZPU2gcADoQNi 3GEWbd0yNktzZQEyoIJLdZxq4MEnL3WOTme4Z1W5Vm8NAWe84VuuLTgqJDSpsZgu/YAO qecA== 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 e1si12352935pld.824.2017.11.23.21.29.36; Thu, 23 Nov 2017 21:29:47 -0800 (PST) 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 S1752018AbdKXF2k (ORCPT + 76 others); Fri, 24 Nov 2017 00:28:40 -0500 Received: from mga04.intel.com ([192.55.52.120]:18383 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751675AbdKXF2g (ORCPT ); Fri, 24 Nov 2017 00:28:36 -0500 Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Nov 2017 21:28:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,444,1505804400"; d="scan'208";a="177169601" Received: from skchakra-desk-3.iind.intel.com ([10.66.254.101]) by orsmga005.jf.intel.com with ESMTP; 23 Nov 2017 21:28:33 -0800 From: Souvik Kumar Chakravarty To: platform-driver-x86@vger.kernel.org Cc: dvhart@infradead.org, andy@infradead.org, linux-kernel@vger.kernel.org, rajneesh.bhardwaj@intel.com, Souvik Kumar Chakravarty Subject: [PATCH v3 2/4] platform/x86: intel_telemetry: Fix suspend stats Date: Fri, 24 Nov 2017 19:04:42 +0530 Message-Id: <1511530484-29845-3-git-send-email-souvik.k.chakravarty@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511530484-29845-1-git-send-email-souvik.k.chakravarty@intel.com> References: <1511530484-29845-1-git-send-email-souvik.k.chakravarty@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Suspend stats are not reported consistently due to a limitation in the PMC firmware. This limitation causes a delay in updating the s0ix counters and residencies in the telemetry log upon s0ix exit. As a consequence, reading these counters from the suspend-exit notifier may result in zero read. This patch fixes this issue by cross-verifying the s0ix residencies from the GCR TELEM registers in case the counters are not incremented in the telemetry log after suspend. This fixes https://bugzilla.kernel.org/show_bug.cgi?id=197833 Reported-and-tested-by: Rajneesh Bhardwaj Signed-off-by: Souvik Kumar Chakravarty --- drivers/platform/x86/intel_telemetry_debugfs.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) Changes since v2: * Use pmc_ipc_gcr_read64() API to read 64-bits at a time * Re-introduce the static qualifier to handle the case where the telemetry suspend/resume log does not contain the s0ix residencies. In that case, we would like to retain the values from the previous/initial cycle. Changes since v1: * Use pmc_ipc_gcr_readq API to read 64-bits at a time diff --git a/drivers/platform/x86/intel_telemetry_debugfs.c b/drivers/platform/x86/intel_telemetry_debugfs.c index 4249e826..5bc4f20 100644 --- a/drivers/platform/x86/intel_telemetry_debugfs.c +++ b/drivers/platform/x86/intel_telemetry_debugfs.c @@ -890,6 +890,31 @@ static int pm_suspend_exit_cb(void) goto out; } + /* + * Due to some design limitations in the firmware, sometimes the + * counters do not get updated by the time we reach here. As a + * workaround, we try to see if this was a genuine case of sleep + * failure or not by cross-checking from PMC GCR registers directly. + */ + if (suspend_shlw_ctr_exit == suspend_shlw_ctr_temp && + suspend_deep_ctr_exit == suspend_deep_ctr_temp) { + ret = intel_pmc_gcr_read64(PMC_GCR_TELEM_SHLW_S0IX_REG, + &suspend_shlw_res_exit); + if (ret < 0) + goto out; + + ret = intel_pmc_gcr_read64(PMC_GCR_TELEM_DEEP_S0IX_REG, + &suspend_deep_res_exit); + if (ret < 0) + goto out; + + if (suspend_shlw_res_exit > suspend_shlw_res_temp) + suspend_shlw_ctr_exit++; + + if (suspend_deep_res_exit > suspend_deep_res_temp) + suspend_deep_ctr_exit++; + } + suspend_shlw_ctr_exit -= suspend_shlw_ctr_temp; suspend_deep_ctr_exit -= suspend_deep_ctr_temp; suspend_shlw_res_exit -= suspend_shlw_res_temp; -- 2.7.4 From 1584914151597416945@xxx Fri Nov 24 02:52:00 +0000 2017 X-GM-THRID: 1584656164920416665 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread