All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0
@ 2016-09-01 20:37 Srinivas Pandruvada
  2016-09-01 20:37 ` [PATCH v2 1/4] acpi: cppc: Allow build with ACPI_CPU_FREQ_PSS config Srinivas Pandruvada
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Srinivas Pandruvada @ 2016-09-01 20:37 UTC (permalink / raw)
  To: rjw, tglx, mingo, bp, peterz
  Cc: x86, linux-pm, linux-kernel, linux-acpi, tim.c.chen,
	alexey.klimov, Srinivas Pandruvada

This patchset is CPPC only changes from original "Support Intel® Turbo
Boost Max Technology 3.0" series.

v2
- Rebased on top of bleeding edge branch of Linux-pm git 
- Instead of #ifdef in cppc_acpi using __weak attribute for
functions implemented in arch/x86/kernel/acpi/
- Removed integer support patch as this was already implemented
in the latest code base
- Instead of error return print warning on cppc probe failure

Srinivas Pandruvada (4):
  acpi: cppc: Allow build with ACPI_CPU_FREQ_PSS config
  acpi: cppc: Don't return on CPPC probe failure
  acpi: cppc: Add support for functional fixed hardware address
  acpi: cppc: Add prefix cppc to cpudata structure name

 arch/x86/kernel/acpi/Makefile   |  1 +
 arch/x86/kernel/acpi/cppc_msr.c | 58 ++++++++++++++++++++++++++++++
 drivers/acpi/Kconfig            |  1 -
 drivers/acpi/cppc_acpi.c        | 79 +++++++++++++++++++++++++++++++++--------
 drivers/acpi/processor_driver.c |  4 +--
 drivers/cpufreq/cppc_cpufreq.c  | 14 ++++----
 include/acpi/cppc_acpi.h        |  4 +--
 7 files changed, 134 insertions(+), 27 deletions(-)
 create mode 100644 arch/x86/kernel/acpi/cppc_msr.c

-- 
2.7.4

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

* [PATCH v2 1/4] acpi: cppc: Allow build with ACPI_CPU_FREQ_PSS config
  2016-09-01 20:37 [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0 Srinivas Pandruvada
@ 2016-09-01 20:37 ` Srinivas Pandruvada
  2016-09-01 20:37 ` [PATCH v2 2/4] acpi: cppc: Don't return on CPPC probe failure Srinivas Pandruvada
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Srinivas Pandruvada @ 2016-09-01 20:37 UTC (permalink / raw)
  To: rjw, tglx, mingo, bp, peterz
  Cc: x86, linux-pm, linux-kernel, linux-acpi, tim.c.chen,
	alexey.klimov, Srinivas Pandruvada

Some newer x86 platforms have support for both _CPC and _PSS object. So
kernel config can have both ACPI_CPU_FREQ_PSS and ACPI_CPPC_LIB. So remove
restriction for ACPI_CPPC_LIB to build only when ACPI_CPU_FREQ_PSS is not
defined.
Also for legacy systems with only _PSS, we shouldn't bail out if
acpi_cppc_processor_probe() fails, if ACPI_CPU_FREQ_PSS is also defined.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 drivers/acpi/Kconfig            | 1 -
 drivers/acpi/processor_driver.c | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 445ce28..c6bb6aa 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -227,7 +227,6 @@ config ACPI_MCFG
 config ACPI_CPPC_LIB
 	bool
 	depends on ACPI_PROCESSOR
-	depends on !ACPI_CPU_FREQ_PSS
 	select MAILBOX
 	select PCC
 	help
diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
index 0553aee..f5c92be 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -245,7 +245,7 @@ static int __acpi_processor_start(struct acpi_device *device)
 		return 0;
 
 	result = acpi_cppc_processor_probe(pr);
-	if (result)
+	if (result && !IS_ENABLED(CONFIG_ACPI_CPU_FREQ_PSS))
 		return -ENODEV;
 
 	if (!cpuidle_get_driver() || cpuidle_get_driver() == &acpi_idle_driver)
-- 
2.7.4

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

* [PATCH v2 2/4] acpi: cppc: Don't return on CPPC probe failure
  2016-09-01 20:37 [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0 Srinivas Pandruvada
  2016-09-01 20:37 ` [PATCH v2 1/4] acpi: cppc: Allow build with ACPI_CPU_FREQ_PSS config Srinivas Pandruvada
