All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Sudeep Holla <sudeep.holla@arm.com>
Cc: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Al Stone <al.stone@linaro.org>,
	Prashanth Prakash <pprakash@codeaurora.org>,
	Ashwin Chaugule <ashwin.chaugule@linaro.org>,
	x86@kernel.org, linux-ia64@vger.kernel.org
Subject: Re: [PATCH v4 1/5] ACPI / processor_idle: introduce ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE
Date: Tue, 10 May 2016 02:02:39 +0200	[thread overview]
Message-ID: <5796685.UTMTWTestt@vostro.rjw.lan> (raw)
In-Reply-To: <1461069013-13292-2-git-send-email-sudeep.holla@arm.com>

On Tuesday, April 19, 2016 01:30:09 PM Sudeep Holla wrote:
> ACPI 6.0 adds a new method to specify the CPU idle states(C-states)
> called Low Power Idle(LPI) states. Since new architectures like ARM64
> use only LPIs, introduce ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE to
> encapsulate all the code supporting the old style C-states(_CST)
> 
> This patch will help to extend the processor_idle module to support
> LPI.
> 
> Cc: x86@kernel.org
> Cc: linux-ia64@vger.kernel.org
> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> ---
>  arch/ia64/Kconfig             |  1 +
>  arch/x86/Kconfig              |  1 +
>  drivers/acpi/Kconfig          |  3 ++
>  drivers/acpi/processor_idle.c | 74 +++++++++++++++++++++++++++++--------------
>  include/acpi/processor.h      |  3 +-
>  5 files changed, 57 insertions(+), 25 deletions(-)
> 
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index b534ebab36ea..717de2a146e2 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -16,6 +16,7 @@ config IA64
>  	select PCI if (!IA64_HP_SIM)
>  	select ACPI if (!IA64_HP_SIM)
>  	select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
> +	select ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE if ACPI
>  	select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
>  	select HAVE_UNSTABLE_SCHED_CLOCK
>  	select HAVE_IDE
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 2dc18605831f..eb03fd0d63b9 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -37,6 +37,7 @@ config X86
>  	select ARCH_MIGHT_HAVE_ACPI_PDC		if ACPI
>  	select ARCH_MIGHT_HAVE_PC_PARPORT
>  	select ARCH_MIGHT_HAVE_PC_SERIO
> +	select ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE if ACPI
>  	select ARCH_SUPPORTS_ATOMIC_RMW
>  	select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
>  	select ARCH_SUPPORTS_INT128		if X86_64
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 82b96ee8624c..ec289078667c 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -48,6 +48,9 @@ config ACPI_LEGACY_TABLES_LOOKUP
>  config ARCH_MIGHT_HAVE_ACPI_PDC
>  	bool
>  
> +config ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE
> +	bool

It might be better to do

config ACPI_PROCESSOR_CST
	bool
	depends on ia64 || x86

Should it depend on ARCH_HAS_POWER_INIT too?


