qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] ppc64 target broken


From: Alexander Graf
Subject: [Qemu-devel] ppc64 target broken
Date: Tue, 10 Nov 2009 19:04:00 +0100

Hi list,

For quite some time the PPC64 target (-M mac99 -cpu 970fx) is broken in early init code:

<6>OF: ** translation for device /address@hidden/address@hidden/address@hidden/ address@hidden **
<6>OF: bus is default (na=1, ns=1) on 
/address@hidden/address@hidden/address@hidden
<4>OF: translating address: 00040000
<6>OF: parent bus is pci (na=3, ns=2) on /address@hidden/address@hidden
<6>OF: walking ranges...
<6>OF: default map, cp=0, s=80000, da=40000
<4>OF: parent translation for: 82008010 00000000 c0000000
<6>OF: with offset: 40000
<4>OF: one level translation: 82008010 00000000 c0040000
<6>OF: parent bus is pci (na=3, ns=2) on /address@hidden
<6>OF: no ranges, 1:1 translation
<4>OF: parent translation for: 00000000 00000000 00000000
<6>OF: with offset: c0040000
<4>OF: one level translation: 00000000 00000000 c0040000
<6>OF: parent bus is default (na=1, ns=1) on /
<6>OF: walking ranges...
<6>OF: not found !
<0>------------[ cut here ]------------
<2>kernel BUG at arch/powerpc/platforms/powermac/pic.c:530!
<4>Oops: Exception in kernel mode, sig: 5 [#1]
<4>SMP NR_CPUS=1024 NUMA PowerMac
<4>Modules linked in:
<4>Supported: Yes
<4>NIP: c0000000007449a8 LR: c0000000007449a0 CTR: 0000000000000000
<4>REGS: c0000000009a3b40 TRAP: 0700   Not tainted  (2.6.27.7-kvm)
<4>MSR: 8000000000021032 <ME,IR,DR>  CR: 22000088  XER: 20000000
<4>TASK = c0000000008e83c0[0] 'swapper' THREAD: c0000000009a0000 CPU: 0
<6>GPR00: c0000000007449a0 c0000000009a3dc0 c0000000009952c0 0000000000000001 <6>GPR04: c00000000092fd20 ffffffffffffffff 0000000000000010 d000080080107230 <6>GPR08: c0000000008c4488 c00000000fffc400 0000000000000000 0000000000000f72 <6>GPR12: 0000000022000082 c000000000a62c80 c000000000773638 c00000000068b9b0 <6>GPR16: 0000000001773570 0000000000000000 c000000000773570 000000000f7fff20 <6>GPR20: c000000000773588 c00000000068d02a c0000000007787d4 000000000f7fff20 <6>GPR24: 0000000005483224 00000000000000bb c000000000ae77a8 c000000000694bef <6>GPR28: c00000000fffebd0 0000000000000000 c000000000914868 0000000000000000
<4>NIP [c0000000007449a8] .pmac_pic_init+0xec/0x1a8
<4>LR [c0000000007449a0] .pmac_pic_init+0xe4/0x1a8
<4>Call Trace:
<4>[c0000000009a3dc0] [c0000000007449a0] .pmac_pic_init+0xe4/0x1a8 (unreliable)
<4>[c0000000009a3e60] [c00000000073503c] .init_IRQ+0x3c/0x54
<4>[c0000000009a3ee0] [c000000000730a00] .start_kernel+0x254/0x554
<4>[c0000000009a3f90] [c000000000008568] .start_here_common+0x3c/0x54




So the problem seems to be the "ranges" property or the address of the MPIC device. I'm not sure. One previously working revision (9d479c119b42b8a548f8d79a8e5a1c1ce2932d91) gives the following guest trace:

<6>OF: ** translation for device /address@hidden/address@hidden/interrupt- address@hidden **
<6>OF: bus is default (na=1, ns=1) on /address@hidden/address@hidden
<4>OF: translating address: 00040000
<6>OF: parent bus is pci (na=3, ns=2) on /address@hidden
<6>OF: walking ranges...
<6>OF: default map, cp=0, s=80000, da=40000
<4>OF: parent translation for: 82007810 00000000 80880000
<6>OF: with offset: 40000
<4>OF: one level translation: 82007810 00000000 808c0000
<6>OF: parent bus is default (na=1, ns=1) on /
<6>OF: no ranges, 1:1 translation
<4>OF: parent translation for: 00000000
<6>OF: with offset: 808c0000
<4>OF: one level translation: 808c0000
<6>OF: reached root node

As you can see there is only one pci host device.
I don't see how the old offset would have matched the new "ranges" parameters of the address@hidden device though:

http://imagebin.org/71215


So I'm really puzzled on this. When removing the "ranges" property of the address@hidden (so we're on 1:1 translation) Linux breaks in the PCI detection code.

The first commit where the mac99 worked with again at all is blue swirl's qdev conversion, so maybe he's got an idea?


Thanks!

Alex




reply via email to

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