Re: [PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-30 Thread ethan zhao
Yasuaki,

On 2014/11/28 13:20, Yasuaki Ishimatsu wrote:
> (2014/11/28 12:36), Ethan Zhao wrote:
>> 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 
>> Signed-off-by: Dirk Brandewie 
>> Tested-by: Linda Knippers 
>> ---
>>v2: fix break HP Proliant issue.
>>v3: expand the hardware vendor list.
>>v4: refine code.
>>
>>   drivers/cpufreq/intel_pstate.c | 45 
>> ++
>>   1 file changed, 41 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
>> index 27bb6d3..1bb62ca 100644
>> --- a/drivers/cpufreq/intel_pstate.c
>> +++ b/drivers/cpufreq/intel_pstate.c
>> @@ -943,15 +943,46 @@ 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;
>> +}
>> +
>> +enum {
>> +PSS,
>> +PCC,
>> +};
> What does PCC stand for? Is it PPC?

Good catch, should be PPC, not PCC.
> Thanks,
> Yasuaki Ishimatsu
>
>> +
>>   struct hw_vendor_info {
>>  u16  valid;
>>  char oem_id[ACPI_OEM_ID_SIZE];
>>  char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
>> +int  oem_pwr_table;
>>   };
>>   
>>   /* Hardware vendor-specific info that has its own power management modes */
>>   static struct hw_vendor_info vendor_info[] = {
>> -{1, "HP", "ProLiant"},
>> +{1, "HP", "ProLiant", PSS},
>> +{1, "ORACLE", "X4-2", PCC},
>> +{1, "ORACLE", "X4-2L   ", PCC},
>> +{1, "ORACLE", "X4-2B   ", PCC},
>> +{1, "ORACLE", "X3-2", PCC},
>> +{1, "ORACLE", "X3-2L   ", PCC},
>> +{1, "ORACLE", "X3-2B   ", PCC},
>> +{1, "ORACLE", "X4470M2 ", PCC},
>> +{1, "ORACLE", "X4270M3 ", PCC},
>> +{1, "ORACLE", "X4270M2 ", PCC},
>> +{1, "ORACLE", "X4170M2 ", PCC},
>>  {0, "", ""},
>>   };
>>   
>> @@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
>>   
>>  for (v_info = vendor_info; v_info->valid; v_info++) {
>>  if (!strncmp(hdr.oem_id, v_info->oem_id, ACPI_OEM_ID_SIZE) &&
>> -!strncmp(hdr.oem_table_id, v_info->oem_table_id, 
>> ACPI_OEM_TABLE_ID_SIZE) &&
>> -intel_pstate_no_acpi_pss())
>> -return true;
>> +!strncmp(hdr.oem_table_id, v_info->oem_table_id,
>> +ACPI_OEM_TABLE_ID_SIZE))
>> +switch (v_info->oem_pwr_table) {
>> +case PSS:
>> +return intel_pstate_no_acpi_pss();
>> +case PCC:
>> +return intel_pstate_has_acpi_ppc();
>> +}
>>  }
>>   
>>  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)
>>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-30 Thread ethan zhao
Yasuaki,

On 2014/11/28 13:20, Yasuaki Ishimatsu wrote:
 (2014/11/28 12:36), Ethan Zhao wrote:
 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.z...@oracle.com
 Signed-off-by: Dirk Brandewie dirk.brande...@gmail.com
 Tested-by: Linda Knippers linda.knipp...@hp.com
 ---
v2: fix break HP Proliant issue.
v3: expand the hardware vendor list.
v4: refine code.

   drivers/cpufreq/intel_pstate.c | 45 
 ++
   1 file changed, 41 insertions(+), 4 deletions(-)

 diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
 index 27bb6d3..1bb62ca 100644
 --- a/drivers/cpufreq/intel_pstate.c
 +++ b/drivers/cpufreq/intel_pstate.c
 @@ -943,15 +943,46 @@ 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;
 +}
 +
 +enum {
 +PSS,
 +PCC,
 +};
 What does PCC stand for? Is it PPC?

Good catch, should be PPC, not PCC.
 Thanks,
 Yasuaki Ishimatsu

 +
   struct hw_vendor_info {
  u16  valid;
  char oem_id[ACPI_OEM_ID_SIZE];
  char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
 +int  oem_pwr_table;
   };
   
   /* Hardware vendor-specific info that has its own power management modes */
   static struct hw_vendor_info vendor_info[] = {
 -{1, HP, ProLiant},
 +{1, HP, ProLiant, PSS},
 +{1, ORACLE, X4-2, PCC},
 +{1, ORACLE, X4-2L   , PCC},
 +{1, ORACLE, X4-2B   , PCC},
 +{1, ORACLE, X3-2, PCC},
 +{1, ORACLE, X3-2L   , PCC},
 +{1, ORACLE, X3-2B   , PCC},
 +{1, ORACLE, X4470M2 , PCC},
 +{1, ORACLE, X4270M3 , PCC},
 +{1, ORACLE, X4270M2 , PCC},
 +{1, ORACLE, X4170M2 , PCC},
  {0, , },
   };
   
 @@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
   
  for (v_info = vendor_info; v_info-valid; v_info++) {
  if (!strncmp(hdr.oem_id, v_info-oem_id, ACPI_OEM_ID_SIZE) 
 -!strncmp(hdr.oem_table_id, v_info-oem_table_id, 
 ACPI_OEM_TABLE_ID_SIZE) 
 -intel_pstate_no_acpi_pss())
 -return true;
 +!strncmp(hdr.oem_table_id, v_info-oem_table_id,
 +ACPI_OEM_TABLE_ID_SIZE))
 +switch (v_info-oem_pwr_table) {
 +case PSS:
 +return intel_pstate_no_acpi_pss();
 +case PCC:
 +return intel_pstate_has_acpi_ppc();
 +}
  }
   
  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)



--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-27 Thread Yasuaki Ishimatsu
(2014/11/28 12:36), Ethan Zhao wrote:
> 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 
> Signed-off-by: Dirk Brandewie 
> Tested-by: Linda Knippers 
> ---
>v2: fix break HP Proliant issue.
>v3: expand the hardware vendor list.
>v4: refine code.
> 
>   drivers/cpufreq/intel_pstate.c | 45 
> ++
>   1 file changed, 41 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index 27bb6d3..1bb62ca 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -943,15 +943,46 @@ 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;
> +}
> +

> +enum {
> + PSS,
> + PCC,
> +};

What does PCC stand for? Is it PPC?

Thanks,
Yasuaki Ishimatsu

