qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] svn 6658 broke powerpc.


From: Rob Landley
Subject: Re: [Qemu-devel] svn 6658 broke powerpc.
Date: Wed, 18 Mar 2009 22:16:38 -0500
User-agent: KMail/1.10.1 (Linux/2.6.27-9-generic; KDE/4.1.2; x86_64; ; )

On Wednesday 18 March 2009 14:11:19 Blue Swirl wrote:
> On 3/18/09, Rob Landley <address@hidden> wrote:
> > On Wednesday 18 March 2009 03:41:05 Alexander Graf wrote:
> >  > On 18.03.2009, at 00:57, Rob Landley wrote:
> >  > > Up through svn 6657, I could boot a powerpc kernel with -kernel.
> >  > > That commit
> >  > > changed it so now it says:
> >  > > invalid/unsupported opcode: 00 - 00 - 00 (00000000) fff18f00 1
> >  > > invalid/unsupported opcode: 00 - 00 - 00 (00000000) fff18f04 1
> >  > > invalid/unsupported opcode: 00 - 0c - 06 (00009198) 00009214 0
> >  > >
> >  > > And dies.
> >  > >
> >  > > You can grab a test kernel from http://landley.net/zImage-powerpc
> >  > > and try
> >  > > booting it (out of the qemu source directory, this is assuming
> >  > > you've built it
> >  > > but haven't installed it yet) via:
> >  > >
> >  > > ppc-softmmu/qemu-system-ppc -kernel zImage-powerpc \
> >  > >  -append "console=ttyS0 panic=1" -nographic -no-reboot -L pc-bios
> >  > >
> >  > > With svn 6657, it works.  (You get kernel boot messages up until it
> >  > > panics and
> >  > > dies because it can't find the root filesystem).  With 6658 it dies
> >  > > immediately with the above error message.
> >  > >
> >  > > Unfortunately, this means that the 0.10.0 release doesn't work for
> >  > > powerpc for
> >  > > me, but svn a couple days _before_ the release did.
> >  >
> >  > That specific commit shouldn't have changed anything with respect to
> >  > ppc32 emulation. The one where your command broken is the openBIOS
> >  > update.
> >
> > The commit I pointed to is the openbios update, yes.
> >
> >  > Please try again without -nographic.
> >
> > It does indeed work without nographic.  (It doesn't do anything _useful_
> > for me without nographic, since I'm scripting the emulated kernel's
> > behavior through stdin and stdout, but allowing it to pop up an SDL
> > window does make it out of openbios and into the kernel.)
>
> The kernel makes the equivalent of the following calls to OF interface:
> finddevice("/") = 0x11d5c
> finddevice("/chosen") = 0x1197c
> finddevice("/openprom") = 0x11b3c
> getprop(0x11b3c, "model", 0x78efeb0, 0x40) = 0xf
> getprop(0x11d5c, "stdout", 0x78efea0, 0x4) = 0x4
> instance-to-path(0x86ea0, 0x12ad0dc, 0xff) where it crashes because
> memmove overwrites all memory.
>
> But where does this 0x86ea0 come from?

No idea, but it worked with the previous openbios, and without --nographic.  
This is a 2.6.28.8 kernel built with the attached .config.

By the way, while binary searching the openbios repository to figure out 
exactly what commit between 450 and 463 actually caused it to stop working, 
and I hit a fun little OpenBios hiccup in the top level Makefile of current 
OpenBios svn:

build:
    @printf "Building..."
    @for dir in $(ODIRS); do \
        $(MAKE) -C $$dir > $$dir/build.log 2>&1 && echo "ok." || \
        ( echo "error:"; tail -15 $$$dir/build.log; exit 1 ) \
    done

You have one too many $ before dir/build.log in the error message, so the 
error message you get is

  Building...error:
  tail: cannot open `/build.log' for reading: No such file or directory
  make: *** [build] Error 1

Which took about 15 minutes of head scratching for a newbie like me to track 
down.  (The actual problem was that your config/examples/cross-ppc_rules.xml 
hardwires TARGET=powerpc-linux-gnu- and my cross compiler just uses powerpc- 
as the prefix, and overriding TARGET on the make command line doesn't work 
because you use recursive make, and you aren't doing the ?= conditional 
assignments that won't overwrite existing environment variable values.  I more 
or less expected it and was running the thing the first time so it would tell 
me what cross compiler name it expected when it died unable to find it.  Easy 
enough to fix by just editing the darn file, but a mention of it in the README 
wouldn't go amiss...)

Rob

Attachment: config-linux
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]