浏览代码

powercap / RAPL: disable the 2nd power limit properly

Let rapl_unregister_powercap() disable the second power limit
only if it exists.
Intel64 SDM Vol.3 14.9 says that the package domain has it
but neither the power plane domain nor the DRAM domain has it.

Signed-off-by: Seiichi Ikarashi <s.ikarashi@jp.fujitsu.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Seiichi Ikarashi 10 年之前
父节点
当前提交
5021282cc4
共有 1 个文件被更改,包括 4 次插入2 次删除
  1. 4 2
      drivers/powercap/intel_rapl.c

+ 4 - 2
drivers/powercap/intel_rapl.c

@@ -1147,9 +1147,11 @@ static int rapl_unregister_powercap(void)
 			pr_debug("remove package, undo power limit on %d: %s\n",
 			pr_debug("remove package, undo power limit on %d: %s\n",
 				rp->id, rd->name);
 				rp->id, rd->name);
 			rapl_write_data_raw(rd, PL1_ENABLE, 0);
 			rapl_write_data_raw(rd, PL1_ENABLE, 0);
-			rapl_write_data_raw(rd, PL2_ENABLE, 0);
 			rapl_write_data_raw(rd, PL1_CLAMP, 0);
 			rapl_write_data_raw(rd, PL1_CLAMP, 0);
-			rapl_write_data_raw(rd, PL2_CLAMP, 0);
+			if (find_nr_power_limit(rd) > 1) {
+				rapl_write_data_raw(rd, PL2_ENABLE, 0);
+				rapl_write_data_raw(rd, PL2_CLAMP, 0);
+			}
 			if (rd->id == RAPL_DOMAIN_PACKAGE) {
 			if (rd->id == RAPL_DOMAIN_PACKAGE) {
 				rd_package = rd;
 				rd_package = rd;
 				continue;
 				continue;