Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 199801
b: refs/heads/master
c: 157317b
h: refs/heads/master
i:
  199799: 044fa08
v: v3
  • Loading branch information
Zhao Yakui authored and Len Brown committed Jun 4, 2010
1 parent f6176cc commit 5aa2232
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 51 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b42f5b0f0fd8c1c442c1b29a3fbcb338e8bd7732
refs/heads/master: 157317ba3ec3e5a4d9683b8d24ba40b4f8f3296b
9 changes: 9 additions & 0 deletions trunk/Documentation/feature-removal-schedule.txt
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,15 @@ Who: Avi Kivity <avi@redhat.com>

----------------------------

What: "acpi=ht" boot option
When: 2.6.35
Why: Useful in 2003, implementation is a hack.
Generally invoked by accident today.
Seen as doing more harm than good.
Who: Len Brown <len.brown@intel.com>

----------------------------

What: iwlwifi 50XX module parameters
When: 2.6.40
Why: The "..50" modules parameters were used to configure 5000 series and
Expand Down
22 changes: 6 additions & 16 deletions trunk/drivers/acpi/ec.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ enum {
EC_FLAGS_GPE_STORM, /* GPE storm detected */
EC_FLAGS_HANDLERS_INSTALLED, /* Handlers for GPE and
* OpReg are installed */
EC_FLAGS_BLOCKED, /* Transactions are blocked */
EC_FLAGS_FROZEN, /* Transactions are suspended */
};

/* If we find an EC via the ECDT, we need to keep a ptr to its context */
Expand Down Expand Up @@ -293,7 +293,7 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
if (t->rdata)
memset(t->rdata, 0, t->rlen);
mutex_lock(&ec->lock);
if (test_bit(EC_FLAGS_BLOCKED, &ec->flags)) {
if (test_bit(EC_FLAGS_FROZEN, &ec->flags)) {
status = -EINVAL;
goto unlock;
}
Expand Down Expand Up @@ -459,7 +459,7 @@ int ec_transaction(u8 command,

EXPORT_SYMBOL(ec_transaction);

void acpi_ec_block_transactions(void)
void acpi_ec_suspend_transactions(void)
{
struct acpi_ec *ec = first_ec;

Expand All @@ -468,11 +468,11 @@ void acpi_ec_block_transactions(void)

mutex_lock(&ec->lock);
/* Prevent transactions from being carried out */
set_bit(EC_FLAGS_BLOCKED, &ec->flags);
set_bit(EC_FLAGS_FROZEN, &ec->flags);
mutex_unlock(&ec->lock);
}

void acpi_ec_unblock_transactions(void)
void acpi_ec_resume_transactions(void)
{
struct acpi_ec *ec = first_ec;

Expand All @@ -481,20 +481,10 @@ void acpi_ec_unblock_transactions(void)

mutex_lock(&ec->lock);
/* Allow transactions to be carried out again */
clear_bit(EC_FLAGS_BLOCKED, &ec->flags);
clear_bit(EC_FLAGS_FROZEN, &ec->flags);
mutex_unlock(&ec->lock);
}

void acpi_ec_unblock_transactions_early(void)
{
/*
* Allow transactions to happen again (this function is called from
* atomic context during wakeup, so we don't need to acquire the mutex).
*/
if (first_ec)
clear_bit(EC_FLAGS_BLOCKED, &first_ec->flags);
}

static int acpi_ec_query_unlocked(struct acpi_ec *ec, u8 * data)
{
int result;
Expand Down
5 changes: 2 additions & 3 deletions trunk/drivers/acpi/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,8 @@ void acpi_early_processor_set_pdc(void);
int acpi_ec_init(void);
int acpi_ec_ecdt_probe(void);
int acpi_boot_ec_enable(void);
void acpi_ec_block_transactions(void);
void acpi_ec_unblock_transactions(void);
void acpi_ec_unblock_transactions_early(void);
void acpi_ec_suspend_transactions(void);
void acpi_ec_resume_transactions(void);

/*--------------------------------------------------------------------------
Suspend/Resume
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/acpi/processor_idle.c
Original file line number Diff line number Diff line change
Expand Up @@ -1022,7 +1022,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
spin_unlock(&c3_lock);
}
kt2 = ktime_get_real();
idle_time_ns = ktime_to_us(ktime_sub(kt2, kt1));
idle_time_ns = ktime_to_ns(ktime_sub(kt2, kt1));
idle_time = idle_time_ns;
do_div(idle_time, NSEC_PER_USEC);

Expand Down
57 changes: 27 additions & 30 deletions trunk/drivers/acpi/sleep.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,11 @@ void __init acpi_old_suspend_ordering(void)
}

/**
* acpi_pm_freeze - Disable the GPEs and suspend EC transactions.
* acpi_pm_disable_gpes - Disable the GPEs.
*/
static int acpi_pm_freeze(void)
static int acpi_pm_disable_gpes(void)
{
acpi_disable_all_gpes();
acpi_os_wait_events_complete(NULL);
acpi_ec_block_transactions();
return 0;
}

Expand Down Expand Up @@ -128,8 +126,7 @@ static int acpi_pm_prepare(void)
int error = __acpi_pm_prepare();

if (!error)
acpi_pm_freeze();

acpi_disable_all_gpes();
return error;
}

Expand Down Expand Up @@ -259,8 +256,6 @@ static int acpi_suspend_enter(suspend_state_t pm_state)
* acpi_leave_sleep_state will reenable specific GPEs later
*/
acpi_disable_all_gpes();
/* Allow EC transactions to happen. */
acpi_ec_unblock_transactions_early();

local_irq_restore(flags);
printk(KERN_DEBUG "Back to C!\n");
Expand All @@ -272,12 +267,6 @@ static int acpi_suspend_enter(suspend_state_t pm_state)
return ACPI_SUCCESS(status) ? 0 : -EFAULT;
}

static void acpi_suspend_finish(void)
{
acpi_ec_unblock_transactions();
acpi_pm_finish();
}

static int acpi_suspend_state_valid(suspend_state_t pm_state)
{
u32 acpi_state;
Expand All @@ -299,7 +288,7 @@ static struct platform_suspend_ops acpi_suspend_ops = {
.begin = acpi_suspend_begin,
.prepare_late = acpi_pm_prepare,
.enter = acpi_suspend_enter,
.wake = acpi_suspend_finish,
.wake = acpi_pm_finish,
.end = acpi_pm_end,
};

Expand All @@ -325,9 +314,9 @@ static int acpi_suspend_begin_old(suspend_state_t pm_state)
static struct platform_suspend_ops acpi_suspend_ops_old = {
.valid = acpi_suspend_state_valid,
.begin = acpi_suspend_begin_old,
.prepare_late = acpi_pm_freeze,
.prepare_late = acpi_pm_disable_gpes,
.enter = acpi_suspend_enter,
.wake = acpi_suspend_finish,
.wake = acpi_pm_finish,
.end = acpi_pm_end,
.recover = acpi_pm_finish,
};
Expand Down Expand Up @@ -444,7 +433,6 @@ static int acpi_hibernation_enter(void)
static void acpi_hibernation_finish(void)
{
hibernate_nvs_free();
acpi_ec_unblock_transactions();
acpi_pm_finish();
}

Expand All @@ -465,13 +453,19 @@ static void acpi_hibernation_leave(void)
}
/* Restore the NVS memory area */
hibernate_nvs_restore();
/* Allow EC transactions to happen. */
acpi_ec_unblock_transactions_early();
}

