aboutsummaryrefslogtreecommitdiffstats
path: root/content.tex
Commit message (Collapse)AuthorAgeFilesLines
* editorial: add labelsMichael S. Tsirkin2019-03-241-2/+1
| | | | Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* block: drop duplicate textMichael S. Tsirkin2019-03-211-3/+1
| | | | | | | | | | | | | | | | | | | | | | In version 1.1 draft 01 - Section 5.2.6.4 - second bullet: Duplicated text "errors, data_len, sense_len and residual MUST reside in a single, separate device-writable descriptor" appears +both in the beginning and at the end of the 2nd sentence. The original text: For SCSI commands there are additional constraints. errors, data_len, sense_len and residual MUST reside in a single, separate device-writable descriptor, sense MUST reside in a single separate device-writable descriptor of size 96 bytes, and errors, data_len, sense_len and residual MUST reside a single separate device-writable descriptor. I suggest to delete the 1st one, so in the end result, fields are described in same order as appear in struct virtio_scsi_pc_req. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/39 Reported-by: Gil Savir <gil.savir@intel.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* editorial: explain each structure before useMichael S. Tsirkin2019-03-211-0/+3
| | | | | | | | | | | Several structures are listed before they are introduced in some way. Add a sentence before each one so they don't appear prior to any prose. Fixes: https://issues.oasis-open.org/browse/VIRTIO-166 Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
* signal start and end of structures consistentlyMichael S. Tsirkin2019-03-211-6/+5
| | | | | | | | | | | | | Make sure all structs have the format: struct X { ... }; Fixes: https://issues.oasis-open.org/browse/VIRTIO-170 Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
* format: replace "- i.e." with ", i.e.,"Michael S. Tsirkin2019-03-211-6/+6
| | | | | | | | | This seems to be preferred by native speakers, and seems just as effective as a sentence device. Fixes: https://issues.oasis-open.org/browse/VIRTIO-171 Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
* virtio-blk: clarify semantics of multi-segment discard/write zeroes commandsStefan Hajnoczi2019-03-071-2/+21
| | | | | | | | | Describe the failure case and maximum number of segments in a multi-segment discard/write zeroes command. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/34 Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* virtio-blk: avoid inconsistent "DISCARD" termStefan Hajnoczi2019-03-071-1/+1
| | | | | | | | | "discard" (lowercase) is used throughout the text. Remove a lone instance of "DISCARD" (uppercase). Suggested-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* virtio-blk: describe write zeroes unmap semanticsStefan Hajnoczi2019-03-071-1/+3
| | | | | | | | | | Explain the meaning of the unmap flag. The details are already covered in the device normative section but mentioning it here makes the text easier to understand. Suggested-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* virtio-blk: move virtio_blk_discard_write_zeroes definitionStefan Hajnoczi2019-03-071-13/+16
| | | | | | | | | | struct virtio_blk_discard_write_zeroes is defined alongside struct virtio_blk_req but only discussed later in the text. Move it to where it belongs. Suggested-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* virtio-blk: document data[] size constraintsStefan Hajnoczi2019-03-071-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | The struct virtio_blk_req->data[] field is a multiple of 512 bytes long for read and write requests. Flush requests don't use data[] at all. The new discard and write zeroes requests being introduced in VIRTIO 1.1 put struct virtio_blk_discard_write_zeroes elements into data[], so it must be a multiple of the struct size. The uint8_t data[][512] pseudo-code makes it look like discard and write zeroes requests must pad to 512 bytes. This wastes memory since struct virtio_blk_discard_write_data is only 16 bytes long. Furthermore, all known implementations wishing to take advantage of this upcoming VIRTIO 1.1 feature do not use 512-byte padding (Linux virtio_blk.ko, QEMU virtio-blk device emulation, the SPDK virtio-blk driver, and the SPDK vhost-user-blk device backend). This patch documents the data[] size constraints clearly in the driver normative section. This is clearer than the current pseudo-code. Cc: Michael S. Tsirkin <mst@redhat.com> Cc: Changpeng Liu <changpeng.liu@intel.com> Cc: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* ccw: be more precise about the semantic of revision 1Halil Pasic2019-02-271-1/+1
| | | | | | | | | | | | | | | | Revision 1 of the CCW transport is currently defined as virtio 1.0. This could become confusing when we bump the version of the virtio specification to 1.1, in a sense that it could be interpreted like one can not use any features not part of the 1.0 specification. So let us try to avoid confusion regarding the semantic of virtio-ccw revision 1. VIRTIO-163 Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* edit: drop obsolete commands related to cs02Michael S. Tsirkin2019-01-111-4/+1
| | | | Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* virtio-net: changing VIRTIO_NET_F_RSC_EXT from 38 to 61Yuri Benditovich2018-12-121-1/+1
| | | | | | | | Changing feature bit per TC request. Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Cornelia Huck <cohuck@redhat.com>
* content: RSC extension support for virtio-netYuri Benditovich2018-12-121-9/+29
| | | | | | | | | | | | | Allocates feature bit for extended RSC (receive side coalescing) support. If the device supports this feature, it is able to process duplicated ACKs and report number of coalesced TCP segments amd number of received duplicated ACKs. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/20 Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* packed-ring: fix queue size for pciMichael S. Tsirkin2018-12-121-2/+9
| | | | | | | | | | | | | PCI is the only transport that has text enforcing a power of two size for VQs. There's no real reason for it to do it, so document that it does not apply with the packed rings. Accordingly, drop the text "unless enforced by a transport" from packed ring description. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/28 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* VIRTIO_F_NOTIFICATION_DATA: extra data to devicesMichael S. Tsirkin2018-12-121-8/+114
| | | | | | | | | | | | Some devices benefit from ability to find out the number of available descriptors in the ring: for efficiency or as a debugging aid. To help with these optimizations, add a new feature: VIRTIO_F_NOTIFICATION_DATA. When negotiated, driver notifications to the device include this extra information. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/26 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* ACCESS_PLATFORM/ORDER_PLATFORMMichael S. Tsirkin2018-12-121-22/+53
| | | | | | | | | | | | | | | | | | | | | | | | | This is an attempt to clarify the intent behind VIRTIO_F_IOMMU_PLATFORM and VIRTIO_F_IO_BARRIER which based on recent discussions appear to be hard to understand. - rename VIRTIO_F_IOMMU_PLATFORM to ACCESS_PLATFORM It is already the fact that the DMA API that Linux uses does more than just IOMMUs - it includes cache flushing, bounce buffers for limited addressing, etc. Update spec to match this reality. - rename VIRTIO_F_IO_BARRIER to VIRTIO_F_ORDER_PLATFORM this is after all what device is telling driver: its memory accesses are only ordered weakly, this is why a stronger barrier is required. - As no one yet implemented IO_BARRIER yet, add a recommendation to have a software fallback so that existing drivers aren't broken. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/25 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* vsock: add vsock deviceStefan Hajnoczi2018-12-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The virtio vsock device is a zero-configuration socket communications device. It is designed as a guest<->host management channel suitable for communicating with guest agents. vsock is designed with the sockets API in mind and the driver is typically implemented as an address family (at the same level as AF_INET). Applications written for the sockets API can be ported with minimal changes (similar amount of effort as adding IPv6 support to an IPv4 application). Unlike the existing console device, which is also used for guest<->host communication, multiple clients can connect to a server at the same time over vsock. This limitation requires console-based users to arbitrate access through a single client. In vsock they can connect directly and do not have to synchronize with each other. Unlike network devices, no configuration is necessary because the device comes with its address in the configuration space. The vsock device was prototyped by Gerd Hoffmann and Asias He. I picked the code and design up from them. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/27 Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* queue_size: renamed "hypervisor" to "device"Daniel Marcovitch2018-11-301-1/+1
| | | | | | | | | | fixed to be consistent with the device/driver terminology in other surrounding descriptions Signed-off-by: Daniel Marcovitch <danielm@mellanox.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/24 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* packed-ring/split-ring/content: fixed misc typosDaniel Marcovitch2018-11-301-1/+1
| | | | | | | | Signed-off-by: Daniel Marcovitch <danielm@mellanox.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/24 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* Add virtio input device specification.Gerd Hoffmann2018-11-301-0/+1
| | | | | | | | | | Support has been added to the linux kernel version 4.1 and to qemu version 2.4. Signed-off-by: Ladi Prosek <lprosek@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/23
* content: Declare virtio-net legacy feature bits 41-42Yuri Benditovich2018-11-301-5/+5
| | | | | | | | | | | | These bits are in use by current Windows production driver for virtio-net. If virtio-net device uses one of them the driver will not function. Reserving these bits for virtio-net device until current production driver reaches EOL. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/21 Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* content: document SR-IOV driver requirementsTiwei Bie2018-11-301-0/+15
| | | | | | | | | | | Document the driver requirements for the VIRTIO_F_SR_IOV feature bit. Suggested-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/13 Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
* content: reserve virtio device ID for memory devicesDavid Hildenbrand2018-10-191-0/+2
| | | | | | | | | | Reserve device ID 24 for virtio-mem devices. Signed-off-by: David Hildenbrand <david@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Acked-by: Cornelia Huck <cohuck@redhat.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/9
* content: enhance device requirements for feature bitsTiwei Bie2018-10-191-0/+7
| | | | | | | | | Suggested-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/14 Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com>
* content: use a consistent wording for device statusTiwei Bie2018-10-191-9/+12
| | | | | | | | | | | | | | There is a part called "device status field" in a Virtio device. Currently, both of \field{status} and \field{device status} are used to refer to it, which is a bit confusing. This patch changes spec to use \field{device status} consistently. Suggested-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/15 Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* virtio-crypto: Add virtio crypto device specificationLongpeng(Mike)2018-10-191-0/+1
| | | | | | | | | | | | | | | The virtio crypto device is a virtual crypto device (ie. hardware crypto accelerator card). Currently, the virtio crypto device provides the following crypto services: CIPHER, MAC, HASH, and AEAD. In this patch, CIPHER, MAC, HASH, AEAD services are introduced. VIRTIO-153 Signed-off-by: Gonglei <arei.gonglei@huawei.com> Signed-off-by: Zhoujian <jianjay.zhou@huawei.com> Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* notifications: update notifications terminology for devicesHalil Pasic2018-10-191-11/+11
| | | | | | | | | | | | | | The specifications of some virtio device types are still using the old terminology for used buffer notifications and configuration change notifications calling these interrupts. Let us fix that. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/16 Signed-off-by: Halil Pasic <pasic@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* mmio: map common notifications terminology to MMIOHalil Pasic2018-10-191-12/+13
| | | | | | | | | | | | | | | The various notifications are introduced and specified in the common (i.e. transport agnostic) portion of this specification. How notifications are realised for a given transport is something each transport has to specify. Let's make the relationship between the virtio over MIIO terms and the common terms more obvious. Signed-off-by: Halil Pasic <pasic@linux.ibm.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
* pci: map common notifications terminology to PCIHalil Pasic2018-10-191-6/+7
| | | | | | | | | | | | | | | The various notifications are introduced and specified in the common (i.e. transport agnostic) portion of this specification. How notifications are realised for a given transport is something each transport has to specify. Let's make the relationship between the PCI terms and the common terms more obvious. Signed-off-by: Halil Pasic <pasic@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
* ccw: map common notifications terminology to ccwHalil Pasic2018-10-191-0/+42
| | | | | | | | | | | | | | | The various notifications are introduced and specified in the common (i.e. transport agnostic) portion of this specification. How notifications are realised for a given transport is something each transport has to specify. Let's make the relationship between the virtio-ccw terms and the common terms more obvious. Signed-off-by: Halil Pasic <pasic@linux.ibm.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* notifications: notifications as basic virtio facilityHalil Pasic2018-10-191-0/+36
| | | | | | | | | | | | | | | | | Let's introduce notifications as basic virtio facility early on. This shall not only increase the cohesion between core and transport description by having a well-defined place where notifications are introduced, but also give us the opportunity to explain some discrepancies. Namely notifications sent by the device to the driver were often called interrupts prior to v1.1. Getting completely rid of that terminology is however not viable in case of some names. Signed-off-by: Halil Pasic <pasic@linux.ibm.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
* notifications: unify notifications wording in coreHalil Pasic2018-10-191-11/+15
| | | | | | | | | | | | | | | | | | | | Let us unify the wording when talking about notifications. This change establishes the terms available buffer notification for what was usually simply called notification or virtqueue notification in v1.0 and used buffer notification for what was usually called interrupt. The term configuration change notification in kept where called so and consolidated where it's called configuration change interrupt or similar. The changes done here are limited to the core part, and don't conceptually involve neither the transports nor the devices (references are updated though). Future changes should address these parts. Signed-off-by: Halil Pasic <pasic@linux.ibm.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
* Add virtio gpu device specification.Gerd Hoffmann2018-09-071-0/+2
| | | | | | | | | | | | Support for 2d mode (3d/virgl mode is not covered by this patch) has been added to the linux kernel version 4.2 and to qemu version 2.4. Cc: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/17
* content: Introduce VIRTIO_NET_F_STANDBY featureSridhar Samudrala2018-09-071-0/+8
| | | | | | | | | | VIRTIO_NET_F_STANDBY feature enables hypervisor to indicate virtio_net device to act as a standby for another device with the same MAC address. Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com> Acked-by: Cornelia Huck <cohuck@redhat.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/18 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* content: support SR-IOVTiwei Bie2018-06-071-2/+9
| | | | | | | | | | | | Allocate a feature bit for virtio devices which support SR-IOV. Note: at proposer's request, driver requirements have been omitted - a reworked version is now being discussed. Suggested-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Tiwei Bie <tiwei.bie@intel.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/11 Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Cornelia Huck <cohuck@redhat.com>
* VIRTIO_F_IO_BARRIER: use I/O barriers in driverTiwei Bie2018-05-231-2/+18
| | | | | | | | | | | | | | | | | There will be hardware virtio devices in the future, which require drivers to use the barriers suitable for I/O devices, compared with software virtio devices which just require drivers to use the barriers suitable for CPU cores. To fix the ordering issue for hardware virtio devices, add a new feature: VIRTIO_F_IO_BARRIER. When negotiated, driver will use the barriers suitable for I/O devices. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/10 Signed-off-by: Tiwei Bie <tiwei.bie@intel.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
* content: document hugetlb page allocation countsJonathan Helman2018-05-231-0/+8
| | | | | | | | | | The Linux kernel exports the number of successful and failed hugetlb page allocations via the virtio balloon driver. These two counts need to be documented in this specification. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/8 Signed-off-by: Jonathan Helman <jonathan.helman@oracle.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* Revert "VIRTIO_F_NOTIFICATION_DATA: extra data to devices"Michael S. Tsirkin2018-04-261-103/+6
| | | | | | | | This reverts commit 396b1957817e0bd14697e28d9fe61bfc80f1350f. Was pushed by mistake. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* VIRTIO_F_NOTIFICATION_DATA: extra data to devicesMichael S. Tsirkin2018-03-271-6/+103
| | | | | | | | | | | Some devices benefit from ability to find out the number of available descriptors in the ring: for efficiency or as a debugging aid. To help with these optimizations, add a new feature: VIRTIO_F_NOTIFICATION_DATA. When negotiated, driver notifications to the device include this extra information. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* virtio-net: Add missing flag define to structsameehj2018-03-201-0/+1
| | | | | | | | | | The flag VIRTIO_NET_HDR_F_DATA_VALID is aleady mentioned in the virtio-net spec however it is not defined in the struct. This flag is already defined and used in virtio-net device in Qemu as well as some of it's drivers. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/6 Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3182
* content: document balloon memory statisticsTomáš Golembiovský2018-03-201-0/+9
| | | | | | | | | | | Linux kernel provides some balloon memory statistics that were not included in the specs. Include them to avoid any ID clashes in the future. Signed-off-by: Tomáš Golembiovský <tgolembi@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/4 Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3180
* virtio-blk: add discard and write zeroes features to specificationChangpeng Liu2018-03-201-3/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Existing virtio-blk protocol doesn't have DISCARD/WRITE ZEROES support, this will impact the performance when using SSD backend over file systems. Here is the proposal to extend existing virtio-blk protocol to support DISCARD/WRITE ZEROES commands. Basic idea here is using 16 Bytes payload to support 1 descriptor, users can put several segments together with 1 DISCARD/WRITE ZEROES command. struct virtio_blk_discard_write_zeroes { le64 sector; le32 num_sectors; struct { le32 unmap:1; le32 reserved:31; } flags; }; For the purpose to support such feature, we need to introduce 2 new feature flags: VIRTIO_BLK_F_DISCARD/VIRTIO_BLK_F_WRITE_ZEROES, and 2 new command types: VIRTIO_BLK_T_DISCARD/VIRTIO_BLK_T_WRITE_ZEROES. Also we introduce several new parameters in the configuration space of virtio-blk: max_discard_sectors/max_discard_seg/max_write_zeroes_sectors. These parameters will tell the OS what's the granularity when issuing such commands. If both DISCARD and WRITE ZEROES are supported, unmap flag bit maybe used for WRITE ZEROES command with DISCARD bit enabled. Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3181 Fixes: https://github.com/oasis-tcs/virtio-spec/issues/5
* content: in-order buffer useMichael S. Tsirkin2018-03-201-0/+15
| | | | | | | | | | | | Using descriptors in-order is sometimes beneficial. Add an option for that - per-format detail allowing more optimizations will be added by follow-up patches. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177 Fixes: https://github.com/oasis-tcs/virtio-spec/issues/3
* packed virtqueues: more efficient virtqueue layoutMichael S. Tsirkin2018-03-201-3/+25
| | | | | | | | | | | | | | | Performance analysis of this is in my kvm forum 2016 presentation. The idea is to have a r/w descriptor in a ring structure, replacing the used and available ring, index and descriptor buffer. This is also easier for devices to implement than the 1.0 layout. Several more enhancements will be necessary to actually make this efficient for devices to use. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Cornelia Huck <cohuck@redhat.com> Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177 Fixes: https://github.com/oasis-tcs/virtio-spec/issues/3
* split-ring: generalize textMichael S. Tsirkin2018-03-201-6/+4
| | | | | | | | | | | Update generic text to talk about available/used buffers, not rings. Move some split-ring specific text to the correct section. Update conformance section with link to the new conformance clause. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177 Fixes: https://github.com/oasis-tcs/virtio-spec/issues/3
* content: generalize rest of textMichael S. Tsirkin2018-03-201-8/+6
| | | | | | | Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177 Fixes: https://github.com/oasis-tcs/virtio-spec/issues/3
* content: generalize transport ring part namingMichael S. Tsirkin2018-03-201-21/+40
| | | | | | | | | | | | | Replace descriptor table/available ring/used ring with descriptor area/driver area/device area in all transports. Document what's in which area. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177 Fixes: https://github.com/oasis-tcs/virtio-spec/issues/3
* content: len -> used length, used ring -> vqMichael S. Tsirkin2018-03-201-19/+20
| | | | | | | | | | | | Document buffer used len and use that terminology everywhere in the generic section. Further, drop the 'used ring' terminology and just say virtqueue. Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177 Fixes: https://github.com/oasis-tcs/virtio-spec/issues/3
* content: move virtqueue operation descriptionMichael S. Tsirkin2018-03-201-163/+8
| | | | | | | | | | | virtqueue operation description is specific to the virtqueue format. Move it out to split-ring.tex and update all references. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Approved-by: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=3177 Fixes: https://github.com/oasis-tcs/virtio-spec/issues/3