vdev shmem
Provide an inter-OS shared memory device
Synopsis:
vdev shmem options
Options:
- allow fnpattern
- Allow the guest to create or attach to any shared memory region whose name matches the specified filename pattern (fnpattern).
- create name,size[,mode[,gid]]
- Pre-create a shared memory object named name of size bytes. You can optionally define the POSIX permissions with mode and group ownership with gid, which can be a group name or ID.
- deny fnpattern
- Deny the guest access to any shared memory region whose name matches the specified filename pattern (fnpattern).
- gid name|id
- Set the group ownership of shared memory regions created by this vdev instance to the group indicated by name or id. Any subsequent create options will use this setting by default.
- intr intr
- If the loc option is specified, you must also specify the value of intr; this sets the guest interrupt that is generated when another guest sends a notification of an update to shared memory.
- loc [addr]
- The base address of the factory page for the vdev. If addr isn't specified, the vdev appears as a PCI device, and the qvm process automatically assigns the factory page location and adds this location to the PCI BAR register.
- sched priority
- Use the specified priority for pulses indicating that input is available.
- subst [original],prefix
- Specify a prefix to add to shared memory region names seen by the host
(for more details, see
Using the subst option
below). - umask permissions
- Define permission bits to remove from the set provided by the guest. This option defaults to 0 for backwards compatibility. Any subsequent create options are affected by the value given to this umask option. Note that the execute bits are never set—the shared memory region has a header that is not visible to the guest which makes it unsuitable as an executable binary.
For a list of options available to all vdevs, see
Common vdev options
at the beginning of this chapter.
Description:
ARM and x86. The shmem vdev allows you to share memory between different guests or between guests and the host. Normally this device appears as a PCI device, but if the loc and intr options are specified, the guest running in the associated VM will see this device as a memory-mapped I/O (MMIO) device at the specified location.
Memoryin the
Understanding Virtual Environmentschapter.
Restrictions list
You can use the allow and deny options to define lists of shared memory regions that the guest may or may not access. By limiting access to shared memory and, hence, allocations of shared memory, these options help prevent denial-of-service attacks.
You can repeat either of these options multiple times to specify whatever filename patterns you need to manage the guest's access to shared memory regions. When specifying filename patterns, you can include wildcard characters such as the asterisk (*) to indicate multiple shared memory regions for convenience. We recommend defining either an allow or a deny policy for every named region used by the VM, including when using wildcard naming.
\escape character before the asterisk to get the instruction through the shell (e.g., vdev shmem allow test\*).
For more information about using the shared memory vdev, see Memory sharing
in the Using Virtual Devices,
Networking, and Memory Sharing
chapter.
Using the subst option
You can use this option to present the host with different names
for shared memory regions for each guest, while presenting the same name to each
guest so you can use the same executables in the different guests. For example, each
guest might see a shared region called foomem, but the host would
see these regions as guest0mem, guest1mem, etc.
The following VM configurations produce the result presented above by
substituting guest* for foo:
- VM 0
vdev shmem subst foo,guest0 create foomem,0xf0000 ...- VM 1
vdev shmem subst foo,guest1 ...
An equivalent result can be achieved by simply adding the guest*
prefix, as follows:
- VM 0
vdev shmem subst ,guest0 create mem,0xf0000 ...- VM 1
vdev shmem subst ,guest1 ...
- Only one instance of the subst option may be specified per shmem vdev.
- If you want the subst option to affect the name specified by a create option, you must place the subst before the create.
- The length of the memory region name (name + prefix) must not exceed the
value of GUEST_SHM_MAX_NAME (see
Virtual registers (guest_shm.h)
in theUsing Virtual Devices, Networking, and Memory Sharing
chapter).