> +
>   struct hw_vendor_info {
>   u16  valid;
>   char oem_id[ACPI_OEM_ID_SIZE];
>   char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
> + int  oem_pwr_table;
>   };
>   
>   /* Hardware vendor-specific info that has its own power management modes */
>   static struct hw_vendor_info vendor_info[] = {
> - {1, "HP", "ProLiant"},
> + {1, "HP", "ProLiant", PSS},
> + {1, "ORACLE", "X4-2", PCC},
> + {1, "ORACLE", "X4-2L   ", PCC},
> + {1, "ORACLE", "X4-2B   ", PCC},
> + {1, "ORACLE", "X3-2", PCC},
> + {1, "ORACLE", "X3-2L   ", PCC},
> + {1, "ORACLE", "X3-2B   ", PCC},
> + {1, "ORACLE", "X4470M2 ", PCC},
> + {1, "ORACLE", "X4270M3 ", PCC},
> + {1, "ORACLE", "X4270M2 ", PCC},
> + {1, "ORACLE", "X4170M2 ", PCC},
>   {0, "", ""},
>   };
>   
> @@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
>   
>   for (v_info = vendor_info; v_info->valid; v_info++) {
>   if (!strncmp(hdr.oem_id, v_info->oem_id, ACPI_OEM_ID_SIZE) &&
> - !strncmp(hdr.oem_table_id, v_info->oem_table_id, 
> ACPI_OEM_TABLE_ID_SIZE) &&
> - intel_pstate_no_acpi_pss())
> - return true;
> + !strncmp(hdr.oem_table_id, v_info->oem_table_id,
> + ACPI_OEM_TABLE_ID_SIZE))
> + switch (v_info->oem_pwr_table) {
> + case PSS:
> + return intel_pstate_no_acpi_pss();
> + case PCC:
> + return intel_pstate_has_acpi_ppc();
> + }
>   }
>   
>   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)
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-27 Thread 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 
Signed-off-by: Dirk Brandewie 
Tested-by: Linda Knippers 
---
  v2: fix break HP Proliant issue.
  v3: expand the hardware vendor list.
  v4: refine code.

 drivers/cpufreq/intel_pstate.c | 45 ++
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 27bb6d3..1bb62ca 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -943,15 +943,46 @@ 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;
+}
+
+enum {
+   PSS,
+   PCC,
+};
+
 struct hw_vendor_info {
u16  valid;
char oem_id[ACPI_OEM_ID_SIZE];
char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
+   int  oem_pwr_table;
 };
 
 /* Hardware vendor-specific info that has its own power management modes */
 static struct hw_vendor_info vendor_info[] = {
-   {1, "HP", "ProLiant"},
+   {1, "HP", "ProLiant", PSS},
+   {1, "ORACLE", "X4-2", PCC},
+   {1, "ORACLE", "X4-2L   ", PCC},
+   {1, "ORACLE", "X4-2B   ", PCC},
+   {1, "ORACLE", "X3-2", PCC},
+   {1, "ORACLE", "X3-2L   ", PCC},
+   {1, "ORACLE", "X3-2B   ", PCC},
+   {1, "ORACLE", "X4470M2 ", PCC},
+   {1, "ORACLE", "X4270M3 ", PCC},
+   {1, "ORACLE", "X4270M2 ", PCC},
+   {1, "ORACLE", "X4170M2 ", PCC},
{0, "", ""},
 };
 
@@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
 
for (v_info = vendor_info; v_info->valid; v_info++) {
if (!strncmp(hdr.oem_id, v_info->oem_id, ACPI_OEM_ID_SIZE) &&
-   !strncmp(hdr.oem_table_id, v_info->oem_table_id, 
ACPI_OEM_TABLE_ID_SIZE) &&
-   intel_pstate_no_acpi_pss())
-   return true;
+   !strncmp(hdr.oem_table_id, v_info->oem_table_id,
+   ACPI_OEM_TABLE_ID_SIZE))
+   switch (v_info->oem_pwr_table) {
+   case PSS:
+   return intel_pstate_no_acpi_pss();
+   case PCC:
+   return intel_pstate_has_acpi_ppc();
+   }
}
 
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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-27 Thread 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 
Signed-off-by: Dirk Brandewie 
Tested-by: Linda Knippers 
---
  v2: fix break HP Proliant issue.
  v3: expand the hardware vendor list.
  v4: refine code.

 drivers/cpufreq/intel_pstate.c | 45 ++
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 27bb6d3..1bb62ca 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -943,15 +943,46 @@ 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;
+}
+
+enum {
+   PSS,
+   PCC,
+};
+
 struct hw_vendor_info {
u16  valid;
char oem_id[ACPI_OEM_ID_SIZE];
char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
+   int  oem_pwr_table;
 };
 
 /* Hardware vendor-specific info that has its own power management modes */
 static struct hw_vendor_info vendor_info[] = {
-   {1, "HP", "ProLiant"},
+   {1, "HP", "ProLiant", PSS},
+   {1, "ORACLE", "X4-2", PCC},
+   {1, "ORACLE", "X4-2L   ", PCC},
+   {1, "ORACLE", "X4-2B   ", PCC},
+   {1, "ORACLE", "X3-2", PCC},
+   {1, "ORACLE", "X3-2L   ", PCC},
+   {1, "ORACLE", "X3-2B   ", PCC},
+   {1, "ORACLE", "X4470M2 ", PCC},
+   {1, "ORACLE", "X4270M3 ", PCC},
+   {1, "ORACLE", "X4270M2 ", PCC},
+   {1, "ORACLE", "X4170M2 ", PCC},
{0, "", ""},
 };
 
@@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
 
