On 11/04/15 23:22, liang yan wrote: > Hello, Laszlo, > > (1)I am trying to add ivshmem device(PCI device with big memory) to my > aarch64 vm. > So far, I could find device information from vm. But it seems vm did not > create > correct resource file for this device. Do you have any idea that this > happens? > > I used the upstream EDK2 to build my UEFI firmware. > > There are three BARs for this device, and memory map is assigned too, > but only one > resource file is created. > > My qemu supports ACPI 5.1 and the command line is : > > -device ivshmem,size=256M,chardev=ivshmem,msi=on,ioeventfd=on \ > -chardev socket,path=/tmp/ivshmem_socket,id=ivshmem \ > > The lspci information: > > 00:00.0 Host bridge: Red Hat, Inc. Device 0008 > Subsystem: Red Hat, Inc Device 1100 > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- > Stepping- SERR- FastB2B- DisINTx- > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- > <TAbort- <MAbort- >SERR- <PERR- INTx- > > 00:01.0 RAM memory: Red Hat, Inc Inter-VM shared memory > Subsystem: Red Hat, Inc QEMU Virtual Machine > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- > Stepping- SERR- FastB2B- DisINTx- > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- > <TAbort- <MAbort- >SERR- <PERR- INTx- > Interrupt: pin A routed to IRQ 255 > Region 0: Memory at 20001000 (32-bit, non-prefetchable) [disabled] > [size=256] > Region 1: Memory at 20000000 (32-bit, non-prefetchable) [disabled] > [size=4K] > Region 2: Memory at 10000000 (64-bit, prefetchable) [disabled] > [size=256M] > Capabilities: [40] MSI-X: Enable- Count=1 Masked- > Vector table: BAR=1 offset=00000000 > PBA: BAR=1 offset=00000800 > > Boot information: > > [ 2.380924] pci 0000:00:01.0: BAR 2: assigned [mem > 0x10000000-0x1fffffff 64bit pref] > [ 2.382836] pci 0000:00:01.0: BAR 1: assigned [mem > 0x20000000-0x20000fff] > [ 2.383557] pci 0000:00:01.0: BAR 0: assigned [mem > 0x20001000-0x200010ff] > > > Files under /sys/devices/pci0000:00/0000:00:01.0 > > broken_parity_status devspec local_cpus resource > class dma_mask_bits modalias subsystem > config driver_override msi_bus subsystem_device > consistent_dma_mask_bits enable power subsystem_vendor > d3cold_allowed irq remove uevent > device local_cpulist rescan vendor > > Information for resource: > > 0x0000000020001000 0x00000000200010ff 0x0000000000040200 > 0x0000000020000000 0x0000000020000fff 0x0000000000040200 > 0x0000000010000000 0x000000001fffffff 0x000000000014220c > 0x0000000000000000 0x0000000000000000 0x0000000000000000 > 0x0000000000000000 0x0000000000000000 0x0000000000000000 > 0x0000000000000000 0x0000000000000000 0x0000000000000000 > 0x0000000000000000 0x0000000000000000 0x0000000000000000 > > > > > (2)It also has a problem that once I use a memory bigger than 256M for > ivshmem, it could not get through UEFI, > the error message is > > PciBus: Discovered PCI @ [00|01|00] > BAR[0]: Type = Mem32; Alignment = 0xFFF; Length = 0x100; Offset = > 0x10 > BAR[1]: Type = Mem32; Alignment = 0xFFF; Length = 0x1000; Offset > = 0x14 > BAR[2]: Type = PMem64; Alignment = 0x3FFFFFFF; Length = > 0x40000000; Offset = 0x18 > > PciBus: HostBridge->SubmitResources() - Success > ASSERT > /home/liang/studio/edk2/ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c(449): > ((BOOLEAN)(0==1)) > > > I am wandering if there are memory limitation for pcie devices under > Qemu environment? > > > Just thank you in advance and any information would be appreciated.
Now that Ard fixed <https://tianocore.acgmultimedia.com/show_bug.cgi?id=65> (commit range 0b09c212a8ae..646a9e5b799b), this use case should work. Thanks Laszlo