[Aboriginal] Sparc-32 doesn't work in 3.1.

Rob Landley rob at landley.net
Sat Nov 12 09:22:34 PST 2011

Still trying to ship an Aboriginal Linux release with the 3.1 kernel,
but the sparc target broke, as in QEMU's OpenBios goes:

  Boot time fixup v1.6. 4/Mar/98 Jakub Jelinek (jj at ultra.linux.cz).
  Patching kernel for srmmu[Fujitsu TurboSparc]/iommu
  Fixup i f029ddfc doesn't refer to a valid instruction at
  halt, power off

And doesn't even boot Linux.  A sparc-objdump -a on vmlinux says that
chunk has:

f00de63c:       84 0b 60 ff     and  %o5, 0xff, %g2
f00de640:       91 32 20 10     srl  %o0, 0x10, %o0
f00de644:       85 28 a0 08     sll  %g2, 8, %g2
f00de648:       98 0a 20 ff     and  %o0, 0xff, %o4
f00de64c:       03 00 00 3f     sethi  %hi(0xfc00), %g1
f00de650:       82 10 63 00     or  %g1, 0x300, %g1     ! ff00
f00de654:       90 0a 00 01     and  %o0, %g1, %o0

Which means nothing to me.

I bisected it to this:

commit 9933fc0ac1ac14b795819cd63d05ea92112f690a
Author: Theodore Ts'o <tytso at mit.edu>
Date:   Mon Aug 1 08:45:02 2011 -0400

    ext4: introduce ext4_kvmalloc(), ext4_kzalloc(), and ext4_kvfree()

    Introduce new helper functions which try kmalloc, and then fall back
   to vmalloc if necessary, and use them for allocating and deallocating

    Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>

The commit before that builds fine, this one doesn't.

I think it's triggering bad behavior in arch/sparc/mm/btfixup.c (at
least that's where the "valid instruction" error message comes from),
but I have no idea what this file is doing, and it was last touched in
2008.  (I'm building with gcc 4.2.1 and binutils 2.17, both of which
were last touched around 2006, so that's not new either...)


More information about the Aboriginal mailing list