for (v_info = vendor_info; v_info->valid; v_info++) {
if (!strncmp(hdr.oem_id, v_info->oem_id, ACPI_OEM_ID_SIZE) &&
-   !strncmp(hdr.oem_table_id, v_info->oem_table_id, 
ACPI_OEM_TABLE_ID_SIZE) &&
-   intel_pstate_no_acpi_pss())
-   return true;
+   !strncmp(hdr.oem_table_id, v_info->oem_table_id,
+   ACPI_OEM_TABLE_ID_SIZE))
+   switch (v_info->oem_pwr_table) {
+   case PSS:
+   return intel_pstate_no_acpi_pss();
+   case PCC:
+   return intel_pstate_has_acpi_ppc();
+   }
}
 
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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-27 Thread 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 
Signed-off-by: Dirk Brandewie 
Tested-by: Linda Knippers 
---
  v2: fix break HP Proliant issue.
  v3: expand the hardware vendor list.
  v4: refine code.

 drivers/cpufreq/intel_pstate.c | 45 ++
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 27bb6d3..1bb62ca 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -943,15 +943,46 @@ 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;
+}
+
+enum {
+   PSS,
+   PCC,
+};
+
 struct hw_vendor_info {
u16  valid;
char oem_id[ACPI_OEM_ID_SIZE];
char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
+   int  oem_pwr_table;
 };
 
 /* Hardware vendor-specific info that has its own power management modes */
 static struct hw_vendor_info vendor_info[] = {
-   {1, "HP", "ProLiant"},
+   {1, "HP", "ProLiant", PSS},
+   {1, "ORACLE", "X4-2", PCC},
+   {1, "ORACLE", "X4-2L   ", PCC},
+   {1, "ORACLE", "X4-2B   ", PCC},
+   {1, "ORACLE", "X3-2", PCC},
+   {1, "ORACLE", "X3-2L   ", PCC},
+   {1, "ORACLE", "X3-2B   ", PCC},
+   {1, "ORACLE", "X4470M2 ", PCC},
+   {1, "ORACLE", "X4270M3 ", PCC},
+   {1, "ORACLE", "X4270M2 ", PCC},
+   {1, "ORACLE", "X4170M2 ", PCC},
{0, "", ""},
 };
 
@@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
 
for (v_info = vendor_info; v_info->valid; v_info++) {
if (!strncmp(hdr.oem_id, v_info->oem_id, ACPI_OEM_ID_SIZE) &&
-   !strncmp(hdr.oem_table_id, v_info->oem_table_id, 
ACPI_OEM_TABLE_ID_SIZE) &&
-   intel_pstate_no_acpi_pss())
-   return true;
+   !strncmp(hdr.oem_table_id, v_info->oem_table_id,
+   ACPI_OEM_TABLE_ID_SIZE))
+   switch (v_info->oem_pwr_table) {
+   case PSS:
+   return intel_pstate_no_acpi_pss();
+   case PCC:
+   return intel_pstate_has_acpi_ppc();
+   }
}
 
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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-27 Thread 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.z...@oracle.com
Signed-off-by: Dirk Brandewie dirk.brande...@gmail.com
Tested-by: Linda Knippers linda.knipp...@hp.com
---
  v2: fix break HP Proliant issue.
  v3: expand the hardware vendor list.
  v4: refine code.

 drivers/cpufreq/intel_pstate.c | 45 ++
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 27bb6d3..1bb62ca 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -943,15 +943,46 @@ 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;
+}
+
+enum {
+   PSS,
+   PCC,
+};
+
 struct hw_vendor_info {
u16  valid;
char oem_id[ACPI_OEM_ID_SIZE];
char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
+   int  oem_pwr_table;
 };
 
 /* Hardware vendor-specific info that has its own power management modes */
 static struct hw_vendor_info vendor_info[] = {
-   {1, HP, ProLiant},
+   {1, HP, ProLiant, PSS},
+   {1, ORACLE, X4-2, PCC},
+   {1, ORACLE, X4-2L   , PCC},
+   {1, ORACLE, X4-2B   , PCC},
+   {1, ORACLE, X3-2, PCC},
+   {1, ORACLE, X3-2L   , PCC},
+   {1, ORACLE, X3-2B   , PCC},
+   {1, ORACLE, X4470M2 , PCC},
+   {1, ORACLE, X4270M3 , PCC},
+   {1, ORACLE, X4270M2 , PCC},
+   {1, ORACLE, X4170M2 , PCC},
{0, , },
 };
 
