devb-virtio

Updated: April 19, 2023

Driver for VirtIO block device, which emulates disks

Syntax:

devb-virtio [blk option[,option]...]
            [cam option[,option]...] 
            [virtio option[,option]...] 
            [fs_type options]

Runs on:

QNX Neutrino

Options:

Note: Use commas (,) to separate the options in a given group. You can put the blk, cam, and virtio groups of options in any order.
blk options
The blk options control the block I/O module used by the driver. For more information, see io-blk.so.
cam options
The cam options control libcam.so. If specified, they must follow the cam keyword.
virtio options
The virtio options control the driver's interface to the VirtIO block device:
irq=number
Interrupt request (IRQ) number of the MMIO VirtIO device. If you set this option, you must also set smem and not set pci.
pci=instance
Use the indicated PCI VirtIO device. Specifying 0 attaches to the first instance of the device, 1 attaches to the second, etc. This option is useful when you have multiple virtio-blk vdevs specified in the guest's VM configuration. When there is just one virtio-blk vdev, you don't need to set this option because PCI discovery is the default vdev access method.

If you set this option, you must not set irq or smem.

qsize=entries
VirtIO queue size, as the number of entries to allow in the virtqueue. This must be a power of 2, and the default is 256. If the specified size exceeds the size allowed by the device implementation, the size is set to the maximum limit and a warning is issued.
smem=location
Use the MMIO VirtIO device found at location, which is the starting address of the device's representation in the guest's VM. If you set this option, you must also set irq and not set pci.

If you don't set this option, a PCI VirtIO device implementation is assumed.

fs_type options
The fs_type options control any filesystem (fs-*.so) module being loaded. Here, fs_type is the filesystem type, such as qnx6 for the Power-Safe filesystem. For the list of supported filesystem options, see the reference for the corresponding shared object. For example, for qnx6, see fs-qnx6.so.

Description:

The devb-virtio driver is the interface for the VirtIO device that emulates physical disks and hence, supports block data transfers.

Examples:

Suppose your VM has one instance of a VirtIO block device and you want to access it through PCI and set a virtqueue size of 64. You would use this command to start the driver:
devb-virtio virtio qsize=64
Because PCI discovery is the default vdev access method and there's just one VirtIO block device, you don't need to set any virtio options other than qsize.
The blk options are independent of the driver-specific virtio options. Suppose you provide the blk ramdisk option:
devb-virtio blk ramdisk=250M virtio qsize=64
In this case, the io-blk.so module creates an internal ramdisk device with a size of 250 MB and exposes its device path (/dev/ram0). The driver exposes the VirtIO device path (/dev/hd0) and configures a virtqueue size of 64. These devices are visible in the guest only.
To access a memory-mapped VirtIO block device, you must provide the smem and irq options:
devb-virtio virtio smem=0x1c0d0000,irq=41
The driver can now access the device at address 0x1c0d0000 in the guest's physical memory, and will receive interrupts through IRQ number 41.

For information about configuring virtual devices (vdevs) for QNX hypervisors, see the User's Guide for your hypervisor release.