static void acpi_pm_thaw(void)
static int acpi_pm_pre_restore(void)
{
acpi_disable_all_gpes();
acpi_os_wait_events_complete(NULL);
acpi_ec_suspend_transactions();
return 0;
}

static void acpi_pm_restore_cleanup(void)
{
acpi_ec_unblock_transactions();
acpi_ec_resume_transactions();
acpi_enable_all_runtime_gpes();
}

Expand All @@ -483,8 +477,8 @@ static struct platform_hibernation_ops acpi_hibernation_ops = {
.prepare = acpi_pm_prepare,
.enter = acpi_hibernation_enter,
.leave = acpi_hibernation_leave,
.pre_restore = acpi_pm_freeze,
.restore_cleanup = acpi_pm_thaw,
.pre_restore = acpi_pm_pre_restore,
.restore_cleanup = acpi_pm_restore_cleanup,
};

/**
Expand Down Expand Up @@ -516,9 +510,12 @@ static int acpi_hibernation_begin_old(void)

static int acpi_hibernation_pre_snapshot_old(void)
{
acpi_pm_freeze();
hibernate_nvs_save();
return 0;
int error = acpi_pm_disable_gpes();

if (!error)
hibernate_nvs_save();

return error;
}

/*
Expand All @@ -530,11 +527,11 @@ static struct platform_hibernation_ops acpi_hibernation_ops_old = {
.end = acpi_pm_end,
.pre_snapshot = acpi_hibernation_pre_snapshot_old,
.finish = acpi_hibernation_finish,
.prepare = acpi_pm_freeze,
.prepare = acpi_pm_disable_gpes,
.enter = acpi_hibernation_enter,
.leave = acpi_hibernation_leave,
.pre_restore = acpi_pm_freeze,
.restore_cleanup = acpi_pm_thaw,
.pre_restore = acpi_pm_pre_restore,
.restore_cleanup = acpi_pm_restore_cleanup,
.recover = acpi_pm_finish,
};
#endif /* CONFIG_HIBERNATION */
Expand Down

0 comments on commit 5aa2232

Please sign in to comment.