Hello, we have a need for Guest to Guest/Host to Guest shared memory with interrupt support on KVM-ARM. Currently our target are RT telco apps where we have control/data plane that require fast inter-guest communication. Other needs are delivering packets from host drivers directly to Guest, with guest polling or interrupt. At this point our approach is similar to ivshmem in x86 except it's not PCI based and over time is expected to significantly diverge especially when it comes to Real-time performance, dynamic shared memory discovery, discovering associated VMs. We extended the "vexpress-a15" machine with additional device "VEshmem" device which registers 'mmio' and 'memory' space mappings - POSIX shared anonymous memory Also assign an unused interrupt. MMIO implements few registers for reading/writing - interrupt control - signaling interrupts to other guests, disabling/enabling, interrupt status... - Guest driver to discover - start of physical memory, size, interrupt id. Is extending the machine with another device the right approach or should we create a new machine variant? For Guest a simple loadable module is implemented it probes the VEshmem device registers, then registers a platform device, and binds a UIO driver to MMIO and Memory Regions. Applications can then either poll for data or use signaling which is eventfd based, which for our needs has too much overhead but it's a start. Few issues are resource assignment. VExpress memory range, what range to use? We noticed 'mmio' fragments the physical address space with a gap of over 800MB. Is there any convention to select a range? Likewise with interrupts? Opinions/feedback welcomed. - mario _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm