git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
This commit was manufactured by cvs2svn to create tag
[linux-2.6.git]
/
arch
/
ppc64
/
kernel
/
idle.c
diff --git
a/arch/ppc64/kernel/idle.c
b/arch/ppc64/kernel/idle.c
index
bc7dbbd
..
a9a501d
100644
(file)
--- a/
arch/ppc64/kernel/idle.c
+++ b/
arch/ppc64/kernel/idle.c
@@
-76,7
+76,7
@@
static void yield_shared_processor(void)
* The decrementer stops during the yield. Force a fake decrementer
* here and let the timer_interrupt code sort out the actual time.
*/
* The decrementer stops during the yield. Force a fake decrementer
* here and let the timer_interrupt code sort out the actual time.
*/
- get_paca()->
lpp
aca.xIntDword.xFields.xDecrInt = 1;
+ get_paca()->
xLpP
aca.xIntDword.xFields.xDecrInt = 1;
process_iSeries_events();
}
process_iSeries_events();
}
@@
-98,8
+98,8
@@
int iSeries_idle(void)
lpaca = get_paca();
for (;;) {
lpaca = get_paca();
for (;;) {
- if (lpaca->
lpp
aca.xSharedProc) {
- if (ItLpQueue_isLpIntPending(lpaca->lp
queue_p
tr))
+ if (lpaca->
xLpP
aca.xSharedProc) {
+ if (ItLpQueue_isLpIntPending(lpaca->lp
QueueP
tr))
process_iSeries_events();
if (!need_resched())
yield_shared_processor();
process_iSeries_events();
if (!need_resched())
yield_shared_processor();
@@
-111,7
+111,7
@@
int iSeries_idle(void)
while (!need_resched()) {
HMT_medium();
while (!need_resched()) {
HMT_medium();
- if (ItLpQueue_isLpIntPending(lpaca->lp
queue_p
tr))
+ if (ItLpQueue_isLpIntPending(lpaca->lp
QueueP
tr))
process_iSeries_events();
HMT_low();
}
process_iSeries_events();
HMT_low();
}
@@
-175,7
+175,7
@@
int dedicated_idle(void)
while (1) {
/* Indicate to the HV that we are idle. Now would be
* a good time to find other work to dispatch. */
while (1) {
/* Indicate to the HV that we are idle. Now would be
* a good time to find other work to dispatch. */
- lpaca->
lpp
aca.xIdle = 1;
+ lpaca->
xLpP
aca.xIdle = 1;
oldval = test_and_clear_thread_flag(TIF_NEED_RESCHED);
if (!oldval) {
oldval = test_and_clear_thread_flag(TIF_NEED_RESCHED);
if (!oldval) {
@@
-201,7
+201,7
@@
int dedicated_idle(void)
* ST mode.
*/
if((naca->smt_state == SMT_DYNAMIC) &&
* ST mode.
*/
if((naca->smt_state == SMT_DYNAMIC) &&
- (!(ppaca->
lpp
aca.xIdle))) {
+ (!(ppaca->
xLpP
aca.xIdle))) {
/* Indicate we are no longer polling for
* work, and then clear need_resched. If
* need_resched was 1, set it back to 1
/* Indicate we are no longer polling for
* work, and then clear need_resched. If
* need_resched was 1, set it back to 1
@@
-216,6
+216,7
@@
int dedicated_idle(void)
/* DRENG: Go HMT_medium here ? */
local_irq_disable();
/* DRENG: Go HMT_medium here ? */
local_irq_disable();
+ lpaca->yielded = 1;
/* SMT dynamic mode. Cede will result
* in this thread going dormant, if the
/* SMT dynamic mode. Cede will result
* in this thread going dormant, if the
@@
-226,6
+227,8
@@
int dedicated_idle(void)
* enables external interrupts.
*/
cede_processor();
* enables external interrupts.
*/
cede_processor();
+
+ lpaca->yielded = 0;
} else {
/* Give the HV an opportunity at the
* processor, since we are not doing
} else {
/* Give the HV an opportunity at the
* processor, since we are not doing
@@
-239,7
+242,7
@@
int dedicated_idle(void)
}
HMT_medium();
}
HMT_medium();
- lpaca->
lpp
aca.xIdle = 0;
+ lpaca->
xLpP
aca.xIdle = 0;
schedule();
if (cpu_is_offline(smp_processor_id()) &&
system_state == SYSTEM_RUNNING)
schedule();
if (cpu_is_offline(smp_processor_id()) &&
system_state == SYSTEM_RUNNING)
@@
-259,10
+262,11
@@
int shared_idle(void)
/* Indicate to the HV that we are idle. Now would be
* a good time to find other work to dispatch. */
/* Indicate to the HV that we are idle. Now would be
* a good time to find other work to dispatch. */
- lpaca->
lpp
aca.xIdle = 1;
+ lpaca->
xLpP
aca.xIdle = 1;
if (!need_resched()) {
local_irq_disable();
if (!need_resched()) {
local_irq_disable();
+ lpaca->yielded = 1;
/*
* Yield the processor to the hypervisor. We return if
/*
* Yield the processor to the hypervisor. We return if
@@
-272,10
+276,12
@@
int shared_idle(void)
* are enabled.
*/
cede_processor();
* are enabled.
*/
cede_processor();
+
+ lpaca->yielded = 0;
}
HMT_medium();
}
HMT_medium();
- lpaca->
lpp
aca.xIdle = 0;
+ lpaca->
xLpP
aca.xIdle = 0;
schedule();
}
schedule();
}
@@
-307,7
+313,7
@@
int idle_setup(void)
#else
if (systemcfg->platform & PLATFORM_PSERIES) {
if (cur_cpu_spec->firmware_features & FW_FEATURE_SPLPAR) {
#else
if (systemcfg->platform & PLATFORM_PSERIES) {
if (cur_cpu_spec->firmware_features & FW_FEATURE_SPLPAR) {
- if
(get_paca()->lpp
aca.xSharedProc) {
+ if
(get_paca()->xLpP
aca.xSharedProc) {
printk("idle = shared_idle\n");
idle_loop = shared_idle;
} else {
printk("idle = shared_idle\n");
idle_loop = shared_idle;
} else {