Re: [PATCH] SunSAB console problems in 2.6.x

2004-08-28 Thread David S. Miller
On Fri, 27 Aug 2004 17:01:01 -0700
Joshua Kwan [EMAIL PROTECTED] wrote:

  -mcount.o ipcsum.o rwsem.o xor.o splock.o find_bit.o
  +mcount.o ipcsum.o rwsem.o xor.o splock.o find_bit.o delay.o
   
   lib-$(CONFIG_DEBUG_SPINLOCK) += debuglocks.o
   lib-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o
 
 You forgot delay.c.

Sorry, I'm a retard.

This patch should be better.

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/08/27 16:12:23-07:00 [EMAIL PROTECTED] 
#   [SPARC64]: Fix delay with HZ==1000.
#   
#   When I moved sparc64 over to HZ==1000 this added some
#   problems to the udelay() handling.  Specifically, with
#   slower cpus we could now get underflows to zero for
#   things like udelay(1) due to the order of multiplies
#   and shifts.
#   
#   Fix this, and move it out to arch/sparc64/lib/delay.c
#   so it is easier to tinker with this in the future and
#   also to optimize away one of the multiplies for the
#   constant delay case just like other platforms do.
#   
#   Signed-off-by: David S. Miller [EMAIL PROTECTED]
# 
# include/asm-sparc64/delay.h
#   2004/08/27 16:10:13-07:00 [EMAIL PROTECTED] +21 -46
#   [SPARC64]: Fix delay with HZ==1000.
# 
# arch/sparc64/lib/Makefile
#   2004/08/27 16:10:13-07:00 [EMAIL PROTECTED] +1 -1
#   [SPARC64]: Fix delay with HZ==1000.
# 
# arch/sparc64/kernel/sparc64_ksyms.c
#   2004/08/27 16:10:13-07:00 [EMAIL PROTECTED] +6 -0
#   [SPARC64]: Fix delay with HZ==1000.
# 
# arch/sparc64/lib/delay.c
#   2004/08/27 16:10:01-07:00 [EMAIL PROTECTED] +49 -0
#   [SPARC64]: Fix delay with HZ==1000.
# 
# arch/sparc64/lib/delay.c
#   2004/08/27 16:10:01-07:00 [EMAIL PROTECTED] +0 -0
#   BitKeeper file /disk1/BK/sparc-2.6/arch/sparc64/lib/delay.c
# 
diff -Nru a/arch/sparc64/kernel/sparc64_ksyms.c 
b/arch/sparc64/kernel/sparc64_ksyms.c
--- a/arch/sparc64/kernel/sparc64_ksyms.c   2004-08-27 16:48:00 -07:00
+++ b/arch/sparc64/kernel/sparc64_ksyms.c   2004-08-27 16:48:00 -07:00
@@ -372,6 +372,12 @@
 EXPORT_SYMBOL_NOVERS(memmove);
 EXPORT_SYMBOL_NOVERS(strncmp);
 
+/* Delay routines. */
+EXPORT_SYMBOL(__udelay);
+EXPORT_SYMBOL(__ndelay);
+EXPORT_SYMBOL(__const_udelay);
+EXPORT_SYMBOL(__delay);
+
 void VISenter(void);
 /* RAID code needs this */
 EXPORT_SYMBOL_NOVERS(VISenter);
diff -Nru a/arch/sparc64/lib/Makefile b/arch/sparc64/lib/Makefile
--- a/arch/sparc64/lib/Makefile 2004-08-27 16:48:00 -07:00
+++ b/arch/sparc64/lib/Makefile 2004-08-27 16:48:00 -07:00
@@ -12,7 +12,7 @@
 U1memcpy.o U1copy_from_user.o U1copy_to_user.o \
 U3memcpy.o U3copy_from_user.o U3copy_to_user.o U3patch.o \
 copy_in_user.o user_fixup.o memmove.o \
-mcount.o ipcsum.o rwsem.o xor.o splock.o find_bit.o
+mcount.o ipcsum.o rwsem.o xor.o splock.o find_bit.o delay.o
 
 lib-$(CONFIG_DEBUG_SPINLOCK) += debuglocks.o
 lib-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o
