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.
Best,
Liang