[Openmcl-devel] Unable to run linuxppc version on Ubuntu Hardy Heron

Bruce O'Neel ecl at pckswarms.ch
Fri Sep 5 20:14:17 UTC 2008


Hi,

Brilliant!  Thank you very much.  I was quite sad to think that
ccl wouldn't continue to run on my ppc systems.

Thanks!

cheers

bruce

On Fri, Sep 05, 2008 at 07:14:59AM -0600, Gary Byers wrote:
> The PPC offers addressing modes which make it easy to deal with 16-bit
> constants and 16-bit absolute addresses.  CCL exploits this: things
> like NIL and T are 16-bit constants (and the addresses of things
> that are mapped into low memory); conditional calls to runtime 
> support routines can use "branch absolute" instructions to call
> those routines (which are also mapped into the low 16 bits of
> the address space.)  Apple uses a similar scheme to reference
> critical library routines in OSX (since the addressing mode
> generally involved signed 16-bit addresses, Apple's scheme uses
> addresses in the high 16 bits of the address space.)  That sort
> of thing is what the addressing modes are for, after all.
> 
> Recent Linux kernels can be configured to enforce an upper limit on the
> range of addresses that a (non-root) process is allowed to map
> into its address space; this is intended (if I understand correctly)
> to avoid problems having to do with NULL pointer references in the
> Linux kernel.  It's not clear how effective this is in dealing
> with those problems, but at least Ubuntu 8.04 and Fedora 9 ship
> with the feature enabled and with a tunable parameter set to
> restrict a process's access to the low 64K of its address space.
> Whether this makes sense or not on other architectures is debatable;
> on the PPC, it means that applications that want to exploit 16-bit
> PPC addressing are prohibited from doing so.  I honestly don't
> know if anyone involved in this decision thought about this issue
> or what they concluded if so.  It's a little hard to believe
> that much thought went into that decision.
> 
> Fortunately, there are a few workarounds:
> 
> - the restriction doesn't apply to processes running as root,
>   so something like:
> 
> shell> sudo ccl
> 
> should allow the lisp to exercise control over its own address space.
> (What a concept.)
> 
> - the "tunable parameter" is likely exposed as the contents of
> the pseudofile "/proc/sys/vm/mmap_min_addr".  In the systems
> that I've seen, cat'ing this file returns
> 
> shell> cat /proc/sys/vm/mmap_min_addr
> 65536
> 
> which has the effect of restricting a non-root process's access
> to the low 64K of its address space.  Writing a smaller value
> to that file (as root) will remove this restriction
> 
> # echo 4096 > /proc/sys/vm/mmap_min_addr
> 
> until the system is rebooted.
> 
> - it -may- be possible to change this value via 'sysctl', either until
> the next reboot
> 
> # /sbin/sysctl -w vm.mmap_min_addr=4096
> 
> or by adding a line of the form
> 
> vm.mmap_min_addr=4096
> 
> to /etc/sysctl.conf
> 
> (which will take effect on the next and subsequent reboots.)
> 
> (The 4K value in the examples above makes NULL pointers impossible
> but does make it possible for applications to use low-memory
> addresses.)
> 
> On X86[64], there's no architectural advantage to using 16-bit
> addresses (when it's even possible to do so.)   Version 1.1 of
> CCL/OpenMCL happened to use very similar/very low addresses
> (there was no reason not to); 1.2 and later use addresses
> above 64K (mostly because Windows restricts address to the low
> 64K for other reasons.)
> 
> It might be possible to rearchitect PPC CCL to not try to
> exploit architectural features, but it's not particularly
> attractive.
> 
> On Fri, 5 Sep 2008, Bruce O'Neel wrote:
> 
> >Hi,
> >
> >On my Debian ppc systems ppccl runs fine.  I have to build it from source, 
> >but, no
> >problem.
> >
> >A uname -a shows:
> >
> >Linux gnosca 2.6.18-6-powerpc #1 Tue Aug 19 04:51:39 UTC 2008 ppc GNU/Linux
> >
> >On my ubuntu hardy heron system the downloaded one, or, one built from 
> >source, doesn't run.
> >It doesn't matter whether one tries the trunk svn checkout or the 1.2 
> >release.
> >
> >edoneel at jungfrau:~/tmp/ccl$ ./ppccl
> >Killed
> >edoneel at jungfrau:~/tmp/ccl$ strace ./ppccl
> >execve("./ppccl", ["./ppccl"], [/* 21 vars */]) = -1 EACCES (Permission 
> >denied)
> >+++ killed by SIGKILL +++
> >Process 6042 detached
> >edoneel at jungfrau:~/tmp/ccl$
> >
> >I do have permission to read, write, and execute the ppccl
> >executable.
> >
> >Any ideas?
> >
> >Thanks!
> >
> >cheers
> >
> >bruce
> >
> >_______________________________________________
> >Openmcl-devel mailing list
> >Openmcl-devel at clozure.com
> >http://clozure.com/mailman/listinfo/openmcl-devel
> >
> >



More information about the Openmcl-devel mailing list