All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2 v2] intel_pstate: skip this driver if hit Sun X86 servers
@ 2014-11-24  7:50 Ethan Zhao
  2014-11-24  7:50 ` [PATCH 1/2 v2] intel_pstate: skip this driver if Sun server has _PPC method Ethan Zhao
  2014-11-24  7:50 ` [PATCH 2/2 v2] intel_pstate: add kernel parameter to enable loading on Sun X86 servers Ethan Zhao
  0 siblings, 2 replies; 3+ messages in thread
From: Ethan Zhao @ 2014-11-24  7:50 UTC (permalink / raw)
  To: linda.knippers, viresh.kumar, rjw, corbet, dirk.j.brandewie
  Cc: linux-doc, linux-pm, linux-kernel, ethan.kernel, Ethan Zhao

Oracle Sun servers(X86) have power capping features that work via ACPI _PPC method,
patch No.1 is used to skip this driver if Oracle Sun server and _PPC detected. 
Patch No.2 introduces a kernel command line  parameter for those who would like
to enable intel_pstate on Sun X86 servers and be aware of the risk.


Compiled and tested with stable-3.18-rc5 on Oracle Sun server X4-2.
--
Ethan Zhao (2):
  intel_pstate: skip this driver if Sun server has _PPC method
  intel_pstate: add kernel parameter to enable loading on Sun X86
    servers.

 Documentation/kernel-parameters.txt |  3 +++
 drivers/cpufreq/intel_pstate.c      | 24 ++++++++++++++++++++++++
 2 files changed, 27 insertions(+)

-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2 v2] intel_pstate: skip this driver if Sun server has _PPC method
  2014-11-24  7:50 [PATCH 0/2 v2] intel_pstate: skip this driver if hit Sun X86 servers Ethan Zhao
@ 2014-11-24  7:50 ` Ethan Zhao
  2014-11-24  7:50 ` [PATCH 2/2 v2] intel_pstate: add kernel parameter to enable loading on Sun X86 servers Ethan Zhao
  1 sibling, 0 replies; 3+ messages in thread
From: Ethan Zhao @ 2014-11-24  7:50 UTC (permalink / raw)
  To: linda.knippers, viresh.kumar, rjw, corbet, dirk.j.brandewie
  Cc: linux-doc, linux-pm, linux-kernel, ethan.kernel, Ethan Zhao

Oracle Sun X86 servers have dynamic power capping capability that works via
ACPI _PPC method etc, so skip loading this driver if Sun server has ACPI _PPC
enabled.

Signed-off-by: Ethan Zhao <ethan.zhao@oracle.com>

v2: only match ORACLE oem id.
---
 drivers/cpufreq/intel_pstate.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 27bb6d3..dacc15a 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -943,6 +943,21 @@ static bool intel_pstate_no_acpi_pss(void)
 	return true;
 }
 
+static bool intel_pstate_has_acpi_ppc(void)
+{
+	int i;
+
+	for_each_possible_cpu(i) {
+		struct acpi_processor *pr = per_cpu(processors, i);
+
+		if (!pr)
+			continue;
+		if (acpi_has_method(pr->handle, "_PPC"))
+			return true;
+	}
+	return false;
+}
+
 struct hw_vendor_info {
 	u16  valid;
 	char oem_id[ACPI_OEM_ID_SIZE];
@@ -952,6 +967,7 @@ struct hw_vendor_info {
 /* Hardware vendor-specific info that has its own power management modes */
 static struct hw_vendor_info vendor_info[] = {
 	{1, "HP    ", "ProLiant"},
+	{1, "ORACLE", ""},
 	{0, "", ""},
 };
 
@@ -970,11 +986,15 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
 		    intel_pstate_no_acpi_pss())
 			return true;
 	}
+	if (!strncmp(hdr.oem_id, vendor_info[1].oem_id, ACPI_OEM_ID_SIZE) &&
+		intel_pstate_has_acpi_ppc())
+		return true;
 
 	return false;
 }
 #else /* CONFIG_ACPI not enabled */
 static inline bool intel_pstate_platform_pwr_mgmt_exists(void) { return false; }
+static inline bool intel_pstate_has_acpi_ppc(void) { return false; }
 #endif /* CONFIG_ACPI */
 
 static int __init intel_pstate_init(void)
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2 v2] intel_pstate: add kernel parameter to enable loading on Sun X86 servers.
  2014-11-24  7:50 [PATCH 0/2 v2] intel_pstate: skip this driver if hit Sun X86 servers Ethan Zhao
  2014-11-24  7:50 ` [PATCH 1/2 v2] intel_pstate: skip this driver if Sun server has _PPC method Ethan Zhao
@ 2014-11-24  7:50 ` Ethan Zhao
  1 sibling, 0 replies; 3+ messages in thread
From: Ethan Zhao @ 2014-11-24  7:50 UTC (permalink / raw)
  To: linda.knippers, viresh.kumar, rjw, corbet, dirk.j.brandewie
  Cc: linux-doc, linux-pm, linux-kernel, ethan.kernel, Ethan Zhao

To force loading on Oracle Sun X86 servers, provide one kernel command line
parameter

  intel_pstate = onora

For those who be aware of the risk doing so.

Signed-off-by: Ethan Zhao <ethan.zhao@oracle.com>

v2: change the command line parameter naming to specific to Oracle Sun servers.
---
 Documentation/kernel-parameters.txt | 3 +++
 drivers/cpufreq/intel_pstate.c      | 6 +++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 479f332..e4b1b81 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1446,6 +1446,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
 		       disable
 		         Do not enable intel_pstate as the default
 		         scaling driver for the supported processors
+		       onora
+		         Enable loading intel_pstate on Oracle Sun Servers(X86).
+			 only for those who be aware of the risk.
 
 	intremap=	[X86-64, Intel-IOMMU]
 			on	enable Interrupt Remapping (default)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index dacc15a..f28c725 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -866,6 +866,7 @@ static struct cpufreq_driver intel_pstate_driver = {
 };
 
 static int __initdata no_load;
+static unsigned int  load_on_sun;
 
 static int intel_pstate_msrs_not_valid(void)
 {
@@ -987,7 +988,8 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
 			return true;
 	}
 	if (!strncmp(hdr.oem_id, vendor_info[1].oem_id, ACPI_OEM_ID_SIZE) &&
-		intel_pstate_has_acpi_ppc())
+		intel_pstate_has_acpi_ppc() &&
+		!load_on_sun)
 		return true;
 
 	return false;
@@ -1061,6 +1063,8 @@ static int __init intel_pstate_setup(char *str)
 
 	if (!strcmp(str, "disable"))
 		no_load = 1;
+	if (!strcmp(str, "onora"))
+		load_on_sun = 1;
 	return 0;
 }
 early_param("intel_pstate", intel_pstate_setup);
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-11-24  7:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-24  7:50 [PATCH 0/2 v2] intel_pstate: skip this driver if hit Sun X86 servers Ethan Zhao
2014-11-24  7:50 ` [PATCH 1/2 v2] intel_pstate: skip this driver if Sun server has _PPC method Ethan Zhao
2014-11-24  7:50 ` [PATCH 2/2 v2] intel_pstate: add kernel parameter to enable loading on Sun X86 servers Ethan Zhao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.