diff -Nru a/arch/sparc64/lib/delay.c b/arch/sparc64/lib/delay.c
--- /dev/null   Wed Dec 31 16:00:00 196900
+++ b/arch/sparc64/lib/delay.c  2004-08-27 16:48:00 -07:00
@@ -0,0 +1,49 @@
+/* delay.c: Delay loops for sparc64
+ *
+ * Copyright (C) 2004 David S. Miller davem@redhat.com
+ *
+ * Based heavily upon x86 variant which is:
+ * Copyright (C) 1993 Linus Torvalds
+ * Copyright (C) 1997 Martin Mares [EMAIL PROTECTED]
+ */
+
+#include linux/delay.h
+
+void __delay(unsigned long loops)
+{
+   __asm__ __volatile__(
+  b,pt%%xcc, 1f\n
+   cmp%0, 0\n
+  .align  32\n
+1:\n
+  bne,pt  %%xcc, 1b\n
+   subcc  %0, 1, %0\n
+   : =r (loops)
+   : 0 (loops)
+   : cc);
+}
+
+/* We used to multiply by HZ after shifting down by 32 bits
+ * but that runs into problems for higher values of HZ and
+ * slow cpus.
+ */
+void __const_udelay(unsigned long n)
+{
+   n *= 4;
+
+   n *= (cpu_data(smp_processor_id()).udelay_val * (HZ/4));
+   n = 32;
+
+   __delay(n + 1);
+}
+
+void __udelay(unsigned long n)
+{
+   __const_udelay(n * 0x10c7UL);
+}
+
+
+void __ndelay(unsigned long n)
+{
+   __const_udelay(n * 0x5UL);
+}
diff -Nru a/include/asm-sparc64/delay.h b/include/asm-sparc64/delay.h
--- a/include/asm-sparc64/delay.h   2004-08-27 16:48:00 -07:00
+++ b/include/asm-sparc64/delay.h   2004-08-27 16:48:00 -07:00
@@ -1,7 +1,11 @@
-/* $Id: delay.h,v 1.13 2002/02/02 03:33:48 kanoj Exp $
- * delay.h: Linux delay routines on the V9.
+/* delay.h: Linux delay routines on sparc64.
  *
- * Copyright (C) 1996 David S. Miller ([EMAIL PROTECTED]).
+ * Copyright (C) 1996, 2004 David S. Miller ([EMAIL PROTECTED]).
+ *
+ * Based heavily upon x86 variant which is:
+ * Copyright (C) 1993 Linus Torvalds
+ *
+ * Delay routines calling functions in arch/sparc64/lib/delay.c
  */
 
 #ifndef __SPARC64_DELAY_H
@@ -13,50 +17,21 @@
 
 #ifndef __ASSEMBLY__
 
-static __inline__ void __delay(unsigned long loops)
-{
-   __asm__ __volatile__(
-  b,pt%%xcc, 1f\n
-   cmp%0, 0\n
-  .align  32\n
-1:\n
-  bne,pt  %%xcc, 1b\n
-   

Re: [PATCH] SunSAB console problems in 2.6.x

2004-08-28 Thread Ralph Mitchell
Works just fine.  Thanks!  Took me a minute to realise it was a patch 
against 2.6.9-rc1, though.  Are there any stability issues with this 
RC?  If not, I'll leave it running, otherwise I'll go back to 2.6.8.


Works even better with PREEMPT off.  Thought I probably had something 
stupid in the .config  :)


Thanks,

Ralph Mitchell


David S. Miller wrote:


On Fri, 27 Aug 2004 17:01:01 -0700
Joshua Kwan [EMAIL PROTECTED] wrote:

 


-mcount.o ipcsum.o rwsem.o xor.o splock.o find_bit.o
+mcount.o ipcsum.o rwsem.o xor.o splock.o find_bit.o delay.o

lib-$(CONFIG_DEBUG_SPINLOCK) += debuglocks.o
lib-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o
 


You forgot delay.c.
   



Sorry, I'm a retard.

This patch should be better.

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/08/27 16:12:23-07:00 [EMAIL PROTECTED] 
#   [SPARC64]: Fix delay with HZ==1000.
 





Re: [PATCH] SunSAB console problems in 2.6.x

2004-08-27 Thread Joshua Kwan

David S. Miller wrote:

Are all of you guys seeing this problem on uniprocessor?
Ralph, Joshua?


Yeah. Although I thought you'd already fixed it with that patch? Or was 
it just a hack?


--
Joshua Kwan


signature.asc
Description: OpenPGP digital signature


Re: [PATCH] SunSAB console problems in 2.6.x

2004-08-27 Thread David S. Miller
On Fri, 27 Aug 2004 16:24:13 -0700
Joshua Kwan [EMAIL PROTECTED] wrote:

 David S. Miller wrote:
  Are all of you guys seeing this problem on uniprocessor?
  Ralph, Joshua?
 
 Yeah. Although I thought you'd already fixed it with that patch? Or was 
 it just a hack?

Just a hack.

See the email I just sent out, it has the correct fix.



Re: [PATCH] SunSAB console problems in 2.6.x

2004-08-27 Thread Joshua Kwan

David S. Miller wrote:

= arch/sparc64/lib/Makefile 1.19 vs edited =
--- 1.19/arch/sparc64/lib/Makefile  2004-08-23 14:33:04 -07:00
+++ edited/arch/sparc64/lib/Makefile2004-08-27 15:25:45 -07:00
@@ -12,7 +12,7 @@
 U1memcpy.o U1copy_from_user.o U1copy_to_user.o \
 U3memcpy.o U3copy_from_user.o U3copy_to_user.o U3patch.o \
 copy_in_user.o user_fixup.o memmove.o \
-mcount.o ipcsum.o rwsem.o xor.o splock.o find_bit.o
+mcount.o ipcsum.o rwsem.o xor.o splock.o find_bit.o delay.o
 
 lib-$(CONFIG_DEBUG_SPINLOCK) += debuglocks.o

 lib-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o


You forgot delay.c.

--
Joshua Kwan


signature.asc
Description: OpenPGP digital signature