You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
(12) |
May
(82) |
Jun
(72) |
Jul
(39) |
Aug
(104) |
Sep
(61) |
Oct
(55) |
Nov
(101) |
Dec
(48) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(52) |
Feb
(67) |
Mar
(18) |
Apr
(16) |
May
(33) |
Jun
(12) |
Jul
(102) |
Aug
(168) |
Sep
(65) |
Oct
(60) |
Nov
(43) |
Dec
(121) |
2002 |
Jan
(69) |
Feb
(32) |
Mar
(90) |
Apr
(59) |
May
(45) |
Jun
(43) |
Jul
(33) |
Aug
(21) |
Sep
(11) |
Oct
(20) |
Nov
(26) |
Dec
(3) |
2003 |
Jan
(12) |
Feb
(18) |
Mar
(11) |
Apr
(11) |
May
(41) |
Jun
(76) |
Jul
(77) |
Aug
(15) |
Sep
(38) |
Oct
(56) |
Nov
(19) |
Dec
(39) |
2004 |
Jan
(17) |
Feb
(52) |
Mar
(36) |
Apr
(34) |
May
(48) |
Jun
(85) |
Jul
(38) |
Aug
(42) |
Sep
(41) |
Oct
(77) |
Nov
(27) |
Dec
(19) |
2005 |
Jan
(32) |
Feb
(35) |
Mar
(29) |
Apr
(8) |
May
(7) |
Jun
(31) |
Jul
(46) |
Aug
(93) |
Sep
(65) |
Oct
(85) |
Nov
(219) |
Dec
(47) |
2006 |
Jan
(170) |
Feb
(103) |
Mar
(49) |
Apr
(43) |
May
(45) |
Jun
(29) |
Jul
(77) |
Aug
(82) |
Sep
(43) |
Oct
(45) |
Nov
(26) |
Dec
(85) |
2007 |
Jan
(42) |
Feb
(48) |
Mar
(64) |
Apr
(31) |
May
(88) |
Jun
(53) |
Jul
(175) |
Aug
(212) |
Sep
(91) |
Oct
(103) |
Nov
(110) |
Dec
(5) |
2008 |
Jan
(20) |
Feb
(11) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(5) |
Sep
(3) |
Oct
(12) |
Nov
|
Dec
|
From: NIIBE Y. <gn...@m1...> - 2002-10-20 04:02:10
|
I don't think change of the architecture port will be considered as "feature" in feature freeze, provided we don't have changes in generic part. Anyway, it would be good if we have: (1) Signal handler bug fix (system call restart) (2) gUSA (3) Stuart Menefy's fast memcpy (4) Stuart Menefy's fast TLB-miss handling I've tested (1), (2) in 2.4.18 throughout. I don't test (3) and (4) yet. SH-3 people should read and check (3) and (4), I think. (2) would be "feature", I've done it for MIPS, SH, and ARM. All works well. -- |
From: M. R. B. <mr...@0x...> - 2002-10-19 05:14:19
|
M. R. 2002-10-19 M. R. Brown <mr...@li...> Linux 2.5.44 * AGAINST-2.5.44: New file. * AGAINST-2.5.43: Removed. * Makefile, arch/sh/lib/old-checksum.c, drivers/block/rd.c, drivers/char/Makefile, drivers/char/Config.help, fs/nfs/inode.c, include/asm-sh/checksum.h, include/asm-sh/system.h: Merge changes from Linux 2.5.44. |
From: M. R. B. <mr...@0x...> - 2002-10-19 04:58:04
|
I have updated CVS to the latest development kernel, 2.5.43. ChangeLog is attached. As some of you may already know, there is a 2.5 feature freeze aimed around Halloween (October 31st). The last LinuxSH sync to 2.5 was about 9 months ago. Paul Mundt and myself are scrambling to get what we have in shape before the freeze - namely hacking away at the TODO list in the linux-2_5-restructure branch. I still have to test that the updated 2.5.43 HEAD builds, I'll also go ahead and remove obsoleted files and get restructure up-to-date. Because the deadline is only a week and a half off, if anyone has _anything_ that they want to go into 2.5/2.6 please speak up now. SHmedia platform support would be nice, but we don't know if that's possible. Board maintainers? Thanks, M. R. 2002-10-18 M. R. Brown <mr...@li...> * fs/nfs/inode.c: Fix merge breakage. Linux 2.5.43 * AGAINST-2.5.43: New file. * AGAINST-2.5.42: Removed. * Makefile, arch/sh/kernel/mach_7751se.c, arch/sh/kernel/mach_adx.c, arch/sh/kernel/mach_bigsur.c, arch/sh/kernel/mach_cat68701.c, arch/sh/kernel/mach_dc.c, arch/sh/kernel/mach_dmida.c, arch/sh/kernel/mach_ec3104.c, arch/sh/kernel/mach_hp600.c, arch/sh/kernel/mach_se.c, arch/sh/kernel/mach_unknown.c, arch/sh/kernel/setup.c, arch/sh/kernel/setup_cqreek.c, arch/sh/kernel/setup_dc.c, arch/sh/kernel/setup_ec3104.c, arch/sh/kernel/setup_hd64465.c, arch/sh/kernel/setup_sh2000.c, arch/sh/stboards/mach.c, drivers/block/rd.c, drivers/Makefile, drivers/char/Makefile, drivers/char/Config.help, drivers/mtd/maps/Config.in, drivers/mtd/maps/Config.help, drivers/mtd/Config.help, fs/nfs/inode.c, mm/memory.c: Merge changes from Linux 2.5.43. Linux 2.5.42 * AGAINST-2.5.42: New file. * AGAINST-2.5.41: Removed. * Makefile, drivers/block/rd.c, drivers/char/Config.help, fs/nfs/inode.c, include/linux/input.h: Merge changes from Linux 2.5.42. * Makefile: Fix merge breakage. Linux 2.5.41 * AGAINST-2.5.41: New file. * AGAINST-2.5.40: Removed. * Makefile, drivers/block/rd.c, drivers/char/Makefile, drivers/char/Config.help, drivers/char/sh-sci.c, drivers/char/sh-sci.h, drivers/mtd/maps/Config.in, drivers/mtd/maps/Config.help, drivers/net/Config.in, drivers/pci/pci.ids, drivers/pcmcia/hd64465_ss.c, fs/nfs/inode.c, include/asm-sh/unistd.h, init/do_mounts.c, mm/memory.c: Merge changes from Linux 2.5.41. Linux 2.5.40 * AGAINST-2.5.40: New file. * AGAINST-2.5.39: Removed. * Makefile, drivers/block/rd.c, drivers/net/8139too.c, mm/memory.c: Merge changes from Linux 2.5.40. Linux 2.5.39 * AGAINST-2.5.39: New file. * AGAINST-2.5.38: Removed. * Makefile, arch/sh/Makefile, arch/sh/kernel/Makefile, arch/sh/mm/Makefile, arch/sh/stboards/Makefile, drivers/block/rd.c, mm/memory.c: Merge changes from Linux 2.5.39. Linux 2.5.38 * AGAINST-2.5.38: New file. * AGAINST-2.5.37: Removed. * Makefile, drivers/block/rd.c: Merge changes from Linux 2.5.38. Linux 2.5.37 * AGAINST-2.5.37: New file. * AGAINST-2.5.36: Removed. * Makefile, drivers/block/rd.c, drivers/net/8139too.c, drivers/net/Config.in, drivers/net/Config.help, fs/nfs/inode.c, mm/memory.c: Merge changes from Linux 2.5.37. Linux 2.5.36 * AGAINST-2.5.36: New file. * AGAINST-2.5.35: Removed. * Makefile, arch/sh/Makefile, drivers/char/Makefile, kernel/ptrace.c, mm/memory.c: Merge changes from Linux 2.5.36. * Makefile: Fix merge breakage. Linux 2.5.35 * AGAINST-2.5.35: New file. * AGAINST-2.5.34: Removed. * Makefile, arch/sh/Makefile, drivers/char/Makefile, drivers/char/Config.help, drivers/pci/pci.ids, fs/nfs/inode.c, include/asm-sh/hdreg.h, include/asm-sh/pgtable.h: Merge changes from Linux 2.5.35. Linux 2.5.34 * AGAINST-2.5.34: New file. * AGAINST-2.5.33: Removed. * Makefile, arch/sh/mm/init.c, drivers/block/rd.c, drivers/char/Makefile, drivers/net/8139too.c, init/do_mounts.c, kernel/ptrace.c, mm/memory.c: Merge changes from Linux 2.5.34. Linux 2.5.33 * AGAINST-2.5.33: New file. * AGAINST-2.5.32: Removed. * Makefile, arch/sh/kernel/irq_intc2.c, arch/sh/kernel/pci-dc.c, arch/sh/kernel/pci-sh7751.c, arch/sh/kernel/pci_st40.c, drivers/char/Makefile, drivers/char/Config.help, drivers/net/8139too.c, drivers/net/Config.in, drivers/net/Config.help, fs/nfs/inode.c, include/asm-sh/cache.h: Merge changes from Linux 2.5.33. * drivers/pci/pci.ids, drivers/char/Makefile: Fix merge breakage. Linux 2.5.32 * AGAINST-2.5.32: New file. * AGAINST-2.5.31: Removed. * Makefile, arch/sh/Makefile, arch/sh/config.in, drivers/char/Makefile, drivers/char/Config.help, drivers/input/joystick/Config.help, drivers/input/joystick/Config.in, drivers/mtd/maps/Config.in, drivers/pci/pci.ids, drivers/video/epson1355fb.c, drivers/video/hitfb.c, drivers/video/pvr2fb.c, include/asm-sh/keyboard.h, include/asm-sh/smplock.h, include/linux/input.h, init/do_mounts.c, kernel/ptrace.c, mm/memory.c: Merge changes from Linux 2.5.32. Linux 2.5.31 * AGAINST-2.5.31: New file. * AGAINST-2.5.30: Removed. * Makefile, arch/sh/config.in, drivers/char/Makefile, drivers/net/8139too.c, mm/memory.c: Merge changes from Linux 2.5.31. * init/do_mounts.c, mm/memory.c: Fix merge breakage. Linux 2.5.30 * AGAINST-2.5.30: New file. * AGAINST-2.5.29: Removed. * Makefile, arch/sh/kernel/Makefile, drivers/block/rd.c, drivers/Makefile, drivers/char/Makefile, drivers/char/Config.help, drivers/net/Config.in, fs/nfs/inode.c, include/asm-sh/processor.h, include/asm-sh/socket.h, include/asm-sh/unistd.h, include/linux/input.h, init/do_mounts.c, kernel/ptrace.c, mm/memory.c: Merge changes from Linux 2.5.30. Linux 2.5.29 * AGAINST-2.5.29: New file. * AGAINST-2.5.28: Removed. * Makefile, arch/sh/config.in, drivers/input/joystick/Config.help, drivers/input/joystick/Config.in, drivers/input/joystick/Makefile, fs/nfs/inode.c, include/linux/input.h, init/do_mounts.c: Merge changes from Linux 2.5.29. Linux 2.5.28 * AGAINST-2.5.28: New file. * AGAINST-2.5.27: Removed. * Makefile, arch/sh/kernel/irq.c, arch/sh/kernel/process.c, drivers/block/rd.c, drivers/Makefile, drivers/char/Makefile, drivers/net/8139too.c, include/asm-sh/system.h, kernel/ptrace.c, mm/memory.c: Merge changes from Linux 2.5.28. Linux 2.5.27 * AGAINST-2.5.27: New file. * AGAINST-2.5.26: Removed. * Makefile, include/asm-sh/ide.h, kernel/ptrace.c, mm/memory.c: Merge changes from Linux 2.5.27. Linux 2.5.26 * AGAINST-2.5.26: New file. * AGAINST-2.5.25: Removed. * Makefile, arch/sh/config.in, drivers/char/Makefile, drivers/char/Config.help, drivers/input/joystick/Config.help, drivers/input/joystick/Config.in, drivers/input/joystick/Makefile, fs/nfs/inode.c, include/asm-sh/pgtable-2level.h, include/linux/input.h: Merge changes from Linux 2.5.26. * include/linux/input.h: Fix merge breakage. Linux 2.5.25 * AGAINST-2.5.25: New file. * AGAINST-2.5.24: Removed. =09 * Makefile, arch/sh/Makefile, arch/sh/boot/compressed/Makefile, arch/sh/boot/Makefile, drivers/char/Makefile, drivers/input/joystick/Config.help, drivers/input/joystick/Config.in, drivers/input/joystick/Makefile, fs/nfs/inode.c, include/linux/input.h, mm/memory.c: Merge changes from Linux 2.5.25. |
From: arun4linux <aru...@in...> - 2002-10-17 18:07:58
|
Hello, I'm writing a driver for a PCI based application specific controller. Infact porting from OS/2. I have couple of questions on caching problem ( i faced this when I worked on vxworks, PPC machine). Our card has its own RAM and we are mapping and using that in the driver. Ours is a pentium target machine. I'd like to know how to do cache flushing and cache invalidation in linux? Do we need to do it explicitly? The other question is existing OS/2 implementation exports the hardware personalities (PCI I/O and memory base addresses) to the application and application takes control after that. We need to use mmap to acheive the same as per requirement. Will there be any cache or any other issues on this regard? Your answers would be helpful for us as we are in the design phase. Warm Regards Arun Get Your Private, Free E-mail from Indiatimes at http://email.indiatimes.com Buy Music, Video, CD-ROM, Audio-Books and Music Accessories from http://www.planetm.co.in Change the way you talk. Indiatimes presents Valufon, Your PC to Phone service with clear voice at rates far less than the normal ISD rates. Go to http://www.valufon.indiatimes.com. Choose your plan. BUY NOW. |
From: Rekha D. <Re...@kp...> - 2002-10-17 06:18:59
|
Hi all!=20 I am trying to build the linuxsh for sh3 target with the following = sources.=20 binutils-2.13 gcc-3.0.3-5 glibc-2.2.5-3 Binutils, gcc were successfully built for the target. But while doing make in glibc I am getting the following error- sh3-linux-gcc -ml syslog.c -c -O2 -Wall -Winline -Wstrict-prototypes = -Wwrite-strings -I../include -I. = -I/home/kpit/linuxsh-2.5.9/build-glibc-2.2.5-3/misc -I.. -I../libio = -I/home/kpit/linuxsh-2.5.9/build-glibc-2.2.5-3 -I../sysdeps/sh/elf = -I../sysdeps/unix/sysv/linux/sh/sh3 -I../sysdeps/unix/sysv/linux/sh = -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common = -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv = -I../sysdeps/unix/sh -I../sysdeps/unix -I../sysdeps/posix = -I../sysdeps/sh/sh3 -I../sysdeps/sh -I../sysdeps/wordsize-32 = -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 = -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic = -nostdinc -isystem = /usr/linuxsh-2.5.9/bin/../lib/gcc-lib/sh3-linux/3.0.3/include -isystem = /usr/linuxsh-2.5.9/sh3-linux/include -include ../include/libc-symbols.h = -o /home/kpit/linuxsh-2.5.9/build-glibc-2.2.5-3/misc/syslog.o syslog.c: In function `vsyslog': syslog.c:219: `cancel_handler' undeclared (first use in this function) syslog.c:219: (Each undeclared identifier is reported only once syslog.c:219: for each function it appears in.) syslog.c:219: warning: type defaults to `int' in declaration of = `__save_FCT' syslog.c:272: called object is not a function syslog.c: In function `openlog': syslog.c:330: parse error before ')' token syslog.c:330: `__save_FCT' undeclared (first use in this function) syslog.c:330: parse error before ')' token syslog.c:338: `__save_ARG' undeclared (first use in this function) syslog.c: In function `closelog': syslog.c:362: parse error before ')' token syslog.c:362: `__save_FCT' undeclared (first use in this function) syslog.c:362: parse error before ')' token syslog.c:372: `__save_ARG' undeclared (first use in this function) make[2]: *** = [/home/kpit/linuxsh-2.5.9/build-glibc-2.2.5-3/misc/syslog.o] Error 1 make[2]: Leaving directory = `/home/kpit/fsfsrc/glibc-2.2.5-3-linuxsh/glibc-2.2.5/misc' make[1]: *** [misc/subdir_lib] Error 2 make[1]: Leaving directory = `/home/kpit/fsfsrc/glibc-2.2.5-3-linuxsh/glibc-2.2.5' make: *** [all] Error 2 Please guide me on this.=20 Thanks in advance. Rekha Bhintade KPIT Infosystems Ltd. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Free download of GNUSH and GNUH8 tool-chains for Hitachi's SH and H8 = Series. The following site also offers free support to European customers. Read more at http://www.kpit.com. Latest versions of GNUSH and GNUH8 are released on October 1, 2002. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
From: Jeremy S. <js...@mv...> - 2002-10-02 01:18:58
|
Rebuilding GDB and such, I've noticed that the offset constants in ptrace.h don't match the actual structures. From ptrace.h: #define REG_REG0 0 #define REG_REG15 15 #define REG_PC 16 #define REG_PR 17 #define REG_SR 18 #define REG_GBR 19 #define REG_MACH 20 #define REG_MACL 21 #define REG_SYSCALL 22 #define REG_FPREG0 23 #define REG_FPREG15 38 #define REG_XFREG0 39 #define REG_XFREG15 54 #define REG_FPSCR 55 #define REG_FPUL 56 and from user.h: struct user_fpu_struct { unsigned long fp_regs[16]; unsigned long xfp_regs[16]; unsigned long fpscr; unsigned long fpul; }; struct user { struct pt_regs regs; /* entire machine state */ struct user_fpu_struct fpu; /* Math Co-processor registers */ and sys_ptrace() just assumes the offset it's given is correct -- and if > sizeof(pt_regs), just indexes into user_fpu_struct... (1) What (if any) recent gdb patches did I miss this time? (2) Are there any objections to including the attached kernel patch to make the offsets consistent? (Note: rebuilding strace after this patch is applied requires changing the constant names there too.) Thanks, --Jeremy Siegel |
From: <Spa...@gi...> - 2002-09-19 02:48:54
|
Dear Bowers, Antony: would you kindly send the patch file about the SH7751R Cache configure = to me? i can't see the attached file in "http://www.geocrawler.com/mail/msg.php3?msg_id=3D9073121&list=3D3076" my email address is "spa...@gi..." Thank you for your help. Best Regards,=20 spark.kuo |
From: Jeremy S. <js...@mv...> - 2002-09-18 01:32:24
|
NIIBE Yutaka wrote: > Jeremy Siegel wrote: > > However: REG_SYSCALL (and its successors) were not updated; I think this > > implies that using them as arguments to sys_ptrace() (e.g. 4*REG_FPUL) would > > yield unexpected results. And from what I see in some of the GDB and > > GLIBC versions we're working with, there are defines for these values in > > other files which would need to be updated independently. > > Err... Yup. > > > Unless someone's already submitted such updates, I suggest we just put back a > > field at the end of pt_regs, even if it's empty; only its presence is > > required so ptrace() users like gdb have a view of "user" space consistent > > with the kernel. [Actually, I'd like to fill it in with info like the old > > syscall_nr, i.e. system call and argcount; then "get_wchan()" might be able > > to return something more useful, and strace could consistency-check the > > argument count if desired.] > > How about following: > Put back the field for 2.4 kernel with empty value. > > 2.5 has same issues for clobbered "r0", > porting the fix, remove the field for userspace too. > > That is, no userspace change for 2.4, but for 2.5. > > Please go ahead for 2.4 changes. I'll forward-port it to 2.5. Ok -- I'll put the field back just as a placeholder so glibc/gdb/strace etc. can be consistent. Ran into something else w/strace. Since r0 (ret-code) is saved on the stack, and r8/r9 set up at syscall_ret() and syscall_ret_trace(), the new sys_sigreturn() forces "not from syscall" in r8 and returns directly to ret_from_syscall(). This means that when a signal to a PTRACEd process calls sys_sigreturn() after the signal, you get a syscall_trace() call on entry to sys_sigreturn(), but not on exit. [Same with sys_rt_sigreturn(), of course.] Turns out this confuses strace (in my version, at least) since only certain calls (e.g. exit(), fork()) are expected to be unbalanced. Copying the MIPS solution seemed to work, i.e. adding: if (current->ptrace & PT_TRACESYS) syscall_trace(); before return of sys_sigreturn() and sys_rt_sigreturn() seemed to do the trick; but I thought it might be preferable to simply move the r8/r9 setting from syscall_ret() and syscall_ret_trace() to right before the system call. Since those regs will be saved and restored by the sys_xxx() function prologue and epilogue, they'll still be valid on return to syscall_ret*, and sys_sigreturn doesn't have to modify them or skip any code. (Of course, it then has to return the correct value, as before, since r0 will be saved to the stack.) The attached patch adds the empty field, and changes the sys_sig*return() setup as described. Any objections to commiting this? Preference for the C code above instead, or any other issues? (Admittedly this has been only minimally tested, strace w/signals and a select() restart.) I also have an unrelated question: in the x86 code there's a cli at ret_from_syscall(), followed by an sti() at signal_return() (before calling do_signal); in SH we have the effective CLI, but we don't have the STI, so do_signal() is called with interrupts disabled. I doubt this is a big deal, but I'm wondering if there's any particular reason for the difference? Thanks! --Jeremy |
From: NIIBE Y. <gn...@m1...> - 2002-09-17 01:40:17
|
There was a race at initialization of SCI. It's better to register irq earlier. 2002-09-17 NIIBE Yutaka <gn...@m1...> * drivers/char/sh-sci.c (sci_open): Call sci_request_irq before calling gs_init_port. Suggested by Yoshinori Sato. Index: drivers/char/sh-sci.c =================================================================== RCS file: /cvsroot/linuxsh/linux/drivers/char/sh-sci.c,v retrieving revision 1.1.1.1.2.3 diff -u -3 -p -r1.1.1.1.2.3 sh-sci.c --- drivers/char/sh-sci.c 28 Aug 2002 00:48:45 -0000 1.1.1.1.2.3 +++ drivers/char/sh-sci.c 17 Sep 2002 01:37:34 -0000 @@ -1005,30 +1005,30 @@ static int sci_open(struct tty_struct * port->tqueue.data = port; port->break_flag = 0; + if (port->gs.count == 1) { + MOD_INC_USE_COUNT; + + retval = sci_request_irq(port); + if (retval) { + goto failed_1; + } + } + /* * Start up serial port */ retval = gs_init_port(&port->gs); if (retval) { - goto failed_1; + goto failed_2; } port->gs.flags |= GS_ACTIVE; sci_setsignals(port, 1,1); - if (port->gs.count == 1) { - MOD_INC_USE_COUNT; - - retval = sci_request_irq(port); - if (retval) { - goto failed_2; - } - } - retval = gs_block_til_ready(port, filp); if (retval) { - goto failed_3; + goto failed_2; } if ((port->gs.count == 1) && (port->gs.flags & ASYNC_SPLIT_TERMIOS)) { @@ -1072,11 +1072,10 @@ static int sci_open(struct tty_struct * return 0; -failed_3: - sci_free_irq(port); failed_2: - MOD_DEC_USE_COUNT; + sci_free_irq(port); failed_1: + MOD_DEC_USE_COUNT; port->gs.count--; return retval; } |
From: NIIBE Y. <gn...@m1...> - 2002-09-11 22:57:52
|
Jeremy Siegel wrote: > However: REG_SYSCALL (and its successors) were not updated; I think this > implies that using them as arguments to sys_ptrace() (e.g. 4*REG_FPUL) would > yield unexpected results. And from what I see in some of the GDB and > GLIBC versions we're working with, there are defines for these values in > other files which would need to be updated independently. Err... Yup. > Unless someone's already submitted such updates, I suggest we just put back a > field at the end of pt_regs, even if it's empty; only its presence is > required so ptrace() users like gdb have a view of "user" space consistent > with the kernel. [Actually, I'd like to fill it in with info like the old > syscall_nr, i.e. system call and argcount; then "get_wchan()" might be able > to return something more useful, and strace could consistency-check the > argument count if desired.] How about following: Put back the field for 2.4 kernel with empty value. 2.5 has same issues for clobbered "r0", porting the fix, remove the field for userspace too. That is, no userspace change for 2.4, but for 2.5. Please go ahead for 2.4 changes. I'll forward-port it to 2.5. The field would be useful, but it costs. With no tra field, the latency of system call improves for some cycles (I know it's almost zero, though), and stack consumption decreases 4-byte (which makes sense for me). -- |
From: Jeremy S. <js...@mv...> - 2002-09-11 17:39:31
|
Niibe et. al., The recent changes for syscall restart on signal use r8 and r9 to pass the "from syscall" status and "original r0" value to do_signal from entry.S, eliminating the need for the "tra" field of pt_regs (formerly "syscall_nr") to carry the "from syscall" information. Therefore, the "tra" field was removed from the pt_regs structure. However: REG_SYSCALL (and its successors) were not updated; I think this implies that using them as arguments to sys_ptrace() (e.g. 4*REG_FPUL) would yield unexpected results. And from what I see in some of the GDB and GLIBC versions we're working with, there are defines for these values in other files which would need to be updated independently. Unless someone's already submitted such updates, I suggest we just put back a field at the end of pt_regs, even if it's empty; only its presence is required so ptrace() users like gdb have a view of "user" space consistent with the kernel. [Actually, I'd like to fill it in with info like the old syscall_nr, i.e. system call and argcount; then "get_wchan()" might be able to return something more useful, and strace could consistency-check the argument count if desired.] (On the other hand, I suppose we can just modify sys_ptrace() to account for the missing field when deciding what to return (or modify) based on the offset argument...) Any comments? Since I think adding an empty field is easiest, if there are no objections I'll assume that's the way to go... Thanks, --Jeremy |
From: Jeremy S. <js...@mv...> - 2002-09-10 00:44:36
|
ko...@we... wrote: > Hello list, > > please give me some hints for starting with Linux on SH: > - Development of 2.4 series seems to have stalled with 2.4.13. > Are there any recent 2.4 kernels available? How is the > development syncronized with the 'standard' kernel? That's because you're looking at the "old" tree... in the SourceForge CVS there's a "kernel" module containing the full kernel, which has indeed been untouched for months -- but there's also a "linux" module containing a "drop-in" tree, which is where current development is proceeding. To use the drop-in tree you run the "scripts/treelink.sh" script, pointing it to a tree you've pulled from kernel.org; the script will replace files in your kernel tree with symlinks to the drop-in tree. Note that there are multiple development lines (CVS branches) here; MAIN goes with kernel version 2.5, while "linux-2_4-branch" goes with version 2.4. At the top level there's a file named "AGAINST-<version>" where <version> indicates the exact kernel version to link to. Right now we're at 2.4.18 on the 2.4 branch, and 2.5.24 on the trunk. When we move up, the tree is first tagged with "linux-<version>" (the <version> number with dots replaced by underscores, e.g. "linux-2_4_14"); then the changes for the new version are committed -- including a replacement of AGAINST-<oldversion> with AGAINST-<newversion>. So if you want the tree for a specific standard kernel version, you can get it that way. (This is all described somewhere by M.R. Brown, either in documents on the SourceForge site or in old emails in the list archives. Might be worth looking for those. I don't have pointers handy.) |
From: <ko...@we...> - 2002-09-08 17:48:19
|
Hello list, please give me some hints for starting with Linux on SH: - Development of 2.4 series seems to have stalled with 2.4.13. Are there any recent 2.4 kernels available? How is the development syncronized with the 'standard' kernel? - where do I get a good X-toolchain for kernel/userland development? - How well are the following interfaces supported: on SH4 CPU: SCI/SCIF and RTC on companion HD64465: - PCMCIA (anyone experience with CFlash disk on PCMCIA?) - USB - PowerManagement functions - UART - Kbd and PS/2 Thanks for your answers and hints. Konnow ______________________________________________________________________________ Jetzt testen fur 1 Euro! Ihr All-in-one-Paket! https://digitaledienste.web.de/Club/?mc=021106 |
From: <mj...@al...> - 2002-09-03 04:26:37
|
Hello everyone, Messages have not been getting through because I've been unable to approve them. (My ISP wouldn't stop forwarding my mail to my other ISP). Messages will now go through as before. I apologize for the inconvenience. Mitch. |
From: NIIBE Y. <gn...@m1...> - 2002-09-02 08:16:47
|
Jeremy Siegel wrote: > Simply putting the COPY(regs[0]) in restore_sigcontext() seemed to help > with the some of the problems I saw, but maybe not all. I think this is the way to go. Please go ahead. The problem is that the messages to linuxsh-dev never be delivered these days. The messages I've sent were lost. -- |
From: Jeremy S. <jas...@pa...> - 2002-09-02 07:22:03
|
Hi Niibe, I saw the recent signal.c and entry.S changes; if I understand correctly, the idea is to make sure that r0 (arg4) is restored correctly when a syscall is restarted (better than providing random arbitrary arguments!) and that strace always sees a new task return 0 from fork(). But after picking them up, I had some problems; here's what seems to be going on. In signal.c:restore_sigcontext(), r0 was never copied back to the exception frame. This was fine when it was copied to a local variable returned by sys_sigreturn() to entry.S:syscall_ret(), since it was put into the exception frame there -- but now that sys_sigreturn() goes directly to ret_from_syscall, the r0 value is not restored; the exception frame retains whatever arbitrary r0 value was left by the signal handler, and when the original syscall resumes (if it was *not* restarted) then the return value is bogus. (Similarly, I suspect that if a process was simply scheduled during a timeslice interrupt and is rescheduled with a pending signal, the r0 value may be stomped on as well.) Simply putting the COPY(regs[0]) in restore_sigcontext() seemed to help with the some of the problems I saw, but maybe not all. Does that seem a reasonable thing to do? Or are all these changes still considered experimental, and I just shouldn't be using them yet? Thanks, --Jeremy Siegel (js...@mv...) |
From: kaz K. <kk...@rr...> - 2002-09-02 02:58:24
|
Hi! I put a patch against mainline gcc (CVS, version 3.3 20020831), which enables the DWARF2 exception for SH-3/4 and the better support for c++ and java: http://dodo.nurs.or.jp/~kkojima/gnu-on-sh/gcc-sh-20020831.diff As usual, it is an experimental one. Don't use it for your real work and please forget it when it doesn't work for you :-) I've tested it only for the little endian SH-4. BTW, the compiler part was sent to the gcc mailing list already, but too late to add new features to 3.3. Tiny changes for libffi and libjava are not yet sent, since they are meaningless until the compiler part is approved. Note: This patch slightly depends on the kernel version. It assumes 2.4.18 with Jeremy's siginfo fix. For another kernels, you have to rewrite MD_FALLBACK_FRAME_STATE_FOR in gcc/config/sh/linux.h. I'm adding CXXFLAGS='-g -O' when building to avoid a few unresolved problems of the current gcc 3.3 for SH. kaz |
From: NIIBE Y. <gn...@m1...> - 2002-08-29 11:21:38
|
I've sent two or three message to this list, but can't see. I've fixed long standing bugs. -- |
From: NIIBE Y. <gn...@m1...> - 2002-08-28 16:51:50
|
Another long standing bug. 2002-08-29 NIIBE Yutaka <gn...@m1...> Bug fix. * include/asm-sh/uaccess.h (__get_user_check, __put_user_check): Return -EFAULT if not __access_ok. Index: include/asm-sh/uaccess.h =================================================================== RCS file: /cvsroot/linuxsh/linux/include/asm-sh/uaccess.h,v retrieving revision 1.1.1.1.2.3 diff -u -3 -p -r1.1.1.1.2.3 uaccess.h --- include/asm-sh/uaccess.h 17 Apr 2002 03:58:27 -0000 1.1.1.1.2.3 +++ include/asm-sh/uaccess.h 28 Aug 2002 16:47:10 -0000 @@ -102,12 +102,11 @@ default: __get_user_unknown(); break; \ } x = (__typeof__(*(ptr))) __gu_val; __gu_err; }) #define __get_user_check(x,ptr,size) ({ \ -long __gu_err; \ +long __gu_err = -EFAULT; \ __typeof__(*(ptr)) __gu_val; \ long __gu_addr; \ __asm__("":"=r" (__gu_val)); \ __gu_addr = (long) (ptr); \ -__asm__("":"=r" (__gu_err)); \ if (__access_ok(__gu_addr,size)) { \ switch (size) { \ case 1: __get_user_asm("b"); break; \ @@ -155,12 +154,11 @@ default: __put_user_unknown(); break; \ } __pu_err; }) #define __put_user_check(x,ptr,size) ({ \ -long __pu_err; \ +long __pu_err = -EFAULT; \ __typeof__(*(ptr)) __pu_val; \ long __pu_addr; \ __pu_val = (x); \ __pu_addr = (long) (ptr); \ -__asm__("":"=r" (__pu_err)); \ if (__access_ok(__pu_addr,size)) { \ switch (size) { \ case 1: __put_user_asm("b"); break; \ |
From: NIIBE Y. <gn...@m1...> - 2002-08-28 06:04:59
|
I've found two (long-standing) bugs, when reviewing gUSA implementation. (1) There was a problem on restarting system call. If the arguments of system call is more than four, the fifth argument will be clobbered on restarting. Because register r0 is clobbered by return value of system call. (2) If the process is traced, fork returns bogus value for child process. Here're fixes. Will do for 2.5. 2002-08-28 NIIBE Yutaka <gn...@m1...> Bug fixes of system call restart, fork on traced process. * arch/sh/kernel/signal.c: Change the arguments. (sys_sigsuspend, sys_rt_sigsuspend): Follow the change. (restore_sigcontext): Remove handling of r0. (do_sigreturn): New function (was: sys_sigreturn). (do_rt_sigreturn): New function (was: sys_rt_sigreturn). (sys_sigreturn, sys_rt_sigreturn): Syscall entries. Calling do_XXX, and go back to ret_from_syscall without setting r0. (handle_signal): Added from_syscall and orig_r0 arguments. Restore regs->regs[0] on ERESTARTSYS/ERESTARTNOINTR (BUG Fix). (do_signal): Rearrange arguments. Restore regs.regs[0] on ERESTARTSYS/ERESTARTNOINTR (BUG Fix). * arch/sh/kernel/entry.S (OFF_TRA): Removed. (system_call): Don't set regs->tra (as it's removed). (ret_from_fork): Set return value (r0) as 0, before going to syscall_ret or syscall_ret_trace (BUG Fix). (syscall_ret_trace, syscall_ret): Save original value of r0 into r9. Set r8 as 1 indicating it's from syscall. (ret_from_exception): Set r8 as 0. (signal_return): Follow the change of arguments of do_signal. (restore_all, handle_exception): Remove handling of tra. * include/asm-sh/ptrace.h (struct pt_regs): Removed the member tra. Index: arch/sh/kernel/entry.S =================================================================== RCS file: /cvsroot/linuxsh/linux/arch/sh/kernel/entry.S,v retrieving revision 1.1.1.1.2.8 diff -u -3 -p -r1.1.1.1.2.8 entry.S --- arch/sh/kernel/entry.S 15 Aug 2002 14:17:56 -0000 1.1.1.1.2.8 +++ arch/sh/kernel/entry.S 28 Aug 2002 05:57:02 -0000 @@ -32,6 +32,12 @@ * * jmp @k0 ! control-transfer instruction * ldc k1, ssr ! delay slot + */ + +/* + * ABI at ret_from_syscall: + * r8: from_syscall (0 or 1) indicating it's from syscall or not + * r9: original r0 (to restart system call) * * Stack layout in 'ret_from_syscall': * ptrace needs to have all regs on the stack. @@ -47,7 +53,6 @@ * gbr * mach * macl - * syscall # * */ @@ -96,8 +101,6 @@ OFF_R7 = 28 /* New ABI: ar OFF_SP = (15*4) OFF_PC = (16*4) OFF_SR = (16*4+8) -OFF_TRA = (16*4+6*4) - #define k0 r0 #define k1 r1 @@ -331,7 +334,8 @@ ENTRY(ret_from_fork) mov.l @(tsk_ptrace,r0), r0 ! Is current PTRACE_SYSCALL'd? mov #PT_TRACESYS, r1 tst r1, r0 - bt ret_from_syscall + bt/s syscall_ret + mov #0, r0 bra syscall_ret_trace nop @@ -377,11 +381,7 @@ system_call: cmp/hi r9, r8 bt debug_trap ! - mov #OFF_TRA, r14 - add r15, r14 - ! ! New Syscall ABI - mov.l r8, @r14 ! set tra STI() ! stc k_current, r11 @@ -434,6 +434,8 @@ system_call: ! In case of trace syscall_ret_trace: + mov.l @(OFF_R0,r15), r9 ! save original value of r0 + mov #1, r8 ! indicate it's syscall return mov.l r0, @(OFF_R0,r15) ! save the return value mov.l __syscall_trace, r1 mova SYMBOL_NAME(ret_from_syscall), r0 @@ -488,10 +490,12 @@ ret_from_exception: bt restore_all ! Yes, it's from kernel, go back soon ! bra ret_from_syscall - nop + mov #0, r8 ! indicate it's *not* syscall return .align 2 syscall_ret: + mov.l @(OFF_R0,r15), r9 ! save original value of r0 + mov #1, r8 ! indicate it's syscall return mov.l r0, @(OFF_R0,r15) ! save the return value /* fall through */ @@ -509,9 +513,10 @@ ENTRY(ret_from_syscall) tst r0, r0 bt restore_all signal_return: - mov r15, r4 - mov #0, r5 mov.l __do_signal, r1 + mov #0, r4 + mov r8, r5 + mov r9, r6 mova restore_all, r0 jmp @r1 lds r0, pr @@ -551,7 +556,6 @@ restore_all: ldc.l @r15+, gbr lds.l @r15+, mach lds.l @r15+, macl - add #4, r15 ! Skip syscall number ! ! Calculate new SR value mov k3, k2 ! original SR value @@ -665,11 +669,9 @@ handle_exception: add current, k1 mov k1, r15 ! change to kernel stack ! -9: mov #-1, k4 - mov.l 3f, k1 - ! Save the user registers on the stack. - mov.l k4, @-r15 ! Set tra (default: -1) +9: mov.l 3f, k1 ! + ! Save the user registers on the stack. sts.l macl, @-r15 sts.l mach, @-r15 stc.l gbr, @-r15 Index: arch/sh/kernel/signal.c =================================================================== RCS file: /cvsroot/linuxsh/linux/arch/sh/kernel/signal.c,v retrieving revision 1.1.1.1.2.5 diff -u -3 -p -r1.1.1.1.2.5 signal.c --- arch/sh/kernel/signal.c 20 Aug 2002 01:15:48 -0000 1.1.1.1.2.5 +++ arch/sh/kernel/signal.c 28 Aug 2002 05:57:02 -0000 @@ -30,7 +30,9 @@ #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) -asmlinkage int do_signal(struct pt_regs *regs, sigset_t *oldset); +asmlinkage int do_signal(sigset_t *oldset, int from_syscall, + unsigned long orig_r0, unsigned long r7, + struct pt_regs regs); int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from) { @@ -88,7 +90,7 @@ sys_sigsuspend(old_sigset_t mask, while (1) { current->state = TASK_INTERRUPTIBLE; schedule(); - if (do_signal(®s, &saveset)) + if (do_signal(&saveset, 1, 0, 0, regs)) return -EINTR; } } @@ -117,7 +119,7 @@ sys_rt_sigsuspend(sigset_t *unewset, siz while (1) { current->state = TASK_INTERRUPTIBLE; schedule(); - if (do_signal(®s, &saveset)) + if (do_signal(&saveset, 1, 0, 0, regs)) return -EINTR; } } @@ -217,7 +219,7 @@ static inline int save_sigcontext_fpu(st #endif static int -restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *r0_p) +restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc) { unsigned int err = 0; @@ -248,19 +250,15 @@ restore_sigcontext(struct pt_regs *regs, err |= restore_sigcontext_fpu(sc); } #endif - - regs->tra = -1; /* disable syscall checks */ - err |= __get_user(*r0_p, &sc->sc_regs[0]); return err; } -asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5, - unsigned long r6, unsigned long r7, - struct pt_regs regs) +static void do_sigreturn(unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7, + struct pt_regs regs) { struct sigframe *frame = (struct sigframe *)regs.regs[15]; sigset_t set; - int r0; if (verify_area(VERIFY_READ, frame, sizeof(*frame))) goto badframe; @@ -278,23 +276,35 @@ asmlinkage int sys_sigreturn(unsigned lo recalc_sigpending(current); spin_unlock_irq(¤t->sigmask_lock); - if (restore_sigcontext(®s, &frame->sc, &r0)) + if (restore_sigcontext(®s, &frame->sc)) goto badframe; - return r0; + return; badframe: force_sig(SIGSEGV, current); - return 0; } -asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5, - unsigned long r6, unsigned long r7, - struct pt_regs regs) +asm volatile ("" + ".align 2\n\t" + ".globl sys_sigreturn\n" +"sys_sigreturn:\n\t" + "mov.l 1f, r0\n\t" + "mov.l 2f, r1\n\t" + "mov #0, r8 ! indicate it's *not* from syscall\n\t" + "jmp @r0\n\t" + " lds r1, pr ! override the return address\n\t" + ".align 2\n" +"1: do_sigreturn\n\t" +"2: ret_from_syscall" +); + +static void do_rt_sigreturn(unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7, + struct pt_regs regs) { struct rt_sigframe *frame = (struct rt_sigframe *)regs.regs[15]; sigset_t set; stack_t st; - int r0; if (verify_area(VERIFY_READ, frame, sizeof(*frame))) goto badframe; @@ -308,7 +318,7 @@ asmlinkage int sys_rt_sigreturn(unsigned recalc_sigpending(current); spin_unlock_irq(¤t->sigmask_lock); - if (restore_sigcontext(®s, &frame->uc.uc_mcontext, &r0)) + if (restore_sigcontext(®s, &frame->uc.uc_mcontext)) goto badframe; if (__copy_from_user(&st, &frame->uc.uc_stack, sizeof(st))) @@ -316,13 +326,25 @@ asmlinkage int sys_rt_sigreturn(unsigned /* It is more difficult to avoid calling this function than to call it and ignore errors. */ do_sigaltstack(&st, NULL, regs.regs[15]); - - return r0; + return; badframe: force_sig(SIGSEGV, current); - return 0; -} +} + +asm volatile ("" + ".align 2\n\t" + ".globl sys_sigreturn\n" +"sys_rt_sigreturn:\n\t" + "mov.l 1f, r0\n\t" + "mov.l 2f, r1\n\t" + "mov #0, r8 ! indicate it's *not* from syscall\n\t" + "jmp @r0\n\t" + " lds r1, pr ! override the return address\n\t" + ".align 2\n" +"1: do_rt_sigreturn\n\t" +"2: ret_from_syscall" +); /* * Set up a signal frame. @@ -507,10 +529,11 @@ give_sigsegv: static void handle_signal(unsigned long sig, struct k_sigaction *ka, - siginfo_t *info, sigset_t *oldset, struct pt_regs * regs) + siginfo_t *info, sigset_t *oldset, struct pt_regs *regs, + int from_syscall, unsigned long orig_r0) { /* Are we from a system call? */ - if (regs->tra >= 0) { + if (from_syscall) { /* If so, check system call restarting.. */ switch (regs->regs[0]) { case -ERESTARTNOHAND: @@ -524,6 +547,7 @@ handle_signal(unsigned long sig, struct } /* fallthrough */ case -ERESTARTNOINTR: + regs->regs[0] = orig_r0; regs->pc -= 2; } } else { @@ -566,7 +590,8 @@ handle_signal(unsigned long sig, struct * the kernel can handle, and then we build all the user-level signal handling * stack-frames in one go after that. */ -int do_signal(struct pt_regs *regs, sigset_t *oldset) +int do_signal(sigset_t *oldset, int from_syscall, unsigned long orig_r0, + unsigned long r7, struct pt_regs regs) { siginfo_t info; struct k_sigaction *ka; @@ -577,7 +602,7 @@ int do_signal(struct pt_regs *regs, sigs * kernel mode. Just return without doing anything * if so. */ - if (!user_mode(regs)) + if (!user_mode(®s)) return 1; if (!oldset) @@ -662,7 +687,7 @@ int do_signal(struct pt_regs *regs, sigs case SIGQUIT: case SIGILL: case SIGTRAP: case SIGABRT: case SIGFPE: case SIGSEGV: case SIGBUS: case SIGSYS: case SIGXCPU: case SIGXFSZ: - if (do_coredump(signr, regs)) + if (do_coredump(signr, ®s)) exit_code |= 0x80; /* FALLTHRU */ @@ -676,17 +701,19 @@ int do_signal(struct pt_regs *regs, sigs } /* Whee! Actually deliver the signal. */ - handle_signal(signr, ka, &info, oldset, regs); + handle_signal(signr, ka, &info, oldset, ®s, + from_syscall, orig_r0); return 1; } /* Did we come from a system call? */ - if (regs->tra >= 0) { + if (from_syscall) { /* Restart the system call - no handlers present */ - if (regs->regs[0] == -ERESTARTNOHAND || - regs->regs[0] == -ERESTARTSYS || - regs->regs[0] == -ERESTARTNOINTR) { - regs->pc -= 2; + if (regs.regs[0] == -ERESTARTNOHAND || + regs.regs[0] == -ERESTARTSYS || + regs.regs[0] == -ERESTARTNOINTR) { + regs.regs[0] = orig_r0; + regs.pc -= 2; } } return 0; Index: include/asm-sh/ptrace.h =================================================================== RCS file: /cvsroot/linuxsh/linux/include/asm-sh/ptrace.h,v retrieving revision 1.1.1.1.2.2 diff -u -3 -p -r1.1.1.1.2.2 ptrace.h --- include/asm-sh/ptrace.h 24 May 2002 14:41:19 -0000 1.1.1.1.2.2 +++ include/asm-sh/ptrace.h 28 Aug 2002 05:57:02 -0000 @@ -62,7 +62,6 @@ struct pt_regs { unsigned long gbr; unsigned long mach; unsigned long macl; - long tra; }; #ifdef __KERNEL__ |
From: NIIBE Y. <gn...@m1...> - 2002-08-28 00:52:31
|
Matt Boytim wrote: > matt@annie:~/src/linux/drivers/char$ diff -u sh-sci.c.O sh-sci.c > --- sh-sci.c.O Wed Jul 31 00:55:39 2002 > +++ sh-sci.c Wed Jul 31 00:57:08 2002 > @@ -572,6 +572,10 @@ > if (copied) > /* Tell the rest of the system the news. New characters! */ > tty_flip_buffer_push(tty); > + else { > + sci_in(port, SCxSR); /* dummy read */ > + sci_out(port, SCxSR, SCxSR_RDxF_CLEAR(port)); > + } > } > > static inline int sci_handle_errors(struct sci_port *port) Thanks, applied. Both (current and 2.4) -- |
From: Adrian M. <ad...@mc...> - 2002-08-26 21:32:16
|
On Monday 26 Aug 2002 9:14 pm, Adrian McMenamin wrote: > I have this problem: For some reason this message does not appear to have been delivered. If it ever is, please ignore it. My problems appeared to be related to a corrupted stock kernel. Adrian |
From: Adrian M. <ad...@mc...> - 2002-08-26 20:13:40
|
I have this problem: sh4-linux-gcc -D__KERNEL__ -I/home/Adrian/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -ml -m4 -mno-implicit-fp -pipe -c -o sh-sci.o sh-sci.c sh-sci.c: In function `sci_handle_breaks': sh-sci.c:803: warning: label `break_continue' defined but not used sh-sci.c: In function `sci_ioctl': sh-sci.c:1112: void value not ignored as it ought to be make[3]: *** [sh-sci.o] Error 1 make[3]: Leaving directory `/home/Adrian/linux/drivers/char' make[2]: *** [first_rule] Error 2 make[2]: Leaving directory `/home/Adrian/linux/drivers/char' make[1]: *** [_subdir_char] Error 2 make[1]: Leaving directory `/home/Adrian/linux/drivers' make: *** [_dir_drivers] Error 2 This appears to indicate that a recentish (5 months ago) patch to this file breaks compilation on my system (Dreamcast). Is this a known problem or have I got something wrong here? Adrian |
From: NIIBE Y. <gn...@m1...> - 2002-08-22 02:16:04
|
Jeremy Siegel wrote: > I think the gUSA idea is really clever! Thanks a lot. I've tested some. With lmbench 2.0, I can't find any performance regressions. I mean, there's no bad effect for the changes. I've been afraid that it would affect context switch time and/or signal handling time (just slightly), but nothing. I've tested performance of mutual exclusion with gUSA. The program I've used is: ftp://ftp.m17n.org:/pub/super-h/eaa.c Clearly, it's efficent. Actually, I've tested gUSA on MIPS 5900 (with PlayStation 2). It works well on that architecture too. > One suggestion though: would it be possible to put in a few more > checks (like limit the offset in the SP to a relatively small > number, and check that the current PC is within the bounds > specified by the implied arguments in r1 etc)? Well, it would be. Yes, we need to think about security issues, so that gUSA introduces no security concerns. For SuperH (and MIPS R5900) implementation, gUSA mark is: SP > 0xc0000000. I think that it's unlikely that SP becomes such state in normal program. Malicious user could do that on purpose (or with buffer overflow), but it doesn't affect system security, just the process matters. > BTW, when you first proposed this you said you had some pushback > from the general kernel community; has there been any change in > that? Not so much so far. I'll do that again, as I'm confident gUSA is general (it's general mutual exclusion construction), generic (it could be used on many architectures) , and gentle (no bad effect on system) scheme. I've written a paper for gUSA (in Japanese) for forthcoming Linux Conference 2002. http://www.m17n.org/gniibe/lc02/gusa.pdf http://www.m17n.org/gniibe/lc02/gusa.ps I think it's worth to translate this into English, but I have no time for a while. I have Sharp Zaurus (Linux based PDA), it uses SA-1100 (StrongARM). I'll play gUSA with that. > Second: Even with the fix, there are still a couple __clear_user problems; > if there's no objection, I'd like to include the attached patch. (First > hunk addresses the issue of r2 being uninitialized when you get to .Larea2 > for a small clear; second hunk addresses a false termination of area 2.) Oh well. Thanks. Please go ahead. -- |
From: Jeremy S. <js...@mv...> - 2002-08-22 01:08:39
|
NIIBE Yutaka wrote: > It's sad that our test coverage is bad. > I've found a bug of __clear_user, fixed. > I've committed gUSA implementation for 2.4.18. > > I'm testing. After that, I will tag 2_4_18 and merge 2.4.19. Hi Niibe, I think the gUSA idea is really clever! One suggestion though: would it be possible to put in a few more checks (like limit the offset in the SP to a relatively small number, and check that the current PC is within the bounds specified by the implied arguments in r1 etc)? That could help reduce the chance that a frame/stack overflow bug being mistaken for a gUSA operation (though I don't know that it matters much.) BTW, when you first proposed this you said you had some pushback from the general kernel community; has there been any change in that? Second: Even with the fix, there are still a couple __clear_user problems; if there's no objection, I'd like to include the attached patch. (First hunk addresses the issue of r2 being uninitialized when you get to .Larea2 for a small clear; second hunk addresses a false termination of area 2.) Thanks, --Jeremy |