powercap / RAPL: disable the 2nd power limit properly
authorSeiichi Ikarashi <s.ikarashi@jp.fujitsu.com>
Wed, 19 Aug 2015 05:26:03 +0000 (14:26 +0900)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 28 Aug 2015 23:46:40 +0000 (01:46 +0200)
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>
drivers/powercap/intel_rapl.c

index a5eddfbb02309d834aa9320d10d021330a421c7b..5efacd050c7d56682016d6097a466fca1261611b 100644 (file)
@@ -1147,9 +1147,11 @@ static int rapl_unregister_powercap(void)
                        pr_debug("remove package, undo power limit on %d: %s\n",
                                rp->id, rd->name);
                        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, 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) {
                                rd_package = rd;
                                continue;