qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Blue Swirl <blauwirbel@gmail.com>
To: Rob Landley <rob@landley.net>
Cc: The OpenBIOS Mailinglist <openbios@openbios.org>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] svn 6658 broke powerpc.
Date: Sat, 21 Mar 2009 11:32:30 +0200	[thread overview]
Message-ID: <f43fc5580903210232y1909bd86l1e15e36669d5d89b@mail.gmail.com> (raw)
In-Reply-To: <f43fc5580903191048n77d3c490v2a1f91ccbeaceade@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 7260 bytes --]

On 3/19/09, Blue Swirl <blauwirbel@gmail.com> wrote:
> On 3/19/09, Rob Landley <rob@landley.net> wrote:
>  > On Wednesday 18 March 2009 14:11:19 Blue Swirl wrote:
>  >  > On 3/18/09, Rob Landley <rob@landley.net> 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
>
>
> I must always have used build-verbose. Should be fixed soon.
>
>
>  >  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...)
>
>
> But my tools also use different prefix, powerpc-elf-
>  (powerpc-unknown-elf). I compile using:
>
>  make build-verbose TARGET=powerpc-elf-
>
>  without problems.
>
>  About the OpenBIOS problem, I've done further debugging. The crash can
>  be reproduced with (-nographic -prom-env auto-boot?=false):
>  0 > cd /chosen  ok
>  0 > .properties
>  name                      "chosen"
>  stdin                     86904
>  stdout                    86a08
>  memory                    86da0
>  mmu                       867e8
>  display                   86660
>  nvram                     86750
>  rtc                       86d3c
>   ok
>  0 > 86904 get-instance-path  type invalid/unsupported opcode: 00 - 00
>  - 00 (00000000) fff18f04 1
>  invalid/unsupported opcode: 00 - 00 - 00 (00000000) fff18f08 1
>  invalid bits: 00400000 for opcode: 0b - 19 - 15 (2d746572) 00009230
>
>  But other nodes crash too:
>  0 >  86da0  get-instance-path  type /memory@0 ok
>  0 > 86660  get-instance-path  type /pci@80000000/QEMU,VGA@1 ok
>  0 > 86750  get-instance-path  type invalid/unsupported opcode: 00 - 00
>  - 00 (00000000) fff18f04 1
>  invalid/unsupported opcode: 00 - 00 - 00 (00000000) fff18f08 1
>  invalid bits: 00400000 for opcode: 0b - 19 - 15 (2d746572) 00009230
>
>  0 > 86d3c  get-instance-path  type invalid/unsupported opcode: 00 - 00
>  - 00 (00000000) fff18f04 1
>  invalid/unsupported opcode: 00 - 00 - 00 (00000000) fff18f08 1
>  invalid bits: 00400000 for opcode: 0b - 19 - 15 (2d746572) 00009230
>
>  Sparc32 doesn't crash:
>  0 > cd /chosen  ok
>  0 > .properties
>  name                      "chosen"
>  stdin                     ffda1824
>  stdout                    ffda18c0
>  memory                    ffda1a88
>  mmu                       0
>  screen                    ffda1a28
>   ok
>  0 > ffda1824 get-instance-path type /obio/zs@0,100000:a ok
>  0 > ffda18c0 get-instance-path type /obio/zs@0,100000:a ok
>  0 > ffda1a28 get-instance-path type
>  /iommu@0,10000000/sbus@0,10001000/SUNW,tcx@3,800000 ok
>  0 > ffda1a88 get-instance-path type /memory@0,0 ok

I accidentally (by using a wrong variable in a more complex patch)
found out a workaround for the bug, now -nographic boot works. But
still the other nodes have the same problem as before and the
workaround removes the "reg" node which is present on real tree.

Now the escc node doesn't have the address appended:
1bfac /pci@80000000/mac-io@4/nvram@0 (nvram)
1c1c0 /pci@80000000/mac-io@4/escc (escc)
1c2ac /pci@80000000/mac-io@4/escc/ch-a@13020 (serial)
1c52c /pci@80000000/mac-io@4/escc/ch-b@13000 (serial)

Maybe nodes under /pci/mac-io should use custom
encode-unit/decode-unit methods instead of PCI ones?

[-- Attachment #2: fix_ppc_nographic.diff --]
[-- Type: plain/text, Size: 648 bytes --]

  parent reply	other threads:[~2009-03-21  9:32 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-17 23:57 [Qemu-devel] svn 6658 broke powerpc Rob Landley
2009-03-18  8:41 ` Alexander Graf
2009-03-18 18:28   ` Rob Landley
2009-03-18 19:11     ` Blue Swirl
2009-03-19  3:16       ` Rob Landley
2009-03-19 17:48         ` Blue Swirl
2009-03-19 19:30           ` Rob Landley
2009-03-19 19:41             ` Blue Swirl
2009-03-21  9:32           ` Blue Swirl [this message]
2009-03-21 18:44             ` Rob Landley
2009-03-22 15:14               ` Blue Swirl
2009-03-22 16:54               ` Blue Swirl
2009-03-25  2:30                 ` Rob Landley
2009-03-25  2:39                   ` Anthony Liguori
2009-03-25  2:50                     ` Anthony Liguori
2009-03-25  4:26                     ` M. Warner Losh
2009-03-27 18:59                   ` Blue Swirl
2009-03-27 19:41                     ` Anthony Liguori
2009-03-28 20:41                     ` Rob Landley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f43fc5580903210232y1909bd86l1e15e36669d5d89b@mail.gmail.com \
    --to=blauwirbel@gmail.com \
    --cc=openbios@openbios.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rob@landley.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).