Received: by 2002:a05:7412:b10a:b0:f3:1519:9f41 with SMTP id az10csp624607rdb; Thu, 30 Nov 2023 13:48:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IE9zTbTHEeXhAwsetv4cuKKAIHkRpOgGgMsC9cWDcoVuPZJXn97uyVBOGen9Ve4A1w3Yqjz X-Received: by 2002:a17:902:da84:b0:1cf:ea64:f501 with SMTP id j4-20020a170902da8400b001cfea64f501mr13205572plx.9.1701380907366; Thu, 30 Nov 2023 13:48:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701380907; cv=none; d=google.com; s=arc-20160816; b=ZxwWhTacZEfWivYUoIVU0npMon9R+3JgmsFvenYjja8C4qdty7rSYigMm9kCNLs9CL +fIog3dfcy+FJoHPwbLQqEnIak8T9rfatPjXNQ3OSicl3boKIVzuMcj3PxEIO7tFacdP pcp/VQ9+74IjYsTSa4ra9Ya+4UrT7mXjOjkDlpy94Gca9KVWGJy8CNBD3Kj53E3ManaD 2v/vxjtf9S/u51c+yHLXwFE7jSC+8nBpx3EwWjd+soE1TPf5BILZfZ745JxKiTnVmUJk iFuRotDRzu12Pwvfth80BNmTxwa+tzS3DfE4v9AqoxbIHrOAiSLfTN1OW4nH2HWlxZsp moZw== 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=0E6N4PyVIq/X2NxSEf7/gyGidXO3K0/qvbqaqUlRksA=; fh=WxcXzAXi1awalX5nBNdKiu2pCszhVA/a0vtqlN5we7w=; b=Zao4KIqM+Zo7Ngw3HqUEsq9b4liYls7axwj1PDhHdzbnoqO08JYg1VznjyIxBRazey v/VW6+xcoM82mtKeg9juTXHlVJ+vz78bA/Z0G7f8DvG2eQ5U/w2edxuKDxpFDhaEEIMT 14/zOsz7yCUyKqiYT2wPVDZIUw4lo21dLq4RV6Ii20V30v9btUkAy7H18yrmFC8WSQrU Nz+dSRu4sry3GgBzdAa57RpBKty+Hb0g408s53jnNEPAnSB5JthVUk/I0U6Yg4N7sy7u /VTtg72ZbDH9MDmNmi+HQffNPVkUUtFejLuXBd2RPHFMOC2BWf67AIx5ALU64+tUq1JJ VOYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Kie+S0mL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id w7-20020a170902e88700b001cf9da55325si2098128plg.279.2023.11.30.13.48.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Nov 2023 13:48:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Kie+S0mL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 643228047066; Thu, 30 Nov 2023 13:48:26 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377032AbjK3VsO (ORCPT + 99 others); Thu, 30 Nov 2023 16:48:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232317AbjK3VsG (ORCPT ); Thu, 30 Nov 2023 16:48:06 -0500 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CE5E71704; Thu, 30 Nov 2023 13:48:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701380893; x=1732916893; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ynpHLXDdF8t4exe4BtFwqcU6UiBYIe3RD5PYagdF8UE=; b=Kie+S0mLoxPMeY8mDMPtrM37sxgfawqhftYI56jKpvFR8AvWWt38ENYK 96NPBh7SfqBSpM6PWnPOKHyo9DQIt+8hCNvUjlZm34OIZEmgOhMqYzO4z twGbB5aiw1HG1feG9jFONRHXWPhM5IFXYob8lmrj0wH80s0PKzBWVQGaj lPWoDFUWf165ppcvwy1lZ3QdTVUPAh8fPYi3dUoSyLXjif7tgmENkqITA o5LXR2Edp0zgP6xkjVbXIm+cmvXYcEHsryHAcldyWMvELgjQe5PtE1a1l J/1fxSXB2yijGCNntcKC5OEvuMzoyFSbvoUpCFPKd83al2hZyLehsOZu9 A==; X-IronPort-AV: E=McAfee;i="6600,9927,10910"; a="399962" X-IronPort-AV: E=Sophos;i="6.04,240,1695711600"; d="scan'208";a="399962" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2023 13:48:12 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10910"; a="860334609" X-IronPort-AV: E=Sophos;i="6.04,240,1695711600"; d="scan'208";a="860334609" Received: from spandruv-desk.jf.intel.com ([10.54.75.14]) by FMSMGA003.fm.intel.com with ESMTP; 30 Nov 2023 13:48:11 -0800 From: Srinivas Pandruvada To: hdegoede@redhat.com, markgross@kernel.org, ilpo.jarvinen@linux.intel.com, andriy.shevchenko@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v2 5/5] platform/x86/intel-uncore-freq: Process read/write blocked feature status Date: Thu, 30 Nov 2023 13:47:51 -0800 Message-Id: <20231130214751.3100418-6-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231130214751.3100418-1-srinivas.pandruvada@linux.intel.com> References: <20231130214751.3100418-1-srinivas.pandruvada@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 30 Nov 2023 13:48:26 -0800 (PST) When a feature is read blocked, don't continue to read uncore information and register with uncore core. When the feature is write blocked, continue to offer read interface but block setting uncore limits. Signed-off-by: Srinivas Pandruvada Reviewed-by: Ilpo Järvinen --- v2 - Change read_blocked, write_blocked to bool .../uncore-frequency/uncore-frequency-tpmi.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c index 4fb790552c47..bd75d61ff8a6 100644 --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c @@ -66,6 +66,7 @@ struct tpmi_uncore_struct { int min_ratio; struct tpmi_uncore_power_domain_info *pd_info; struct tpmi_uncore_cluster_info root_cluster; + bool write_blocked; }; #define UNCORE_GENMASK_MIN_RATIO GENMASK_ULL(21, 15) @@ -157,6 +158,9 @@ static int uncore_write_control_freq(struct uncore_data *data, unsigned int inpu cluster_info = container_of(data, struct tpmi_uncore_cluster_info, uncore_data); uncore_root = cluster_info->uncore_root; + if (uncore_root->write_blocked) + return -EPERM; + /* Update each cluster in a package */ if (cluster_info->root_domain) { struct tpmi_uncore_struct *uncore_root = cluster_info->uncore_root; @@ -233,11 +237,21 @@ static void remove_cluster_entries(struct tpmi_uncore_struct *tpmi_uncore) static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_device_id *id) { + bool read_blocked = 0, write_blocked = 0; struct intel_tpmi_plat_info *plat_info; struct tpmi_uncore_struct *tpmi_uncore; int ret, i, pkg = 0; int num_resources; + ret = tpmi_get_feature_status(auxdev, TPMI_ID_UNCORE, &read_blocked, &write_blocked); + if (ret) + dev_info(&auxdev->dev, "Can't read feature status: ignoring blocked status\n"); + + if (read_blocked) { + dev_info(&auxdev->dev, "Firmware has blocked reads, exiting\n"); + return -ENODEV; + } + /* Get number of power domains, which is equal to number of resources */ num_resources = tpmi_get_resource_count(auxdev); if (!num_resources) @@ -266,6 +280,7 @@ static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_ } tpmi_uncore->power_domain_count = num_resources; + tpmi_uncore->write_blocked = write_blocked; /* Get the package ID from the TPMI core */ plat_info = tpmi_get_platform_data(auxdev); -- 2.41.0