Hello,

I've properly built Jailhouse Images and got Jailhouse running in QEMU with 
qemu-x86.cell running as the root cell and ivshmem-demo.cell running as the 
inmate. I'm able to establish a shared memory connection over PCI, like so: 

    Shared memory connection established: "ivshmem-demo" <--> "QEMU-VM" 
    Created cell "ivshmem-demo" 
    Page pool usage after cell creation: mem 291/974, remap 65543/131072 
    Cell "ivshmem-demo" can be loaded 
    Started cell "ivshmem-demo" 
    CPU 2 received SIPI, vector 100 
    IVSHMEM: Found 1af4:1110 at 00:0f.0 
    IVSHMEM: shmem is at 0x000000003f1ff000 
    IVSHMEM: bar0 is at 0x000000003f200000 
    IVSHMEM: bar2 is at 0x000000003f201000 
    IVSHMEM: mapped the bars got position 1 
    IVSHMEM: 00:0f.0 sending IRQ 
    IVSHMEM: 00:0f.0 sending IRQ 
    IVSHMEM: 00:0f.0 sending IRQ 
    ...

So now, it's just a matter of loading a device driver kernel module in the QEMU 
root cell that can read from the vshmem PCI device, right? Then will I be able 
to see the "Hello From IVSHMEM " output from the vshmem-demo inmate? 

I've read Documentation/inter-cell-communication.txt and tried building the 
uio_vshmem.c kernel module from 
https://github.com/henning-schild-work/ivshmem-guest-code. However, I am 
getting these errors: 

    `WARNING: "__uio_register_device" 
[/root/ivshmem-guest-code/kernel_module/uio/uio_ivshmem.ko] undefined!`  
    `WARNING: "uio_unregister_device" 
[/root/ivshmem-guest-code/kernel_module/uio/uio_ivshmem.ko] undefined!` 

So naturally, this also fails:
  
    $ insmod uio_ivshmem.ko 
    $ insmod: ERROR: could not insert module uio_ivshmem.ko: Uknown symbol in 
module 

Now, I already have the kernel headers installed from the Jailhouse Images 
output, so that I can properly build Jailhouse and other kernel modules inside 
the QEMU image (see 
https://groups.google.com/d/msg/jailhouse-dev/hV-5AkuZqbg/0s6IvAFoGgAJ). 

Make seems to find the linux headers just fine (they are at 4.14.73). But I'm 
confused: why won't it build? Shouldn't the UIO stuff be there? Do the kernel 
configs need to be altered? I see this:

    $ zcat /proc/config.gz | grep -i uio 
    # CONFIG_UIO is not set 
 
However, this builds fine on my Kubuntu 18.04 machine, and I see: 

    $ less /boot/config-4.15.0-29-generic | grep -i uio 
    CONFIG_UIO=m 
    CONFIG_UIO_CIF=m 
    CONFIG_UIO_PDRV_GENIRQ=m 
    CONFIG_UIO_DMEM_GENIRQ=m 
    CONFIG_UIO_AEC=m 
    CONFIG_UIO_SERCOS3=m 
    CONFIG_UIO_PCI_GENERIC=m 
    CONFIG_UIO_NETX=m 
    CONFIG_UIO_PRUSS=m 
    CONFIG_UIO_MF624=m 
    CONFIG_UIO_HV_GENERIC=m 
    CONFIG_COMEDI_PCMUIO=m 

At this point, it almost seems easier to figure out how to create an actual 
simple PCI driver from scratch than to get this to work with the UIO framework, 
since I can't find hardly any documentation on UIO... Also, I'm not very 
excited about rebuilding the Linux kernel. But if there is a quick fix, I'm all 
ears.

Thanks for the help!
Michael 

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to