Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 131085
b: refs/heads/master
c: 31878dd
h: refs/heads/master
i:
  131083: 69d4495
v: v3
  • Loading branch information
Len Brown committed Jan 29, 2009
1 parent c621a9c commit 5d38b68
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 49 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: a2b7b01c072435b7832ab392167545a1b38cabc3
refs/heads/master: 31878dd86b7df9a147f5e6cc6e07092b4308782b
57 changes: 9 additions & 48 deletions trunk/drivers/acpi/processor_idle.c
Original file line number Diff line number Diff line change
Expand Up @@ -241,26 +241,6 @@ acpi_processor_power_activate(struct acpi_processor *pr,
old->promotion.count = 0;
new->demotion.count = 0;

/* Cleanup from old state. */
if (old) {
switch (old->type) {
case ACPI_STATE_C3:
/* Disable bus master reload */
if (new->type != ACPI_STATE_C3 && pr->flags.bm_check)
acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 0);
break;
}
}

/* Prepare to use new state. */
switch (new->type) {
case ACPI_STATE_C3:
/* Enable bus master reload */
if (old->type != ACPI_STATE_C3 && pr->flags.bm_check)
acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 1);
break;
}

pr->power.state = new;

return;
Expand Down Expand Up @@ -1121,7 +1101,6 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
" for C3 to be enabled on SMP systems\n"));
return;
}
acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 0);
}

/*
Expand All @@ -1137,6 +1116,15 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
#else
cx->latency_ticks = cx->latency;
#endif
/*
* On older chipsets, BM_RLD needs to be set
* in order for Bus Master activity to wake the
* system from C3. Newer chipsets handle DMA
* during C3 automatically and BM_RLD is a NOP.
* In either case, the proper way to
* handle BM_RLD is to set it and leave it set.
*/
acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 1);

return;
}
Expand Down Expand Up @@ -1399,25 +1387,6 @@ static int acpi_idle_bm_check(void)
return bm_status;
}

/**
* acpi_idle_update_bm_rld - updates the BM_RLD bit depending on target state
* @pr: the processor
* @target: the new target state
*/
static inline void acpi_idle_update_bm_rld(struct acpi_processor *pr,
struct acpi_processor_cx *target)
{
if (pr->flags.bm_rld_set && target->type != ACPI_STATE_C3) {
acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 0);
pr->flags.bm_rld_set = 0;
}

if (!pr->flags.bm_rld_set && target->type == ACPI_STATE_C3) {
acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 1);
pr->flags.bm_rld_set = 1;
}
}

/**
* acpi_idle_do_entry - a helper function that does C2 and C3 type entry
* @cx: cstate data
Expand Down Expand Up @@ -1473,9 +1442,6 @@ static int acpi_idle_enter_c1(struct cpuidle_device *dev,
return 0;
}

if (pr->flags.bm_check)
acpi_idle_update_bm_rld(pr, cx);

t1 = inl(acpi_gbl_FADT.xpm_timer_block.address);
acpi_idle_do_entry(cx);
t2 = inl(acpi_gbl_FADT.xpm_timer_block.address);
Expand Down Expand Up @@ -1527,9 +1493,6 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
*/
acpi_state_timer_broadcast(pr, cx, 1);

if (pr->flags.bm_check)
acpi_idle_update_bm_rld(pr, cx);

if (cx->type == ACPI_STATE_C3)
ACPI_FLUSH_CPU_CACHE();

Expand Down Expand Up @@ -1621,8 +1584,6 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
*/
acpi_state_timer_broadcast(pr, cx, 1);

acpi_idle_update_bm_rld(pr, cx);

/*
* disable bus master
* bm_check implies we need ARB_DIS
Expand Down

0 comments on commit 5d38b68

Please sign in to comment.