Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753658AbbH0I0c (ORCPT ); Thu, 27 Aug 2015 04:26:32 -0400 Received: from mail-bl2on0080.outbound.protection.outlook.com ([65.55.169.80]:60096 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753596AbbH0I0Z (ORCPT ); Thu, 27 Aug 2015 04:26:25 -0400 Authentication-Results: spf=none (sender IP is 165.204.84.222) smtp.mailfrom=amd.com; alien8.de; dkim=none (message not signed) header.d=none;alien8.de; dmarc=permerror action=none header.from=amd.com;alien8.de; dkim=none (message not signed) header.d=none;alien8.de; dmarc=permerror action=none header.from=amd.com; X-WSS-ID: 0NTQEQD-08-9NI-02 X-M-MSG: From: Huang Rui To: Borislav Petkov , Jean Delvare , "Guenter Roeck" , Andy Lutomirski , "Andreas Herrmann" , Thomas Gleixner , Peter Zijlstra , Ingo Molnar , "Rafael J. Wysocki" , Len Brown , John Stultz , =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Weisbecker?= CC: , , , Andreas Herrmann , Aravind Gopalakrishnan , Borislav Petkov , Fengguang Wu , Aaron Lu , Tony Li , Huang Rui Subject: [PATCH 10/15] hwmon, fam15h_power: add compute unit accumulated power Date: Thu, 27 Aug 2015 16:07:41 +0800 Message-ID: <1440662866-28716-11-git-send-email-ray.huang@amd.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1440662866-28716-1-git-send-email-ray.huang@amd.com> References: <1440662866-28716-1-git-send-email-ray.huang@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:165.204.84.222;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(428002)(3050300001)(189002)(199003)(50466002)(77096005)(68736005)(229853001)(5007970100001)(48376002)(53416004)(5003940100001)(97736004)(5003600100002)(77156002)(5001830100001)(105586002)(4001540100001)(106466001)(5001770100001)(36756003)(5001860100001)(62966003)(189998001)(2950100001)(19580405001)(19580395003)(46102003)(33646002)(76176999)(50226001)(50986999)(101416001)(64706001)(86362001)(47776003)(87936001)(92566002)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0720;H:atltwp02.amd.com;FPR:;SPF:None;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0720;2:2YQdFF6cVrk3TyW69e5GVxbrXyxT6DXBKzKvlEE4GGBC5QkJui8qRuPbNliTzwVwuL4EaXsoBH8L7iVEMnok9zw+6baS0ErXsS9AqqkB81cSlx0w6bSLuwSemuN7M2sLE7S9wB4AbloKW3jgZplOY2OHM6eTEXczjGtVYwCioZk=;3:g6GCdC4PB9anJHWusHmw8uv4w/Mzcd1B1nwXJydkJfvbQHf4LNzSh4apmUiukRiFXo84Vb8IrVqkEB4glHoIQhFx93Xs6uSQ8YgBANQ5rIFc0zviBBRMvqxJMMk0yzYWqCL6AVN1ZxAv+/2Eyg/0UxYL0h/UshTerhJM8b/aQNj34dwxtbek5VYiQEJkVA6tSKhXQtcI0oe4dA2riIntruDLvQ4fvIFaqpplgzmJ2m3FBpeKVkCQhew8cg/XPgsZ;25:eJzO6oi8s6bk+Wj5+UtkgCBvC0lZ38FnhiVS7zZX5a3aBQYPtajt7D23lI394udIhixdyNpT/NeoE8jDDAv1Db+XaowATH/YlItr8U6cDSuFmzcrWbMWaslGy/8up3CRrQwQO62zJtmAY6e8RhXSobsPeDeWIh8Kuwb/U8PxXAJ/vfW4c1HVxKknkPbF0VswAETtq+gHQk3nSBPxEcfa+WmAaabnSXYRi6fG/mVGkWNXdpWTn37NBUY3o3b81/b1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0720;UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0301; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0720;20:YAsmdyig8H/F03VZYEnZbr+y0pfFF9jJ2P39v5FiRMhNXGHazuT3/L0HcA51yG7NASqMN/X+1Ck3PzgYCiMslpQpQ9FDr9W7koIwZxN+BfKHagdq/z5xsf/lzW9FJe2xqZ30wyBoM2eeNVenegzcf+FqGtaOB9/h15jw3fo9/Nmmc4QpdeuEHuud7xAEbzTj0bqoHre1yU25/F+d6/Nffsbzi2hkp9ft6FwI4/AoGkEkGrf7WcCLCETuyZS517iRJLofcmAPpQ8xePEP9kBFepErb/wD+XWCfI3DEmwYZFLdlDvap0nCaxSEj+HGeE7hPOdtXBV4uKXOrDI2dqxDml9qWSNdNrxtBoXOcaOk9uH9QItldhg6PE/6FoiOGqfRUri9CeRu4C7MVPdc4yyNC4AB+A20oYNIrIrPWd8IUNPJRFQl0v2/MYPZ02sPWeFvmzkcS/z/E1jcXqxLzM0Wr1B6PDIiThI96xBVjKRERl/1mwpwUz8Vei7wc3j+txGV;4:wqIyHVLzFTp42TAFvEwC2xaEmSUuNLszY/5fPie1q66bg0ITYlB5b8hLLMDy3x6tmis4fRF/u33DIcW35ULGNZ7qfOz1ZPhnjygQDbVCDIeatOazNPAzc2K9tt+ZAqrex2Zl0qcQkusVUA3S7ufxswefYW0ndxfBKmq64mcxODkJj8SY6Hy5L4d/hD5CfUbNI10bDeYwz5SQ+JhqFppbZuSFla2e/oxbZ69KkMvj7dtGPng3TXWo6c5HU2sy2KyJI4BWWFkGz3Sgib+ATaLUGinkdi8MbWwsG6xSvlUu+0hIZD5hjtOYoQqvfOtNTtif X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(8121501046)(3002001);SRVR:SN1PR12MB0720;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0720; X-Forefront-PRVS: 06818431B9 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR12MB0720;23:JSRzVew4FiZsT2Rrjp5COg0lYdlnE8adU5FsaLamo?= =?us-ascii?Q?dSZXLc+roxtG+uE0M4IAYZTCgljpQRfvY98s+mCb+MoGtzwUJcpc+IXvYRCb?= =?us-ascii?Q?gsa40pTb98v3EgvmN/icA+bK0yFzidldrOZfokALP1/bbfFemybXhk17ZG16?= =?us-ascii?Q?e3L8BQ1mnVP+yeVB+gEOwW1sjLL1efEHwzDuO/3KBYhlzNP74R1Yb1ar0ijS?= =?us-ascii?Q?zf3JN+nSkPuplUhttbDDnRxVFdZNW6F9Njj8DQiLIiOkRQgJBITnxzFk1yaN?= =?us-ascii?Q?kmuSWrSrToOvFHfgsmynFo5hTS5uzDYEiPAa6UJrFX3c4IOSAGWULi7Vby2r?= =?us-ascii?Q?36fYLTuqWmP8q/qqgabPmtRO7Thp/m+zqxHG6L1jrEqREuyNtzlOIcxzAY2Q?= =?us-ascii?Q?ZQVPcOS7PEbRPoFBllAmzOrODdET/Bl02RSuCftYspWyw7dLTXFCJHX3HNLt?= =?us-ascii?Q?l1nov9+VvnGMJUlW9PCEHrCwgiYqZtUeHyK/xyglp73ZxUwTqysLk9yUYdBu?= =?us-ascii?Q?Y2eE6/NwLJcxva6Z5IuXiB2vAGKtU9brEUuYaQmtvKMK0i8TnKv2DsVTFM6r?= =?us-ascii?Q?FPRHYwrD3Ic98heu4J5O0mPzDDwlt/UzADvSz4InjhOgLYUUug/BIOO9RYuU?= =?us-ascii?Q?Z5ANILZByB2D0ouhplcoXLcWoO8AIG8noUsSFELr655yX7KcmRdf+2HM9P6b?= =?us-ascii?Q?/MhgvRQAfQ0S18J+URwCeAAm6+eO6G0koDcXHKpcmBGdlUeKNph6PYQAtiZl?= =?us-ascii?Q?KHfG4lJi0clgRRcNjB1pTrfVfpOTDK8iKoxUrK0SQDbCgwTJn946fe7hU0B5?= =?us-ascii?Q?Cd7ouFuMt5mAv+6qMCXUkwPw3HcmmDYl64iynLAAjzhiRs4D4nBTXvyTyOe4?= =?us-ascii?Q?Oa9rnMua3XU9lMSzI72+1XtX3SmBlkVY3bLv7QL2eNBJ4JXXMKm/NTLw/4qb?= =?us-ascii?Q?OLnX3JRvx8rIoS8uJmNa/q3E6O50SiB2fB5l5lBhljODXrfX6YNSSoqvcS5Z?= =?us-ascii?Q?lvMqavDkK7d/p/ELeYCStckHWpHlicXkfLWVY9Zyz8AR2hSW4cXuyDD/fc/w?= =?us-ascii?Q?BnluTl0Kl9q92DuA6uBZZNy2CU/mcaEmhgn43kqYOOHav7dmIQHvNNX1cu6b?= =?us-ascii?Q?R+VkEpgdYXQNCF7dakqGeXPxH8fOeYi?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0720;5:9LchvnntIK3VHhoLeu8TCRcDoJI1JuVZ8ARaFnJAdkFz62lxsOzLnk85nMA6Cy4YVQJrd9ohpoRs0ZzTwpxCGaScrpC25Sa/GwSDqwIz6uu5TZxUcAuCyzTSO1G5xSDtPhAZQxuC1ovIJ8jgQ9xIoQ==;24:jnYMjwrmsg+8PKid0+jBnvYNscvMsHtkpA8GbU+g7w09Cy2NqjDMQmv18E26QZMyUakurEqyU04gaI0or5yc7cMzw6/NuwVoUMFuiQOOP9o=;20:AffDh9fG9Nc66cGTUTwGeAz7d+0EQOWJ9tkjdJwHYzGJ80UGrVNWbU/QtP44lSJTFxYFugvOQhDdnbdGdjgmfg== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2015 08:11:04.4470 (UTC) X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.222];Helo=[atltwp02.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0720 X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0301;2:+EtvaFYmpA+q9BINVITFGeScupOglnGljek9TCYKNlaxy+YnlP8A8wuxM+DWrEfcUfiEDwVzEjODxSfTSUgu+0rAAdY8kjywZsrSlYxL9Exv9s+G1IQx8kpI4nIyx6q5sD5BZaZFcwvbYeus3zTXW8FKdVxYdaifB+6fTQkjYsk=;3:5qTEjEoWiVc7swFmbWouIE8P+fZDBrHWcI65hzLe7Qc5hzRGbqqEk7ygC4Vid0q2i6NvMCdnofsQ737LpOY4RAfwsC3dLiesoY6fkMzwCmyJ1J5txDLWE5SfEAXo/l9VlcYzrwDUTglP5iFWXCBfEksq+ryiHBLU96MXgCF764i31cY66mpp6g9lhH/tUjFAWoEuE7nJxzbf5z5ZJwfaL4F7qfA4ojYiesJ7jp41IyvwSb76KvkKVAoC6JbXe9yb;25:ZQ+ZQtmbXxt1MwFXw5LvU/7Kk1Lg0x+ziICTvSSuvdLEcrFFCDa7FAWPKd+tA5viu8FTmNFffRdSLlQzVzdLuxQOMuEaz2g5WfdtG2SR1i07aA6obMTqxGMEZf4flTzi8uB1zPs/xqGyzv2KH3sY5i9YkfkIyWPm4S78/x/0cxJXU9cLCFLTREyoLOmNsYFs9ktAy1tTgace6C5DOABHpN9d6WQtZYuirA9XLaf5YyZFwOgSeOO6vpHhucLWw9I5;23:GuzMboEVke3DlG+3wJ/Y8WKn1c1ELPn8WucNRtHNjrkStKH4Gt8bLHPS035fRrrWvMXHN9LGqOAvybpssHx6amvZJ38XybuyD3DvK0brQsE+2YysHOaE0OYGf1C1HXedBeLbqR9lgcTsRtERCUXyi9NEXN5CM83viXQvPQ9H2Wkhb6/WRdyXo276+8V8ayiZ X-OriginatorOrg: amd.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2717 Lines: 95 This patch adds a member in fam15h_power_data which specifies the compute unit accumulated power. Signed-off-by: Huang Rui --- drivers/hwmon/fam15h_power.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c index fdfa18e..f5ff48f 100644 --- a/drivers/hwmon/fam15h_power.c +++ b/drivers/hwmon/fam15h_power.c @@ -43,7 +43,9 @@ MODULE_LICENSE("GPL"); #define REG_TDP_LIMIT3 0xe8 #define FAM15H_MIN_POWER_GROUPS 2 +#define MAX_CUS 8 +#define MSR_F15H_CU_PWR_ACCUMULATOR 0xc001007a #define MSR_F15H_CU_MAX_PWR_ACCUMULATOR 0xc001007b struct fam15h_power_data { @@ -54,6 +56,8 @@ struct fam15h_power_data { unsigned int cpu_pwr_sample_ratio; /* maximum accumulated power of a compute unit */ u64 max_cu_acc_power; + /* accumulated power of the compute units */ + u64 cu_acc_power[MAX_CUS]; }; static ssize_t show_power(struct device *dev, @@ -207,6 +211,7 @@ static int fam15h_power_resume(struct pci_dev *pdev) static int fam15h_power_init_data(struct pci_dev *f4, struct fam15h_power_data *data) { + int cu_num, cores_per_cu, cpu, cu; u32 val, eax, ebx, ecx, edx; u64 tmp; @@ -249,6 +254,21 @@ static int fam15h_power_init_data(struct pci_dev *f4, data->max_cu_acc_power = tmp; + cores_per_cu = amd_get_cores_per_cu(); + cu_num = boot_cpu_data.x86_max_cores / cores_per_cu; + + WARN_ON_ONCE(cu_num > MAX_CUS); + + for (cpu = 0; cpu < cu_num * cores_per_cu; cpu += cores_per_cu) { + cu = cpu / cores_per_cu; + if (rdmsrl_safe_on_cpu(cpu, MSR_F15H_CU_PWR_ACCUMULATOR, + &data->cu_acc_power[cu])) { + pr_err("Failed to read compute unit power accumulator MSR on core%d\n", + cpu); + return -ENODEV; + } + } + return 0; } @@ -258,6 +278,7 @@ static int fam15h_power_probe(struct pci_dev *pdev, struct fam15h_power_data *data; struct device *dev = &pdev->dev; struct device *hwmon_dev; + int ret; /* * though we ignore every other northbridge, we still have to @@ -273,11 +294,13 @@ static int fam15h_power_probe(struct pci_dev *pdev, if (!data) return -ENOMEM; - if (fam15h_power_init_attrs(pdev)) - return -ENOMEM; + ret = fam15h_power_init_attrs(pdev); + if (ret) + return ret; - if (fam15h_power_init_data(pdev, data)) - return -ENODEV; + ret = fam15h_power_init_data(pdev, data); + if (ret) + return ret; data->pdev = pdev; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/