From 2d5744dd1b70b59ae3279c5d066a4b9f2896e692 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Wed, 30 Aug 2006 16:10:47 +1000 Subject: [PATCH] --- yaml --- r: 33735 b: refs/heads/master c: 467c37801c453849a2fe243c3226476ee3985868 h: refs/heads/master i: 33733: 81e80c7391815f78692a6dcb651965be400ab6b6 33731: 75b49313c32f36e3f4b84f42baa73eb7161414c9 33727: 651b23d9a37d9af0834e0a475a3938183d05cc06 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/smp-tbsync.c | 5 +++-- trunk/arch/ppc/kernel/smp-tbsync.c | 7 ++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 41a2cc567310..02cf7af093a2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e0d872d536bb93335d5905b09fe374a163486d43 +refs/heads/master: 467c37801c453849a2fe243c3226476ee3985868 diff --git a/trunk/arch/powerpc/kernel/smp-tbsync.c b/trunk/arch/powerpc/kernel/smp-tbsync.c index f19e2e0e61e7..de59c6c31a5b 100644 --- a/trunk/arch/powerpc/kernel/smp-tbsync.c +++ b/trunk/arch/powerpc/kernel/smp-tbsync.c @@ -45,8 +45,9 @@ void __devinit smp_generic_take_timebase(void) { int cmd; u64 tb; + unsigned long flags; - local_irq_disable(); + local_irq_save(flags); while (!running) barrier(); rmb(); @@ -70,7 +71,7 @@ void __devinit smp_generic_take_timebase(void) set_tb(tb >> 32, tb & 0xfffffffful); enter_contest(tbsync->mark, -1); } - local_irq_enable(); + local_irq_restore(flags); } static int __devinit start_contest(int cmd, long offset, int num) diff --git a/trunk/arch/ppc/kernel/smp-tbsync.c b/trunk/arch/ppc/kernel/smp-tbsync.c index 1576758debaf..d0cf3f86931d 100644 --- a/trunk/arch/ppc/kernel/smp-tbsync.c +++ b/trunk/arch/ppc/kernel/smp-tbsync.c @@ -47,8 +47,9 @@ void __devinit smp_generic_take_timebase( void ) { int cmd, tbl, tbu; + unsigned long flags; - local_irq_disable(); + local_irq_save(flags); while( !running ) ; rmb(); @@ -64,7 +65,7 @@ smp_generic_take_timebase( void ) tbu = tbsync->tbu; tbsync->ack = 0; if( cmd == kExit ) - return; + break; if( cmd == kSetAndTest ) { while( tbsync->handshake ) @@ -77,7 +78,7 @@ smp_generic_take_timebase( void ) } enter_contest( tbsync->mark, -1 ); } - local_irq_enable(); + local_irq_restore(flags); } static int __devinit