> +
>  config ACPI_GENERIC_GSI
>  	bool
>  
> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
> index 444e3745c8b3..1f3fe54194b5 100644
> --- a/drivers/acpi/processor_idle.c
> +++ b/drivers/acpi/processor_idle.c
> @@ -59,6 +59,12 @@ module_param(latency_factor, uint, 0644);
>  
>  static DEFINE_PER_CPU(struct cpuidle_device *, acpi_cpuidle_device);
>  
> +struct cpuidle_driver acpi_idle_driver = {
> +	.name =		"acpi_idle",
> +	.owner =	THIS_MODULE,
> +};
> +
> +#ifdef CONFIG_ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE
>  static
>  DEFINE_PER_CPU(struct acpi_processor_cx * [CPUIDLE_STATE_MAX], acpi_cstate);
>  
> @@ -804,11 +810,6 @@ static void acpi_idle_enter_freeze(struct cpuidle_device *dev,
>  	acpi_idle_do_entry(cx);
>  }
>  
> -struct cpuidle_driver acpi_idle_driver = {
> -	.name =		"acpi_idle",
> -	.owner =	THIS_MODULE,
> -};
> -
>  /**
>   * acpi_processor_setup_cpuidle_cx - prepares and configures CPUIDLE
>   * device i.e. per-cpu data
> @@ -925,6 +926,49 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
>  	return 0;
>  }
>  
> +static inline void acpi_processor_cstate_first_run_checks(void)
> +{
> +	static int first_run;
> +
> +	if (first_run)
> +		return;
> +	dmi_check_system(processor_power_dmi_table);
> +	max_cstate = acpi_processor_cstate_check(max_cstate);
> +	if (max_cstate < ACPI_C_STATES_MAX)
> +		pr_notice("ACPI: processor limited to max C-state %d\n",
> +			  max_cstate);
> +	first_run++;
> +
> +	if (acpi_gbl_FADT.cst_control && !nocst) {
> +		status = acpi_os_write_port(acpi_gbl_FADT.smi_command,
> +					    acpi_gbl_FADT.cst_control, 8);
> +		if (ACPI_FAILURE(status))
> +			ACPI_EXCEPTION((AE_INFO, status,
> +					"Notifying BIOS of _CST ability failed"));
> +	}
> +}
> +#else
> +
> +static inline int disabled_by_idle_boot_param(void) { return 0; }
> +static inline void acpi_processor_cstate_first_run_checks(void) { }
> +static int acpi_processor_get_power_info(struct acpi_processor *pr)
> +{
> +	return -ENODEV;
> +}
> +
> +static int acpi_processor_setup_cpuidle_cx(struct acpi_processor *pr,
> +					   struct cpuidle_device *dev)
> +{
> +	return -EINVAL;
> +}
> +
> +static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
> +{
> +	return -EINVAL;
> +}
> +
> +#endif

Add a comment indicating what #ifdef block ends here?

> +
>  int acpi_processor_hotplug(struct acpi_processor *pr)
>  {
>  	int ret = 0;
> @@ -1018,29 +1062,11 @@ int acpi_processor_power_init(struct acpi_processor *pr)
>  	acpi_status status;
>  	int retval;
>  	struct cpuidle_device *dev;
> -	static int first_run;
>  
>  	if (disabled_by_idle_boot_param())
>  		return 0;
>  
> -	if (!first_run) {
> -		dmi_check_system(processor_power_dmi_table);
> -		max_cstate = acpi_processor_cstate_check(max_cstate);
> -		if (max_cstate < ACPI_C_STATES_MAX)
> -			printk(KERN_NOTICE
> -			       "ACPI: processor limited to max C-state %d\n",
> -			       max_cstate);
> -		first_run++;
> -	}
> -
> -	if (acpi_gbl_FADT.cst_control && !nocst) {
> -		status =
> -		    acpi_os_write_port(acpi_gbl_FADT.smi_command, acpi_gbl_FADT.cst_control, 8);
> -		if (ACPI_FAILURE(status)) {
> -			ACPI_EXCEPTION((AE_INFO, status,
> -					"Notifying BIOS of _CST ability failed"));
> -		}
> -	}
> +	acpi_processor_cstate_first_run_checks();
>  
>  	acpi_processor_get_power_info(pr);
>  	pr->flags.power_setup_done = 1;
> diff --git a/include/acpi/processor.h b/include/acpi/processor.h
> index 6f1805dd5d3c..50f2423d31fa 100644
> --- a/include/acpi/processor.h
> +++ b/include/acpi/processor.h
> @@ -242,7 +242,8 @@ extern int acpi_processor_get_performance_info(struct acpi_processor *pr);
>  DECLARE_PER_CPU(struct acpi_processor *, processors);
>  extern struct acpi_processor_errata errata;
>  
> -#ifdef ARCH_HAS_POWER_INIT
> +#if defined(ARCH_HAS_POWER_INIT) && \
> +	defined(CONFIG_ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE)
>  void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,
>  					unsigned int cpu);
>  int acpi_processor_ffh_cstate_probe(unsigned int cpu,
> 


WARNING: multiple messages have this Message-ID (diff)
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Sudeep Holla <sudeep.holla@arm.com>
Cc: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Al Stone <al.stone@linaro.org>,
	Prashanth Prakash <pprakash@codeaurora.org>,
	Ashwin Chaugule <ashwin.chaugule@linaro.org>,
	x86@kernel.org, linux-ia64@vger.kernel.org
Subject: Re: [PATCH v4 1/5] ACPI / processor_idle: introduce ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE
Date: Mon, 09 May 2016 23:59:23 +0000	[thread overview]
Message-ID: <5796685.UTMTWTestt@vostro.rjw.lan> (raw)
In-Reply-To: <1461069013-13292-2-git-send-email-sudeep.holla@arm.com>

On Tuesday, April 19, 2016 01:30:09 PM Sudeep Holla wrote:
> ACPI 6.0 adds a new method to specify the CPU idle states(C-states)
> called Low Power Idle(LPI) states. Since new architectures like ARM64
> use only LPIs, introduce ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE to
> encapsulate all the code supporting the old style C-states(_CST)
> 
> This patch will help to extend the processor_idle module to support
> LPI.
> 
> Cc: x86@kernel.org
> Cc: linux-ia64@vger.kernel.org
> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> ---
>  arch/ia64/Kconfig             |  1 +
>  arch/x86/Kconfig              |  1 +
>  drivers/acpi/Kconfig          |  3 ++
>  drivers/acpi/processor_idle.c | 74 +++++++++++++++++++++++++++++--------------
>  include/acpi/processor.h      |  3 +-
>  5 files changed, 57 insertions(+), 25 deletions(-)
> 
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index b534ebab36ea..717de2a146e2 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -16,6 +16,7 @@ config IA64
>  	select PCI if (!IA64_HP_SIM)
>  	select ACPI if (!IA64_HP_SIM)
>  	select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
> +	select ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE if ACPI
>  	select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
>  	select HAVE_UNSTABLE_SCHED_CLOCK
>  	select HAVE_IDE
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 2dc18605831f..eb03fd0d63b9 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -37,6 +37,7 @@ config X86
>  	select ARCH_MIGHT_HAVE_ACPI_PDC		if ACPI
>  	select ARCH_MIGHT_HAVE_PC_PARPORT
>  	select ARCH_MIGHT_HAVE_PC_SERIO
> +	select ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE if ACPI
>  	select ARCH_SUPPORTS_ATOMIC_RMW
>  	select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
>  	select ARCH_SUPPORTS_INT128		if X86_64
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 82b96ee8624c..ec289078667c 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -48,6 +48,9 @@ config ACPI_LEGACY_TABLES_LOOKUP
>  config ARCH_MIGHT_HAVE_ACPI_PDC
>  	bool
>  
> +config ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE
> +	bool

It might be better to do

config ACPI_PROCESSOR_CST
	bool
	depends on ia64 || x86

Should it depend on ARCH_HAS_POWER_INIT too?


> +
>  config ACPI_GENERIC_GSI
>  	bool
>  
> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
> index 444e3745c8b3..1f3fe54194b5 100644
> --- a/drivers/acpi/processor_idle.c
> +++ b/drivers/acpi/processor_idle.c
> @@ -59,6 +59,12 @@ module_param(latency_factor, uint, 0644);
>  
>  static DEFINE_PER_CPU(struct cpuidle_device *, acpi_cpuidle_device);
>  
> +struct cpuidle_driver acpi_idle_driver = {
> +	.name =		"acpi_idle",
> +	.owner =	THIS_MODULE,
> +};
> +
> +#ifdef CONFIG_ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE
>  static
>  DEFINE_PER_CPU(struct acpi_processor_cx * [CPUIDLE_STATE_MAX], acpi_cstate);
>  
> @@ -804,11 +810,6 @@ static void acpi_idle_enter_freeze(struct cpuidle_device *dev,
>  	acpi_idle_do_entry(cx);
>  }
>  
> -struct cpuidle_driver acpi_idle_driver = {
> -	.name =		"acpi_idle",
> -	.owner =	THIS_MODULE,
> -};
> -
>  /**
>   * acpi_processor_setup_cpuidle_cx - prepares and configures CPUIDLE
>   * device i.e. per-cpu data
> @@ -925,6 +926,49 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
>  	return 0;
>  }
>  
> +static inline void acpi_processor_cstate_first_run_checks(void)
> +{
> +	static int first_run;
> +
> +	if (first_run)
> +		return;
> +	dmi_check_system(processor_power_dmi_table);
> +	max_cstate = acpi_processor_cstate_check(max_cstate);
> +	if (max_cstate < ACPI_C_STATES_MAX)
> +		pr_notice("ACPI: processor limited to max C-state %d\n",
> +			  max_cstate);
> +	first_run++;
> +
> +	if (acpi_gbl_FADT.cst_control && !nocst) {
> +		status = acpi_os_write_port(acpi_gbl_FADT.smi_command,
> +					    acpi_gbl_FADT.cst_control, 8);
> +		if (ACPI_FAILURE(status))
> +			ACPI_EXCEPTION((AE_INFO, status,
> +					"Notifying BIOS of _CST ability failed"));
> +	}
> +}
> +#else
> +
> +static inline int disabled_by_idle_boot_param(void) { return 0; }
> +static inline void acpi_processor_cstate_first_run_checks(void) { }
> +static int acpi_processor_get_power_info(struct acpi_processor *pr)
> +{
> +	return -ENODEV;
> +}
> +
> +static int acpi_processor_setup_cpuidle_cx(struct acpi_processor *pr,
> +					   struct cpuidle_device *dev)
> +{
> +	return -EINVAL;
> +}
> +
> +static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
> +{
> +	return -EINVAL;
> +}
> +
> +#endif

Add a comment indicating what #ifdef block ends here?

> +
>  int acpi_processor_hotplug(struct acpi_processor *pr)
>  {
>  	int ret = 0;
> @@ -1018,29 +1062,11 @@ int acpi_processor_power_init(struct acpi_processor *pr)
>  	acpi_status status;
>  	int retval;
>  	struct cpuidle_device *dev;
> -	static int first_run;
>  
>  	if (disabled_by_idle_boot_param())
>  		return 0;
>  
> -	if (!first_run) {
> -		dmi_check_system(processor_power_dmi_table);
> -		max_cstate = acpi_processor_cstate_check(max_cstate);
> -		if (max_cstate < ACPI_C_STATES_MAX)
> -			printk(KERN_NOTICE
> -			       "ACPI: processor limited to max C-state %d\n",
> -			       max_cstate);
> -		first_run++;
> -	}
> -
> -	if (acpi_gbl_FADT.cst_control && !nocst) {
> -		status > -		    acpi_os_write_port(acpi_gbl_FADT.smi_command, acpi_gbl_FADT.cst_control, 8);
> -		if (ACPI_FAILURE(status)) {
> -			ACPI_EXCEPTION((AE_INFO, status,
> -					"Notifying BIOS of _CST ability failed"));
> -		}
> -	}
> +	acpi_processor_cstate_first_run_checks();
>  
>  	acpi_processor_get_power_info(pr);
>  	pr->flags.power_setup_done = 1;
> diff --git a/include/acpi/processor.h b/include/acpi/processor.h
> index 6f1805dd5d3c..50f2423d31fa 100644
> --- a/include/acpi/processor.h
> +++ b/include/acpi/processor.h
> @@ -242,7 +242,8 @@ extern int acpi_processor_get_performance_info(struct acpi_processor *pr);
>  DECLARE_PER_CPU(struct acpi_processor *, processors);
>  extern struct acpi_processor_errata errata;
>  
> -#ifdef ARCH_HAS_POWER_INIT
> +#if defined(ARCH_HAS_POWER_INIT) && \
> +	defined(CONFIG_ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE)
>  void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,
>  					unsigned int cpu);
>  int acpi_processor_ffh_cstate_probe(unsigned int cpu,
> 


WARNING: multiple messages have this Message-ID (diff)
From: rjw@rjwysocki.net (Rafael J. Wysocki)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 1/5] ACPI / processor_idle: introduce ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE
Date: Tue, 10 May 2016 02:02:39 +0200	[thread overview]
Message-ID: <5796685.UTMTWTestt@vostro.rjw.lan> (raw)
In-Reply-To: <1461069013-13292-2-git-send-email-sudeep.holla@arm.com>

On Tuesday, April 19, 2016 01:30:09 PM Sudeep Holla wrote:
> ACPI 6.0 adds a new method to specify the CPU idle states(C-states)
> called Low Power Idle(LPI) states. Since new architectures like ARM64
> use only LPIs, introduce ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE to
> encapsulate all the code supporting the old style C-states(_CST)
> 
> This patch will help to extend the processor_idle module to support
> LPI.
> 
> Cc: x86 at kernel.org
> Cc: linux-ia64 at vger.kernel.org
> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> ---
>  arch/ia64/Kconfig             |  1 +
>  arch/x86/Kconfig              |  1 +
>  drivers/acpi/Kconfig          |  3 ++
>  drivers/acpi/processor_idle.c | 74 +++++++++++++++++++++++++++++--------------
>  include/acpi/processor.h      |  3 +-
>  5 files changed, 57 insertions(+), 25 deletions(-)
> 
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index b534ebab36ea..717de2a146e2 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -16,6 +16,7 @@ config IA64
>  	select PCI if (!IA64_HP_SIM)
>  	select ACPI if (!IA64_HP_SIM)
>  	select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
> +	select ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE if ACPI
>  	select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
>  	select HAVE_UNSTABLE_SCHED_CLOCK
>  	select HAVE_IDE
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 2dc18605831f..eb03fd0d63b9 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -37,6 +37,7 @@ config X86
>  	select ARCH_MIGHT_HAVE_ACPI_PDC		if ACPI
>  	select ARCH_MIGHT_HAVE_PC_PARPORT
>  	select ARCH_MIGHT_HAVE_PC_SERIO
> +	select ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE if ACPI
>  	select ARCH_SUPPORTS_ATOMIC_RMW
>  	select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
>  	select ARCH_SUPPORTS_INT128		if X86_64
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 82b96ee8624c..ec289078667c 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -48,6 +48,9 @@ config ACPI_LEGACY_TABLES_LOOKUP
>  config ARCH_MIGHT_HAVE_ACPI_PDC
>  	bool
>  
> +config ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE
> +	bool

It might be better to do

config ACPI_PROCESSOR_CST
	bool
	depends on ia64 || x86

Should it depend on ARCH_HAS_POWER_INIT too?


> +
>  config ACPI_GENERIC_GSI
>  	bool
>  
> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
> index 444e3745c8b3..1f3fe54194b5 100644
> --- a/drivers/acpi/processor_idle.c
> +++ b/drivers/acpi/processor_idle.c
> @@ -59,6 +59,12 @@ module_param(latency_factor, uint, 0644);
>  
>  static DEFINE_PER_CPU(struct cpuidle_device *, acpi_cpuidle_device);
>  
> +struct cpuidle_driver acpi_idle_driver = {
> +	.name =		"acpi_idle",
> +	.owner =	THIS_MODULE,
> +};
> +
> +#ifdef CONFIG_ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE
>  static
>  DEFINE_PER_CPU(struct acpi_processor_cx * [CPUIDLE_STATE_MAX], acpi_cstate);
>  
> @@ -804,11 +810,6 @@ static void acpi_idle_enter_freeze(struct cpuidle_device *dev,
>  	acpi_idle_do_entry(cx);
>  }
>  
> -struct cpuidle_driver acpi_idle_driver = {
> -	.name =		"acpi_idle",
> -	.owner =	THIS_MODULE,
> -};
> -
>  /**
>   * acpi_processor_setup_cpuidle_cx - prepares and configures CPUIDLE
>   * device i.e. per-cpu data
> @@ -925,6 +926,49 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
>  	return 0;
>  }
>  
> +static inline void acpi_processor_cstate_first_run_checks(void)
> +{
> +	static int first_run;
> +
> +	if (first_run)
> +		return;
> +	dmi_check_system(processor_power_dmi_table);
> +	max_cstate = acpi_processor_cstate_check(max_cstate);
> +	if (max_cstate < ACPI_C_STATES_MAX)
> +		pr_notice("ACPI: processor limited to max C-state %d\n",
> +			  max_cstate);
> +	first_run++;
> +
> +	if (acpi_gbl_FADT.cst_control && !nocst) {
> +		status = acpi_os_write_port(acpi_gbl_FADT.smi_command,
> +					    acpi_gbl_FADT.cst_control, 8);
> +		if (ACPI_FAILURE(status))
> +			ACPI_EXCEPTION((AE_INFO, status,
> +					"Notifying BIOS of _CST ability failed"));
> +	}
> +}
> +#else
> +
> +static inline int disabled_by_idle_boot_param(void) { return 0; }
> +static inline void acpi_processor_cstate_first_run_checks(void) { }
> +static int acpi_processor_get_power_info(struct acpi_processor *pr)
> +{
> +	return -ENODEV;
> +}
> +
> +static int acpi_processor_setup_cpuidle_cx(struct acpi_processor *pr,
> +					   struct cpuidle_device *dev)
> +{
> +	return -EINVAL;
> +}
> +
> +static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
> +{
> +	return -EINVAL;
> +}
> +
> +#endif

Add a comment indicating what #ifdef block ends here?

> +
>  int acpi_processor_hotplug(struct acpi_processor *pr)
>  {
>  	int ret = 0;
> @@ -1018,29 +1062,11 @@ int acpi_processor_power_init(struct acpi_processor *pr)
>  	acpi_status status;
>  	int retval;
>  	struct cpuidle_device *dev;
> -	static int first_run;
>  
>  	if (disabled_by_idle_boot_param())
>  		return 0;
>  
> -	if (!first_run) {
> -		dmi_check_system(processor_power_dmi_table);
> -		max_cstate = acpi_processor_cstate_check(max_cstate);
> -		if (max_cstate < ACPI_C_STATES_MAX)
> -			printk(KERN_NOTICE
> -			       "ACPI: processor limited to max C-state %d\n",
> -			       max_cstate);
> -		first_run++;
> -	}
> -
> -	if (acpi_gbl_FADT.cst_control && !nocst) {
> -		status =
> -		    acpi_os_write_port(acpi_gbl_FADT.smi_command, acpi_gbl_FADT.cst_control, 8);
> -		if (ACPI_FAILURE(status)) {
> -			ACPI_EXCEPTION((AE_INFO, status,
> -					"Notifying BIOS of _CST ability failed"));
> -		}
> -	}
> +	acpi_processor_cstate_first_run_checks();
>  
>  	acpi_processor_get_power_info(pr);
>  	pr->flags.power_setup_done = 1;
> diff --git a/include/acpi/processor.h b/include/acpi/processor.h
> index 6f1805dd5d3c..50f2423d31fa 100644
> --- a/include/acpi/processor.h
> +++ b/include/acpi/processor.h
> @@ -242,7 +242,8 @@ extern int acpi_processor_get_performance_info(struct acpi_processor *pr);
>  DECLARE_PER_CPU(struct acpi_processor *, processors);
>  extern struct acpi_processor_errata errata;
>  
> -#ifdef ARCH_HAS_POWER_INIT
> +#if defined(ARCH_HAS_POWER_INIT) && \
> +	defined(CONFIG_ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE)
>  void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,
>  					unsigned int cpu);
>  int acpi_processor_ffh_cstate_probe(unsigned int cpu,
> 

  parent reply	other threads:[~2016-05-10  0:02 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-19 12:30 [PATCH v4 0/5] ACPI / processor_idle: Add ACPI v6.0 LPI support Sudeep Holla
2016-04-19 12:30 ` Sudeep Holla
2016-04-19 12:30 ` [PATCH v4 1/5] ACPI / processor_idle: introduce ARCH_SUPPORTS_ACPI_PROCESSOR_CSTATE Sudeep Holla
2016-04-19 12:30   ` Sudeep Holla
2016-04-19 12:30   ` Sudeep Holla
2016-04-19 12:49   ` kbuild test robot
2016-04-19 12:49     ` kbuild test robot
2016-04-19 12:49     ` kbuild test robot
2016-04-19 12:49     ` kbuild test robot
2016-04-19 13:00     ` Sudeep Holla
2016-04-19 13:00       ` Sudeep Holla
2016-04-19 13:00       ` Sudeep Holla
2016-04-20  9:56   ` Vikas Sajjan
2016-04-20  9:57     ` Vikas Sajjan
2016-04-20  9:56     ` Vikas Sajjan
2016-04-20 10:09     ` Sudeep Holla
2016-04-20 10:09       ` Sudeep Holla
2016-04-20 10:09       ` Sudeep Holla
2016-05-09 23:59   ` Rafael J. Wysocki [this message]
2016-05-10  0:02     ` Rafael J. Wysocki
2016-05-10  0:02     ` Rafael J. Wysocki
2016-05-11 15:07     ` Sudeep Holla
2016-05-11 15:07       ` Sudeep Holla
2016-05-11 15:07       ` Sudeep Holla
2016-04-19 12:30 ` [PATCH v4 2/5] ACPI / processor_idle: Add support for Low Power Idle(LPI) states Sudeep Holla
2016-04-19 12:30   ` Sudeep Holla
2016-05-10  0:04   ` Rafael J. Wysocki
2016-05-10  0:04     ` Rafael J. Wysocki
2016-05-11  0:03   ` Rafael J. Wysocki
2016-05-11  0:03     ` Rafael J. Wysocki
2016-05-11 15:06     ` Sudeep Holla
2016-05-11 15:06       ` Sudeep Holla
2016-05-11 20:45       ` Rafael J. Wysocki
2016-05-11 20:45         ` Rafael J. Wysocki
2016-04-19 12:30 ` [PATCH v4 3/5] drivers: psci: refactor psci_cpu_init_idle in preparation for ACPI LPI support Sudeep Holla
2016-04-19 12:30   ` Sudeep Holla
2016-06-09 13:24   ` Lorenzo Pieralisi
2016-06-09 13:24     ` Lorenzo Pieralisi
2016-06-09 14:26     ` Sudeep Holla
2016-06-09 14:26       ` Sudeep Holla
2016-04-19 12:30 ` [PATCH v4 4/5] arm64: add support for ACPI Low Power Idle(LPI) Sudeep Holla
2016-04-19 12:30   ` Sudeep Holla
2016-04-19 13:59   ` kbuild test robot
2016-04-19 13:59     ` kbuild test robot
2016-04-19 13:59     ` kbuild test robot
2016-04-19 15:42     ` Sudeep Holla
2016-04-19 15:42       ` Sudeep Holla
2016-04-20  9:59   ` Vikas Sajjan
2016-04-20  9:59     ` Vikas Sajjan
2016-04-20 10:20     ` Sudeep Holla
2016-04-20 10:20       ` Sudeep Holla
2016-04-20 10:39   ` Jisheng Zhang
2016-04-20 10:39     ` Jisheng Zhang
2016-04-20 10:39     ` Jisheng Zhang
2016-04-26 15:51   ` Prakash, Prashanth
2016-04-26 15:51     ` Prakash, Prashanth
2016-04-26 16:01     ` Sudeep Holla
2016-04-26 16:01       ` Sudeep Holla
2016-05-11  0:07   ` Rafael J. Wysocki
2016-05-11  0:07     ` Rafael J. Wysocki
2016-05-11 15:06     ` Sudeep Holla
2016-05-11 15:06       ` Sudeep Holla
2016-04-19 12:30 ` [PATCH v4 5/5] ACPI : enable ACPI_PROCESSOR_IDLE on ARM64 Sudeep Holla
2016-04-19 12:30   ` Sudeep Holla

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5796685.UTMTWTestt@vostro.rjw.lan \
    --to=rjw@rjwysocki.net \
    --cc=al.stone@linaro.org \
    --cc=ashwin.chaugule@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=pprakash@codeaurora.org \
    --cc=sudeep.holla@arm.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.