* [PATCH] powerpc/32bit,PREEMPT:Load TI_FLAGS to check NEED_RESCHED
@ 2013-05-27 6:27 Priyanka Jain
2013-05-27 6:45 ` [PATCH] powerpc/32bit, PREEMPT:Load " tiejun.chen
2013-05-27 7:12 ` Benjamin Herrenschmidt
0 siblings, 2 replies; 6+ messages in thread
From: Priyanka Jain @ 2013-05-27 6:27 UTC (permalink / raw)
To: linuxppc-dev; +Cc: scottwood, Priyanka Jain
Add instruction to load TI_FLAGS in r8
While returning from exception handling in case of PREEMPT enabled,
_TIF_NEED_RESCHED bit is checked in TI_FLAGS (thread_info flag) of current
task. Only if this bit is set, it should continue with the process of
calling preempt_schedule_irq() to schedule highest priority task if
available.
Current code assumes that r8 contains TI_FLAGS and check this for
_TIF_NEED_RESCHED, but as r8 is modified in the code which executes before
this check, r8 no longer contains the expected TI_FLAGS information.
As a result check for comparison with _TIF_NEED_RESCHED was failing even if
NEED_RESCHED bit is set in the current thread_info flag. Due to this,
preempt_schedule_irq() and in turn scheduler was not getting called even if
highest priority task is ready for execution.
Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
---
arch/powerpc/kernel/entry_32.S | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index d22e73e..0239c7f 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
@@ -887,6 +887,7 @@ resume_kernel:
#ifdef CONFIG_PREEMPT
/* check current_thread_info->preempt_count */
lwz r0,TI_PREEMPT(r9)
+ lwz r8,TI_FLAGS(r9)
cmpwi 0,r0,0 /* if non-zero, just restore regs and return */
bne restore
andi. r8,r8,_TIF_NEED_RESCHED
--
1.7.4.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] powerpc/32bit, PREEMPT:Load TI_FLAGS to check NEED_RESCHED
2013-05-27 6:27 [PATCH] powerpc/32bit,PREEMPT:Load TI_FLAGS to check NEED_RESCHED Priyanka Jain
@ 2013-05-27 6:45 ` tiejun.chen
2013-05-27 6:55 ` [PATCH] powerpc/32bit,PREEMPT:Load " Jain Priyanka-B32167
2013-05-27 7:12 ` Benjamin Herrenschmidt
1 sibling, 1 reply; 6+ messages in thread
From: tiejun.chen @ 2013-05-27 6:45 UTC (permalink / raw)
To: Priyanka Jain; +Cc: scottwood, linuxppc-dev
On 05/27/2013 02:27 PM, Priyanka Jain wrote:
> Add instruction to load TI_FLAGS in r8
>
> While returning from exception handling in case of PREEMPT enabled,
> _TIF_NEED_RESCHED bit is checked in TI_FLAGS (thread_info flag) of current
> task. Only if this bit is set, it should continue with the process of
> calling preempt_schedule_irq() to schedule highest priority task if
> available.
>
> Current code assumes that r8 contains TI_FLAGS and check this for
> _TIF_NEED_RESCHED, but as r8 is modified in the code which executes before
Could you elaborate this scenario? As I take a look at this path:
...
/* Clear _TIF_EMULATE_STACK_STORE flag */
lis r11,_TIF_EMULATE_STACK_STORE@h
addi r5,r9,TI_FLAGS
0: lwarx r8,0,r5
andc r8,r8,r11
#ifdef CONFIG_IBM405_ERR77
dcbt 0,r5
#endif
stwcx. r8,0,r5
bne- 0b
1:
#ifdef CONFIG_PREEMPT
/* check current_thread_info->preempt_count */
lwz r0,TI_PREEMPT(r9)
cmpwi 0,r0,0 /* if non-zero, just restore regs and return */
bne restore
andi. r8,r8,_TIF_NEED_RESCHED
...
Where is R8 clobbered?
Tiejun
> this check, r8 no longer contains the expected TI_FLAGS information.
>
> As a result check for comparison with _TIF_NEED_RESCHED was failing even if
> NEED_RESCHED bit is set in the current thread_info flag. Due to this,
> preempt_schedule_irq() and in turn scheduler was not getting called even if
> highest priority task is ready for execution.
>
>
> Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
> ---
> arch/powerpc/kernel/entry_32.S | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
> index d22e73e..0239c7f 100644
> --- a/arch/powerpc/kernel/entry_32.S
> +++ b/arch/powerpc/kernel/entry_32.S
> @@ -887,6 +887,7 @@ resume_kernel:
> #ifdef CONFIG_PREEMPT
> /* check current_thread_info->preempt_count */
> lwz r0,TI_PREEMPT(r9)
> + lwz r8,TI_FLAGS(r9)
> cmpwi 0,r0,0 /* if non-zero, just restore regs and return */
> bne restore
> andi. r8,r8,_TIF_NEED_RESCHED
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] powerpc/32bit,PREEMPT:Load TI_FLAGS to check NEED_RESCHED
2013-05-27 6:45 ` [PATCH] powerpc/32bit, PREEMPT:Load " tiejun.chen
@ 2013-05-27 6:55 ` Jain Priyanka-B32167
2013-05-27 7:18 ` [PATCH] powerpc/32bit, PREEMPT:Load " tiejun.chen
0 siblings, 1 reply; 6+ messages in thread
From: Jain Priyanka-B32167 @ 2013-05-27 6:55 UTC (permalink / raw)
To: tiejun.chen; +Cc: Wood Scott-B07421, linuxppc-dev@lists.ozlabs.org
DQpJZiB3ZSBnbyBzb21lIG1vcmUgbGluZXMgdXAgaW4gdGhlIHNhbWUgZmlsZSwgdGhlIGNvZGUg
aXMgDQoNCnJlc3VtZV9rZXJuZWw6DQogICAgICAgIC8qIGNoZWNrIGN1cnJlbnRfdGhyZWFkX2lu
Zm8sIF9USUZfRU1VTEFURV9TVEFDS19TVE9SRSAqLw0KICAgICAgICBDVVJSRU5UX1RIUkVBRF9J
TkZPKHI5LCByMSkNCiAgICAgICAgbHd6ICAgICByOCxUSV9GTEFHUyhyOSkNCiAgICAgICAgYW5k
aXMuICByOCxyOCxfVElGX0VNVUxBVEVfU1RBQ0tfU1RPUkVAaA0KICAgICAgICBiZXErICAgIDFm
DQotLS0NCg0KQWZ0ZXIgZXhlY3V0aW9uIG9mIGFuZGlzLiBJbnN0cnVjdGlvbiwgcjggY29udGFp
bnMgbG9naWNhbCBBTkQgcmVzdWx0IG9mIHI4IGFuZCBfVElGX0VNVUxBVEVfU1RBQ0tfU1RPUkUg
YW5kIGl0IGFsc28gc2V0cyB0aGUgY29uZGl0aW9uIHJlZ2lzdGVyIGZsYWcuDQpJZiBiZXErIGlz
IHRydWUsIGl0IHdpbGwganVtcCB0byBsYWJlbCAnMScgd2hpY2ggcG9pbnRzIHRvIHRoZSBjb2Rl
IGNvbnRhaW5lZCBpbiB0aGUgcGF0Y2guIEluIHRoaXMgcGFydGljdWxhciBzY2VuYXJpbywgcjgg
ZG9lcyBub3QgY29udGFpbnMgdGhlIGFwcHJvcHJpYXRlIHZhbHVlLg0KDQpSZWdhcmRzDQpQcml5
YW5rYQ0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogdGllanVuLmNo
ZW4gW21haWx0bzp0aWVqdW4uY2hlbkB3aW5kcml2ZXIuY29tXQ0KPiBTZW50OiBNb25kYXksIE1h
eSAyNywgMjAxMyAxMjoxNSBQTQ0KPiBUbzogSmFpbiBQcml5YW5rYS1CMzIxNjcNCj4gQ2M6IGxp
bnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOyBXb29kIFNjb3R0LUIwNzQyMQ0KPiBTdWJqZWN0
OiBSZTogW1BBVENIXSBwb3dlcnBjLzMyYml0LFBSRUVNUFQ6TG9hZCBUSV9GTEFHUyB0byBjaGVj
aw0KPiBORUVEX1JFU0NIRUQNCj4gDQo+IE9uIDA1LzI3LzIwMTMgMDI6MjcgUE0sIFByaXlhbmth
IEphaW4gd3JvdGU6DQo+ID4gQWRkIGluc3RydWN0aW9uIHRvIGxvYWQgVElfRkxBR1MgaW4gcjgN
Cj4gPg0KPiA+IFdoaWxlIHJldHVybmluZyBmcm9tIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiBjYXNl
IG9mIFBSRUVNUFQgZW5hYmxlZCwNCj4gPiBfVElGX05FRURfUkVTQ0hFRCBiaXQgaXMgY2hlY2tl
ZCBpbiBUSV9GTEFHUyAodGhyZWFkX2luZm8gZmxhZykgb2YNCj4gPiBjdXJyZW50IHRhc2suIE9u
bHkgaWYgdGhpcyBiaXQgaXMgc2V0LCBpdCBzaG91bGQgY29udGludWUgd2l0aCB0aGUNCj4gPiBw
cm9jZXNzIG9mIGNhbGxpbmcgcHJlZW1wdF9zY2hlZHVsZV9pcnEoKSB0byBzY2hlZHVsZSBoaWdo
ZXN0IHByaW9yaXR5DQo+ID4gdGFzayBpZiBhdmFpbGFibGUuDQo+ID4NCj4gPiBDdXJyZW50IGNv
ZGUgYXNzdW1lcyB0aGF0IHI4IGNvbnRhaW5zIFRJX0ZMQUdTIGFuZCBjaGVjayB0aGlzIGZvcg0K
PiA+IF9USUZfTkVFRF9SRVNDSEVELCBidXQgYXMgcjggaXMgbW9kaWZpZWQgaW4gdGhlIGNvZGUg
d2hpY2ggZXhlY3V0ZXMNCj4gPiBiZWZvcmUNCj4gDQo+IENvdWxkIHlvdSBlbGFib3JhdGUgdGhp
cyBzY2VuYXJpbz8gQXMgSSB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGg6DQo+IA0KPiAJLi4uDQo+
ICAgICAgICAgIC8qIENsZWFyIF9USUZfRU1VTEFURV9TVEFDS19TVE9SRSBmbGFnICovDQo+ICAg
ICAgICAgIGxpcyAgICAgcjExLF9USUZfRU1VTEFURV9TVEFDS19TVE9SRUBoDQo+ICAgICAgICAg
IGFkZGkgICAgcjUscjksVElfRkxBR1MNCj4gMDogICAgICBsd2FyeCAgIHI4LDAscjUNCj4gICAg
ICAgICAgYW5kYyAgICByOCxyOCxyMTENCj4gI2lmZGVmIENPTkZJR19JQk00MDVfRVJSNzcNCj4g
ICAgICAgICAgZGNidCAgICAwLHI1DQo+ICNlbmRpZg0KPiAgICAgICAgICBzdHdjeC4gIHI4LDAs
cjUNCj4gICAgICAgICAgYm5lLSAgICAwYg0KPiAxOg0KPiANCj4gI2lmZGVmIENPTkZJR19QUkVF
TVBUDQo+ICAgICAgICAgIC8qIGNoZWNrIGN1cnJlbnRfdGhyZWFkX2luZm8tPnByZWVtcHRfY291
bnQgKi8NCj4gICAgICAgICAgbHd6ICAgICByMCxUSV9QUkVFTVBUKHI5KQ0KPiAgICAgICAgICBj
bXB3aSAgIDAscjAsMCAgICAgICAgICAvKiBpZiBub24temVybywganVzdCByZXN0b3JlIHJlZ3Mg
YW5kDQo+IHJldHVybiAqLw0KPiAgICAgICAgICBibmUgICAgIHJlc3RvcmUNCj4gICAgICAgICAg
YW5kaS4gICByOCxyOCxfVElGX05FRURfUkVTQ0hFRA0KPiAJLi4uDQo+IA0KPiBXaGVyZSBpcyBS
OCBjbG9iYmVyZWQ/DQo+IA0KPiBUaWVqdW4NCj4gDQo+ID4gdGhpcyBjaGVjaywgcjggbm8gbG9u
Z2VyIGNvbnRhaW5zIHRoZSBleHBlY3RlZCBUSV9GTEFHUyBpbmZvcm1hdGlvbi4NCj4gPg0KPiA+
IEFzIGEgcmVzdWx0IGNoZWNrIGZvciBjb21wYXJpc29uIHdpdGggX1RJRl9ORUVEX1JFU0NIRUQg
d2FzIGZhaWxpbmcNCj4gPiBldmVuIGlmIE5FRURfUkVTQ0hFRCBiaXQgaXMgc2V0IGluIHRoZSBj
dXJyZW50IHRocmVhZF9pbmZvIGZsYWcuIER1ZQ0KPiA+IHRvIHRoaXMsDQo+ID4gcHJlZW1wdF9z
Y2hlZHVsZV9pcnEoKSBhbmQgaW4gdHVybiBzY2hlZHVsZXIgd2FzIG5vdCBnZXR0aW5nIGNhbGxl
ZA0KPiA+IGV2ZW4gaWYgaGlnaGVzdCBwcmlvcml0eSB0YXNrIGlzIHJlYWR5IGZvciBleGVjdXRp
b24uDQo+ID4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFByaXlhbmthIEphaW4gPFByaXlhbmth
LkphaW5AZnJlZXNjYWxlLmNvbT4NCj4gPiAtLS0NCj4gPiAgIGFyY2gvcG93ZXJwYy9rZXJuZWwv
ZW50cnlfMzIuUyB8ICAgIDEgKw0KPiA+ICAgMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMo
KyksIDAgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tl
cm5lbC9lbnRyeV8zMi5TDQo+ID4gYi9hcmNoL3Bvd2VycGMva2VybmVsL2VudHJ5XzMyLlMgaW5k
ZXggZDIyZTczZS4uMDIzOWM3ZiAxMDA2NDQNCj4gPiAtLS0gYS9hcmNoL3Bvd2VycGMva2VybmVs
L2VudHJ5XzMyLlMNCj4gPiArKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2VudHJ5XzMyLlMNCj4g
PiBAQCAtODg3LDYgKzg4Nyw3IEBAIHJlc3VtZV9rZXJuZWw6DQo+ID4gICAjaWZkZWYgQ09ORklH
X1BSRUVNUFQNCj4gPiAgIAkvKiBjaGVjayBjdXJyZW50X3RocmVhZF9pbmZvLT5wcmVlbXB0X2Nv
dW50ICovDQo+ID4gICAJbHd6CXIwLFRJX1BSRUVNUFQocjkpDQo+ID4gKwlsd3oJcjgsVElfRkxB
R1MocjkpDQo+ID4gICAJY21wd2kJMCxyMCwwCQkvKiBpZiBub24temVybywganVzdCByZXN0b3Jl
IHJlZ3MgYW5kDQo+IHJldHVybiAqLw0KPiA+ICAgCWJuZQlyZXN0b3JlDQo+ID4gICAJYW5kaS4J
cjgscjgsX1RJRl9ORUVEX1JFU0NIRUQNCj4gPg0KPiANCg0K
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] powerpc/32bit, PREEMPT:Load TI_FLAGS to check NEED_RESCHED
2013-05-27 6:55 ` [PATCH] powerpc/32bit,PREEMPT:Load " Jain Priyanka-B32167
@ 2013-05-27 7:18 ` tiejun.chen
2013-05-27 7:21 ` [PATCH] powerpc/32bit,PREEMPT:Load " Jain Priyanka-B32167
0 siblings, 1 reply; 6+ messages in thread
From: tiejun.chen @ 2013-05-27 7:18 UTC (permalink / raw)
To: Jain Priyanka-B32167; +Cc: Wood Scott-B07421, linuxppc-dev@lists.ozlabs.org
On 05/27/2013 02:55 PM, Jain Priyanka-B32167 wrote:
>
> If we go some more lines up in the same file, the code is
>
> resume_kernel:
> /* check current_thread_info, _TIF_EMULATE_STACK_STORE */
> CURRENT_THREAD_INFO(r9, r1)
> lwz r8,TI_FLAGS(r9)
> andis. r8,r8,_TIF_EMULATE_STACK_STORE@h
Okay, but could you fix this directly like:
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index e514de5..4498467 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
@@ -851,7 +851,7 @@ resume_kernel:
/* check current_thread_info, _TIF_EMULATE_STACK_STORE */
CURRENT_THREAD_INFO(r9, r1)
lwz r8,TI_FLAGS(r9)
- andis. r8,r8,_TIF_EMULATE_STACK_STORE@h
+ andis. r0,r8,_TIF_EMULATE_STACK_STORE@h
beq+ 1f
addi r8,r1,INT_FRAME_SIZE /* Get the kprobed function entry */
Tiejun
^ permalink raw reply related [flat|nested] 6+ messages in thread
* RE: [PATCH] powerpc/32bit,PREEMPT:Load TI_FLAGS to check NEED_RESCHED
2013-05-27 7:18 ` [PATCH] powerpc/32bit, PREEMPT:Load " tiejun.chen
@ 2013-05-27 7:21 ` Jain Priyanka-B32167
0 siblings, 0 replies; 6+ messages in thread
From: Jain Priyanka-B32167 @ 2013-05-27 7:21 UTC (permalink / raw)
To: tiejun.chen, Benjamin Herrenschmidt
Cc: Wood Scott-B07421, linuxppc-dev@lists.ozlabs.org
WWVzLA0KQmVuIGlzIGFsc28gcG9pbnRpbmcgdG8gc2FtZSB0aGluZy4NCkkgd2lsbCBzZW5kIGFu
b3RoZXIgcGF0Y2ggd2l0aCBjaGFuZ2VzIHN1Z2dlc3RlZCAod2l0aCBib3RoIHN1YmplY3QgYW5k
IGRlc2NyaXB0aW9uIG1vZGlmaWVkKSB3aGljaCB3aWxsIHN1cGVyc2VkZSB0aGlzIHBhdGNoLg0K
DQpSZWdhcmRzDQpQcml5YW5rYQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZy
b206IHRpZWp1bi5jaGVuIFttYWlsdG86dGllanVuLmNoZW5Ad2luZHJpdmVyLmNvbV0NCj4gU2Vu
dDogTW9uZGF5LCBNYXkgMjcsIDIwMTMgMTI6NDkgUE0NCj4gVG86IEphaW4gUHJpeWFua2EtQjMy
MTY3DQo+IENjOiBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZzsgV29vZCBTY290dC1CMDc0
MjENCj4gU3ViamVjdDogUmU6IFtQQVRDSF0gcG93ZXJwYy8zMmJpdCxQUkVFTVBUOkxvYWQgVElf
RkxBR1MgdG8gY2hlY2sNCj4gTkVFRF9SRVNDSEVEDQo+IA0KPiBPbiAwNS8yNy8yMDEzIDAyOjU1
IFBNLCBKYWluIFByaXlhbmthLUIzMjE2NyB3cm90ZToNCj4gPg0KPiA+IElmIHdlIGdvIHNvbWUg
bW9yZSBsaW5lcyB1cCBpbiB0aGUgc2FtZSBmaWxlLCB0aGUgY29kZSBpcw0KPiA+DQo+ID4gcmVz
dW1lX2tlcm5lbDoNCj4gPiAgICAgICAgICAvKiBjaGVjayBjdXJyZW50X3RocmVhZF9pbmZvLCBf
VElGX0VNVUxBVEVfU1RBQ0tfU1RPUkUgKi8NCj4gPiAgICAgICAgICBDVVJSRU5UX1RIUkVBRF9J
TkZPKHI5LCByMSkNCj4gPiAgICAgICAgICBsd3ogICAgIHI4LFRJX0ZMQUdTKHI5KQ0KPiA+ICAg
ICAgICAgIGFuZGlzLiAgcjgscjgsX1RJRl9FTVVMQVRFX1NUQUNLX1NUT1JFQGgNCj4gDQo+IE9r
YXksIGJ1dCBjb3VsZCB5b3UgZml4IHRoaXMgZGlyZWN0bHkgbGlrZToNCj4gDQo+IGRpZmYgLS1n
aXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2VudHJ5XzMyLlMNCj4gYi9hcmNoL3Bvd2VycGMva2Vy
bmVsL2VudHJ5XzMyLlMgaW5kZXggZTUxNGRlNS4uNDQ5ODQ2NyAxMDA2NDQNCj4gLS0tIGEvYXJj
aC9wb3dlcnBjL2tlcm5lbC9lbnRyeV8zMi5TDQo+ICsrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwv
ZW50cnlfMzIuUw0KPiBAQCAtODUxLDcgKzg1MSw3IEBAIHJlc3VtZV9rZXJuZWw6DQo+ICAgICAg
ICAgIC8qIGNoZWNrIGN1cnJlbnRfdGhyZWFkX2luZm8sIF9USUZfRU1VTEFURV9TVEFDS19TVE9S
RSAqLw0KPiAgICAgICAgICBDVVJSRU5UX1RIUkVBRF9JTkZPKHI5LCByMSkNCj4gICAgICAgICAg
bHd6ICAgICByOCxUSV9GTEFHUyhyOSkNCj4gLSAgICAgICBhbmRpcy4gIHI4LHI4LF9USUZfRU1V
TEFURV9TVEFDS19TVE9SRUBoDQo+ICsgICAgICAgYW5kaXMuICByMCxyOCxfVElGX0VNVUxBVEVf
U1RBQ0tfU1RPUkVAaA0KPiAgICAgICAgICBiZXErICAgIDFmDQo+IA0KPiAgICAgICAgICBhZGRp
ICAgIHI4LHIxLElOVF9GUkFNRV9TSVpFICAgIC8qIEdldCB0aGUga3Byb2JlZCBmdW5jdGlvbg0K
PiBlbnRyeSAqLw0KPiANCj4gVGllanVuDQoNCg==
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] powerpc/32bit,PREEMPT:Load TI_FLAGS to check NEED_RESCHED
2013-05-27 6:27 [PATCH] powerpc/32bit,PREEMPT:Load TI_FLAGS to check NEED_RESCHED Priyanka Jain
2013-05-27 6:45 ` [PATCH] powerpc/32bit, PREEMPT:Load " tiejun.chen
@ 2013-05-27 7:12 ` Benjamin Herrenschmidt
1 sibling, 0 replies; 6+ messages in thread
From: Benjamin Herrenschmidt @ 2013-05-27 7:12 UTC (permalink / raw)
To: Priyanka Jain; +Cc: scottwood, tiejun.chen, linuxppc-dev
On Mon, 2013-05-27 at 11:57 +0530, Priyanka Jain wrote:
> Add instruction to load TI_FLAGS in r8
>
> While returning from exception handling in case of PREEMPT enabled,
> _TIF_NEED_RESCHED bit is checked in TI_FLAGS (thread_info flag) of
> current
> task. Only if this bit is set, it should continue with the process of
> calling preempt_schedule_irq() to schedule highest priority task if
> available.
>
> Current code assumes that r8 contains TI_FLAGS and check this for
> _TIF_NEED_RESCHED, but as r8 is modified in the code which executes
> before
> this check, r8 no longer contains the expected TI_FLAGS information.
Hrm, the code was supposed to still have TI_FLAGS in r8 and mostly does
until the
andis. r8,r8,_TIF_EMULATE_STACK_STORE@h
Was added which clobbers it.
Can't we just fix the above to use a different destination register ?
r0 looks fair game at this point...
> As a result check for comparison with _TIF_NEED_RESCHED was failing
> even if
> NEED_RESCHED bit is set in the current thread_info flag. Due to this,
> preempt_schedule_irq() and in turn scheduler was not getting called
> even if
> highest priority task is ready for execution.
Ben.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-05-27 7:22 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-27 6:27 [PATCH] powerpc/32bit,PREEMPT:Load TI_FLAGS to check NEED_RESCHED Priyanka Jain
2013-05-27 6:45 ` [PATCH] powerpc/32bit, PREEMPT:Load " tiejun.chen
2013-05-27 6:55 ` [PATCH] powerpc/32bit,PREEMPT:Load " Jain Priyanka-B32167
2013-05-27 7:18 ` [PATCH] powerpc/32bit, PREEMPT:Load " tiejun.chen
2013-05-27 7:21 ` [PATCH] powerpc/32bit,PREEMPT:Load " Jain Priyanka-B32167
2013-05-27 7:12 ` Benjamin Herrenschmidt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).