@@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
 
for (v_info = vendor_info; v_info-valid; v_info++) {
if (!strncmp(hdr.oem_id, v_info-oem_id, ACPI_OEM_ID_SIZE) 
-   !strncmp(hdr.oem_table_id, v_info-oem_table_id, 
ACPI_OEM_TABLE_ID_SIZE) 
-   intel_pstate_no_acpi_pss())
-   return true;
+   !strncmp(hdr.oem_table_id, v_info-oem_table_id,
+   ACPI_OEM_TABLE_ID_SIZE))
+   switch (v_info-oem_pwr_table) {
+   case PSS:
+   return intel_pstate_no_acpi_pss();
+   case PCC:
+   return intel_pstate_has_acpi_ppc();
+   }
}
 
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

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-27 Thread 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.z...@oracle.com
Signed-off-by: Dirk Brandewie dirk.brande...@gmail.com
Tested-by: Linda Knippers linda.knipp...@hp.com
---
  v2: fix break HP Proliant issue.
  v3: expand the hardware vendor list.
  v4: refine code.

 drivers/cpufreq/intel_pstate.c | 45 ++
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 27bb6d3..1bb62ca 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -943,15 +943,46 @@ 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;
+}
+
+enum {
+   PSS,
+   PCC,
+};
+
 struct hw_vendor_info {
u16  valid;
char oem_id[ACPI_OEM_ID_SIZE];
char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
+   int  oem_pwr_table;
 };
 
 /* Hardware vendor-specific info that has its own power management modes */
 static struct hw_vendor_info vendor_info[] = {
-   {1, HP, ProLiant},
+   {1, HP, ProLiant, PSS},
+   {1, ORACLE, X4-2, PCC},
+   {1, ORACLE, X4-2L   , PCC},
+   {1, ORACLE, X4-2B   , PCC},
+   {1, ORACLE, X3-2, PCC},
+   {1, ORACLE, X3-2L   , PCC},
+   {1, ORACLE, X3-2B   , PCC},
+   {1, ORACLE, X4470M2 , PCC},
+   {1, ORACLE, X4270M3 , PCC},
+   {1, ORACLE, X4270M2 , PCC},
+   {1, ORACLE, X4170M2 , PCC},
{0, , },
 };
 
@@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
 
for (v_info = vendor_info; v_info-valid; v_info++) {
if (!strncmp(hdr.oem_id, v_info-oem_id, ACPI_OEM_ID_SIZE) 
-   !strncmp(hdr.oem_table_id, v_info-oem_table_id, 
ACPI_OEM_TABLE_ID_SIZE) 
-   intel_pstate_no_acpi_pss())
-   return true;
+   !strncmp(hdr.oem_table_id, v_info-oem_table_id,
+   ACPI_OEM_TABLE_ID_SIZE))
+   switch (v_info-oem_pwr_table) {
+   case PSS:
+   return intel_pstate_no_acpi_pss();
+   case PCC:
+   return intel_pstate_has_acpi_ppc();
+   }
}
 
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

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-27 Thread 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.z...@oracle.com
Signed-off-by: Dirk Brandewie dirk.brande...@gmail.com
Tested-by: Linda Knippers linda.knipp...@hp.com
---
  v2: fix break HP Proliant issue.
  v3: expand the hardware vendor list.
  v4: refine code.

 drivers/cpufreq/intel_pstate.c | 45 ++
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 27bb6d3..1bb62ca 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -943,15 +943,46 @@ 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;
+}
+
+enum {
+   PSS,
+   PCC,
+};
+
 struct hw_vendor_info {
u16  valid;
char oem_id[ACPI_OEM_ID_SIZE];
char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
+   int  oem_pwr_table;
 };
 
 /* Hardware vendor-specific info that has its own power management modes */
 static struct hw_vendor_info vendor_info[] = {
-   {1, HP, ProLiant},
+   {1, HP, ProLiant, PSS},
+   {1, ORACLE, X4-2, PCC},
+   {1, ORACLE, X4-2L   , PCC},
+   {1, ORACLE, X4-2B   , PCC},
+   {1, ORACLE, X3-2, PCC},
+   {1, ORACLE, X3-2L   , PCC},
+   {1, ORACLE, X3-2B   , PCC},
+   {1, ORACLE, X4470M2 , PCC},
+   {1, ORACLE, X4270M3 , PCC},
+   {1, ORACLE, X4270M2 , PCC},
+   {1, ORACLE, X4170M2 , PCC},
{0, , },
 };
 
