linux/drivers/cpuidle
Dmitry Osipenko 1170433e66 cpuidle: tegra: Correctly handle result of arm_cpuidle_simple_enter()
The enter() callback of CPUIDLE drivers returns index of the entered idle
state on success or a negative value on failure. The negative value could
any negative value, i.e. it doesn't necessarily needs to be a error code.
That's because CPUIDLE core only cares about the fact of failure and not
about the reason of the enter() failure.

Like every other enter() callback, the arm_cpuidle_simple_enter() returns
the entered idle-index on success. Unlike some of other drivers, it never
fails. It happened that TEGRA_C1=index=err=0 in the code of cpuidle-tegra
driver, and thus, there is no problem for the cpuidle-tegra driver created
by the typo in the code which assumes that the arm_cpuidle_simple_enter()
returns a error code.

The arm_cpuidle_simple_enter() also may return a -ENODEV error if CPU_IDLE
is disabled in a kernel's config, but all CPUIDLE drivers are disabled if
CPU_IDLE is disabled, including the cpuidle-tegra driver. So we can't ever
see the error code from arm_cpuidle_simple_enter() today.

Of course the code may get some changes in the future and then the
typo may transform into a real bug, so let's correct the typo! The
tegra_cpuidle_state_enter() is now changed to make it return the entered
idle-index on success and negative error code on fail, which puts it on
par with the arm_cpuidle_simple_enter(), making code consistent in regards
to the error handling.

This patch fixes a minor typo in the code, it doesn't fix any bugs.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2020-09-21 17:44:54 +02:00
..
governors cpuidle: teo: Fix intervals[] array indexing bug 2020-01-13 11:14:58 +01:00
coupled.c cpuidle: coupled: fix warnings when compiling with W=1 2020-01-23 00:30:28 +01:00
cpuidle-arm.c thermal: cpuidle: Register cpuidle cooling device 2020-05-19 12:58:07 +02:00
cpuidle-at91.c drivers/cpuidle: Convert non-modular drivers to use builtin_platform_driver 2015-06-16 14:12:38 -04:00
cpuidle-big_little.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpuidle-calxeda.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
cpuidle-clps711x.c cpuidle: clps711x: convert to devm_platform_ioremap_resource() 2019-12-20 10:04:27 +01:00
cpuidle-cps.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
cpuidle-exynos.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpuidle-haltpoll.c cpuidle-haltpoll: Fix small typo 2020-04-08 14:35:45 +02:00
cpuidle-kirkwood.c cpuidle: kirkwood: convert to devm_platform_ioremap_resource() 2019-12-20 10:05:44 +01:00
cpuidle-mvebu-v7.c cpuidle: mvebu: disable the bind/unbind attributes and use builtin_platform_driver 2015-10-23 12:40:48 +02:00
cpuidle-powernv.c cpuidle/powernv : Remove dead code block 2020-07-15 11:07:20 +10:00
cpuidle-psci-domain.c cpuidle: psci: Prevent domain idlestates until consumers are ready 2020-07-29 18:38:30 +02:00
cpuidle-psci.c cpuidle: psci: Fix error path via converting to a platform driver 2020-07-29 18:38:30 +02:00
cpuidle-psci.h cpuidle: psci: Fix error path via converting to a platform driver 2020-07-29 18:38:30 +02:00
cpuidle-pseries.c cpuidle: pseries: Fix CEDE latency conversion from tb to us 2020-09-08 17:14:42 +10:00
cpuidle-qcom-spm.c cpuidle: Convert Qualcomm SPM driver to a generic CPUidle driver 2020-05-26 10:46:01 +02:00
cpuidle-tegra.c cpuidle: tegra: Correctly handle result of arm_cpuidle_simple_enter() 2020-09-21 17:44:54 +02:00
cpuidle-ux500.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpuidle-zynq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
cpuidle.c cpuidle: Allow cpuidle drivers to take over RCU-idle 2020-09-16 19:36:26 +02:00
cpuidle.h cpuidle: allow governor switch on cpuidle_register_driver() 2019-09-11 17:36:30 +02:00
driver.c cpuidle: Drop unused cpuidle_driver_ref/unref() functions 2020-01-09 16:47:22 +01:00
dt_idle_states.c cpuidle: dt: Support hierarchical CPU idle states 2020-01-02 16:50:08 +01:00
dt_idle_states.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
governor.c cpuidle: Call cpu_latency_qos_limit() instead of pm_qos_request() 2020-02-13 11:26:57 +01:00
Kconfig cpuidle: Fix Kconfig indentation 2019-11-29 11:47:35 +01:00
Kconfig.arm cpuidle: psci: Split into two separate build objects 2020-07-29 18:38:30 +02:00
Kconfig.mips treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Kconfig.powerpc treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile cpuidle: psci: Split into two separate build objects 2020-07-29 18:38:30 +02:00
poll_state.c cpuidle: Drop disabled field from struct cpuidle_state 2019-11-29 11:48:39 +01:00
sysfs.c cpuidle: Fix three reference count leaks 2020-05-29 18:07:18 +02:00