Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp4069622rdh; Tue, 28 Nov 2023 10:57:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IGDmPrD21D2F0+B5hfx6KH8j/j31r/xmWDqfH2z3VuYxzNiPtOzl2DRhfpRnL+K3VlGgeRs X-Received: by 2002:a17:902:d508:b0:1cf:d597:194c with SMTP id b8-20020a170902d50800b001cfd597194cmr7788752plg.49.1701197836527; Tue, 28 Nov 2023 10:57:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701197836; cv=none; d=google.com; s=arc-20160816; b=e3DSukFzQHjn3W4/xTFx8R3aJUUKnbdid6I/Nj8EhRJY7RYj++C3N5PPvwnpPWll0d NqKcM0ZkCmrtWZZPV7gI/l/H+tYLw6xUk3/KmfzmGOn4nu7QCilMxSWl8fCIlfQhtu+v 7kUFsOeGfizo1anU5Rw/BLjxWIzhSvmC41TNLvU2xT2up7ETea3rCssWv4RfSeLJce6c 9PNkylQ2NejAJhSY4IjHxikbaPq0T7sJV+UqbXTHUQXy6sEyaLMl58zdOZ2I8rOiRrxh 0r/JNPkNhUlVVkxqsSpF+bnLz6IyJgKNU4K/ribrVmih0YA7GLjLSPkffwoQSvCWGIYn 8AsQ== 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=22pt6JXy/Bwd3KXqrqbRWIRRH8wRtf5dShfuu9h6nEA=; fh=WxcXzAXi1awalX5nBNdKiu2pCszhVA/a0vtqlN5we7w=; b=d+EGD37pztc3amxkszIh1ynnioq4XU8tIKO5LH0kkZyMRODFe5a5cTi2qYxlUv4rzn aNhgUoj4rJUNCvBAHK/Pg3hj+CdXq0Prrrg0gV+MzacdaihJ/FnUlPN5mlmdglFkoJXO SJjnCTItJpxm8Tw5o0eVXbM/Kq4I9yIqjSk58aV/+1a5Jd7Rb3swvFg2PcpnKNdHVsCm RSyXxI8a8WxhaLZTGn5icWBAIavbYsS/M/QDtjMg9SPyXDiejtBAWzCdWBwud9VxZLb9 IXWkTSxdJvGdPOSLZHCs5tbcqlh8IPDJiBbMfawxEgoOHEYq4znM6GWJoT6XWse6BTWH JDUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NtUHHhxU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id z9-20020a170902d54900b001d006d3b84csi1103099plf.1.2023.11.28.10.57.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 10:57:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NtUHHhxU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (Postfix) with ESMTP id A5D9C80ADC5C; Tue, 28 Nov 2023 10:57:13 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376281AbjK1S4p (ORCPT + 99 others); Tue, 28 Nov 2023 13:56:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345727AbjK1S4b (ORCPT ); Tue, 28 Nov 2023 13:56:31 -0500 Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5A51FD66; Tue, 28 Nov 2023 10:56:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701197798; x=1732733798; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1pNFwhaQkt5Pu4db/V5DAQvelVmx0K7YX68rjlEEwvY=; b=NtUHHhxULCK1/NTMlmHIQyHuKzDSv03+xWvYf3noWxJO+NPv42JM9h32 b/d67PhF989kLZz9CYlzUlxdEWhVvMi9QymoxUTOGUWNeYM06mS5dd8tw +FPhC1Jm56bQ/8sohGIPLwx37YTR8WCoOzTeWf9QhQAN8oUJUpB7NHrZX DdfHIAmqZMNrpmeCT1aHsIA8IadMkdfJJrwxmtyYZW4pCcXk9shJEEpwN ixN+syF4TGdRNiM4dtlOGIyZt4IBghmVMARkF/CWcP7cVkvmzH2bHLbMk qZ7oTe9+Q1fhVM7Vzc2b6hXLmg9NiVuQV2ulXnOUg3XYVzuVP+jB0+pAq A==; X-IronPort-AV: E=McAfee;i="6600,9927,10908"; a="372366986" X-IronPort-AV: E=Sophos;i="6.04,234,1695711600"; d="scan'208";a="372366986" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Nov 2023 10:56:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10908"; a="892165785" X-IronPort-AV: E=Sophos;i="6.04,234,1695711600"; d="scan'208";a="892165785" Received: from spandruv-desk.jf.intel.com ([10.54.75.14]) by orsmga004.jf.intel.com with ESMTP; 28 Nov 2023 10:56: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 6/6] platform/x86/intel-uncore-freq: Process read/write blocked feature status Date: Tue, 28 Nov 2023 10:56:05 -0800 Message-Id: <20231128185605.3027653-7-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231128185605.3027653-1-srinivas.pandruvada@linux.intel.com> References: <20231128185605.3027653-1-srinivas.pandruvada@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Tue, 28 Nov 2023 10:57:13 -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 --- .../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..de5db49a9afe 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) { + int 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