x86/cpuidle: publish new states only after fully initializing them

Since state information coming from Dom0 can arrive at any time, on
any CPU, we ought to make sure that a new state is fully initialized
before the target CPU might be using it.

Once touching that code, also do minor cleanup: A missing (but benign)
"break" and some white space adjustments.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Liu Jinsong <jinsong.liu@intel.com>
This commit is contained in:
Jan Beulich committed 2013-12-11 10:30:02 +01:00
1 parent 522277bf80
commit 4ca6f9f037
1 file changed
+6 -3
+6 -3
View File
@@ -912,7 +912,7 @@ static void set_cx(
acpi_power->cpu, xen_cx->type);
return;
}
cx = &acpi_power->states[acpi_power->count++];
cx = &acpi_power->states[acpi_power->count];
cx->type = xen_cx->type;
break;
}
@@ -937,11 +937,14 @@ static void set_cx(
break;
default:
cx->entry_method = ACPI_CSTATE_EM_NONE;
break;
}
cx->latency = xen_cx->latency;
cx->latency = xen_cx->latency;
cx->target_residency = cx->latency * latency_factor;
smp_wmb();
acpi_power->count++;
if ( cx->type == ACPI_STATE_C1 || cx->type == ACPI_STATE_C2 )
acpi_power->safe_state = cx;
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.