On Wed, Sep 28, 2011 at 9:21 PM, Alexander Graf <ag...@suse.de> wrote:
>
> On 27.09.2011, at 21:19, Blue Swirl wrote:
>
> On Tue, Sep 27, 2011 at 4:44 PM, Avi Kivity <a...@redhat.com> wrote:
>
> On 09/27/2011 07:39 PM, Blue Swirl wrote:
>
>
>  Well, it's not that easy.  As the other mapping is part of an ordinary
>
> BAR,
>
>  you need to setup the device (at least PCI_COMMAND and
>
> PCI_BASE_ADDRESS_0)
>
>  so it responds to memory requests, and also enable the bridge.
>
>  We could hack it by having a low-priority mapping at 0x80013000, but it
>
>  seems wrong.  Maybe the firmware should configure that BAR first?  What
>
>  happens on real hardware?
>
> In this message I seem to confess that the address is arbitrary and in
>
> the subsequent messages the overlap with PCI region is also discussed.
>
> http://lists.nongnu.org/archive/html/qemu-devel/2009-01/msg00542.html
>
> Maybe the address of macio should be fixed as Laurent suggested.
>
> I'll leave it up to you - I'm out of my depth here.
>
> Meanwhile I suggest applying the pci alias patch - the bug is independent of
>
> the vga issue.
>
> OK, pushed.
>
>
> Ah, after digging into the issue for a while myself I stumbled over this
> thread, explaining what I figured would be the culprit. Please CC qemu-ppc
> for these discussions :).
> Either way, I'm seeing 2 issues here. I enhanced the "info mtree" command to
> also display the region we're currently looking at, so the first tuple shows
> the region we're in, the second tuple the region we're trying to map into
> the first region (addresses aligned on each other). I also print out alias
> information directly:

That way you miss for example vga.chain4.

> [ 00000000-7ffffffffffffffe ] 00000000-7ffffffffffffffe : system
>   [ 80013000-8001303f ] 80013000-8001303f : escc
>   [ fee00000-fee00fff ] fee00000-fee00fff : pci-data-idx
>   [ fec00000-fec00fff ] fec00000-fec00fff : pci-conf-idx
>   [ 80000000-fdffffff ] 80000000-fdffffff : pci-hole
>    -> alias (0000000080000000, 0000000000000000)
>     [ 80000000-fdffffff ] 00000000-ffffffff : pci-mmio
>       [ 80880000-808fffff ] 80880000-808fffff : macio
>         [ 808e0000-808fffff ] 808e0000-808fffff : macio-nvram
>         [ 808a0000-808a0fff ] 808a0000-808a0fff : pmac-ide
>         [ 80896000-80897fff ] 80896000-80897fff : cuda
>         [ 80893000-8089303f ] 80893000-8089303f : escc-bar
>          -> alias (0000000000000000, 0000000080013000)
>           [ 80893000-8089303f ] 80893000-8089303f : escc
>         [ 80888000-80888fff ] 80888000-80888fff : dbdma
>         [ 80880000-80880fff ] 80880000-80880fff : heathrow-pic
>       [ 80800000-8080ffff ] 80800000-8080ffff : vga.rom
>       [ 80000000-807fffff ] 80000000-807fffff : vga.vram
>   [ fe000000-fe1fffff ] fe000000-fe1fffff : isa-mmio
> I/O
> [ 00000000-0000ffff ] 00000000-0000ffff : io
>   [ 00000700-0000070f ] 00000700-0000070f : cmd646-bmdma
>     [ 0000070c-0000070f ] 0000070c-0000070f : cmd646-bmdma-ioport
>     [ 00000708-0000070b ] 00000708-0000070b : cmd646-bmdma-bus
>     [ 00000704-00000707 ] 00000704-00000707 : cmd646-bmdma-ioport
>     [ 00000700-00000703 ] 00000700-00000703 : cmd646-bmdma-bus
>   [ 00000680-00000683 ] 00000680-00000683 : cmd646-cmd
>   [ 00000600-00000607 ] 00000600-00000607 : cmd646-data
>   [ 00000580-00000583 ] 00000580-00000583 : cmd646-cmd
>   [ 00000500-00000507 ] 00000500-00000507 : cmd646-data
>   [ 00000400-000004ff ] 00000400-000004ff : ne2000
> I did another small hack to display the flat memory view:
>   ranges[0] = { 80000000, 13000 } vga.vram
>   ranges[1] = { 80013000, 40 } escc
>   ranges[2] = { 80013040, 7ecfc0 } vga.vram
>   ranges[3] = { 80800000, 10000 } vga.rom
>   ranges[4] = { 80880000, 1000 } heathrow-pic
>   ranges[5] = { 80888000, 1000 } dbdma
>   ranges[6] = { 80893000, 40 } escc
>   ranges[7] = { 80896000, 2000 } cuda
>   ranges[8] = { 808a0000, 1000 } pmac-ide
>   ranges[9] = { 808e0000, 20000 } macio-nvram
>   ranges[10] = { fe000000, 200000 } isa-mmio
>   ranges[11] = { fec00000, 1000 } pci-conf-idx
>   ranges[12] = { fee00000, 1000 } pci-data-idx
> Now to the issues:
> 1)
> ESCC is mapped inside the VGA region. That's what you discussed in this
> thread. It's wrong. Please check this bug for a dump of a real G3 Beige's
> memory layout:
>   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=555651
> I don't think we really need to have serial available before PCI enum, so
> let's just ditch the first map.

OK, though it would be useful for -nographic mode. OpenBIOS can queue
the output until a serial device has been probed and then print the
buffer, but if it crashes before that, we're out of luck.

BTW, -nographic does not work anymore for PPC, there is no output.

> 2)
> vga.vram continues to be mapped, but apparently isn't accessible. I would
> expect the hole of 40 bytes to be non-accessible / broken, but what ends up
> happening is that the whole second region apparently is unusable. What
> exactly is going on there? Sounds like a memory API bug to me.
>
> Alex
>

Reply via email to