mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-23 23:21:46 +00:00
PM: Drop pm_flags that is not necessary
The variable pm_flags is used to prevent APM from being enabled along with ACPI, which would lead to problems. However, acpi_init() is always called before apm_init() and after acpi_init() has returned, it is known whether or not ACPI will be used. Namely, if acpi_disabled is not set after acpi_init() has returned, this means that ACPI is enabled. Thus, it is sufficient to check acpi_disabled in apm_init() to prevent APM from being enabled in parallel with ACPI. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
e866500247
commit
6831c6edc7
5 changed files with 7 additions and 48 deletions
|
@ -227,6 +227,7 @@
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
#include <linux/kthread.h>
|
#include <linux/kthread.h>
|
||||||
#include <linux/jiffies.h>
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/acpi.h>
|
||||||
|
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
@ -2331,12 +2332,11 @@ static int __init apm_init(void)
|
||||||
apm_info.disabled = 1;
|
apm_info.disabled = 1;
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
if (pm_flags & PM_ACPI) {
|
if (!acpi_disabled) {
|
||||||
printk(KERN_NOTICE "apm: overridden by ACPI.\n");
|
printk(KERN_NOTICE "apm: overridden by ACPI.\n");
|
||||||
apm_info.disabled = 1;
|
apm_info.disabled = 1;
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
pm_flags |= PM_APM;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set up the long jump entry point to the APM BIOS, which is called
|
* Set up the long jump entry point to the APM BIOS, which is called
|
||||||
|
@ -2428,7 +2428,6 @@ static void __exit apm_exit(void)
|
||||||
kthread_stop(kapmd_task);
|
kthread_stop(kapmd_task);
|
||||||
kapmd_task = NULL;
|
kapmd_task = NULL;
|
||||||
}
|
}
|
||||||
pm_flags &= ~PM_APM;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(apm_init);
|
module_init(apm_init);
|
||||||
|
|
|
@ -1007,8 +1007,7 @@ struct kobject *acpi_kobj;
|
||||||
|
|
||||||
static int __init acpi_init(void)
|
static int __init acpi_init(void)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result;
|
||||||
|
|
||||||
|
|
||||||
if (acpi_disabled) {
|
if (acpi_disabled) {
|
||||||
printk(KERN_INFO PREFIX "Interpreter disabled.\n");
|
printk(KERN_INFO PREFIX "Interpreter disabled.\n");
|
||||||
|
@ -1023,29 +1022,18 @@ static int __init acpi_init(void)
|
||||||
|
|
||||||
init_acpi_device_notify();
|
init_acpi_device_notify();
|
||||||
result = acpi_bus_init();
|
result = acpi_bus_init();
|
||||||
|
if (result) {
|
||||||
if (!result) {
|
|
||||||
pci_mmcfg_late_init();
|
|
||||||
if (pm_apm_enabled()) {
|
|
||||||
printk(KERN_INFO PREFIX
|
|
||||||
"APM is already active, exiting\n");
|
|
||||||
disable_acpi();
|
|
||||||
result = -ENODEV;
|
|
||||||
} else {
|
|
||||||
pm_set_acpi_flag();
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
disable_acpi();
|
disable_acpi();
|
||||||
|
|
||||||
if (acpi_disabled)
|
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
pci_mmcfg_late_init();
|
||||||
acpi_scan_init();
|
acpi_scan_init();
|
||||||
acpi_ec_init();
|
acpi_ec_init();
|
||||||
acpi_debugfs_init();
|
acpi_debugfs_init();
|
||||||
acpi_sleep_proc_init();
|
acpi_sleep_proc_init();
|
||||||
acpi_wakeup_device_init();
|
acpi_wakeup_device_init();
|
||||||
return result;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
subsys_initcall(acpi_init);
|
subsys_initcall(acpi_init);
|
||||||
|
|
|
@ -565,15 +565,6 @@ enum dpm_order {
|
||||||
DPM_ORDER_DEV_LAST,
|
DPM_ORDER_DEV_LAST,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* Global Power Management flags
|
|
||||||
* Used to keep APM and ACPI from both being active
|
|
||||||
*/
|
|
||||||
extern unsigned int pm_flags;
|
|
||||||
|
|
||||||
#define PM_APM 1
|
|
||||||
#define PM_ACPI 2
|
|
||||||
|
|
||||||
extern int pm_generic_suspend(struct device *dev);
|
extern int pm_generic_suspend(struct device *dev);
|
||||||
extern int pm_generic_resume(struct device *dev);
|
extern int pm_generic_resume(struct device *dev);
|
||||||
extern int pm_generic_freeze(struct device *dev);
|
extern int pm_generic_freeze(struct device *dev);
|
||||||
|
|
|
@ -272,9 +272,6 @@ extern int unregister_pm_notifier(struct notifier_block *nb);
|
||||||
register_pm_notifier(&fn##_nb); \
|
register_pm_notifier(&fn##_nb); \
|
||||||
}
|
}
|
||||||
|
|
||||||
extern bool pm_apm_enabled(void);
|
|
||||||
extern void pm_set_acpi_flag(void);
|
|
||||||
|
|
||||||
/* drivers/base/power/wakeup.c */
|
/* drivers/base/power/wakeup.c */
|
||||||
extern bool events_check_enabled;
|
extern bool events_check_enabled;
|
||||||
|
|
||||||
|
@ -295,9 +292,6 @@ static inline int unregister_pm_notifier(struct notifier_block *nb)
|
||||||
|
|
||||||
#define pm_notifier(fn, pri) do { (void)(fn); } while (0)
|
#define pm_notifier(fn, pri) do { (void)(fn); } while (0)
|
||||||
|
|
||||||
static inline bool pm_apm_enabled(void) { return false; }
|
|
||||||
static inline void pm_set_acpi_flag(void) {}
|
|
||||||
|
|
||||||
static inline bool pm_wakeup_pending(void) { return false; }
|
static inline bool pm_wakeup_pending(void) { return false; }
|
||||||
#endif /* !CONFIG_PM_SLEEP */
|
#endif /* !CONFIG_PM_SLEEP */
|
||||||
|
|
||||||
|
|
|
@ -19,19 +19,6 @@ DEFINE_MUTEX(pm_mutex);
|
||||||
|
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
|
|
||||||
unsigned int pm_flags;
|
|
||||||
EXPORT_SYMBOL(pm_flags);
|
|
||||||
|
|
||||||
bool pm_apm_enabled(void)
|
|
||||||
{
|
|
||||||
return !!(pm_flags & PM_APM);
|
|
||||||
}
|
|
||||||
|
|
||||||
void pm_set_acpi_flag(void)
|
|
||||||
{
|
|
||||||
pm_flags |= PM_ACPI;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Routines for PM-transition notifications */
|
/* Routines for PM-transition notifications */
|
||||||
|
|
||||||
static BLOCKING_NOTIFIER_HEAD(pm_chain_head);
|
static BLOCKING_NOTIFIER_HEAD(pm_chain_head);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue