qemu-trivial.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-trivial] [PATCH RESEND] ivshmem: allow the sharing of hugepages
@ 2013-09-16 12:56 Damien Millescamps
  2013-09-16 13:07 ` [Qemu-trivial] [Qemu-devel] " Daniel P. Berrange
  0 siblings, 1 reply; 3+ messages in thread
From: Damien Millescamps @ 2013-09-16 12:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: qemu-trivial

This patch permits to share memory areas that do not specifically belong to
/dev/shm. In such case, the file must be already present when launching qemu.

A use case for this patch is sharing huge pages available through a
hugetlbfs mountpoint.

Signed-off-by: Damien Millescamps <damien.millescamps@6wind.com>
---
 docs/specs/ivshmem_device_spec.txt |    5 +++--
 hw/misc/ivshmem.c                  |   10 +++++++---
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/docs/specs/ivshmem_device_spec.txt b/docs/specs/ivshmem_device_spec.txt
index 667a862..3137e60 100644
--- a/docs/specs/ivshmem_device_spec.txt
+++ b/docs/specs/ivshmem_device_spec.txt
@@ -4,8 +4,9 @@ Device Specification for Inter-VM shared memory device
 
 The Inter-VM shared memory device is designed to share a region of memory to
 userspace in multiple virtual guests.  The memory region does not belong to any
-guest, but is a POSIX memory object on the host.  Optionally, the device may
-support sending interrupts to other guests sharing the same memory region.
+guest, but is a either a POSIX memory object or a mmap'd file (such as a
+hugepage) on the host.  Optionally, the device may support sending interrupts
+to other guests sharing the same memory region.
 
 
 The Inter-VM PCI device
diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index 2838866..9178ccc 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -762,9 +762,13 @@ static int pci_ivshmem_init(PCIDevice *dev)
 
         } else if ((fd = shm_open(s->shmobj, O_CREAT|O_RDWR,
                         S_IRWXU|S_IRWXG|S_IRWXO)) < 0) {
-            fprintf(stderr, "ivshmem: could not open shared file\n");
-            exit(-1);
-
+            /* Try with open() in case the file is not in /dev/shm/
+             * This is usefull for sharing hugepages for example */
+            fd = open(s->shmobj, O_RDWR);
+            if (fd < 0) {
+                fprintf(stderr, "ivshmem: could not open shared file\n");
+                exit(-1);
+            }
         }
 
         if (check_shm_size(s, fd) == -1) {
-- 
1.7.2.5



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-09-16 15:18 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-16 12:56 [Qemu-trivial] [PATCH RESEND] ivshmem: allow the sharing of hugepages Damien Millescamps
2013-09-16 13:07 ` [Qemu-trivial] [Qemu-devel] " Daniel P. Berrange
2013-09-16 13:41   ` Damien Millescamps

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).