I have a question related to this above driver implementation, in an Ultrascale+ environment.
This was taken from https://github.com/henning-schild/ivshmem-guest-code/blob/master/kernel_module/uio/uio_ivshmem.c, in an attempt to set up IVSHMEM connection (not ivshmem-net) with a different inmate OS (not Linux).
here, in ivshmem_pci_probe():
info->mem[1].addr = pci_resource_start(dev, 2);
the returned "addr" is zero, causing the probe to return -ENODEV when ivshmem_pci_probe() is called by the OS.
It's hard for me to follow the logic without a through pci driver knownledge, do you have any idea what could cause this or would you mind sharing some tips for debugging this?
Thank you,
Constantin
I can now confirm that the patch 87fbf1f works and interrupts are received correctly, /dev/uiox is accessible and works as expected.
Without it, I got a:
"FATAL: forbidden access (exception class 0x24)" but I don't remember if this was triggered by Jailhouse or Linux.
Best Regards,
Constantin
Hi all,
i've got a strange situation. I'm using the latest jailhouse branch on x86 with a linux root cell and a Bare Metal cell connected via 2 pci device (bdf e.00 and f.00).
Two Ivshmem device are correctly mapped to /dev/uio0 and /dev/uio1.
But if on /dev/uio0 i can correctly map registers ( offset 0, size 0x1000) and shmem (offset 0x1000, size 0x1000), for /dev/uio1 the first mapping fails with the ENODEV errno set (shmem mapping is done correctly). Parameters of mapping are the same for uio0 and uio1.
Here i list a dmesg snippet of the root cell kernel:
[ 302.092280] pci 0000:00:0e.0: [1af4:1110] type 00 class 0xff0000
[ 302.092622] pci 0000:00:0e.0: reg 0x10: [mem 0x00000000-0x000000ff 64bit]
[ 302.092776] hpet_rtc_timer_reinit: 39 callbacks suppressed
[ 302.092777] hpet1: lost 62 rtc interrupts
[ 302.093025] pci 0000:00:0e.0: reg 0x20: [mem 0x00000000-0x0000001f 64bit]
[ 302.093634] pci 0000:00:0e.0: BAR 0: assigned [mem 0xc0000000-0xc00000ff 64bit]
[ 302.093765] pci 0000:00:0e.0: BAR 4: assigned [mem 0xc0000100-0xc000011f 64bit]
[ 302.093982] virtio-pci 0000:00:0e.0: enabling device (0000 -> 0002)
[ 302.094169] uio_ivshmem 0000:00:0e.0: using jailhouse mode
[ 302.094625] uio_ivshmem 0000:00:0e.0: MSI-X enabled
[ 302.094918] pci 0000:00:0f.0: [1af4:1110] type 00 class 0xff0000
[ 302.095259] pci 0000:00:0f.0: reg 0x10: [mem 0x00000000-0x000000ff 64bit]
[ 302.095725] pci 0000:00:0f.0: reg 0x20: [mem 0x00000000-0x0000001f 64bit]
[ 302.096468] pci 0000:00:0f.0: BAR 0: assigned [mem 0xc0000200-0xc00002ff 64bit]
[ 302.096667] pci 0000:00:0f.0: BAR 4: assigned [mem 0xc0000120-0xc000013f 64bit]
[ 302.096962] virtio-pci 0000:00:0f.0: enabling device (0000 -> 0002)
[ 302.097139] uio_ivshmem 0000:00:0f.0: using jailhouse mode
[ 302.097568] uio_ivshmem 0000:00:0f.0: MSI-X enabled
What i'm doing wrong? I do exactly the same things on /dev/uio0 and /dev/uio1
Thanks,
--Luca