38 lines
1.4 KiB
Diff
38 lines
1.4 KiB
Diff
|
# HG changeset patch
|
||
|
# User Wei Wang <wei.wang2@amd.com>
|
||
|
# Date 1334574328 -7200
|
||
|
# Node ID a06e6cdeafe34964721df3ddb32774d4634fd7ad
|
||
|
# Parent 6b72eb3b40cf2b3d5a6c75d68fa7093c57fc0d1f
|
||
|
x86/cpuidle: do not flush cache unless entering C3
|
||
|
|
||
|
Nor is there a need to disable bus master arbitration in that case.
|
||
|
|
||
|
Signed-off-by: Wei Wang <wei.wang2@amd.com>
|
||
|
Modified-by: Zhang, Yang Z <yang.z.zhang@intel.com>
|
||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||
|
Committed-by: Jan Beulich <jbeulich@suse.com>
|
||
|
|
||
|
--- a/xen/arch/x86/acpi/cpu_idle.c
|
||
|
+++ b/xen/arch/x86/acpi/cpu_idle.c
|
||
|
@@ -485,7 +485,9 @@ static void acpi_processor_idle(void)
|
||
|
* not set. In that case we cannot do much, we enter C3
|
||
|
* without doing anything.
|
||
|
*/
|
||
|
- if ( power->flags.bm_check && power->flags.bm_control )
|
||
|
+ if ( cx->type != ACPI_STATE_C3 )
|
||
|
+ /* nothing to be done here */;
|
||
|
+ else if ( power->flags.bm_check && power->flags.bm_control )
|
||
|
{
|
||
|
spin_lock(&c3_cpu_status.lock);
|
||
|
if ( ++c3_cpu_status.count == num_online_cpus() )
|
||
|
@@ -507,7 +509,8 @@ static void acpi_processor_idle(void)
|
||
|
/* Invoke C3 */
|
||
|
acpi_idle_do_entry(cx);
|
||
|
|
||
|
- if ( power->flags.bm_check && power->flags.bm_control )
|
||
|
+ if ( (cx->type == ACPI_STATE_C3) &&
|
||
|
+ power->flags.bm_check && power->flags.bm_control )
|
||
|
{
|
||
|
/* Enable bus master arbitration */
|
||
|
spin_lock(&c3_cpu_status.lock);
|