@ 2016-09-01 20:37 ` Srinivas Pandruvada
  2016-09-01 20:37 ` [PATCH v2 3/4] acpi: cppc: Add support for functional fixed hardware address Srinivas Pandruvada
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Srinivas Pandruvada @ 2016-09-01 20:37 UTC (permalink / raw)
  To: rjw, tglx, mingo, bp, peterz
  Cc: x86, linux-pm, linux-kernel, linux-acpi, tim.c.chen,
	alexey.klimov, Srinivas Pandruvada

It is still possible to continue even CPPC data is invalid or missing.

Suggested-by: Alexey Klimov <alexey.klimov@arm.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 drivers/acpi/processor_driver.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
index f5c92be..8f8552a 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -246,7 +246,7 @@ static int __acpi_processor_start(struct acpi_device *device)
 
 	result = acpi_cppc_processor_probe(pr);
 	if (result && !IS_ENABLED(CONFIG_ACPI_CPU_FREQ_PSS))
-		return -ENODEV;
+		dev_warn(&device->dev, "CPPC data invalid or not present\n");
 
 	if (!cpuidle_get_driver() || cpuidle_get_driver() == &acpi_idle_driver)
 		acpi_processor_power_init(pr);
-- 
2.7.4


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

* [PATCH v2 3/4] acpi: cppc: Add support for functional fixed hardware address
  2016-09-01 20:37 [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0 Srinivas Pandruvada
  2016-09-01 20:37 ` [PATCH v2 1/4] acpi: cppc: Allow build with ACPI_CPU_FREQ_PSS config Srinivas Pandruvada
  2016-09-01 20:37 ` [PATCH v2 2/4] acpi: cppc: Don't return on CPPC probe failure Srinivas Pandruvada
@ 2016-09-01 20:37 ` Srinivas Pandruvada
  2016-09-01 20:37 ` [PATCH v2 4/4] acpi: cppc: Add prefix cppc to cpudata structure name Srinivas Pandruvada
  2016-09-12 22:13 ` [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0 Rafael J. Wysocki
  4 siblings, 0 replies; 6+ messages in thread
From: Srinivas Pandruvada @ 2016-09-01 20:37 UTC (permalink / raw)
  To: rjw, tglx, mingo, bp, peterz
  Cc: x86, linux-pm, linux-kernel, linux-acpi, tim.c.chen,
	alexey.klimov, Srinivas Pandruvada

The CPPC registers can also be accessed via functional fixed hardware
addresse(FFH) in X86. Add support by modifying cpc_read and cpc_write to
be able to read/write MSRs on x86 platform on per cpu basis.
Also with this change, acpi_cppc_processor_probe doesn't bail out if
address space id is not equal to PCC or memory address space and FFH
is supported on the system.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 arch/x86/kernel/acpi/Makefile   |  1 +
 arch/x86/kernel/acpi/cppc_msr.c | 58 +++++++++++++++++++++++++++++++
 drivers/acpi/cppc_acpi.c        | 75 ++++++++++++++++++++++++++++++++++-------
 3 files changed, 121 insertions(+), 13 deletions(-)
 create mode 100644 arch/x86/kernel/acpi/cppc_msr.c

diff --git a/arch/x86/kernel/acpi/Makefile b/arch/x86/kernel/acpi/Makefile
index 3242e59..26b78d8 100644
--- a/arch/x86/kernel/acpi/Makefile
+++ b/arch/x86/kernel/acpi/Makefile
@@ -1,6 +1,7 @@
 obj-$(CONFIG_ACPI)		+= boot.o
 obj-$(CONFIG_ACPI_SLEEP)	+= sleep.o wakeup_$(BITS).o
 obj-$(CONFIG_ACPI_APEI)		+= apei.o
+obj-$(CONFIG_ACPI_CPPC_LIB)	+= cppc_msr.o
 
 ifneq ($(CONFIG_ACPI_PROCESSOR),)
 obj-y				+= cstate.o
diff --git a/arch/x86/kernel/acpi/cppc_msr.c b/arch/x86/kernel/acpi/cppc_msr.c
new file mode 100644
index 0000000..6fb478b
--- /dev/null
+++ b/arch/x86/kernel/acpi/cppc_msr.c
@@ -0,0 +1,58 @@
+/*
+ * cppc_msr.c:  MSR Interface for CPPC
+ * Copyright (c) 2016, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ */
+
+#include <acpi/cppc_acpi.h>
+#include <asm/msr.h>
+
+/* Refer to drivers/acpi/cppc_acpi.c for the description of functions */
+
+bool cpc_ffh_supported(void)
+{
+	return true;
+}
+
+int cpc_read_ffh(int cpunum, struct cpc_reg *reg, u64 *val)
+{
+	int err;
+
+	err = rdmsrl_safe_on_cpu(cpunum, reg->address, val);
+	if (!err) {
+		u64 mask = GENMASK_ULL(reg->bit_offset + reg->bit_width - 1,
+				       reg->bit_offset);
+
+		*val &= mask;
+		*val >>= reg->bit_offset;
+	}
+	return err;
+}
+
+int cpc_write_ffh(int cpunum, struct cpc_reg *reg, u64 val)
+{
+	u64 rd_val;
+	int err;
+
+	err = rdmsrl_safe_on_cpu(cpunum, reg->address, &rd_val);
+	if (!err) {
+		u64 mask = GENMASK_ULL(reg->bit_offset + reg->bit_width - 1,
+				       reg->bit_offset);
+
+		val <<= reg->bit_offset;
+		val &= mask;
+		rd_val &= ~mask;
+		rd_val |= val;
+		err = wrmsrl_safe_on_cpu(cpunum, reg->address, rd_val);
+	}
+	return err;
+}
diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
index ed58883..715fe80 100644
--- a/drivers/acpi/cppc_acpi.c
+++ b/drivers/acpi/cppc_acpi.c
@@ -579,6 +579,19 @@ static int register_pcc_channel(int pcc_subspace_idx)
 	return 0;
 }
 
+/**
+ * cpc_ffh_supported() - check if FFH reading supported
+ *
+ * Check if the architecture has support for functional fixed hardware
+ * read/write capability.
+ *
+ * Return: true for supported, false for not supported
+ */
+bool __weak cpc_ffh_supported(void)
+{
+	return false;
+}
+
 /*
  * An example CPC table looks like the following.
  *
@@ -728,9 +741,11 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)
 					cpc_ptr->cpc_regs[i-2].sys_mem_vaddr = addr;
 				}
 			} else {
-				/* Support only PCC and SYS MEM type regs */
-				pr_debug("Unsupported register type: %d\n", gas_t->space_id);
-				goto out_free;
+				if (gas_t->space_id != ACPI_ADR_SPACE_FIXED_HARDWARE || !cpc_ffh_supported()) {
+					/* Support only PCC ,SYS MEM and FFH type regs */
+					pr_debug("Unsupported register type: %d\n", gas_t->space_id);
+					goto out_free;
+				}
 			}
 
 			cpc_ptr->cpc_regs[i-2].type = ACPI_TYPE_BUFFER;
@@ -819,13 +834,43 @@ void acpi_cppc_processor_exit(struct acpi_processor *pr)
 }
 EXPORT_SYMBOL_GPL(acpi_cppc_processor_exit);
 
+/**
+ * cpc_read_ffh() - Read FFH register
+ * @cpunum:	cpu number to read
+ * @reg:	cppc register information
+ * @val:	place holder for return value
+ *
+ * Read bit_width bits from a specified address and bit_offset
+ *
+ * Return: 0 for success and error code
+ */
+int __weak cpc_read_ffh(int cpunum, struct cpc_reg *reg, u64 *val)
+{
+	return -ENOTSUPP;
+}
+
+/**
+ * cpc_write_ffh() - Write FFH register
+ * @cpunum:	cpu number to write
+ * @reg:	cppc register information
+ * @val:	value to write
+ *
+ * Write value of bit_width bits to a specified address and bit_offset
+ *
+ * Return: 0 for success and error code
+ */
+int __weak cpc_write_ffh(int cpunum, struct cpc_reg *reg, u64 val)
+{
+	return -ENOTSUPP;
+}
+
 /*
  * Since cpc_read and cpc_write are called while holding pcc_lock, it should be
  * as fast as possible. We have already mapped the PCC subspace during init, so
  * we can directly write to it.
  */
 
-static int cpc_read(struct cpc_register_resource *reg_res, u64 *val)
+static int cpc_read(int cpu, struct cpc_register_resource *reg_res, u64 *val)
 {
 	int ret_val = 0;
 	void __iomem *vaddr = 0;
@@ -841,6 +886,8 @@ static int cpc_read(struct cpc_register_resource *reg_res, u64 *val)
 		vaddr = GET_PCC_VADDR(reg->address);
 	else if (reg->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY)
 		vaddr = reg_res->sys_mem_vaddr;
+	else if (reg->space_id == ACPI_ADR_SPACE_FIXED_HARDWARE)
+		return cpc_read_ffh(cpu, reg, val);
 	else
 		return acpi_os_read_memory((acpi_physical_address)reg->address,
 				val, reg->bit_width);
@@ -867,7 +914,7 @@ static int cpc_read(struct cpc_register_resource *reg_res, u64 *val)
 	return ret_val;
 }
 
-static int cpc_write(struct cpc_register_resource *reg_res, u64 val)
+static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)
 {
 	int ret_val = 0;
 	void __iomem *vaddr = 0;
@@ -877,6 +924,8 @@ static int cpc_write(struct cpc_register_resource *reg_res, u64 val)
 		vaddr = GET_PCC_VADDR(reg->address);
 	else if (reg->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY)
 		vaddr = reg_res->sys_mem_vaddr;
+	else if (reg->space_id == ACPI_ADR_SPACE_FIXED_HARDWARE)
+		return cpc_write_ffh(cpu, reg, val);
 	else
 		return acpi_os_write_memory((acpi_physical_address)reg->address,
 				val, reg->bit_width);
@@ -941,13 +990,13 @@ int cppc_get_perf_caps(int cpunum, struct cppc_perf_caps *perf_caps)
 		}
 	}
 
-	cpc_read(highest_reg, &high);
+	cpc_read(cpunum, highest_reg, &high);
 	perf_caps->highest_perf = high;
 
-	cpc_read(lowest_reg, &low);
+	cpc_read(cpunum, lowest_reg, &low);
 	perf_caps->lowest_perf = low;
 
-	cpc_read(nom_perf, &nom);
+	cpc_read(cpunum, nom_perf, &nom);
 	perf_caps->nominal_perf = nom;
 
 	if (!high || !low || !nom)
@@ -1004,9 +1053,9 @@ int cppc_get_perf_ctrs(int cpunum, struct cppc_perf_fb_ctrs *perf_fb_ctrs)
 		}
 	}
 
-	cpc_read(delivered_reg, &delivered);
-	cpc_read(reference_reg, &reference);
-	cpc_read(ref_perf_reg, &ref_perf);
+	cpc_read(cpunum, delivered_reg, &delivered);
+	cpc_read(cpunum, reference_reg, &reference);
+	cpc_read(cpunum, ref_perf_reg, &ref_perf);
 
 	/*
 	 * Per spec, if ctr_wrap_time optional register is unsupported, then the
@@ -1015,7 +1064,7 @@ int cppc_get_perf_ctrs(int cpunum, struct cppc_perf_fb_ctrs *perf_fb_ctrs)
 	 */
 	ctr_wrap_time = (u64)(~((u64)0));
 	if (CPC_SUPPORTED(ctr_wrap_reg))
-		cpc_read(ctr_wrap_reg, &ctr_wrap_time);
+		cpc_read(cpunum, ctr_wrap_reg, &ctr_wrap_time);
 
 	if (!delivered || !reference ||	!ref_perf) {
 		ret = -EFAULT;
@@ -1082,7 +1131,7 @@ int cppc_set_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls)
 	 * Skip writing MIN/MAX until Linux knows how to come up with
 	 * useful values.
 	 */
-	cpc_write(desired_reg, perf_ctrls->desired_perf);
+	cpc_write(cpu, desired_reg, perf_ctrls->desired_perf);
 
 	if (CPC_IN_PCC(desired_reg))
 		up_read(&pcc_data.pcc_lock);	/* END Phase-I */
-- 
2.7.4


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

* [PATCH v2 4/4] acpi: cppc: Add prefix cppc to cpudata structure name
  2016-09-01 20:37 [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0 Srinivas Pandruvada
                   ` (2 preceding siblings ...)
  2016-09-01 20:37 ` [PATCH v2 3/4] acpi: cppc: Add support for functional fixed hardware address Srinivas Pandruvada
@ 2016-09-01 20:37 ` Srinivas Pandruvada
  2016-09-12 22:13 ` [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0 Rafael J. Wysocki
  4 siblings, 0 replies; 6+ messages in thread
From: Srinivas Pandruvada @ 2016-09-01 20:37 UTC (permalink / raw)
  To: rjw, tglx, mingo, bp, peterz
  Cc: x86, linux-pm, linux-kernel, linux-acpi, tim.c.chen,
	alexey.klimov, Srinivas Pandruvada

Since struct cpudata is defined in a header file, add prefix cppc_ to
make it not a generic name. Otherwise it causes compile issue in locally
define structure with the same name.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 drivers/acpi/cppc_acpi.c       |  4 ++--
 drivers/cpufreq/cppc_cpufreq.c | 14 +++++++-------
 include/acpi/cppc_acpi.h       |  4 ++--
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
index 715fe80..3d1ae6d 100644
--- a/drivers/acpi/cppc_acpi.c
+++ b/drivers/acpi/cppc_acpi.c
@@ -409,13 +409,13 @@ end:
  *
  *	Return: 0 for success or negative value for err.
  */
-int acpi_get_psd_map(struct cpudata **all_cpu_data)
+int acpi_get_psd_map(struct cppc_cpudata **all_cpu_data)
 {
 	int count_target;
 	int retval = 0;
 	unsigned int i, j;
 	cpumask_var_t covered_cpus;
-	struct cpudata *pr, *match_pr;
+	struct cppc_cpudata *pr, *match_pr;
 	struct acpi_psd_package *pdomain;
 	struct acpi_psd_package *match_pdomain;
 	struct cpc_desc *cpc_ptr, *match_cpc_ptr;
diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c
index e6a3359..6588ec5 100644
--- a/drivers/cpufreq/cppc_cpufreq.c
+++ b/drivers/cpufreq/cppc_cpufreq.c
@@ -30,13 +30,13 @@
  * performance capabilities, desired performance level
  * requested etc.
  */
-static struct cpudata **all_cpu_data;
+static struct cppc_cpudata **all_cpu_data;
 
 static int cppc_cpufreq_set_target(struct cpufreq_policy *policy,
 		unsigned int target_freq,
 		unsigned int relation)
 {
-	struct cpudata *cpu;
+	struct cppc_cpudata *cpu;
 	struct cpufreq_freqs freqs;
 	int ret = 0;
 
@@ -66,7 +66,7 @@ static int cppc_verify_policy(struct cpufreq_policy *policy)
 static void cppc_cpufreq_stop_cpu(struct cpufreq_policy *policy)
 {
 	int cpu_num = policy->cpu;
-	struct cpudata *cpu = all_cpu_data[cpu_num];
+	struct cppc_cpudata *cpu = all_cpu_data[cpu_num];
 	int ret;
 
 	cpu->perf_ctrls.desired_perf = cpu->perf_caps.lowest_perf;
@@ -79,7 +79,7 @@ static void cppc_cpufreq_stop_cpu(struct cpufreq_policy *policy)
 
 static int cppc_cpufreq_cpu_init(struct cpufreq_policy *policy)
 {
-	struct cpudata *cpu;
+	struct cppc_cpudata *cpu;
 	unsigned int cpu_num = policy->cpu;
 	int ret = 0;
 
@@ -135,7 +135,7 @@ static struct cpufreq_driver cppc_cpufreq_driver = {
 static int __init cppc_cpufreq_init(void)
 {
 	int i, ret = 0;
-	struct cpudata *cpu;
+	struct cppc_cpudata *cpu;
 
 	if (acpi_disabled)
 		return -ENODEV;
@@ -145,7 +145,7 @@ static int __init cppc_cpufreq_init(void)
 		return -ENOMEM;
 
 	for_each_possible_cpu(i) {
-		all_cpu_data[i] = kzalloc(sizeof(struct cpudata), GFP_KERNEL);
+		all_cpu_data[i] = kzalloc(sizeof(struct cppc_cpudata), GFP_KERNEL);
 		if (!all_cpu_data[i])
 			goto out;
 
@@ -176,7 +176,7 @@ out:
 
 static void __exit cppc_cpufreq_exit(void)
 {
-	struct cpudata *cpu;
+	struct cppc_cpudata *cpu;
 	int i;
 
 	cpufreq_unregister_driver(&cppc_cpufreq_driver);
diff --git a/include/acpi/cppc_acpi.h b/include/acpi/cppc_acpi.h
index 0e83cc3..427a7c3 100644
--- a/include/acpi/cppc_acpi.h
+++ b/include/acpi/cppc_acpi.h
@@ -119,7 +119,7 @@ struct cppc_perf_fb_ctrs {
 };
 
 /* Per CPU container for runtime CPPC management. */
-struct cpudata {
+struct cppc_cpudata {
 	int cpu;
 	struct cppc_perf_caps perf_caps;
 	struct cppc_perf_ctrls perf_ctrls;
@@ -132,7 +132,7 @@ struct cpudata {
 extern int cppc_get_perf_ctrs(int cpu, struct cppc_perf_fb_ctrs *perf_fb_ctrs);
 extern int cppc_set_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls);
 extern int cppc_get_perf_caps(int cpu, struct cppc_perf_caps *caps);
-extern int acpi_get_psd_map(struct cpudata **);
+extern int acpi_get_psd_map(struct cppc_cpudata **);
 extern unsigned int cppc_get_transition_latency(int cpu);
 
 #endif /* _CPPC_ACPI_H*/
-- 
2.7.4


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

* Re: [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0
  2016-09-01 20:37 [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0 Srinivas Pandruvada
                   ` (3 preceding siblings ...)
  2016-09-01 20:37 ` [PATCH v2 4/4] acpi: cppc: Add prefix cppc to cpudata structure name Srinivas Pandruvada
@ 2016-09-12 22:13 ` Rafael J. Wysocki
  4 siblings, 0 replies; 6+ messages in thread
From: Rafael J. Wysocki @ 2016-09-12 22:13 UTC (permalink / raw)
  To: Srinivas Pandruvada
  Cc: tglx, mingo, bp, peterz, x86, linux-pm, linux-kernel, linux-acpi,
	tim.c.chen, alexey.klimov

On Thursday, September 01, 2016 01:37:07 PM Srinivas Pandruvada wrote:
> This patchset is CPPC only changes from original "Support Intel® Turbo
> Boost Max Technology 3.0" series.
> 
> v2
> - Rebased on top of bleeding edge branch of Linux-pm git 
> - Instead of #ifdef in cppc_acpi using __weak attribute for
> functions implemented in arch/x86/kernel/acpi/
> - Removed integer support patch as this was already implemented
> in the latest code base
> - Instead of error return print warning on cppc probe failure
> 
> Srinivas Pandruvada (4):
>   acpi: cppc: Allow build with ACPI_CPU_FREQ_PSS config
>   acpi: cppc: Don't return on CPPC probe failure
>   acpi: cppc: Add support for functional fixed hardware address
>   acpi: cppc: Add prefix cppc to cpudata structure name

All applied.

Thanks,
Rafael


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

end of thread, other threads:[~2016-09-12 22:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-01 20:37 [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0 Srinivas Pandruvada
2016-09-01 20:37 ` [PATCH v2 1/4] acpi: cppc: Allow build with ACPI_CPU_FREQ_PSS config Srinivas Pandruvada
2016-09-01 20:37 ` [PATCH v2 2/4] acpi: cppc: Don't return on CPPC probe failure Srinivas Pandruvada
2016-09-01 20:37 ` [PATCH v2 3/4] acpi: cppc: Add support for functional fixed hardware address Srinivas Pandruvada
2016-09-01 20:37 ` [PATCH v2 4/4] acpi: cppc: Add prefix cppc to cpudata structure name Srinivas Pandruvada
2016-09-12 22:13 ` [PATCH v2 0/4] CPPC only changes for supporting ITMT 3.0 Rafael J. Wysocki

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.