* nuke string.h micro-optimizations from orbit
@ 2005-06-07 3:13 William Lee Irwin III
2005-06-08 3:18 ` Jurij Smakov
` (12 more replies)
0 siblings, 13 replies; 14+ messages in thread
From: William Lee Irwin III @ 2005-06-07 3:13 UTC (permalink / raw)
To: sparclinux
I got a bit heavy-handed as suggested and just blew away the whole lot
of macro wrappers etc. I did leave around some of the asm called from
there but am plotting to nuke them as well after making sure we aren't
trying to BTFIXUP code that doesn't exist.
Anyhow, if anyone's up for trying this (I patched vs. 2.6.12-rc5-mm2
but can rediff against 2.6.12-rc6 in the unlikely event it rejects)
I suspect it may help 32B alignment problems, though in principle
we could just perform the alignment checks.
I've not gotten a chance to test this but am seriously thinking of
juryrigging a sparc away from the usual stack and running fresh
cables if the fedex same-day -shipped parts end up taking more than 5
days to arrive, esp. given the recent arch/sparc/ activity. At any
rate it would also help for someone who can actually reproduce the
issue this was meant to resolve could test it.
Index: mm2-2.6.12-rc5/include/asm-sparc/string.h
=================================--- mm2-2.6.12-rc5.orig/include/asm-sparc/string.h 2005-03-01 23:37:30.000000000 -0800
+++ mm2-2.6.12-rc5/include/asm-sparc/string.h 2005-06-06 13:56:53.000000000 -0700
@@ -15,190 +15,20 @@
#ifdef __KERNEL__
-extern void __memmove(void *,const void *,__kernel_size_t);
-extern __kernel_size_t __memcpy(void *,const void *,__kernel_size_t);
-extern __kernel_size_t __memset(void *,int,__kernel_size_t);
-
-#ifndef EXPORT_SYMTAB_STROPS
-
-/* First the mem*() things. */
-#define __HAVE_ARCH_MEMMOVE
-#undef memmove
-#define memmove(_to, _from, _n) \
-({ \
- void *_t = (_to); \
- __memmove(_t, (_from), (_n)); \
- _t; \
-})
-
#define __HAVE_ARCH_MEMCPY
-
-static inline void *__constant_memcpy(void *to, const void *from, __kernel_size_t n)
-{
- extern void __copy_1page(void *, const void *);
-
- if(n <= 32) {
- __builtin_memcpy(to, from, n);
- } else if (((unsigned int) to & 7) != 0) {
- /* Destination is not aligned on the double-word boundary */
- __memcpy(to, from, n);
- } else {
- switch(n) {
- case PAGE_SIZE:
- __copy_1page(to, from);
- break;
- default:
- __memcpy(to, from, n);
- break;
- }
- }
- return to;
-}
-
-static inline void *__nonconstant_memcpy(void *to, const void *from, __kernel_size_t n)
-{
- __memcpy(to, from, n);
- return to;
-}
-
-#undef memcpy
-#define memcpy(t, f, n) \
-(__builtin_constant_p(n) ? \
- __constant_memcpy((t),(f),(n)) : \
- __nonconstant_memcpy((t),(f),(n)))
-
#define __HAVE_ARCH_MEMSET
-
-static inline void *__constant_c_and_count_memset(void *s, char c, __kernel_size_t count)
-{
- extern void bzero_1page(void *);
- extern __kernel_size_t __bzero(void *, __kernel_size_t);
-
- if(!c) {
- if(count = PAGE_SIZE)
- bzero_1page(s);
- else
- __bzero(s, count);
- } else {
- __memset(s, c, count);
- }
- return s;
-}
-
-static inline void *__constant_c_memset(void *s, char c, __kernel_size_t count)
-{
- extern __kernel_size_t __bzero(void *, __kernel_size_t);
-
- if(!c)
- __bzero(s, count);
- else
- __memset(s, c, count);
- return s;
-}
-
-static inline void *__nonconstant_memset(void *s, char c, __kernel_size_t count)
-{
- __memset(s, c, count);
- return s;
-}
-
-#undef memset
-#define memset(s, c, count) \
-(__builtin_constant_p(c) ? (__builtin_constant_p(count) ? \
- __constant_c_and_count_memset((s), (c), (count)) : \
- __constant_c_memset((s), (c), (count))) \
- : __nonconstant_memset((s), (c), (count)))
-
+#define __HAVE_ARCH_MEMMOVE
#define __HAVE_ARCH_MEMSCAN
-
-#undef memscan
-#define memscan(__arg0, __char, __arg2) \
-({ \
- extern void *__memscan_zero(void *, size_t); \
- extern void *__memscan_generic(void *, int, size_t); \
- void *__retval, *__addr = (__arg0); \
- size_t __size = (__arg2); \
- \
- if(__builtin_constant_p(__char) && !(__char)) \
- __retval = __memscan_zero(__addr, __size); \
- else \
- __retval = __memscan_generic(__addr, (__char), __size); \
- \
- __retval; \
-})
-
#define __HAVE_ARCH_MEMCMP
-extern int memcmp(const void *,const void *,__kernel_size_t);
-
-/* Now the str*() stuff... */
#define __HAVE_ARCH_STRLEN
-extern __kernel_size_t strlen(const char *);
-
#define __HAVE_ARCH_STRNCMP
-
-extern int __strncmp(const char *, const char *, __kernel_size_t);
-
-static inline int __constant_strncmp(const char *src, const char *dest, __kernel_size_t count)
-{
- register int retval;
- switch(count) {
- case 0: return 0;
- case 1: return (src[0] - dest[0]);
- case 2: retval = (src[0] - dest[0]);
- if(!retval && src[0])
- retval = (src[1] - dest[1]);
- return retval;
- case 3: retval = (src[0] - dest[0]);
- if(!retval && src[0]) {
- retval = (src[1] - dest[1]);
- if(!retval && src[1])
- retval = (src[2] - dest[2]);
- }
- return retval;
- case 4: retval = (src[0] - dest[0]);
- if(!retval && src[0]) {
- retval = (src[1] - dest[1]);
- if(!retval && src[1]) {
- retval = (src[2] - dest[2]);
- if (!retval && src[2])
- retval = (src[3] - dest[3]);
- }
- }
- return retval;
- case 5: retval = (src[0] - dest[0]);
- if(!retval && src[0]) {
- retval = (src[1] - dest[1]);
- if(!retval && src[1]) {
- retval = (src[2] - dest[2]);
- if (!retval && src[2]) {
- retval = (src[3] - dest[3]);
- if (!retval && src[3])
- retval = (src[4] - dest[4]);
- }
- }
- }
- return retval;
- default:
- retval = (src[0] - dest[0]);
- if(!retval && src[0]) {
- retval = (src[1] - dest[1]);
- if(!retval && src[1]) {
- retval = (src[2] - dest[2]);
- if(!retval && src[2])
- retval = __strncmp(src+3,dest+3,count-3);
- }
- }
- return retval;
- }
-}
-
-#undef strncmp
-#define strncmp(__arg0, __arg1, __arg2) \
-(__builtin_constant_p(__arg2) ? \
- __constant_strncmp(__arg0, __arg1, __arg2) : \
- __strncmp(__arg0, __arg1, __arg2))
-
-#endif /* !EXPORT_SYMTAB_STROPS */
+void *memcpy(void *, const void *, size_t);
+void *memset(void *, int, size_t);
+void *memmove(void *, const void *, size_t);
+void *memscan(const void *, int, size_t);
+int memcmp(const void *, const void *, size_t);
+size_t strlen(const char *);
+int strncmp(const char *, const char *, size_t);
#endif /* __KERNEL__ */
Index: mm2-2.6.12-rc5/arch/sparc/lib/memcmp.S
=================================--- mm2-2.6.12-rc5.orig/arch/sparc/lib/memcmp.S 2005-03-01 23:38:17.000000000 -0800
+++ mm2-2.6.12-rc5/arch/sparc/lib/memcmp.S 2005-06-06 13:57:34.000000000 -0700
@@ -1,7 +1,6 @@
.text
.align 4
- .global __memcmp, memcmp
-__memcmp:
+ .global memcmp
memcmp:
#if 1
cmp %o2, 0
Index: mm2-2.6.12-rc5/arch/sparc/lib/memcpy.S
=================================--- mm2-2.6.12-rc5.orig/arch/sparc/lib/memcpy.S 2005-03-01 23:38:33.000000000 -0800
+++ mm2-2.6.12-rc5/arch/sparc/lib/memcpy.S 2005-06-06 16:00:09.195879567 -0700
@@ -192,10 +192,6 @@
retl
nop ! Only bcopy returns here and it retuns void...
-#ifdef __KERNEL__
-FUNC(amemmove)
-FUNC(__memmove)
-#endif
FUNC(memmove)
cmp %o0, %o1
SETUP_RETL
@@ -543,9 +539,7 @@
b 3f
add %o0, 2, %o0
-#ifdef __KERNEL__
FUNC(__memcpy)
-#endif
FUNC(memcpy) /* %o0=dst %o1=src %o2=len */
sub %o0, %o1, %o4
Index: mm2-2.6.12-rc5/arch/sparc/lib/memset.S
=================================--- mm2-2.6.12-rc5.orig/arch/sparc/lib/memset.S 2005-03-01 23:37:49.000000000 -0800
+++ mm2-2.6.12-rc5/arch/sparc/lib/memset.S 2005-06-06 15:53:02.831696775 -0700
@@ -60,11 +60,9 @@
.globl __bzero_begin
__bzero_begin:
- .globl __bzero, __memset,
- .globl memset
+ .globl memset, __bzero
.globl __memset_start, __memset_end
__memset_start:
-__memset:
memset:
and %o1, 0xff, %g3
sll %g3, 8, %g2
Index: mm2-2.6.12-rc5/arch/sparc/lib/strncmp.S
=================================--- mm2-2.6.12-rc5.orig/arch/sparc/lib/strncmp.S 2005-03-01 23:37:49.000000000 -0800
+++ mm2-2.6.12-rc5/arch/sparc/lib/strncmp.S 2005-06-06 13:59:17.000000000 -0700
@@ -5,8 +5,7 @@
.text
.align 4
- .global __strncmp, strncmp
-__strncmp:
+ .global strncmp
strncmp:
mov %o0, %g3
mov 0, %o3
Index: mm2-2.6.12-rc5/arch/sparc/kernel/sparc_ksyms.c
=================================--- mm2-2.6.12-rc5.orig/arch/sparc/kernel/sparc_ksyms.c 2005-06-01 08:11:43.000000000 -0700
+++ mm2-2.6.12-rc5/arch/sparc/kernel/sparc_ksyms.c 2005-06-06 16:02:12.224176423 -0700
@@ -5,8 +5,6 @@
* Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be)
*/
-/* Tell string.h we don't want memcpy etc. as cpp defines */
-#define EXPORT_SYMTAB_STROPS
#define PROMLIB_INTERNAL
#include <linux/config.h>
@@ -67,14 +65,6 @@
extern int svr4_getcontext (svr4_ucontext_t *, struct pt_regs *);
extern int svr4_setcontext (svr4_ucontext_t *, struct pt_regs *);
void _sigpause_common (unsigned int set, struct pt_regs *);
-extern void (*__copy_1page)(void *, const void *);
-extern void __memmove(void *, const void *, __kernel_size_t);
-extern void (*bzero_1page)(void *);
-extern void *__bzero(void *, size_t);
-extern void *__memscan_zero(void *, size_t);
-extern void *__memscan_generic(void *, int, size_t);
-extern int __memcmp(const void *, const void *, __kernel_size_t);
-extern int __strncmp(const char *, const char *, __kernel_size_t);
extern int __ashrdi3(int, int);
extern int __ashldi3(int, int);
@@ -293,18 +283,14 @@
EXPORT_SYMBOL(page_kernel);
/* Special internal versions of library functions. */
-EXPORT_SYMBOL(__copy_1page);
-EXPORT_SYMBOL(__memcpy);
-EXPORT_SYMBOL(__memset);
-EXPORT_SYMBOL(bzero_1page);
-EXPORT_SYMBOL(__bzero);
-EXPORT_SYMBOL(__memscan_zero);
-EXPORT_SYMBOL(__memscan_generic);
-EXPORT_SYMBOL(__memcmp);
-EXPORT_SYMBOL(__strncmp);
-EXPORT_SYMBOL(__memmove);
+EXPORT_SYMBOL(memcpy);
+EXPORT_SYMBOL(memset);
+EXPORT_SYMBOL(memcmp);
+EXPORT_SYMBOL(memmove);
/* Moving data to/from userspace. */
+void *__bzero(void *, size_t);
+EXPORT_SYMBOL(__bzero); /* kill me */
EXPORT_SYMBOL(__copy_user);
EXPORT_SYMBOL(__strncpy_from_user);
@@ -320,10 +306,6 @@
EXPORT_SYMBOL(__ret_efault);
-EXPORT_SYMBOL(memcmp);
-EXPORT_SYMBOL(memcpy);
-EXPORT_SYMBOL(memset);
-EXPORT_SYMBOL(memmove);
EXPORT_SYMBOL(__ashrdi3);
EXPORT_SYMBOL(__ashldi3);
EXPORT_SYMBOL(__lshrdi3);
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
@ 2005-06-08 3:18 ` Jurij Smakov
2005-06-08 3:24 ` William Lee Irwin III
` (11 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: Jurij Smakov @ 2005-06-08 3:18 UTC (permalink / raw)
To: sparclinux
On Mon, 6 Jun 2005, William Lee Irwin III wrote:
> I got a bit heavy-handed as suggested and just blew away the whole lot
> of macro wrappers etc. I did leave around some of the asm called from
> there but am plotting to nuke them as well after making sure we aren't
> trying to BTFIXUP code that doesn't exist.
>
> Anyhow, if anyone's up for trying this (I patched vs. 2.6.12-rc5-mm2
> but can rediff against 2.6.12-rc6 in the unlikely event it rejects)
> I suspect it may help 32B alignment problems, though in principle
> we could just perform the alignment checks.
Hi William,
I have tried the patch on 2.6.12-rc6 (it applies cleanly). The initrd is
mounted successfully then, however it oopses immediately after that.
Here's the log:
RAMDISK: cramfs filesystem found at block 0
RAMDISK: Loading 2580KiB [1 disk] into ram disk... done.
VFS: Mounted root (cramfs filesystem) readonly.
VFS: Cannot open root device "sda1" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on
unknown-block(0,0)
<0>Press Stop-A (L1-A) to return to the boot prom
Unable to handle kernel NULL pointer dereference
tsk->{mm,active_mm}->context = 00000000
tsk->{mm,active_mm}->pgd = fc000800
\|/ ____ \|/
"@'/ ,. \`@"
/_| \__/ |_\
\__U_/
swapper(1): Oops [#1]
PSR: 1e0010c0 PC: f00f3b94 NPC: f00f3b98 Y: 00000000 Not tainted
PC: <tty_wakeup+0x4/0x64>
%G: 00000000 f0036680 00000001 1e4010e2 f0036624 00000000 f428e000 00000001
%O: ffffffff 00000000 00000000 00002000 00000000 fffffffe f428fa58 f00117e0
RPC: <__udelay+0x1c/0x24>
%L: 00000000 f022ca30 00000001 f022e4f8 00000009 f022c800 f022c800 f0222400
%I: 00000000 0007fc00 f428fb40 80808080 00153fc0 00000000 f428fac0 f0036680
Caller[f0036680]: tasklet_action+0x6c/0xb8
Caller[f0036334]: __do_softirq+0xa0/0xc4
Caller[f0036398]: do_softirq+0x40/0x54
Caller[f00109ec]: patch_handler_irq+0x0/0x24
Caller[f00117e0]: __udelay+0x1c/0x24
Caller[f003011c]: panic+0x14c/0x15c
Caller[f01fe364]: sun4m_init+0x210/0x328
Caller[f02014f8]: inflate_dynamic+0x660/0x71c
Caller[f0201658]: inflate_block+0xa4/0x13c
Caller[f01fe5b4]: sun4c_continue_boot+0x138/0x324
Caller[f0010190]: init+0xf8/0x104
Caller[f0014ed0]: kernel_thread+0x34/0x50
Caller[f0010024]: rest_init+0x10/0x24
Caller[f01fdf08]: _etext+0x5fac0/0x5fbb8
Caller[f01fd790]: _etext+0x5f348/0x5fbb8
Caller[00000000]: start+0xfffc000/0x10
Instruction DUMP: 81c3e008 90023fe7 9de3bf98 <c20620b8> 80886020 12800006 b2102001 b0062934 b4102001
Kernel panic - not syncing: Aiee, killing interrupt handler!
<0>Press Stop-A (L1-A) to return to the boot prom
I haven't investigated that yet. I also plan to try a config without
initrd, to see what happens there.
Thanks and best regards,
Jurij Smakov jurij@wooyd.org
Key: http://www.wooyd.org/pgpkey/ KeyID: C99E03CC
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
2005-06-08 3:18 ` Jurij Smakov
@ 2005-06-08 3:24 ` William Lee Irwin III
2005-06-08 4:36 ` Jurij Smakov
` (10 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: William Lee Irwin III @ 2005-06-08 3:24 UTC (permalink / raw)
To: sparclinux
On Mon, 6 Jun 2005, William Lee Irwin III wrote:
>> I got a bit heavy-handed as suggested and just blew away the whole lot
>> of macro wrappers etc. I did leave around some of the asm called from
>> there but am plotting to nuke them as well after making sure we aren't
>> trying to BTFIXUP code that doesn't exist.
>> Anyhow, if anyone's up for trying this (I patched vs. 2.6.12-rc5-mm2
>> but can rediff against 2.6.12-rc6 in the unlikely event it rejects)
>> I suspect it may help 32B alignment problems, though in principle
>> we could just perform the alignment checks.
On Tue, Jun 07, 2005 at 11:18:56PM -0400, Jurij Smakov wrote:
> I have tried the patch on 2.6.12-rc6 (it applies cleanly). The initrd is
> mounted successfully then, however it oopses immediately after that.
> Here's the log:
[...]
It seems like we get further. I've seen similar oopsen in tty_wakeup on
shutdown but am not terribly surprised if it could strike us earlier.
Anyhow, a regression test would be enlightening, as you say. I'll drop
it in favor of trying "safer" things in the event this is breaking it.
-- wli
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
2005-06-08 3:18 ` Jurij Smakov
2005-06-08 3:24 ` William Lee Irwin III
@ 2005-06-08 4:36 ` Jurij Smakov
2005-06-08 5:29 ` Patrick Finnegan
` (9 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: Jurij Smakov @ 2005-06-08 4:36 UTC (permalink / raw)
To: sparclinux
On Tue, 7 Jun 2005, William Lee Irwin III wrote:
> It seems like we get further. I've seen similar oopsen in tty_wakeup on
> shutdown but am not terribly surprised if it could strike us earlier.
> Anyhow, a regression test would be enlightening, as you say. I'll drop
> it in favor of trying "safer" things in the event this is breaking it.
Without the initrd (with esp driver compiled in), it goes much further, as
far as mounting the real root. Unfortunately, it hangs right at the point
when init is supposed to start. Last messages I see are:
Attached scsi disk sda at scsi0, channel 0, id 3, lun 0
rtc_sun_init: Registered Mostek RTC driver.
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
NET: Registered protocol family 1
NET: Registered protocol family 17
EXT2-fs warning (device sda1): ext2_fill_super: mounting ext3 filesystem as ext2
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 152k freed
... and here it hangs. I'll poke around to see if I can tell anything
about why init fails to start.
Best regards,
Jurij Smakov jurij@wooyd.org
Key: http://www.wooyd.org/pgpkey/ KeyID: C99E03CC
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (2 preceding siblings ...)
2005-06-08 4:36 ` Jurij Smakov
@ 2005-06-08 5:29 ` Patrick Finnegan
2005-06-08 11:52 ` William Lee Irwin III
` (8 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: Patrick Finnegan @ 2005-06-08 5:29 UTC (permalink / raw)
To: sparclinux
William Lee Irwin III declared on Tuesday 07 June 2005 10:24 pm:
> It seems like we get further. I've seen similar oopsen in tty_wakeup
> on shutdown but am not terribly surprised if it could strike us
> earlier.
I *consistently* get an oops in tty_wakeup on shutdown of my E3000 and my
new E6500, which is fairly annoying.
Fortunately, I don't have to shut down the machine too often.
Any ideas what's wrong? I've got a log of the console, System.map and
the .config up at:
http://ned.cc.purdue.edu/e3k-tty_wakeup/
Pat
--
Purdue University ITAP/RCAC --- http://www.rcac.purdue.edu/
The Computer Refuge --- http://computer-refuge.org
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (3 preceding siblings ...)
2005-06-08 5:29 ` Patrick Finnegan
@ 2005-06-08 11:52 ` William Lee Irwin III
2005-06-08 19:06 ` David S. Miller
` (7 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: William Lee Irwin III @ 2005-06-08 11:52 UTC (permalink / raw)
To: sparclinux
William Lee Irwin III declared on Tuesday 07 June 2005 10:24 pm:
>> It seems like we get further. I've seen similar oopsen in tty_wakeup
>> on shutdown but am not terribly surprised if it could strike us
>> earlier.
On Wed, Jun 08, 2005 at 12:29:15AM -0500, Patrick Finnegan wrote:
> I *consistently* get an oops in tty_wakeup on shutdown of my E3000 and my
> new E6500, which is fairly annoying.
> Fortunately, I don't have to shut down the machine too often.
> Any ideas what's wrong? I've got a log of the console, System.map and
> the .config up at:
> http://ned.cc.purdue.edu/e3k-tty_wakeup/
Apart from "the tty layer is f***ed", not really. We should probably
take our findings to whoever's now working on the tty layer.
-- wli
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (4 preceding siblings ...)
2005-06-08 11:52 ` William Lee Irwin III
@ 2005-06-08 19:06 ` David S. Miller
2005-06-08 19:19 ` William Lee Irwin III
` (6 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: David S. Miller @ 2005-06-08 19:06 UTC (permalink / raw)
To: sparclinux
From: William Lee Irwin III <wli@holomorphy.com>
Date: Wed, 8 Jun 2005 04:52:28 -0700
> William Lee Irwin III declared on Tuesday 07 June 2005 10:24 pm:
> >> It seems like we get further. I've seen similar oopsen in tty_wakeup
> >> on shutdown but am not terribly surprised if it could strike us
> >> earlier.
>
> On Wed, Jun 08, 2005 at 12:29:15AM -0500, Patrick Finnegan wrote:
> > I *consistently* get an oops in tty_wakeup on shutdown of my E3000 and my
> > new E6500, which is fairly annoying.
> > Fortunately, I don't have to shut down the machine too often.
> > Any ideas what's wrong? I've got a log of the console, System.map and
> > the .config up at:
> > http://ned.cc.purdue.edu/e3k-tty_wakeup/
>
> Apart from "the tty layer is f***ed", not really. We should probably
> take our findings to whoever's now working on the tty layer.
It is undoubtedly a sparc serial console issue, not one with
the TTY layer.
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (5 preceding siblings ...)
2005-06-08 19:06 ` David S. Miller
@ 2005-06-08 19:19 ` William Lee Irwin III
2005-06-08 19:22 ` David S. Miller
` (5 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: William Lee Irwin III @ 2005-06-08 19:19 UTC (permalink / raw)
To: sparclinux
> From: William Lee Irwin III <wli@holomorphy.com>
> Date: Wed, 8 Jun 2005 04:52:28 -0700
>> Apart from "the tty layer is f***ed", not really. We should probably
>> take our findings to whoever's now working on the tty layer.
On Wed, Jun 08, 2005 at 12:06:18PM -0700, David S. Miller wrote:
> It is undoubtedly a sparc serial console issue, not one with
> the TTY layer.
I didn't see the driver in the backtrace so I got fooled.
... dare I ask if anyone can smoke out a line number on this one?
-- wli
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (6 preceding siblings ...)
2005-06-08 19:19 ` William Lee Irwin III
@ 2005-06-08 19:22 ` David S. Miller
2005-07-09 2:22 ` Jurij Smakov
` (4 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: David S. Miller @ 2005-06-08 19:22 UTC (permalink / raw)
To: sparclinux
From: William Lee Irwin III <wli@holomorphy.com>
Date: Wed, 8 Jun 2005 12:19:43 -0700
> > From: William Lee Irwin III <wli@holomorphy.com>
> > Date: Wed, 8 Jun 2005 04:52:28 -0700
> >> Apart from "the tty layer is f***ed", not really. We should probably
> >> take our findings to whoever's now working on the tty layer.
>
> On Wed, Jun 08, 2005 at 12:06:18PM -0700, David S. Miller wrote:
> > It is undoubtedly a sparc serial console issue, not one with
> > the TTY layer.
>
> I didn't see the driver in the backtrace so I got fooled.
>
> ... dare I ask if anyone can smoke out a line number on this one?
What's probably happening is that the serial driver in question
is causing the UART layer to release the console TTY on a close,
and later on access to this is what OOPS's.
To be honest, I am utterly confused as to how the console TTY
handling stuff is supposed to operate wrt. the UART serial
drivers. Sunzilog has this thing where it doesn't touch
any of the serial chip settings on a close (see sunzilog_shutdown()
and the huge comment preceeding it) yet I don't see any other
driver's doing this.
This whole area needs a huge anti-crap audit.
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (7 preceding siblings ...)
2005-06-08 19:22 ` David S. Miller
@ 2005-07-09 2:22 ` Jurij Smakov
2005-07-15 4:21 ` Jurij Smakov
` (3 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: Jurij Smakov @ 2005-07-09 2:22 UTC (permalink / raw)
To: sparclinux
On Mon, 6 Jun 2005, William Lee Irwin III wrote:
> I got a bit heavy-handed as suggested and just blew away the whole lot
> of macro wrappers etc. I did leave around some of the asm called from
> there but am plotting to nuke them as well after making sure we aren't
> trying to BTFIXUP code that doesn't exist.
Sorry to say that, but it does not help. On the positive side, I have
finally managed to boot 2.6.12.2 on my Hypersparc, by eliminating the
initrd support and compiling SCSI drivers into the kernel. The weird thing
is that it is enough to replace the call to __copy_1page in
__constant_memcpy (include/asm-sparc/string.h) by the call to __memcpy to
break the initrd boot. Initrd is then mounted, but attempts to run any
script (including linuxrc and init) are immediately killed by SIGSEGV, so
kernel panics unable to mount the root from the hdd. This is a complete
mystery to me because judging by the code __memcpy is supposed to be a
more generic routine. Please let me know if you have any ideas.
Thanks and best regards,
Jurij Smakov jurij@wooyd.org
Key: http://www.wooyd.org/pgpkey/ KeyID: C99E03CC
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (8 preceding siblings ...)
2005-07-09 2:22 ` Jurij Smakov
@ 2005-07-15 4:21 ` Jurij Smakov
2005-07-15 16:37 ` Bob Breuer
` (2 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: Jurij Smakov @ 2005-07-15 4:21 UTC (permalink / raw)
To: sparclinux
On Fri, 8 Jul 2005, Jurij Smakov wrote:
> On Mon, 6 Jun 2005, William Lee Irwin III wrote:
>
>> I got a bit heavy-handed as suggested and just blew away the whole lot
>> of macro wrappers etc. I did leave around some of the asm called from
>> there but am plotting to nuke them as well after making sure we aren't
>> trying to BTFIXUP code that doesn't exist.
>
> Sorry to say that, but it does not help. On the positive side, I have finally
> managed to boot 2.6.12.2 on my Hypersparc, by eliminating the initrd support
> and compiling SCSI drivers into the kernel.
Even though eliminating initrd made kernel to boot, under heavy I/O and
memory use it randomly corrupts the filesystem, so we are back to square
one.
Best regards,
Jurij Smakov jurij@wooyd.org
Key: http://www.wooyd.org/pgpkey/ KeyID: C99E03CC
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (9 preceding siblings ...)
2005-07-15 4:21 ` Jurij Smakov
@ 2005-07-15 16:37 ` Bob Breuer
2005-07-16 16:29 ` Bob Breuer
2005-07-23 1:07 ` Jurij Smakov
12 siblings, 0 replies; 14+ messages in thread
From: Bob Breuer @ 2005-07-15 16:37 UTC (permalink / raw)
To: sparclinux
Jurij Smakov wrote:
>
> Even though eliminating initrd made kernel to boot, under heavy I/O and
> memory use it randomly corrupts the filesystem, so we are back to square
> one.
That sounds less stable than mine. Currently my ss20 has been up for
about 60 hours with 2.6.12 and survived a couple kernel recompiles (I
did a 'make clean; make all' overnight to verify). The only problem
I've seen is when the scsi driver goes nuts and requires a power cycle
to recover, which seems to happen more frequently when the disk cache is
cold, but I haven't noticed any actual corruption recently.
Here's my current configuration:
hypersparc 150MHz, 512K cache
192MB ram (no highmem)
ext2/ext3 partitions
kernel 2.6.12 compiled with gcc 3.3.4
My suspicion is that highmem may cause problems. I'll try rearranging
the ram this weekend and see if I can make an initrd fail.
Bob
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (10 preceding siblings ...)
2005-07-15 16:37 ` Bob Breuer
@ 2005-07-16 16:29 ` Bob Breuer
2005-07-23 1:07 ` Jurij Smakov
12 siblings, 0 replies; 14+ messages in thread
From: Bob Breuer @ 2005-07-16 16:29 UTC (permalink / raw)
To: sparclinux
Bob Breuer wrote:
>
> My suspicion is that highmem may cause problems. I'll try rearranging
> the ram this weekend and see if I can make an initrd fail.
Yes, there are problems with highmem on hypersparcs.
With ext3 root and ext3 as a module in the initrd and 3x64MB:
banks 0,1,2 - boots ok
banks 0,5,6 - failed to mount root (tested both 2.6.11 and 2.6.12)
error message was "mount: error 15 mounting ext3"
I also tested the latest Aurora corona kernel (2.6.11-1.1166sp1) and it
mounted root without problems.
And I tried appending "memdM", but it crashed before initializing the
console (-p showed an endless loop of errors).
Hope that helps,
Bob
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: nuke string.h micro-optimizations from orbit
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
` (11 preceding siblings ...)
2005-07-16 16:29 ` Bob Breuer
@ 2005-07-23 1:07 ` Jurij Smakov
12 siblings, 0 replies; 14+ messages in thread
From: Jurij Smakov @ 2005-07-23 1:07 UTC (permalink / raw)
To: sparclinux
On Sat, 16 Jul 2005, Bob Breuer wrote:
> Bob Breuer wrote:
>>
>> My suspicion is that highmem may cause problems. I'll try rearranging
>> the ram this weekend and see if I can make an initrd fail.
>
> Yes, there are problems with highmem on hypersparcs.
Hi Bob,
I've tried disabling CONFIG_HIGHMEM, but even after that I was able to
trigger the filesystem corruption. As we were not able to find a
combination of options/patches which would make it run without crashing,
there are currently no plans to build 2.6.12 sparc32 kernel images for
Debian.
Best regards,
Jurij Smakov jurij@wooyd.org
Key: http://www.wooyd.org/pgpkey/ KeyID: C99E03CC
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2005-07-23 1:07 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-06-07 3:13 nuke string.h micro-optimizations from orbit William Lee Irwin III
2005-06-08 3:18 ` Jurij Smakov
2005-06-08 3:24 ` William Lee Irwin III
2005-06-08 4:36 ` Jurij Smakov
2005-06-08 5:29 ` Patrick Finnegan
2005-06-08 11:52 ` William Lee Irwin III
2005-06-08 19:06 ` David S. Miller
2005-06-08 19:19 ` William Lee Irwin III
2005-06-08 19:22 ` David S. Miller
2005-07-09 2:22 ` Jurij Smakov
2005-07-15 4:21 ` Jurij Smakov
2005-07-15 16:37 ` Bob Breuer
2005-07-16 16:29 ` Bob Breuer
2005-07-23 1:07 ` Jurij Smakov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.