qemu-discuss
[Top][All Lists]
Advanced

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

Re: [Qemu-discuss] QEMU PCI Passthrough FPGA with more than 2GB never st


From: Miltos Hatzimihail
Subject: Re: [Qemu-discuss] QEMU PCI Passthrough FPGA with more than 2GB never starts
Date: Wed, 10 May 2017 20:25:50 +0100

> 
> On 06/05/2017 09:39, Miltos Hatzimihail wrote:
>> Dear All
>> 
>> I ve got a system with a Xilinx FPGA on a PCI express slot and I am trying 
>> to pass it through using QEMU with vfio-pci. Here?s my command line:
>> 
>> qemu-system-x86_64 -smp 4,sockets=2,cores=1,threads=2 -machine 
>> pc-i440fx-xenial,accel=kvm  --cpu qemu64 -enable-kvm -vnc :1   -device 
>> vfio-pci,host=04:01.0 .. .. .. -mem 2G
>> 
>> The VM starts OK with men = 2G. If I try to assign more memory to this host 
>> (say 4GB), then the VM doesn?t even boot to the BIOS (it says that ?This 
>> guest has initialised the display ?yet?). The weird thing is that if I omit 
>> the passthrough, the VM starts ok with 4GB.
>> 
>> The PCI device is configured as follows:
>> 
>>         Region 0: Memory at c1100000 (32-bit, non-prefetchable) [disabled] 
>> [size=128K]
>>         Region 1: Memory at c0000000 (32-bit, non-prefetchable) [disabled] 
>> [size=16M]
>>         Region 2: Memory at 80000000 (32-bit, non-prefetchable) [disabled] 
>> [size=1G]
>>         [virtual] Expansion ROM at c1000000 [disabled] [size=1M]
>> 
>> I tried to find an answer online but I had no luck. What am I missing?
>> 
>> Regards,
>> Milton
>> 
> Look at Region 2: It is located at physical (virtual physical?) address
> 2GB (0x80000000), thus it won't work in a machine with RAM directly
> above the 2GB mark.
> 
FWIW this setup works OK if I use Xen (the passthrough works and the men I am 
assigning to the guest is 14G). So I am trying to understand what’s different.

> I don't know what would happen if that card was inserted in a physical
> machine with > 2GB RAM.  Maybe there would be a "memory hole" from
> 0x80000000 to 0xC1120000, maybe it would get assigned different physical
> addresses.
> 

I looked at the monitor for stdio when I give 4G and I see this

  1 address-space: memory
  2   0000000000000000-ffffffffffffffff (prio 0, RW): system
  3     0000000000000000-00000000bfffffff (prio 0, RW): alias ram-below-4g 
@pc.ram 0000000000000000-00000000bfffffff
  4     0000000000000000-ffffffffffffffff (prio -1, RW): pci
  5       00000000000a0000-00000000000bffff (prio 1, RW): vga-lowmem
  6       00000000000c0000-00000000000dffff (prio 1, RW): pc.rom
  7       00000000000e0000-00000000000fffff (prio 1, R-): alias isa-bios 
@pc.bios 0000000000020000-000000000003ffff
  8       00000000fffc0000-00000000ffffffff (prio 0, R-): pc.bios
  9     00000000000a0000-00000000000bffff (prio 1, RW): alias smram-region @pci 
00000000000a0000-00000000000bffff

But when I give 2G I see

 1 address-space: memory
  2   0000000000000000-ffffffffffffffff (prio 0, RW): system
  3     0000000000000000-000000007fffffff (prio 0, RW): alias ram-below-4g 
@pc.ram 0000000000000000-000000007fffffff
  4     0000000000000000-ffffffffffffffff (prio -1, RW): pci
  5       00000000000a0000-00000000000affff (prio 2, RW): alias vga.chain4 
@vga.vram 0000000000000000-000000000000ffff
  6       00000000000a0000-00000000000bffff (prio 1, RW): vga-lowmem
  7       00000000000c0000-00000000000dffff (prio 1, RW): pc.rom
  8       00000000000e0000-00000000000fffff (prio 1, R-): alias isa-bios 
@pc.bios 0000000000020000-000000000003ffff
  9       0000000080000000-00000000bfffffff (prio 1, RW): VFIO 0000:01:00.0 BAR 
2
 10         0000000080000000-00000000bfffffff (prio 0, RW): VFIO 0000:01:00.0 
BAR 2 mmap
 11       00000000c0000000-00000000c0ffffff (prio 1, RW): VFIO 0000:01:00.0 BAR 
1
 12         00000000c0000000-00000000c0ffffff (prio 0, RW): VFIO 0000:01:00.0 
BAR 1 mmap
 13       00000000c1040000-00000000c105ffff (prio 1, RW): VFIO 0000:01:00.0 BAR 0
 14         00000000c1040000-00000000c105ffff (prio 0, RW): VFIO 0000:01:00.0 
BAR 0 mmap
 15       00000000c1070000-00000000c1070fff (prio 1, RW): vga.mmio
 16         00000000c1070400-00000000c107041f (prio 0, RW): vga ioports remapped
 17         00000000c1070500-00000000c1070515 (prio 0, RW): bochs dispi 
interface
 18         00000000c1070600-00000000c1070607 (prio 0, RW): qemu extended regs
 19       00000000c1071000-00000000c1071fff (prio 1, RW): virtio-net-pci-msix
 20         00000000c1071000-00000000c107102f (prio 0, RW): msix-table
 21         00000000c1071800-00000000c1071807 (prio 0, RW): msix-pba
 22       00000000fd000000-00000000fdffffff (prio 1, RW): vga.vram
 23       00000000fffc0000-00000000ffffffff (prio 0, R-): pc.bios
 24     00000000000a0000-00000000000bffff (prio 1, RW): alias smram-region @pci 
00000000000a0000-00000000000bffff

which is what you are saying but I see more stuff missing - like vga.vram or 
vga.mmio.. Is there a setting I am missing when I run QEMU?

> If your host machine where it is actually inserted has more than 2GB RAM,
> look at the RAM and PCI memory mappings logged in /var/log/dmesg and in
> the /proc/ and /sys/ file systems.
> 
It does have 20GB but I can’t figure out what’s going on.. 

> Enjoy
> 
> Jakob
> -- 
> Jakob Bohm, CIO, Partner, WiseMo A/S.  https://www.wisemo.com
> Transformervej 29, 2860 S?borg, Denmark.  Direct +45 31 13 16 10
> This public discussion message is non-binding and may contain errors.
> WiseMo - Remote Service Management for PCs, Phones and Embedded



reply via email to

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