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:41:00 +0100

The max-ram-below-4g was the key here. I ve added this in the machine option

-machine pc-i440fx-xenial,accel=kvm,max-ram-below-4g=2G 

And QEMU starts fine with the passthrough.

Milton

> On 10 May 2017, at 20:25, Miltos Hatzimihail <address@hidden> wrote:
> 
>> 
>> 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 
>> <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]