From nobody Sun Feb 8 03:09:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 315C528BA9E; Mon, 28 Apr 2025 17:03:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859815; cv=none; b=e2aDECqKLRTnzzIOYvAWXstZuXfC+NAh51rrq3uSWQkTi/1e051zjH2fL6drsbgM9JOFlChbEjNAPv3sneopgXw6hLEgMofOmLGYz+tqrIqnGjC+PVAnR7whaXpvnpiDybtxAUgv5Azf+O5D3Nn94Qg+jYqp7Wn4pN1gYfDKJfQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859815; c=relaxed/simple; bh=ysrTTBSb4UrLW23Gzaw3kyKF78ts4VI3k+m1d48iRMk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jNRMHXd3496Jem9i9RRI0FwRUj6/v5xprmwKuLPCKRC4P6NL+Bw/NjG1/ptYHP+vfbZh9hsojI2fk5GKZqJ66cGSCnVWPvmRVQbdY7qY+kauV2ep/l6qaM2NriVObwh+i4RE8h7sdLI94KrebxXfeZlFWgq300Uak2DNHYa9uFE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=gr4x2vt8; arc=none smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="gr4x2vt8" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745859813; x=1777395813; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ysrTTBSb4UrLW23Gzaw3kyKF78ts4VI3k+m1d48iRMk=; b=gr4x2vt8HWjGiqy2wPbZng2koIE+1FB+FtGR93ckZ83r0lYgGW1clCYu /j0JQ+Yl3nb0Xvx1n3Yg9iHQj55Vb4AXofrrQKRbK85NayA4L0OM/YK1/ xquY5sXxh/SyS8NjH3itmDXy85jNBjVEUwx4IFZrcxiI+jSUTwgo5OrgB Q2d9GcW+VjT8IACGKOv93Q9uUsjc4nbYC+O37WMvCNhdaSPgL64TgH5lF LRNC2pXr0YDir4EcGcru3iEa0SeublKzkJd+q07cvtzA1BW8I0iqIqvk4 hym6JKZk25i6bstW21zDZmybBChNl3M0A+WSiuCdU9D9RZtJGDsmOSohT w==; X-CSE-ConnectionGUID: jsic2+K4QRepHEUpMygMYA== X-CSE-MsgGUID: 7/tuNI67Sx2uQpg6MjkPOg== X-IronPort-AV: E=McAfee;i="6700,10204,11417"; a="58111438" X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="58111438" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Apr 2025 10:03:26 -0700 X-CSE-ConnectionGUID: 9m8tGFSZRxWE5omyqHqLow== X-CSE-MsgGUID: 9nzGczLoSD2SDWidW/H7Pg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="133309596" Received: from spandruv-desk.jf.intel.com ([10.54.75.16]) by orviesa009.jf.intel.com with ESMTP; 28 Apr 2025 10:03:25 -0700 From: Srinivas Pandruvada To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v2 1/5] platform/x86/intel-uncore-freq: Add attributes to show agent types Date: Mon, 28 Apr 2025 10:03:12 -0700 Message-ID: <20250428170316.231353-2-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> References: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Currently, users need detailed hardware information to understand the scope of controls within each uncore domain. Uncore frequency controls manage subsystems such as core, cache, memory, and I/O. The UFS TPMI provides this information, which can be used to present the scope more clearly. Each uncore domain consists of one or more agent types, with each agent type controlling one or more uncore hardware subsystems. For example, a single agent might control both the core and cache. Introduce a new attribute called "agent_types." This attribute displays a list of agents, separated by space character. The string representations for agent types are as follows: For core agent: core For cache agent: cache For memory agent: memory For I/O agent: io These agent types are read during probe time for each cluster and stored as part of the struct uncore_data. Signed-off-by: Srinivas Pandruvada --- v2: No change .../uncore-frequency-common.c | 24 ++++++++++++++++ .../uncore-frequency-common.h | 17 ++++++++++- .../uncore-frequency/uncore-frequency-tpmi.c | 28 +++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-c= ommon.c b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-comm= on.c index 4e2c6a2d7e6e..cfa3039a0e39 100644 --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.c +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.c @@ -43,6 +43,28 @@ static ssize_t show_package_id(struct kobject *kobj, str= uct kobj_attribute *attr return sprintf(buf, "%u\n", data->package_id); } =20 +static ssize_t show_agent_types(struct kobject *kobj, struct kobj_attribut= e *attr, char *buf) +{ + struct uncore_data *data =3D container_of(attr, struct uncore_data, agent= _types_kobj_attr); + int length =3D 0; + + if (data->agent_type_mask & AGENT_TYPE_CORE) + length +=3D sysfs_emit_at(buf, length, "core "); + + if (data->agent_type_mask & AGENT_TYPE_CACHE) + length +=3D sysfs_emit_at(buf, length, "cache "); + + if (data->agent_type_mask & AGENT_TYPE_MEMORY) + length +=3D sysfs_emit_at(buf, length, "memory "); + + if (data->agent_type_mask & AGENT_TYPE_IO) + length +=3D sysfs_emit_at(buf, length, "io "); + + length +=3D sysfs_emit_at(buf, length, "\n"); + + return length; +} + static ssize_t show_attr(struct uncore_data *data, char *buf, enum uncore_= index index) { unsigned int value; @@ -179,6 +201,8 @@ static int create_attr_group(struct uncore_data *data, = char *name) data->uncore_attrs[index++] =3D &data->fabric_cluster_id_kobj_attr.attr; init_attribute_root_ro(package_id); data->uncore_attrs[index++] =3D &data->package_id_kobj_attr.attr; + init_attribute_ro(agent_types); + data->uncore_attrs[index++] =3D &data->agent_types_kobj_attr.attr; } =20 data->uncore_attrs[index++] =3D &data->max_freq_khz_kobj_attr.attr; diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-c= ommon.h b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-comm= on.h index 26c854cd5d97..197ca2ad327f 100644 --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.h +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.h @@ -11,6 +11,17 @@ =20 #include =20 +/* + * Define uncore agents, which are under uncore frequency control. + * It is possible that there are common uncore frequency control to more t= han + * one agents. So these defines are used as a bit mask. + */ +#define AGENT_TYPE_NONE 0 +#define AGENT_TYPE_CORE 0x01 +#define AGENT_TYPE_CACHE 0x02 +#define AGENT_TYPE_MEMORY 0x04 +#define AGENT_TYPE_IO 0x08 + /** * struct uncore_data - Encapsulate all uncore data * @stored_uncore_data: Last user changed MSR 620 value, which will be res= tored @@ -25,6 +36,7 @@ * @cluster_id: cluster id in a domain * @instance_id: Unique instance id to append to directory name * @name: Sysfs entry name for this instance + * @agent_type_mask: Bit mask of all hardware agents for this domain * @uncore_attr_group: Attribute group storage * @max_freq_khz_kobj_attr: Storage for kobject attribute max_freq_khz * @mix_freq_khz_kobj_attr: Storage for kobject attribute min_freq_khz @@ -41,6 +53,7 @@ * @elc_high_threshold_enable_kobj_attr: Storage for kobject attribute elc_high_threshold_enable * @elc_floor_freq_khz_kobj_attr: Storage for kobject attribute elc_floor_= freq_khz + * @agent_types_kobj_attr: Storage for kobject attribute agent_type * @uncore_attrs: Attribute storage for group creation * * This structure is used to encapsulate all data related to uncore sysfs @@ -58,6 +71,7 @@ struct uncore_data { int cluster_id; int instance_id; char name[32]; + u16 agent_type_mask; =20 struct attribute_group uncore_attr_group; struct kobj_attribute max_freq_khz_kobj_attr; @@ -72,7 +86,8 @@ struct uncore_data { struct kobj_attribute elc_high_threshold_percent_kobj_attr; struct kobj_attribute elc_high_threshold_enable_kobj_attr; struct kobj_attribute elc_floor_freq_khz_kobj_attr; - struct attribute *uncore_attrs[13]; + struct kobj_attribute agent_types_kobj_attr; + struct attribute *uncore_attrs[14]; }; =20 #define UNCORE_DOMAIN_ID_INVALID -1 diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-t= pmi.c b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c index 4aa6c227ec82..70415d80773c 100644 --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c @@ -74,6 +74,12 @@ struct tpmi_uncore_struct { /* Bit definitions for STATUS register */ #define UNCORE_CURRENT_RATIO_MASK GENMASK_ULL(6, 0) =20 +/* Uncore agent type bits */ +#define UNCORE_CORE_PRESENT BIT(23) +#define UNCORE_CACHE_PRESENT BIT(24) +#define UNCORE_MEMORY_PRESENT BIT(25) +#define UNCORE_IO_PRESENT BIT(26) + /* Bit definitions for CONTROL register */ #define UNCORE_MAX_RATIO_MASK GENMASK_ULL(14, 8) #define UNCORE_MIN_RATIO_MASK GENMASK_ULL(21, 15) @@ -347,6 +353,26 @@ static int uncore_read_freq(struct uncore_data *data, = unsigned int *freq) return 0; } =20 +/* Helper function to read agent type over MMIO and set the agent type */ +static void uncore_set_agent_type(struct tpmi_uncore_cluster_info *cluster= _info) +{ + u64 status; + + status =3D readq((u8 __iomem *)cluster_info->cluster_base + UNCORE_STATUS= _INDEX); + + if (status & UNCORE_CORE_PRESENT) + cluster_info->uncore_data.agent_type_mask |=3D AGENT_TYPE_CORE; + + if (status & UNCORE_CACHE_PRESENT) + cluster_info->uncore_data.agent_type_mask |=3D AGENT_TYPE_CACHE; + + if (status & UNCORE_MEMORY_PRESENT) + cluster_info->uncore_data.agent_type_mask |=3D AGENT_TYPE_MEMORY; + + if (status & UNCORE_IO_PRESENT) + cluster_info->uncore_data.agent_type_mask |=3D AGENT_TYPE_IO; +} + /* Callback for sysfs read for TPMI uncore values. Called under mutex lock= s. */ static int uncore_read(struct uncore_data *data, unsigned int *value, enum= uncore_index index) { @@ -552,6 +578,8 @@ static int uncore_probe(struct auxiliary_device *auxdev= , const struct auxiliary_ =20 cluster_info->cluster_base =3D pd_info->uncore_base + mask; =20 + uncore_set_agent_type(cluster_info); + cluster_info->uncore_data.package_id =3D pkg; /* There are no dies like Cascade Lake */ cluster_info->uncore_data.die_id =3D 0; --=20 2.48.1 From nobody Sun Feb 8 03:09:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F91C28C5BF; Mon, 28 Apr 2025 17:03:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859816; cv=none; b=iQiBCIsgC3kX8RzJWkuS1agiTNMXp8KpuUCQJZEN6Q4a5Zalz99/xeQ3PYpvXq4dFq7ZzYxiMmC2nGZKwXakChM5cKFQYy9uR537z+lhuwtlt15/7bHX0qZfckjq3y0e1BMeSXLVIDNwJkEQjJt+GxWVZWioyPmadrsF06QHYv0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859816; c=relaxed/simple; bh=1pl9+CGY4PWXX/vYMa14QE2EbutCvqqw26e0pxcEfIc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rGhEGWvW1BZi7V7yRKaNf8AeFYBkdfU+rc/2aCUjx341M2YHb4rXwMC47nxtaSg3K/WVUyTYgZaUKTSy0ZKbM9Gz6BoiftdDQyT6dPywNPZP++9Xx0Ul7xIp52QA2H/ei9fks7AsLTD7OTfa4jwvtxSTg3uPSxtBI9jWXXK8iec= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=fWIqOTNg; arc=none smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="fWIqOTNg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745859814; x=1777395814; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1pl9+CGY4PWXX/vYMa14QE2EbutCvqqw26e0pxcEfIc=; b=fWIqOTNgm7hq/M6+fbY/+lgkyEzrlxajoXUtN7kBUgQ7K+19Xe2ATNE6 nLJkuACLOWt9joE1ulitkQUrs8xrGznFlGrfyv7/HQEsMQsWahphIyySX 9mxlwJK4u26xPxSNKBUXRtsH3iljxYapltAHPsK2aacNG/yTEw8Zkwe5L K1A4TzfFUQrmFpGZqYLO1cYJjA3ntNgOvusPRTGQoWQAiZVfhoCfJw9Fp ZBGAZb4Dd/L4Fjm2HbpRSxJTOJ02e7J1T70JyiO7wQJ7OkdDjpkyOjQml sBUi9hSZj9fCUPTjDz1HBlS+2N3h07tcsoba80n9+LVdHCBx3CmPuOkXE A==; X-CSE-ConnectionGUID: S5EwlksdTWKB8ZeiZaDRKg== X-CSE-MsgGUID: pQQBrBjrSdCUSzz8eJW3jQ== X-IronPort-AV: E=McAfee;i="6700,10204,11417"; a="58111440" X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="58111440" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Apr 2025 10:03:26 -0700 X-CSE-ConnectionGUID: j/p9cFrOQpOSu518hUV+0A== X-CSE-MsgGUID: 7D7+GaeMSsqtmfQ/C/8B5A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="133309598" Received: from spandruv-desk.jf.intel.com ([10.54.75.16]) by orviesa009.jf.intel.com with ESMTP; 28 Apr 2025 10:03:25 -0700 From: Srinivas Pandruvada To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v2 2/5] Documentation: admin-guide: pm: Add documentation for agent_types Date: Mon, 28 Apr 2025 10:03:13 -0700 Message-ID: <20250428170316.231353-3-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> References: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add documentation to describe agent_types attribute. Signed-off-by: Srinivas Pandruvada --- v2: No change .../admin-guide/pm/intel_uncore_frequency_scaling.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rs= t b/Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rst index 5151ec312dc0..84608dad84bd 100644 --- a/Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rst +++ b/Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rst @@ -97,6 +97,11 @@ Attributes in each directory: ``package_id`` This attribute is used to get the package id of this instance. =20 +``agent_types`` + This attribute displays all the hardware agents present within the + domain. Each agent has the capability to control one or more hardware + subsystems, which include: core, cache, memory, and I/O. + The other attributes are same as presented at package_*_die_* level. =20 In most of current use cases, the "max_freq_khz" and "min_freq_khz" --=20 2.48.1 From nobody Sun Feb 8 03:09:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 03F8B28DF1C; Mon, 28 Apr 2025 17:03:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859817; cv=none; b=geIWd9J6KPK/MmLLbfXXlXj4KoPxeXp3hbjnQMINdn9ZceVMaPskOuUxu9H32guXyxnLQCOvQOLTEOEn7O2CEpH+jH4LhRoodxapGhMX2BTptCt8OMtt8FiTOTGA3ZpR4GwIOkM7Qv1eWXvCXr1GlXBtmiq2C+KDDRAe4Hoeme8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859817; c=relaxed/simple; bh=8Iryt7zaOrSbqJFhN3TgDkNfGjzpF5HT4tdy/mCduls=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ebmFoMiRGHva5+cnXe+d3SaVPYu1dsyKI3pSjPyKfIjvYVXmwE4apgYE4pPgJaYBUyM67pXniAiuWsUWNxy5qqxu+S04zZVUBUOyqMnL/x7ZxQJtLr02OvS4kVspctgxbCAezg8fZgxOsq6nVaRnezSp3yUlCZaWCtbKQc28FUY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=C39sEHsJ; arc=none smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="C39sEHsJ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745859816; x=1777395816; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8Iryt7zaOrSbqJFhN3TgDkNfGjzpF5HT4tdy/mCduls=; b=C39sEHsJ4e6Szeskq1O128mahoIJezDzoGT7GFKx1a3Kg5hvOPVbrhC6 4Ch2w738lsTvTy06jFAdhgFq1VMe5glLU2klj/lzWwyFcAmAEiDeST9QQ ldu+daLTBQDmit3LDE+BM27VZ5BhJXM3XdC+lVZ0STSGvh7vJjufpJ8fZ uyLzDIvbjCw3vu7PXqhRPlByEFIvgQxwy/IvP47mqz+gHD7aeenXtHWIa ciW3/iNihWsDEjT8sEzI+IMISEyuaLvV8xJ3Dv6/JJuDEIybzgoBUZQ1V 1nZfX9cwX48F5PIyrf7jsbt/nXpwpM1kgw6k6ZQVnxnCunG852BhwAi0M A==; X-CSE-ConnectionGUID: 5jNG9oLmRkexp4GEYOfqjg== X-CSE-MsgGUID: DC0RVIxWRdenp3qznc/Nog== X-IronPort-AV: E=McAfee;i="6700,10204,11417"; a="58111443" X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="58111443" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Apr 2025 10:03:26 -0700 X-CSE-ConnectionGUID: 90cWmxQ6RNam+Aewor4BQA== X-CSE-MsgGUID: z99PMgj4S4+CPdinCjQZaQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="133309600" Received: from spandruv-desk.jf.intel.com ([10.54.75.16]) by orviesa009.jf.intel.com with ESMTP; 28 Apr 2025 10:03:25 -0700 From: Srinivas Pandruvada To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v2 3/5] platform/x86/intel: power-domains: Add interface to get Linux die ID Date: Mon, 28 Apr 2025 10:03:14 -0700 Message-ID: <20250428170316.231353-4-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> References: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The die ID in the Linux topology sysfs is a logical identifier that differs from the one presented in CPUID leaf 0x1F or via MSR 0x54. Introduce an interface that returns the Linux CPU die ID based on a given package ID and power domain ID. This mapping is stored during the CPU online callback in an array. Signed-off-by: Srinivas Pandruvada --- v2: No change .../platform/x86/intel/tpmi_power_domains.c | 34 ++++++++++++++++--- .../platform/x86/intel/tpmi_power_domains.h | 1 + 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/drivers/platform/x86/intel/tpmi_power_domains.c b/drivers/plat= form/x86/intel/tpmi_power_domains.c index 2f01cd22a6ee..9aaebd74a2af 100644 --- a/drivers/platform/x86/intel/tpmi_power_domains.c +++ b/drivers/platform/x86/intel/tpmi_power_domains.c @@ -74,6 +74,8 @@ static enum cpuhp_state tpmi_hp_state __read_mostly; =20 static cpumask_t *tpmi_power_domain_mask; =20 +static u16 *domain_die_map; + /* Lock to protect tpmi_power_domain_mask and tpmi_cpu_hash */ static DEFINE_MUTEX(tpmi_lock); =20 @@ -152,6 +154,15 @@ cpumask_t *tpmi_get_power_domain_mask(int cpu_no) } EXPORT_SYMBOL_NS_GPL(tpmi_get_power_domain_mask, "INTEL_TPMI_POWER_DOMAIN"= ); =20 +int tpmi_get_linux_die_id(int pkg_id, int domain_id) +{ + if (pkg_id >=3D topology_max_packages() || domain_id >=3D MAX_POWER_DOMAI= NS) + return -EINVAL; + + return domain_die_map[pkg_id * MAX_POWER_DOMAINS + domain_id]; +} +EXPORT_SYMBOL_NS_GPL(tpmi_get_linux_die_id, "INTEL_TPMI_POWER_DOMAIN"); + static int tpmi_get_logical_id(unsigned int cpu, struct tpmi_cpu_info *inf= o) { u64 data; @@ -189,6 +200,9 @@ static int tpmi_cpu_online(unsigned int cpu) cpumask_set_cpu(cpu, &tpmi_power_domain_mask[index]); hash_add(tpmi_cpu_hash, &info->hnode, info->punit_core_id); =20 + domain_die_map[info->pkg_id * MAX_POWER_DOMAINS + info->punit_domain_id] = =3D + topology_die_id(cpu); + return 0; } =20 @@ -212,17 +226,28 @@ static int __init tpmi_init(void) if (!tpmi_power_domain_mask) return -ENOMEM; =20 + domain_die_map =3D kcalloc(size_mul(topology_max_packages(), MAX_POWER_DO= MAINS), + sizeof(*domain_die_map), GFP_KERNEL); + if (!domain_die_map) + goto free_domain_mask; + ret =3D cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "platform/x86/tpmi_power_domains:online", tpmi_cpu_online, NULL); - if (ret < 0) { - kfree(tpmi_power_domain_mask); - return ret; - } + if (ret < 0) + goto free_domain_map; =20 tpmi_hp_state =3D ret; =20 return 0; + +free_domain_map: + kfree(domain_die_map); + +free_domain_mask: + kfree(tpmi_power_domain_mask); + + return ret; } module_init(tpmi_init) =20 @@ -230,6 +255,7 @@ static void __exit tpmi_exit(void) { cpuhp_remove_state(tpmi_hp_state); kfree(tpmi_power_domain_mask); + kfree(domain_die_map); } module_exit(tpmi_exit) =20 diff --git a/drivers/platform/x86/intel/tpmi_power_domains.h b/drivers/plat= form/x86/intel/tpmi_power_domains.h index e35750dd9273..2fd0dd7afbd2 100644 --- a/drivers/platform/x86/intel/tpmi_power_domains.h +++ b/drivers/platform/x86/intel/tpmi_power_domains.h @@ -14,5 +14,6 @@ int tpmi_get_linux_cpu_number(int package_id, int die_id,= int punit_core_id); int tpmi_get_punit_core_number(int cpu_no); int tpmi_get_power_domain_id(int cpu_no); cpumask_t *tpmi_get_power_domain_mask(int cpu_no); +int tpmi_get_linux_die_id(int pkg_id, int domain_id); =20 #endif --=20 2.48.1 From nobody Sun Feb 8 03:09:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7BF5428CF48; Mon, 28 Apr 2025 17:03:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859817; cv=none; b=WnudGDVgfHUzPV5APURU5xOTzQBW9fasYLOtO8RT9A58ZMeZNyX3Q1R0chZrbh7lNa0uxq/teqLlVlSblkS11AfMqwfwgy3jTuQ4/HomrTxYP3/ysrfVPE4cwKSBVA/buulQBf8nf4fBOtUZryrNcS20guVniPvAzz1QMF6zZQw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859817; c=relaxed/simple; bh=m0yNZjkWK+pi5FdffxFuoukY8tmYxk3yYK7fKKlbkbI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QWQcd0lJ0eNc2pEcxHxIuoc1p1zcPaJad8SCeC/AgY8bIpoXGpg+SPclcmvAtFQTKcbL92E8K+y/jsE7CrITEMX03FMm5oSy/WKG7Ifm0OlB8Zif0BNUWJ9xLkL4RWzHK0BGGoJgutV+HZX98xt1/tD7bpaYWoXD5SrlSnTbnUo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=nfBzr98p; arc=none smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="nfBzr98p" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745859816; x=1777395816; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=m0yNZjkWK+pi5FdffxFuoukY8tmYxk3yYK7fKKlbkbI=; b=nfBzr98pkKu/NRoFxmlEBpkv+FjrFAjlmWZt0YKJiQsjv39vdZadwyl+ 3fLQ8B9vo5f45nXRhxdKkM9XQ1vjH4v+yEELHTzWjkjgb7O+xYXUp6Mx/ 4BJN8N8cyB5oouHEmF4Ll5Hxs3mN8KOJ0GJc/Mteeuh9fJvnJ7irq1GzZ tHTZyEylZJlV3u8M8z0nerF4LOoNYFzwKRX5a+Ke7O/4dASe5piredqBL T7qL/PZ4P61X8ayK6xH3zJMR4o6NHRs7HEgZlI5JFf2yy4CLLGMKM7EBt fOFqBhumVxlIl3kyE11PZzvq5DHZk68iAVdHSswIopV6sY7ISFOuop6lJ A==; X-CSE-ConnectionGUID: YUlOkjl5T72oxSn5G66Iug== X-CSE-MsgGUID: 3TEUoLeNQlyNvEqEJByNig== X-IronPort-AV: E=McAfee;i="6700,10204,11417"; a="58111445" X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="58111445" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Apr 2025 10:03:27 -0700 X-CSE-ConnectionGUID: /vKLEp5MSrOAFsZrDL+fZQ== X-CSE-MsgGUID: SpwU7FGKQ1SZfJriXyjT6g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="133309601" Received: from spandruv-desk.jf.intel.com ([10.54.75.16]) by orviesa009.jf.intel.com with ESMTP; 28 Apr 2025 10:03:25 -0700 From: Srinivas Pandruvada To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v2 4/5] platform/x86/intel-uncore-freq: Add attributes to show die_id Date: Mon, 28 Apr 2025 10:03:15 -0700 Message-ID: <20250428170316.231353-5-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> References: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" For domains with agents to control cores (compute dies) show matching Linux CPU die ID. Linux CPU ID is a logical die ID, so this may not match physical die ID or domain_id. So, a mapping is required to get Linux CPU die ID. This attribute is only presented when CPUID enumerates die ids. This attribute can be used by orchestration software like Kubernetes to target specific dies for uncore frequency control. Signed-off-by: Srinivas Pandruvada --- v2: No change .../uncore-frequency-common.c | 7 +++++ .../uncore-frequency-common.h | 4 ++- .../uncore-frequency/uncore-frequency-tpmi.c | 28 +++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-c= ommon.c b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-comm= on.c index cfa3039a0e39..3411d33e5f13 100644 --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.c +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.c @@ -142,6 +142,8 @@ show_uncore_attr(elc_high_threshold_enable, UNCORE_INDEX_EFF_LAT_CTRL_HIGH_THRESHOLD_ENABLE); show_uncore_attr(elc_floor_freq_khz, UNCORE_INDEX_EFF_LAT_CTRL_FREQ); =20 +show_uncore_attr(die_id, UNCORE_INDEX_DIE_ID); + #define show_uncore_data(member_name) \ static ssize_t show_##member_name(struct kobject *kobj, \ struct kobj_attribute *attr, char *buf)\ @@ -203,6 +205,11 @@ static int create_attr_group(struct uncore_data *data,= char *name) data->uncore_attrs[index++] =3D &data->package_id_kobj_attr.attr; init_attribute_ro(agent_types); data->uncore_attrs[index++] =3D &data->agent_types_kobj_attr.attr; + if (topology_max_dies_per_package() > 1 && + data->agent_type_mask & AGENT_TYPE_CORE) { + init_attribute_ro(die_id); + data->uncore_attrs[index++] =3D &data->die_id_kobj_attr.attr; + } } =20 data->uncore_attrs[index++] =3D &data->max_freq_khz_kobj_attr.attr; diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-c= ommon.h b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-comm= on.h index 197ca2ad327f..9e4d7f44a41f 100644 --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.h +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.h @@ -87,7 +87,8 @@ struct uncore_data { struct kobj_attribute elc_high_threshold_enable_kobj_attr; struct kobj_attribute elc_floor_freq_khz_kobj_attr; struct kobj_attribute agent_types_kobj_attr; - struct attribute *uncore_attrs[14]; + struct kobj_attribute die_id_kobj_attr; + struct attribute *uncore_attrs[15]; }; =20 #define UNCORE_DOMAIN_ID_INVALID -1 @@ -100,6 +101,7 @@ enum uncore_index { UNCORE_INDEX_EFF_LAT_CTRL_HIGH_THRESHOLD, UNCORE_INDEX_EFF_LAT_CTRL_HIGH_THRESHOLD_ENABLE, UNCORE_INDEX_EFF_LAT_CTRL_FREQ, + UNCORE_INDEX_DIE_ID, }; =20 int uncore_freq_common_init(int (*read)(struct uncore_data *data, unsigned= int *value, diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-t= pmi.c b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c index 70415d80773c..adcf992e4ff0 100644 --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c @@ -26,6 +26,7 @@ #include #include =20 +#include "../tpmi_power_domains.h" #include "uncore-frequency-common.h" =20 #define UNCORE_MAJOR_VERSION 0 @@ -49,6 +50,7 @@ struct tpmi_uncore_cluster_info { bool root_domain; bool elc_supported; u8 __iomem *cluster_base; + u16 cdie_id; struct uncore_data uncore_data; struct tpmi_uncore_struct *uncore_root; }; @@ -376,6 +378,9 @@ static void uncore_set_agent_type(struct tpmi_uncore_cl= uster_info *cluster_info) /* Callback for sysfs read for TPMI uncore values. Called under mutex lock= s. */ static int uncore_read(struct uncore_data *data, unsigned int *value, enum= uncore_index index) { + struct tpmi_uncore_cluster_info *cluster_info; + int ret; + switch (index) { case UNCORE_INDEX_MIN_FREQ: case UNCORE_INDEX_MAX_FREQ: @@ -390,6 +395,16 @@ static int uncore_read(struct uncore_data *data, unsig= ned int *value, enum uncor case UNCORE_INDEX_EFF_LAT_CTRL_FREQ: return read_eff_lat_ctrl(data, value, index); =20 + case UNCORE_INDEX_DIE_ID: + cluster_info =3D container_of(data, struct tpmi_uncore_cluster_info, unc= ore_data); + ret =3D tpmi_get_linux_die_id(cluster_info->uncore_data.package_id, + cluster_info->cdie_id); + if (ret < 0) + return ret; + + *value =3D ret; + return 0; + default: break; } @@ -439,6 +454,16 @@ static void remove_cluster_entries(struct tpmi_uncore_= struct *tpmi_uncore) } } =20 +static void set_cdie_id(int domain_id, struct tpmi_uncore_cluster_info *cl= uster_info, + struct intel_tpmi_plat_info *plat_info) +{ + + cluster_info->cdie_id =3D domain_id; + + if (plat_info->cdie_mask && cluster_info->uncore_data.agent_type_mask & A= GENT_TYPE_CORE) + cluster_info->cdie_id =3D domain_id + ffs(plat_info->cdie_mask) - 1; +} + #define UNCORE_VERSION_MASK GENMASK_ULL(7, 0) #define UNCORE_LOCAL_FABRIC_CLUSTER_ID_MASK GENMASK_ULL(15, 8) #define UNCORE_CLUSTER_OFF_MASK GENMASK_ULL(7, 0) @@ -586,6 +611,8 @@ static int uncore_probe(struct auxiliary_device *auxdev= , const struct auxiliary_ cluster_info->uncore_data.domain_id =3D i; cluster_info->uncore_data.cluster_id =3D j; =20 + set_cdie_id(i, cluster_info, plat_info); + cluster_info->uncore_root =3D tpmi_uncore; =20 if (TPMI_MINOR_VERSION(pd_info->ufs_header_ver) >=3D UNCORE_ELC_SUPPORT= ED_VERSION) @@ -659,5 +686,6 @@ module_auxiliary_driver(intel_uncore_aux_driver); =20 MODULE_IMPORT_NS("INTEL_TPMI"); MODULE_IMPORT_NS("INTEL_UNCORE_FREQUENCY"); +MODULE_IMPORT_NS("INTEL_TPMI_POWER_DOMAIN"); MODULE_DESCRIPTION("Intel TPMI UFS Driver"); MODULE_LICENSE("GPL"); --=20 2.48.1 From nobody Sun Feb 8 03:09:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6CFE628BA8A; Mon, 28 Apr 2025 17:03:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859818; cv=none; b=F5K1NJdh9SZdkHKiXAx/ceMLoDqT7rqeTnKcDenJqiwiBXKIkqF2h/q/ejRMBFGYl4xSco4dsFZHUXzsQ+vnDFWpwHkooYp8VXMo1BkSBum+woX58rQfVgivw6KzIjHDBOvqg0jeSoGQT4h6jN+DesMRWmDySDTXlG/YxSBODH0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745859818; c=relaxed/simple; bh=2/e/VimGzs+OtIXefihvL1cVdLXRILM/yf3YIU2tVf4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lyoqYGM80wBdA/cB/G1zzbFGI80sZoagf8WK9BrEisjUc1oRxMzdV4JbNxNKMXgY1KTLGk64pqNI1mrzGd1C3c6uE3Aws3eXwrVVd4VmvZtQhz07BzdiHjdMkPG4yj7gzyDSs+loPuKPYDLUyI+Ptzom0GD7L39OoZSQlkh4B28= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=A9WI52s7; arc=none smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="A9WI52s7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1745859816; x=1777395816; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2/e/VimGzs+OtIXefihvL1cVdLXRILM/yf3YIU2tVf4=; b=A9WI52s7xbqhJhnKRKBIit3zEgVnW759y4qMTUqhrOz4RzkBQDhvbTYq vMJ8qrIed9wZrDfDnIQMDqJonmHhRXrshprb7Dk4covbrZd5TdbAr5JFF N3X9a46LTdi06pnkL8LQSZsNiZNqPMNa6yig1xKEOPe1zUzbBC72uzBmz JEeGaGehF1+PJCuZm5EWL4H4BOcpHFImMUvM0P8TcCwB6c9dtPxohY/vE 1F5wq0INKvqMsEI0pTn/LyAQtvbO85U41kQOJdsq3MNXgSu26Jr/ykg3g Tfo6/ERMS4DZLJaJ7fm7w7KfokSNrvJ1bfmwrCD0WuSJpebYp1G0Ipg3h w==; X-CSE-ConnectionGUID: Png3vfABQcyEqh62tSSQcg== X-CSE-MsgGUID: pJcTTNYIQomDPEcisz43/A== X-IronPort-AV: E=McAfee;i="6700,10204,11417"; a="58111447" X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="58111447" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Apr 2025 10:03:27 -0700 X-CSE-ConnectionGUID: 05JysD2uTl+Hi9DSwSypEg== X-CSE-MsgGUID: 74YSxxBeTK2YNxh4ddM0MA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,246,1739865600"; d="scan'208";a="133309603" Received: from spandruv-desk.jf.intel.com ([10.54.75.16]) by orviesa009.jf.intel.com with ESMTP; 28 Apr 2025 10:03:26 -0700 From: Srinivas Pandruvada To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada Subject: [PATCH v2 5/5] Documentation: admin-guide: pm: Add documentation for die_id Date: Mon, 28 Apr 2025 10:03:16 -0700 Message-ID: <20250428170316.231353-6-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> References: <20250428170316.231353-1-srinivas.pandruvada@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add documentation to describe die_id attribute. Signed-off-by: Srinivas Pandruvada Reviewed-by: Ilpo J=C3=A4rvinen --- v2: Change "attributes" to "attribute" .../admin-guide/pm/intel_uncore_frequency_scaling.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rs= t b/Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rst index 84608dad84bd..d7ffda6a8095 100644 --- a/Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rst +++ b/Documentation/admin-guide/pm/intel_uncore_frequency_scaling.rst @@ -91,6 +91,11 @@ Attributes in each directory: ``domain_id`` This attribute is used to get the power domain id of this instance. =20 +``die_id`` + This attribute is used to get the Linux die id of this instance. + This attribute is only present for domains with core agents and + when the CPUID leaf 0x1f presents die ID. + ``fabric_cluster_id`` This attribute is used to get the fabric cluster id of this instance. =20 --=20 2.48.1