qemu-ppc
[Top][All Lists]
Advanced

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

Re: [Qemu-ppc] [PATCH] spapr-pci: remove io ports workaround


From: Alexey Kardashevskiy
Subject: Re: [Qemu-ppc] [PATCH] spapr-pci: remove io ports workaround
Date: Mon, 15 Jul 2013 19:44:37 +1000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6

On 07/15/2013 04:06 PM, Alexander Graf wrote:
> 
> On 15.07.2013, at 05:24, Alexey Kardashevskiy wrote:
> 
>> As it looks like all portio users have migrated to new portio api,
>> the workaround with memory access to io ports routing is no more
>> needed.
>>
>> This also fixes a bug with byte swapping as the io region was marked
>> as little endian while it should not do any swapping at all.
>>
>> Signed-off-by: Alexey Kardashevskiy <address@hidden>
> 
> This patch breaks VGA with -enable-kvm (PR) for me.


I wish I could understand the memory region thingy but I cannot :-(

Without this patch, portio_list_add from vga_init adds a port to
address_space_io. With my patch, it adds a port to address_space_memory and
then port accesses cannot reach correct memoryregionops callbacks and VGA
does not work.

Networking (rtl8139, e1000, virtio) still works but in contrast to VGA,
those devices map PCI IO BARs but not individual ports.


Any idea?
Or my initial patch (where I just changed endianness from LITTLE to NATIVE)
was still correct and this is how thing are supposed to work?
Oh...


This is what I get with my patch:

info mtree
memory
0000000000000000-7ffffffffffffffe (prio 0, RW): system
  0000000000000000-000000003fffffff (prio 0, RW): ppc_spapr.ram
  0000010080000000-000001008000ffff (prio 0, RW): alias
address@hidden @address@hidden
0000000000000000-000000000000ffff
  00000100a0000000-00000100bfffffff (prio 0, RW): alias
address@hidden @address@hidden
0000000080000000-000000009fffffff
  0000040000000000-000004000000ffff (prio 0, RW): msi
I/O
0000000000000000-000000000000ffff (prio 0, RW): io
address@hidden
0000000000000000-7fffffffffffffff (prio 0, RW): iommu-spapr
address@hidden
0000000000000000-7fffffffffffffff (prio 0, RW): iommu-spapr
address@hidden
0000000000000000-7fffffffffffffff (prio 0, RW): iommu-spapr
VGA
0000000000000000-7fffffffffffffff (prio 0, RW): alias bus master
@iommu-spapr 0000000000000000-7fffffffffffffff
pci-ohci
0000000000000000-7fffffffffffffff (prio 0, RW): alias bus master
@iommu-spapr 0000000000000000-7fffffffffffffff
aliases
address@hidden
0000000000000000-000000000000ffff (prio 0, RW): address@hidden
  00000000000001ce-00000000000001ce (prio 0, RW): vbe
  00000000000001d0-00000000000001d0 (prio 0, RW): vbe
  00000000000003b4-00000000000003b5 (prio 0, RW): vga
  00000000000003ba-00000000000003ba (prio 0, RW): vga
  00000000000003c0-00000000000003cf (prio 0, RW): vga
  00000000000003d4-00000000000003d5 (prio 0, RW): vga
  00000000000003da-00000000000003da (prio 0, RW): vga
address@hidden
0000000000000000-7ffffffffffffffe (prio 0, RW): address@hidden
  00000000000a0000-00000000000bffff (prio 1, RW): vga-lowmem
  0000000080000000-0000000080ffffff (prio 1, RW): vga.vram
  0000000090000000-0000000090000fff (prio 1, RW): vga.mmio
    0000000090000400-000000009000041f (prio 0, RW): vga ioports remapped
    0000000090000500-0000000090000515 (prio 0, RW): bochs dispi interface
  0000000090010000-000000009001ffff (prio 1, RW): vga.rom
  0000000090020000-00000000900200ff (prio 1, RW): ohci
iommu-spapr
0000000000000000-7fffffffffffffff (prio 0, RW): iommu-spapr



And this is what I get without the patch (when VGA works). btw here
mtree_print_mr asserts in int128_get64(), had to replace assert with "if
(a.hi) return -1;"


address@hidden:~# (qemu) info mtree
memory
0000000000000000-7ffffffffffffffe (prio 0, RW): system
  0000000000000000-000000003fffffff (prio 0, RW): ppc_spapr.ram
  0000010080000000-000001008000ffff (prio 0, RW): address@hidden
  0000010090000000-00000100901fffff (prio 0, RW): address@hidden
  00000100a0000000-00000100bfffffff (prio 0, RW): alias
address@hidden @address@hidden
0000000080000000-000000009fffffff
I/O
0000000000000000-000000000000ffff (prio 0, RW): io
  0000000000000000-000000000000ffff (prio 0, RW): address@hidden
    00000000000001ce-00000000000001ce (prio 0, RW): vbe
    00000000000001d0-00000000000001d0 (prio 0, RW): vbe
    00000000000003b4-00000000000003b5 (prio 0, RW): vga
    00000000000003ba-00000000000003ba (prio 0, RW): vga
    00000000000003c0-00000000000003cf (prio 0, RW): vga
    00000000000003d4-00000000000003d5 (prio 0, RW): vga
    00000000000003da-00000000000003da (prio 0, RW): vga
address@hidden
0000000000000000-ffffffffffffffff (prio 0, RW): iommu-spapr
address@hidden
0000000000000000-ffffffffffffffff (prio 0, RW): iommu-spapr
address@hidden
0000000000000000-ffffffffffffffff (prio 0, RW): iommu-spapr
VGA
0000000000000000-ffffffffffffffff (prio 0, RW): alias bus master
@iommu-spapr 0000000000000000-fffffffffffffffe
pci-ohci
0000000000000000-ffffffffffffffff (prio 0, RW): alias bus master
@iommu-spapr 0000000000000000-fffffffffffffffe
aliases
address@hidden
0000000000000000-7ffffffffffffffe (prio 0, RW): address@hidden
  00000000000a0000-00000000000affff (prio 2, RW): alias vga.chain4
@vga.vram 0000000000000000-000000000000ffff
  00000000000a0000-00000000000bffff (prio 1, RW): vga-lowmem
  0000000080000000-0000000080ffffff (prio 1, RW): vga.vram
  0000000090000000-0000000090000fff (prio 1, RW): vga.mmio
    0000000090000400-000000009000041f (prio 0, RW): vga ioports remapped
    0000000090000500-0000000090000515 (prio 0, RW): bochs dispi interface
  0000000090020000-00000000900200ff (prio 1, RW): ohci
iommu-spapr
0000000000000000-ffffffffffffffff (prio 0, RW): iommu-spapr
vga.vram
0000000080000000-0000000080ffffff (prio 1, RW): vga.vram


My command line:

./qemu-system-ppc64 \
 -L "qemu-ppc64-bios/" \
 -trace "events=qemu_trace_events" \
 -vnc :5 \
 -M pseries \
 -serial mon:stdio \
 -enable-kvm \
 -m 1G \
 -machine "pseries" \
 -vga "std" \
 -kernel "guest.vmlinux.n" \
 -initrd "1.cpio"


-- 
Alexey



reply via email to

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