@@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
 
for (v_info = vendor_info; v_info-valid; v_info++) {
if (!strncmp(hdr.oem_id, v_info-oem_id, ACPI_OEM_ID_SIZE) 
-   !strncmp(hdr.oem_table_id, v_info-oem_table_id, 
ACPI_OEM_TABLE_ID_SIZE) 
-   intel_pstate_no_acpi_pss())
-   return true;
+   !strncmp(hdr.oem_table_id, v_info-oem_table_id,
+   ACPI_OEM_TABLE_ID_SIZE))
+   switch (v_info-oem_pwr_table) {
+   case PSS:
+   return intel_pstate_no_acpi_pss();
+   case PCC:
+   return intel_pstate_has_acpi_ppc();
+   }
}
 
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

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/2 V4] intel_pstate: skip this driver if Sun server has _PPC method

2014-11-27 Thread Yasuaki Ishimatsu
(2014/11/28 12:36), Ethan Zhao wrote:
 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.z...@oracle.com
 Signed-off-by: Dirk Brandewie dirk.brande...@gmail.com
 Tested-by: Linda Knippers linda.knipp...@hp.com
 ---
v2: fix break HP Proliant issue.
v3: expand the hardware vendor list.
v4: refine code.
 
   drivers/cpufreq/intel_pstate.c | 45 
 ++
   1 file changed, 41 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
 index 27bb6d3..1bb62ca 100644
 --- a/drivers/cpufreq/intel_pstate.c
 +++ b/drivers/cpufreq/intel_pstate.c
 @@ -943,15 +943,46 @@ 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;
 +}
 +

 +enum {
 + PSS,
 + PCC,
 +};

What does PCC stand for? Is it PPC?

Thanks,
Yasuaki Ishimatsu

 +
   struct hw_vendor_info {
   u16  valid;
   char oem_id[ACPI_OEM_ID_SIZE];
   char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
 + int  oem_pwr_table;
   };
   
   /* Hardware vendor-specific info that has its own power management modes */
   static struct hw_vendor_info vendor_info[] = {
 - {1, HP, ProLiant},
 + {1, HP, ProLiant, PSS},
 + {1, ORACLE, X4-2, PCC},
 + {1, ORACLE, X4-2L   , PCC},
 + {1, ORACLE, X4-2B   , PCC},
 + {1, ORACLE, X3-2, PCC},
 + {1, ORACLE, X3-2L   , PCC},
 + {1, ORACLE, X3-2B   , PCC},
 + {1, ORACLE, X4470M2 , PCC},
 + {1, ORACLE, X4270M3 , PCC},
 + {1, ORACLE, X4270M2 , PCC},
 + {1, ORACLE, X4170M2 , PCC},
   {0, , },
   };
   
 @@ -966,15 +997,21 @@ static bool intel_pstate_platform_pwr_mgmt_exists(void)
   
   for (v_info = vendor_info; v_info-valid; v_info++) {
   if (!strncmp(hdr.oem_id, v_info-oem_id, ACPI_OEM_ID_SIZE) 
 - !strncmp(hdr.oem_table_id, v_info-oem_table_id, 
 ACPI_OEM_TABLE_ID_SIZE) 
 - intel_pstate_no_acpi_pss())
 - return true;
 + !strncmp(hdr.oem_table_id, v_info-oem_table_id,
 + ACPI_OEM_TABLE_ID_SIZE))
 + switch (v_info-oem_pwr_table) {
 + case PSS:
 + return intel_pstate_no_acpi_pss();
 + case PCC:
 + return intel_pstate_has_acpi_ppc();
 + }
   }
   
   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)
 


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/