From 15d8b243843e164e1914b5a7b6d633fda2e87351 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Sun, 11 Oct 2015 14:55:13 +0000 Subject: virtqueues: fix trivial typo Signed-off-by: Greg Kurz Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@540 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- content.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content.tex b/content.tex index d989d98..bc7455b 100644 --- a/content.tex +++ b/content.tex @@ -522,7 +522,7 @@ VRING_AVAIL_F_NO_INTERRUPT, but the layout and value were identical. If the VIRTIO_F_EVENT_IDX feature bit is not negotiated, the \field{flags} field in the available ring offers a crude mechanism for the driver to inform the device that it doesn't want interrupts when buffers are used. Otherwise -\field{used_event} is a more performant alterative where the driver +\field{used_event} is a more performant alternative where the driver specifies how far the device can progress before interrupting. Neither of these interrupt suppression methods are reliable, as they -- cgit v1.2.3 From de6c79f27f2f99c2ad26200d2c9653a95d882ea5 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Sun, 11 Oct 2015 14:55:44 +0000 Subject: virtio-blk: fix typo in legacy framing requirements section Signed-off-by: Paolo Bonzini Signed-off-by: Michael S. Tsirkin Reviewed-by: Stefan Hajnoczi git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@541 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- content.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content.tex b/content.tex index bc7455b..bc35813 100644 --- a/content.tex +++ b/content.tex @@ -4296,7 +4296,7 @@ negotiated VIRTIO_F_ANY_LAYOUT: \begin{itemize} \item MUST use a single 8-byte descriptor containing \field{type}, - \field{reseved} and \field{sector}, followed by descriptors + \field{reserved} and \field{sector}, followed by descriptors for \field{data}, then finally a separate 1-byte descriptor for \field{status}. -- cgit v1.2.3 From f15b53cd97a939b97f215b43e0d8a6d02603262c Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Sun, 11 Oct 2015 14:56:13 +0000 Subject: virtio-blk: flush: Fix driver vs. device typo This is a simple non-material change. Signed-off-by: Paolo Bonzini Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@542 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- content.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content.tex b/content.tex index bc35813..4be0f7d 100644 --- a/content.tex +++ b/content.tex @@ -4189,7 +4189,7 @@ A device MUST set the \field{status} byte to VIRTIO_BLK_S_IOERR for a write request if the VIRTIO_BLK_F_RO feature if offered, and MUST NOT write any data. -Upon receipt of a VIRTIO_BLK_T_FLUSH request, the driver SHOULD ensure +Upon receipt of a VIRTIO_BLK_T_FLUSH request, the device SHOULD ensure that any writes which were completed are committed to non-volatile storage. \subsubsection{Legacy Interface: Device Operation}\label{sec:Device Types / Block Device / Device Operation / Legacy Interface: Device Operation} -- cgit v1.2.3 From b76aef36e43b5444e87de5a4ce273f6af346a8e1 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Sun, 11 Oct 2015 15:13:22 +0000 Subject: cl: clear it out for cs03 Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@543 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- cl-cs03.tex | 328 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cl-os.tex | 328 ------------------------------------------------------------ makediff.sh | 7 +- 3 files changed, 329 insertions(+), 334 deletions(-) create mode 100644 cl-cs03.tex diff --git a/cl-cs03.tex b/cl-cs03.tex new file mode 100644 index 0000000..ab26d64 --- /dev/null +++ b/cl-cs03.tex @@ -0,0 +1,328 @@ +478 & 15 Mar 2015 & Cornelia Huck & {VIRTIO-129: legacy: +clean up virtqueue layout definitions + +Generalize "Legacy Interfaces: A Note on Virtqueue Layout" to allow +for different alignment requirements. Have pci and ccw refer to that +section for legacy devices. Remove the double definition of virtqueue +alignment (which referred to legacy, but was not tagged as such) from +the ccw section. +See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / +Legacy Interfaces: A Note on Virtqueue Layout}, \ref{sec:Virtio +Transport Options / Virtio Over PCI Bus / PCI-specific +Initialization And Device Operation / Device Initialization / +Virtqueue Configuration / Legacy Interface: A Note on Virtqueue +Configuration} and \ref{sec:Virtio Transport Options / Virtio +over channel I/O / Device Initialization / Configuring a +Virtqueue / Legacy Interface: A Note on Configuring a Virtqueue}. + } \\ +\hline +479 & 15 Mar 2015 & Cornelia Huck & {VIRTIO-118: +ccw: clarify basic channel commands + +"Basic channel commands" seems to be not as clear as it +could, so let's spell out which channel commands we refer to. +See \ref{sec:Virtio Transport Options / Virtio over channel I/O / +Basic Concepts}. +} \\ +\hline +479 & 15 Mar 2015 & Cornelia Huck & {VIRTIO-116: +ccw: allow WRITE_STATUS to fail + +We want to be able to fail setting a status on the device +(e.g. FEATURES_OK if the device can't work with the features +negotiated). +The easiest way to do that is to allow the device to fail the +WRITE_STATUS command by posting a command reject. +See \ref{sec:Virtio Transport Options / Virtio over channel I/O / +Device Initialization / Communicating Status Information}. + } \\ +\hline +485 & 15 Mar 2015 & Jason Wang & {VIRTIO-135: +virtio-ring: comment fixup + +virtio_ring.h included with spec has this text: +/* Support for avail_idx and used_idx fields */ +it should really refer to avail_event and used_event. +See Appendix \ref{sec:virtio-ring.h}. + } \\ +\hline +486 & 15 Mar 2015 & Jason Wang & {VIRTIO-136: +document idx field in virtqueue used ring + +Section \ref{sec:Basic Facilities of a Virtio Device / Virtqueues +/ The Virtqueue Used Ring} The Virtqueue Used Ring +listed the idx field, but never documented it. +See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / +The Virtqueue Used Ring}. + } \\ +\hline +487 & 15 Mar 2015 & Rusty Russell & {VIRTIO-130: +ISR status: Fix incorrect diagram + +ISR status capability diagram has the "Device Configuration +Interrupt " as bit 0, and the "Queue Interrupt" as bit 1. This is +the wrong way around: it disagrees with the legacy +implementations, as well as the spec elsewhere. + +All current guests correctly follow the text, fix +up the diagram to match. +See \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI +Device Layout / ISR status capability}. + } \\ +\hline +488 & 15 Mar 2015 & Rusty Russell & {VIRTIO-133: +Change 4.1.5.1.2.1 to device requirement + +4.1.5.1.2.1 is incorrectly labelled as a driver requirement; it's +self-evidently referring to the device. +See \ref{sec:Conformance / Driver Conformance / PCI Driver +Conformance}, \ref{sec:Conformance / Device Conformance / PCI +Device Conformance} and \ref{devicenormative:Virtio +Transport Options / Virtio Over PCI Bus / PCI-specific +Initialization And Device Operation / Device Initialization / +Non-transitional Device With Legacy Driver}. + } \\ +\hline +504 & 22 Apr 2015 & Rusty Russell & {VIRTIO-137: +define the meaning and requirements of the len field. + +We said what it was for, and noted why. We didn't place any +requirements on it, nor clearly spell out the implications of its use. + +This clarification comes particularly from noticing that QEMU +didn't set len correctly, and philosophising over the correct value +when an error has occurred. +See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / +The Virtqueue Used Ring}, \ref{devicenormative:Basic Facilities +of a Virtio Device / Virtqueues / The Virtqueue Used Ring} and +\ref{sec:Basic Facilities of a Virtio Device / Virtqueues / The +Virtqueue Used Ring}. + } \\ +\hline +506 & 22 Apr 2015 & Michael S. Tsirkin & {VIRTIO-138: +multiple errors: Non-transitional With Legacy + +virtio 1.0 has two sections titled "Non-transitional Device With +Legacy Driver" the first says devices SHOULD fail, the second +says devices MUST fail. Clearly a mistake. + +Other issues: devices don't really fail - they cause drivers to +fail. second section seems to be in the wrong place, and also +have a section followed by subsection with no explanatory text in +between, which is ugly. +Finally, this text was originally ritten to handle buggy windows +drivers gracefully, but later we changed device IDs so it's not +really required there. Might be handy for some other buggy legacy +drivers, though no such drivers are known. + +To fix, drop the duplicate section variant, add some explanatory +text, clarify what does "same ID" mean here, and clarify +that the work-around is only needed if a buggy driver +is known to bind to a transitional device. + +See \ref{sec:Virtio Transport Options / Virtio +Over PCI Bus / PCI Device Layout / Non-transitional Device With +Legacy Driver: A Note on PCI Device Layout}, +\ref{devicenormative:Virtio Transport Options / Virtio Over PCI +Bus / PCI-specific Initialization And Device Operation / Device +Initialization / Non-transitional Device With Legacy Driver} and +\ref{sec:Virtio Transport Options / Virtio Over PCI Bus / +PCI-specific Initialization And Device Operation / Device +Initialization}. +} \\ +\hline +508 & 22 Apr 2015 & Michael S. Tsirkin & {VIRTIO-139: +pci: missing documentation for dealing with 64 bit config fields + +pci spec says what width access to use for 32, 16 and 8 +bit fields, but does not explicitly say what to do for +32 bit fields. As we have text that says driver must +treat 64 bit accesses as non-atomic, this seems +to imply driver should always do two 32 bit wide accesses. + +Let's make this an explicit requirement, and require +devices to support this. + +See \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI +Device Layout}, \ref{drivernormative:Virtio Transport Options / +Virtio Over PCI Bus / PCI Device Layout}, +\ref{devicenormative:Virtio Transport Options / Virtio Over PCI +Bus / PCI Device Layout} and \ref{sec:Conformance / Driver +Conformance / PCI Driver Conformance}. + } \\ +\hline +509 & 22 Apr 2015 & Michael S. Tsirkin & {balloon: +MUST -> has to + +MUST shouldn't be used outside normative statements, +that's confusing. Replace with "has to". + +See \ref{sec:Device Types / Memory Balloon Device / Feature +bits}. + } \\ +\hline +510 & 22 Apr 2015 & Michael S. Tsirkin & {conformance: +add VIRTIO-137 statement links + +Add links to new conformance statements added to +resolve VIRTIO-137 (describing used ring entry len usage). + +See \ref{sec:Conformance / Device Conformance} +and \ref{sec:Conformance / Driver Conformance}. + } \\ +\hline +517 & 22 Apr 2015 & Michael S. Tsirkin & {acknowledgements: +contributors+minor fixup + +acknowledge feedback by Jason Wang, add Richard Sohn who +joined the TC, sort acknowledged reviewers alphabetically. + +See \ref{chap:Acknowledgements}. +} \\ +\hline +520 & 30 Apr 2015 & James Bottomley & {VIRTIO-140: +give explicit guidance on the use of 64 bit fields + +Just saying 64 bit fields may not be atomic is true, but less +helpful than it might be. Add explicit guidance about what the +consequences of non-atomicity are. + +See \ref{sec:Creating New Device Types / What Device +Configuration Space Layout?} +} \\ +\hline +521 & 30 Apr 2015 & Rusty Russell & {VIRTIO-134: +Spell out details of indirect elements in chains + +1) It's implied that a chain terminates with an indirect descriptor (since +VIRTIO-15) but we didn't spell out that a device MUST NOT +continue it. + +2) We allow [direct]->[direct]->[indirect], and qemu and +bhyve both accept it. Make it clear that this is valid, thus devices MUST +handle it. + +See \ref{drivernormative:Basic Facilities of a Virtio Device / +Virtqueues / The Virtqueue Descriptor Table / Indirect +Descriptors} and \ref{devicenormative:Basic Facilities of a +Virtio Device / Virtqueues / The Virtqueue Descriptor Table / +Indirect Descriptors} +} \\ +\hline +522 & 30 Apr 2015 & Michael S. Tsirkin & {VIRTIO-141: +used ring: specify legacy behaviour for len field + +many hypervisors implemented len field incorrectly. +Document existing bugs in the legacy sections. + +See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues +/ The Virtqueue Used Ring/ Legacy Interface: The Virtqueue Used +Ring}, \ref{sec:Device Types / Network Device / Device Operation +/ Legacy Interface: Device Operation}, \ref{sec:Device Types / +Block Device / Device Operation / Legacy Interface: Device +Operation}, \ref{sec:Device Types / Console Device / Device +Operation / Legacy Interface: Device Operation}, \ref{sec:Device +Types / Memory Balloon Device / Device Operation / Legacy +Interface: Device Operation}, \ref{sec:Device +Types / SCSI Host Device / Device Operation / Legacy +Interface: Device Operation} and \ref{sec:Conformance / Legacy +Interface: Transitional Device and Transitional Driver +Conformance}. +} \\ +\hline +523 & 30 Apr 2015 & Michael S. Tsirkin & {VIRTIO-142: +entropy device: typo fix + +Current text: "The driver MUST examine the length written by the +driver" makes no sense. length is written by the device. + +See \ref{drivernormative:Device Types / Entropy Device / Device +Operation}. +} \\ +\hline +526 & 18 May 2015 & Michael S. Tsirkin & {VIRTIO-143: +balloon: transitional device support + +Support a transitional balloon device: this has the advantage of supporting +existing drivers, transparently, as well as transports that don't allow mixing +virtio 0 and virtio 1 devices. And balloon is an easy device to test, so it's +also useful for people to test virtio core handling of transitional devices. + +Three issues with legacy hypervisors have been identified: +\begin{enumerate} +\item +Actual value is actually used, and is necessary for management +to work. Luckily 4 byte config space writes are now atomic. +When using old guests, hypervisors can detect access to the last byte. +When using old hypervisors, drivers can use atomic 4-byte accesses. +\item Hypervisors actually didn't ignore the stats from the first +buffer supplied. This means the values there would be +incorrect until hypervisor resends the request. +Add a note suggesting hypervisors ignore the 1st buffer. +\item QEMU simply over-writes stats from each buffer it gets. +Thus if driver supplies a different subset of stats +on each request, stale values will be there. +Require drivers to supply the same subset on each +request. This also gives us a simple way to figure out +which stats are supported. +\end{enumerate} + +See +\ref{sec:Device Types / Memory Balloon Device}, +\ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery}, +\ref{sec:Conformance / Driver Conformance / Traditional Memory Balloon Driver Conformance}, +\ref{sec:Conformance / Device Conformance / Traditional Memory Balloon Device Conformance}, +\ref{sec:Conformance / Legacy Interface: Transitional Device and Transitional Driver Conformance}, +\ref{sec:Conformance / Device Conformance} and \ref{sec:Conformance / Driver Conformance}. +} \\ +\hline +527 & 18 May 2015 & Michael S. Tsirkin & {VIRTIO-126: +document deflate on oom + +Document the new option, and also clarify behaviour +without it. + +In particular, actual field is not the +actual number of pages in the balloon as +driver might do inflate followed by deflate. + +Also, device isn't always driven by interrupts, +driver can inflate/deflate in response to e.g. +memory compaction. + +See \ref{sec:Device Types / Memory Balloon Device / Feature bits}, +\ref{sec:Device Types / Memory Balloon Device / Device Operation} and +\ref{drivernormative:Device Types / Memory Balloon Device / Device Operation}. +} \\ +\hline +528 & 18 May 2015 & Michael S. Tsirkin & {VIRTIO-123: +network device: xmit/receive cleanup + +Fix up multiple issues in xmit/receive sections: +\begin{itemize} + \item drop MAY/MUST/SHOULD outside normative statements + \item spell out conformance requirements for both drivers and + devices, for xmit and receive paths + \item document the missing VIRTIO_NET_HDR_F_DATA_VALID + \item document handling of unrecognized flag bits so we can extend + flags in the future, similar to VIRTIO_NET_HDR_F_DATA_VALID +\end{itemize} + +\ref{sec:Device Types / Network Device / Device Initialization}, +\ref{drivernormative:Device Types / Network Device / Device Operation / Packet Transmission}, +\ref{devicenormative:Device Types / Network Device / Device Operation / Packet Transmission}, +\ref{sec:Device Types / Network Device / Device Operation / Processing of Incoming Packets}, +\ref{sec:Conformance / Driver Conformance / Network Driver Conformance} and +\ref{sec:Conformance / Device Conformance / Network Device Conformance}. +} \\ +\hline +529 & 18 May 2015 & Michael S. Tsirkin & {VIRTIO-124: +network device: document VIRTIO_NET_F_CTRL_RX_EXTRA + +See +\ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Packet Receive Filtering}, +\ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering}, +\ref{sec:Conformance / Driver Conformance / Network Driver Conformance} and +\ref{sec:Conformance / Device Conformance / Network Device Conformance}. +} \\ +\hline diff --git a/cl-os.tex b/cl-os.tex index ab26d64..e69de29 100644 --- a/cl-os.tex +++ b/cl-os.tex @@ -1,328 +0,0 @@ -478 & 15 Mar 2015 & Cornelia Huck & {VIRTIO-129: legacy: -clean up virtqueue layout definitions - -Generalize "Legacy Interfaces: A Note on Virtqueue Layout" to allow -for different alignment requirements. Have pci and ccw refer to that -section for legacy devices. Remove the double definition of virtqueue -alignment (which referred to legacy, but was not tagged as such) from -the ccw section. -See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / -Legacy Interfaces: A Note on Virtqueue Layout}, \ref{sec:Virtio -Transport Options / Virtio Over PCI Bus / PCI-specific -Initialization And Device Operation / Device Initialization / -Virtqueue Configuration / Legacy Interface: A Note on Virtqueue -Configuration} and \ref{sec:Virtio Transport Options / Virtio -over channel I/O / Device Initialization / Configuring a -Virtqueue / Legacy Interface: A Note on Configuring a Virtqueue}. - } \\ -\hline -479 & 15 Mar 2015 & Cornelia Huck & {VIRTIO-118: -ccw: clarify basic channel commands - -"Basic channel commands" seems to be not as clear as it -could, so let's spell out which channel commands we refer to. -See \ref{sec:Virtio Transport Options / Virtio over channel I/O / -Basic Concepts}. -} \\ -\hline -479 & 15 Mar 2015 & Cornelia Huck & {VIRTIO-116: -ccw: allow WRITE_STATUS to fail - -We want to be able to fail setting a status on the device -(e.g. FEATURES_OK if the device can't work with the features -negotiated). -The easiest way to do that is to allow the device to fail the -WRITE_STATUS command by posting a command reject. -See \ref{sec:Virtio Transport Options / Virtio over channel I/O / -Device Initialization / Communicating Status Information}. - } \\ -\hline -485 & 15 Mar 2015 & Jason Wang & {VIRTIO-135: -virtio-ring: comment fixup - -virtio_ring.h included with spec has this text: -/* Support for avail_idx and used_idx fields */ -it should really refer to avail_event and used_event. -See Appendix \ref{sec:virtio-ring.h}. - } \\ -\hline -486 & 15 Mar 2015 & Jason Wang & {VIRTIO-136: -document idx field in virtqueue used ring - -Section \ref{sec:Basic Facilities of a Virtio Device / Virtqueues -/ The Virtqueue Used Ring} The Virtqueue Used Ring -listed the idx field, but never documented it. -See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / -The Virtqueue Used Ring}. - } \\ -\hline -487 & 15 Mar 2015 & Rusty Russell & {VIRTIO-130: -ISR status: Fix incorrect diagram - -ISR status capability diagram has the "Device Configuration -Interrupt " as bit 0, and the "Queue Interrupt" as bit 1. This is -the wrong way around: it disagrees with the legacy -implementations, as well as the spec elsewhere. - -All current guests correctly follow the text, fix -up the diagram to match. -See \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI -Device Layout / ISR status capability}. - } \\ -\hline -488 & 15 Mar 2015 & Rusty Russell & {VIRTIO-133: -Change 4.1.5.1.2.1 to device requirement - -4.1.5.1.2.1 is incorrectly labelled as a driver requirement; it's -self-evidently referring to the device. -See \ref{sec:Conformance / Driver Conformance / PCI Driver -Conformance}, \ref{sec:Conformance / Device Conformance / PCI -Device Conformance} and \ref{devicenormative:Virtio -Transport Options / Virtio Over PCI Bus / PCI-specific -Initialization And Device Operation / Device Initialization / -Non-transitional Device With Legacy Driver}. - } \\ -\hline -504 & 22 Apr 2015 & Rusty Russell & {VIRTIO-137: -define the meaning and requirements of the len field. - -We said what it was for, and noted why. We didn't place any -requirements on it, nor clearly spell out the implications of its use. - -This clarification comes particularly from noticing that QEMU -didn't set len correctly, and philosophising over the correct value -when an error has occurred. -See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / -The Virtqueue Used Ring}, \ref{devicenormative:Basic Facilities -of a Virtio Device / Virtqueues / The Virtqueue Used Ring} and -\ref{sec:Basic Facilities of a Virtio Device / Virtqueues / The -Virtqueue Used Ring}. - } \\ -\hline -506 & 22 Apr 2015 & Michael S. Tsirkin & {VIRTIO-138: -multiple errors: Non-transitional With Legacy - -virtio 1.0 has two sections titled "Non-transitional Device With -Legacy Driver" the first says devices SHOULD fail, the second -says devices MUST fail. Clearly a mistake. - -Other issues: devices don't really fail - they cause drivers to -fail. second section seems to be in the wrong place, and also -have a section followed by subsection with no explanatory text in -between, which is ugly. -Finally, this text was originally ritten to handle buggy windows -drivers gracefully, but later we changed device IDs so it's not -really required there. Might be handy for some other buggy legacy -drivers, though no such drivers are known. - -To fix, drop the duplicate section variant, add some explanatory -text, clarify what does "same ID" mean here, and clarify -that the work-around is only needed if a buggy driver -is known to bind to a transitional device. - -See \ref{sec:Virtio Transport Options / Virtio -Over PCI Bus / PCI Device Layout / Non-transitional Device With -Legacy Driver: A Note on PCI Device Layout}, -\ref{devicenormative:Virtio Transport Options / Virtio Over PCI -Bus / PCI-specific Initialization And Device Operation / Device -Initialization / Non-transitional Device With Legacy Driver} and -\ref{sec:Virtio Transport Options / Virtio Over PCI Bus / -PCI-specific Initialization And Device Operation / Device -Initialization}. -} \\ -\hline -508 & 22 Apr 2015 & Michael S. Tsirkin & {VIRTIO-139: -pci: missing documentation for dealing with 64 bit config fields - -pci spec says what width access to use for 32, 16 and 8 -bit fields, but does not explicitly say what to do for -32 bit fields. As we have text that says driver must -treat 64 bit accesses as non-atomic, this seems -to imply driver should always do two 32 bit wide accesses. - -Let's make this an explicit requirement, and require -devices to support this. - -See \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI -Device Layout}, \ref{drivernormative:Virtio Transport Options / -Virtio Over PCI Bus / PCI Device Layout}, -\ref{devicenormative:Virtio Transport Options / Virtio Over PCI -Bus / PCI Device Layout} and \ref{sec:Conformance / Driver -Conformance / PCI Driver Conformance}. - } \\ -\hline -509 & 22 Apr 2015 & Michael S. Tsirkin & {balloon: -MUST -> has to - -MUST shouldn't be used outside normative statements, -that's confusing. Replace with "has to". - -See \ref{sec:Device Types / Memory Balloon Device / Feature -bits}. - } \\ -\hline -510 & 22 Apr 2015 & Michael S. Tsirkin & {conformance: -add VIRTIO-137 statement links - -Add links to new conformance statements added to -resolve VIRTIO-137 (describing used ring entry len usage). - -See \ref{sec:Conformance / Device Conformance} -and \ref{sec:Conformance / Driver Conformance}. - } \\ -\hline -517 & 22 Apr 2015 & Michael S. Tsirkin & {acknowledgements: -contributors+minor fixup - -acknowledge feedback by Jason Wang, add Richard Sohn who -joined the TC, sort acknowledged reviewers alphabetically. - -See \ref{chap:Acknowledgements}. -} \\ -\hline -520 & 30 Apr 2015 & James Bottomley & {VIRTIO-140: -give explicit guidance on the use of 64 bit fields - -Just saying 64 bit fields may not be atomic is true, but less -helpful than it might be. Add explicit guidance about what the -consequences of non-atomicity are. - -See \ref{sec:Creating New Device Types / What Device -Configuration Space Layout?} -} \\ -\hline -521 & 30 Apr 2015 & Rusty Russell & {VIRTIO-134: -Spell out details of indirect elements in chains - -1) It's implied that a chain terminates with an indirect descriptor (since -VIRTIO-15) but we didn't spell out that a device MUST NOT -continue it. - -2) We allow [direct]->[direct]->[indirect], and qemu and -bhyve both accept it. Make it clear that this is valid, thus devices MUST -handle it. - -See \ref{drivernormative:Basic Facilities of a Virtio Device / -Virtqueues / The Virtqueue Descriptor Table / Indirect -Descriptors} and \ref{devicenormative:Basic Facilities of a -Virtio Device / Virtqueues / The Virtqueue Descriptor Table / -Indirect Descriptors} -} \\ -\hline -522 & 30 Apr 2015 & Michael S. Tsirkin & {VIRTIO-141: -used ring: specify legacy behaviour for len field - -many hypervisors implemented len field incorrectly. -Document existing bugs in the legacy sections. - -See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues -/ The Virtqueue Used Ring/ Legacy Interface: The Virtqueue Used -Ring}, \ref{sec:Device Types / Network Device / Device Operation -/ Legacy Interface: Device Operation}, \ref{sec:Device Types / -Block Device / Device Operation / Legacy Interface: Device -Operation}, \ref{sec:Device Types / Console Device / Device -Operation / Legacy Interface: Device Operation}, \ref{sec:Device -Types / Memory Balloon Device / Device Operation / Legacy -Interface: Device Operation}, \ref{sec:Device -Types / SCSI Host Device / Device Operation / Legacy -Interface: Device Operation} and \ref{sec:Conformance / Legacy -Interface: Transitional Device and Transitional Driver -Conformance}. -} \\ -\hline -523 & 30 Apr 2015 & Michael S. Tsirkin & {VIRTIO-142: -entropy device: typo fix - -Current text: "The driver MUST examine the length written by the -driver" makes no sense. length is written by the device. - -See \ref{drivernormative:Device Types / Entropy Device / Device -Operation}. -} \\ -\hline -526 & 18 May 2015 & Michael S. Tsirkin & {VIRTIO-143: -balloon: transitional device support - -Support a transitional balloon device: this has the advantage of supporting -existing drivers, transparently, as well as transports that don't allow mixing -virtio 0 and virtio 1 devices. And balloon is an easy device to test, so it's -also useful for people to test virtio core handling of transitional devices. - -Three issues with legacy hypervisors have been identified: -\begin{enumerate} -\item -Actual value is actually used, and is necessary for management -to work. Luckily 4 byte config space writes are now atomic. -When using old guests, hypervisors can detect access to the last byte. -When using old hypervisors, drivers can use atomic 4-byte accesses. -\item Hypervisors actually didn't ignore the stats from the first -buffer supplied. This means the values there would be -incorrect until hypervisor resends the request. -Add a note suggesting hypervisors ignore the 1st buffer. -\item QEMU simply over-writes stats from each buffer it gets. -Thus if driver supplies a different subset of stats -on each request, stale values will be there. -Require drivers to supply the same subset on each -request. This also gives us a simple way to figure out -which stats are supported. -\end{enumerate} - -See -\ref{sec:Device Types / Memory Balloon Device}, -\ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery}, -\ref{sec:Conformance / Driver Conformance / Traditional Memory Balloon Driver Conformance}, -\ref{sec:Conformance / Device Conformance / Traditional Memory Balloon Device Conformance}, -\ref{sec:Conformance / Legacy Interface: Transitional Device and Transitional Driver Conformance}, -\ref{sec:Conformance / Device Conformance} and \ref{sec:Conformance / Driver Conformance}. -} \\ -\hline -527 & 18 May 2015 & Michael S. Tsirkin & {VIRTIO-126: -document deflate on oom - -Document the new option, and also clarify behaviour -without it. - -In particular, actual field is not the -actual number of pages in the balloon as -driver might do inflate followed by deflate. - -Also, device isn't always driven by interrupts, -driver can inflate/deflate in response to e.g. -memory compaction. - -See \ref{sec:Device Types / Memory Balloon Device / Feature bits}, -\ref{sec:Device Types / Memory Balloon Device / Device Operation} and -\ref{drivernormative:Device Types / Memory Balloon Device / Device Operation}. -} \\ -\hline -528 & 18 May 2015 & Michael S. Tsirkin & {VIRTIO-123: -network device: xmit/receive cleanup - -Fix up multiple issues in xmit/receive sections: -\begin{itemize} - \item drop MAY/MUST/SHOULD outside normative statements - \item spell out conformance requirements for both drivers and - devices, for xmit and receive paths - \item document the missing VIRTIO_NET_HDR_F_DATA_VALID - \item document handling of unrecognized flag bits so we can extend - flags in the future, similar to VIRTIO_NET_HDR_F_DATA_VALID -\end{itemize} - -\ref{sec:Device Types / Network Device / Device Initialization}, -\ref{drivernormative:Device Types / Network Device / Device Operation / Packet Transmission}, -\ref{devicenormative:Device Types / Network Device / Device Operation / Packet Transmission}, -\ref{sec:Device Types / Network Device / Device Operation / Processing of Incoming Packets}, -\ref{sec:Conformance / Driver Conformance / Network Driver Conformance} and -\ref{sec:Conformance / Device Conformance / Network Device Conformance}. -} \\ -\hline -529 & 18 May 2015 & Michael S. Tsirkin & {VIRTIO-124: -network device: document VIRTIO_NET_F_CTRL_RX_EXTRA - -See -\ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Packet Receive Filtering}, -\ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering}, -\ref{sec:Conformance / Driver Conformance / Network Driver Conformance} and -\ref{sec:Conformance / Device Conformance / Network Device Conformance}. -} \\ -\hline diff --git a/makediff.sh b/makediff.sh index 7d64c93..d7df5d0 100755 --- a/makediff.sh +++ b/makediff.sh @@ -9,7 +9,7 @@ export DATESTR=${DATESTR:-`cat REVISION-DATE`} MAIN=$1 PATH=.:${PATH} cur="$PWD" -oldrev=`git rev-list -1 origin/tags/v1.0-cs02` +oldrev=`git rev-list -1 origin/tags/v1.0-cs03` newrev=`git rev-list -1 HEAD` rm -fr old new git clone $PWD old @@ -19,11 +19,6 @@ while read -r rev; do echo "Applying $rev" git cherry-pick `git rev-list -1 -F --grep "$rev" $newrev` || exit 1 done << 'EOF' -Revert: formatting: mark change manually as changed in cs02 -cl: move out cs02 changelog -cl: drop contents temporarily -changelog: comment out header -changelog: disable markup EOF #mv specvars.tex specvars-orig.tex -- cgit v1.2.3 From 3d96d1607efab99a484e73a1b15a71c350fbe7cb Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Sun, 11 Oct 2015 15:13:49 +0000 Subject: cl: list changes 540-542 all of them non-material Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@544 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- cl-os.tex | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/cl-os.tex b/cl-os.tex index e69de29..d4e1ae5 100644 --- a/cl-os.tex +++ b/cl-os.tex @@ -0,0 +1,23 @@ +540 & 11 Oct 2015 & Greg Kurz & {virtqueues: fix +trivial typo + +See +\ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Interrupt Suppression}. +} \\ +\hline +541 & 11 Oct 2015 & Paolo Bonzini & {virtio-blk: fix typo +in legacy framing requirements section + +See +\ref{sec:Device Types / Block Device / Legacy Interface: Framing Requirements}. +} \\ +\hline +542 & 11 Oct 2015 & Paolo Bonzini & {virtio-blk: flush: +Fix driver vs. device typo + +This is a simple non-material change. + +See +\ref{devicenormative:Device Types / Block Device / Device Operation}. +} \\ +\hline -- cgit v1.2.3 From cff819e3c64b19873746fdeb4307d3e6f0a66ff2 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Wed, 21 Oct 2015 14:19:35 +0000 Subject: Revert: makediff: cleanup using begingroup/endgroup This reverts commit commit ef519a86f046d1be22f82f32d845653a850c21dd Author: mstsirkin Date: Thu Jun 26 16:50:13 2014 +0000 makediff: cleanup using begingroup/endgroup This seemed like a good idea originally: replace perl hacks with tex hacks. However adding \begingroup and \endgroup within macros used by latex-diff breaks its assumption that these are low level tex and can be used in arbitrary situations, e.g. cross the boundaries of environments, use mis-matching begin and end instructions (DIFaddbegin with DIFaddendFL), etc. Let's go back to the original work-around: commit b665b3165b454b98c782617e37a128b53b56c89c Author: mstsirkin Date: Thu Jun 26 12:34:38 2014 +0000 work around xetex bug Too many \color directives produce corrupted output and this warning: WARNING ** Color stack overflow. Just ignore. Use script to reduce # of these directives. Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@545 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- diffpreamble.tex | 11 ++++++--- fixupdiff.pl | 74 +++++++++++++------------------------------------------- 2 files changed, 24 insertions(+), 61 deletions(-) diff --git a/diffpreamble.tex b/diffpreamble.tex index 9b5b7e5..f7b5cec 100644 --- a/diffpreamble.tex +++ b/diffpreamble.tex @@ -8,10 +8,13 @@ %DIF COLOR PREAMBLE \RequirePackage{color} -\providecommand{\DIFaddbegin}{\begingroup\color{green}\hypersetup{linkcolor=green,urlcolor=green}} -\providecommand{\DIFaddend}{\hypersetup{linkcolor=blue,urlcolor=blue}\endgroup} -\providecommand{\DIFdelbegin}{\begingroup\color{red}\hypersetup{linkcolor=red,urlcolor=red}} -\providecommand{\DIFdelend}{\hypersetup{linkcolor=blue,urlcolor=blue}\endgroup} +\providecommand{\DIFaddbegin}{\protect\color{green}\hypersetup{linkcolor=green,urlcolor=green}} +\providecommand{\DIFaddend}{\protect\color{black}\hypersetup{linkcolor=blue,urlcolor=blue}} +\providecommand{\DIFdelbegin}{\protect\color{red}\hypersetup{linkcolor=red,urlcolor=red}} +\providecommand{\DIFdelend}{\protect\color{black}\hypersetup{linkcolor=blue,urlcolor=blue}} +\providecommand{\DIFaddtext}[1]{\textcolor{blue}{\sf #1}} +\providecommand{\DIFdeltext}[1]{\textcolor{red}{\footnotesize \sout{#1}}} + %DIF END COLOR PREAMBLE \providecommand{\DIFaddtext}[1]{\textcolor{green}{\sf #1}} \providecommand{\DIFdeltext}[1]{\textcolor{red}{\footnotesize \sout{#1}}} diff --git a/fixupdiff.pl b/fixupdiff.pl index e557e2b..5c82526 100644 --- a/fixupdiff.pl +++ b/fixupdiff.pl @@ -1,6 +1,7 @@ -my $bufferdiff=""; -my $diff=""; -my $buffer=""; +use strict; + +my $lstlisting=0; + while (<>) { my $line = $_; if (m/%DIFDELCMD\s+<\s+\\begin{lstlisting}/) { @@ -15,60 +16,19 @@ while (<>) { } #print "%FIXED BY RULE 1\n"; } - #In section headings, replace begin/end with begin/endFL, - #but be careful in case some tag spills over to the next - #line - if (m/\\(section|subsection|subsubsection|paragraph)/ and m/DIF/) { - my @list = split(/(\\DIF(?:add|del)(?:begin|end)(?:FL)?)/, $line, -1); - #if there's only one tag, don't touch it: - #matching one is on the other line - if ($#list >= 5) { - #if first tag is end, don't touch it - matching - #begin is on the previous line - if ($list[1] =~ m/begin$/) { - $list[1] .= "FL"; - } - #if last tag is begin, don't touch it - matching - #end is on the next line - if ($list[$#list - 1] =~ m/end$/) { - $list[$#list - 1] .= "FL"; - } - } - for (my $i = 3; $i <= $#list - 3; $i += 2) { - if (not $list[$i] =~ m/FL$/) { - $list[$i] .= "FL"; - } - } - $line = join("", @list); - #print "%FIXED BY RULE 2\n"; - } - #detect where we have DIFbegin/end cross - #enumerate/itemize environments and fix up - if (m/\\DIF(?:add|del)(?:begin|end)/) { - my @list = split(/(\\DIF(?:add|del)(?:begin|end)(?:FL)?)/, $line, -1); - $diff = $list[$#list - 1]; - if ($diff =~ m/begin/) { - $diff =~ s/begin/end/; - } else { - $diff = ""; - } - } - if ($diff ne "" and m/\\(?:begin|end){(?:enumerate|itemize)}$/ and not m/\\DIF/) { - $buffer = $line; - $bufferdiff = $diff; - $line = ""; - #print "%BUFFERED BY RULE 3: $bufferdiff\n"; - } - if ($buffer ne "" and $line ne "") { - if (m/^(\\DIF(?:add|del)end(?:FL)?)/ and $bufferdiff ne $1) { - $line =~ s/^(\\DIF(?:add|del)end(?:FL)?)//; - $buffer =~ s/(\\(?:begin|end){(?:enumerate|itemize)})$/$bufferdiff$1/; - #print "%FIXED BY RULE 3: $bufferdiff\n"; - } - print $buffer; - $buffer = ""; - $bufferdiff = ""; - } + + # Too many \color directives (generated by DIFdel/addbegin/end) + # confuse xetex, producing errors: + # WARNING ** Color stack overflow. Just ignore. + # and resulting in corrupted color in output. + # As a work-around, detect cases where it's safe, and replace \color with + # \textcolor. + # As a result, number of \color directives goes does sufficiently + # enough to avoid the overflow error. + + s/\\DIFdelbegin \\DIFdel{([^}]*)}\\DIFdelend/\\DIFdeltext{$1}/; + s/\\DIFaddbegin \\DIFadd{([^}]*)}\\DIFaddend/\\DIFaddtext{$1}/; + print $line; if (m/%DIFDELCMD\s+<\s+\\end{lstlisting}/) { print "}\n"; -- cgit v1.2.3 From ff6b2bb653ae98cd0e71523d9c82f908bc95f035 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Wed, 21 Oct 2015 14:20:04 +0000 Subject: virtio-blk: restore VIRTIO_BLK_F_FLUSH and VIRTIO_BLK_F_CONFIG_WCE VIRTIO_BLK_F_CONFIG_WCE is important in order to achieve good performance (up to 2x, though more realistically +30-40%) in latency-bound workloads. However, it was removed by mistake together with VIRTIO_BLK_F_FLUSH. In addition, even removing VIRTIO_BLK_F_FLUSH was probably not a great idea, because it simplifies simple drivers (e.g. firmware) that are okay with a writethrough cache but still need data to persist after power loss. What really should have been removed is just the possibility that devices not propose VIRTIO_BLK_F_FLUSH, but even that only deserves a "SHOULD" in the new world of conformance statements. Restore these, with the following changes: * clarify and use conformance statements in order to define writeback and writethrough caching according to what is commonly done by high-end storage. * clarify (with conformance statements) the influence of the VIRTIO_BLK_F_FLUSH feature on caching and how to proceed if only one of VIRTIO_BLK_F_FLUSH and VIRTIO_BLK_F_CONFIG_WCE is negotiated. * strengthen the requirement for persisting writes to MUST after a VIRTIO_BLK_T_FLUSH request (and in other cases too involving the new features). The suggested behavior upon feature negotiation is okay for the Linux implementation of virtio1, even after the implementation is modified to support the two new features. This fixes VIRTIO-144. Signed-off-by: Paolo Bonzini Accepted by electronic ballot: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=2864 Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@546 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- conformance.tex | 2 + content.tex | 145 +++++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 125 insertions(+), 22 deletions(-) diff --git a/conformance.tex b/conformance.tex index 7b7df32..f59e360 100644 --- a/conformance.tex +++ b/conformance.tex @@ -105,6 +105,7 @@ A network driver MUST conform to the following normative statements: A block driver MUST conform to the following normative statements: \begin{itemize} +\item \ref{drivernormative:Device Types / Block Device / Device Initialization} \item \ref{drivernormative:Device Types / Block Device / Device Operation} \end{itemize} @@ -224,6 +225,7 @@ A network device MUST conform to the following normative statements: A block device MUST conform to the following normative statements: \begin{itemize} +\item \ref{devicenormative:Device Types / Block Device / Device Initialization} \item \ref{devicenormative:Device Types / Block Device / Device Operation} \end{itemize} diff --git a/content.tex b/content.tex index 4be0f7d..e054919 100644 --- a/content.tex +++ b/content.tex @@ -4041,8 +4041,13 @@ device except where noted. \item[VIRTIO_BLK_F_BLK_SIZE (6)] Block size of disk is in \field{blk_size}. +\item[VIRTIO_BLK_F_FLUSH (9)] Cache flush command support. + \item[VIRTIO_BLK_F_TOPOLOGY (10)] Device exports information on optimal I/O alignment. + +\item[VIRTIO_BLK_F_CONFIG_WCE (11)] Device can toggle its cache between writeback + and writethrough modes. \end{description} \subsubsection{Legacy Interface: Feature bits}\label{sec:Device Types / Block Device / Feature bits / Legacy Interface: Feature bits} @@ -4051,16 +4056,12 @@ device except where noted. \item[VIRTIO_BLK_F_BARRIER (0)] Device supports request barriers. \item[VIRTIO_BLK_F_SCSI (7)] Device supports scsi packet commands. - -\item[VIRTIO_BLK_F_FLUSH (9)] Cache flush command support. - -\item[VIRTIO_BLK_F_CONFIG_WCE (11)] Device can toggle its cache between writeback - and writethrough modes. \end{description} -VIRTIO_BLK_F_FLUSH was also called VIRTIO_BLK_F_WCE: Legacy drivers -MUST only negotiate this feature if they are capable of sending -VIRTIO_BLK_T_FLUSH commands. +\begin{note} + In the legacy interface, VIRTIO_BLK_F_FLUSH was also + called VIRTIO_BLK_F_WCE. +\end{note} \subsection{Device configuration layout}\label{sec:Device Types / Block Device / Device configuration layout} @@ -4089,7 +4090,7 @@ struct virtio_blk_config { // optimal (suggested maximum) I/O size in blocks le32 opt_io_size; } topology; - u8 reserved; + u8 writeback; }; \end{lstlisting} @@ -4119,21 +4120,63 @@ according to the native endian of the guest rather than \field{topology} struct can be read to determine the physical block size and optimal I/O lengths for the driver to use. This also does not affect the units in the protocol, only performance. + +\item If the VIRTIO_BLK_F_CONFIG_WCE feature is negotiated, the cache + mode can be read or set through the \field{writeback} field. 0 corresponds + to a writethrough cache, 1 to a writeback cache\footnote{Consistent with + \ref{devicenormative:Device Types / Block Device / Device Operation}, + a writethrough cache can be defined broadly as a cache that commits + writes to persistent device backend storage before reporting their + completion. For example, a battery-backed writeback cache actually + counts as writethrough according to this definition.}. The cache mode + after reset can be either writeback or writethrough. The actual + mode can be determined by reading \field{writeback} after feature + negotiation. \end{enumerate} +\drivernormative{\subsubsection}{Device Initialization}{Device Types / Block Device / Device Initialization} + +Drivers SHOULD NOT negotiate VIRTIO_BLK_F_FLUSH if they are incapable of +sending VIRTIO_BLK_T_FLUSH commands. + +If neither VIRTIO_BLK_F_CONFIG_WCE nor VIRTIO_BLK_F_FLUSH are +negotiated, the driver MAY deduce the presence of a writethrough cache. +If VIRTIO_BLK_F_CONFIG_WCE was not negotiated but VIRTIO_BLK_F_FLUSH was, +the driver SHOULD assume presence of a writeback cache. + +The driver MUST NOT read \field{writeback} before setting +the FEATURES_OK \field{status} bit. + +\devicenormative{\subsubsection}{Device Initialization}{Device Types / Block Device / Device Initialization} + +Devices SHOULD always offer VIRTIO_BLK_F_FLUSH, and MUST offer it +if they offer VIRTIO_BLK_F_CONFIG_WCE. + +If VIRTIO_BLK_F_CONFIG_WCE is negotiated but VIRTIO_BLK_F_FLUSH +is not, the device MUST initialize \field{writeback} to 0. + \subsubsection{Legacy Interface: Device Initialization}\label{sec:Device Types / Block Device / Device Initialization / Legacy Interface: Device Initialization} -The \field{reserved} field used to be called \field{writeback}. If the -VIRTIO_BLK_F_CONFIG_WCE feature is offered, the cache mode can be -read from \field{writeback}; the -driver can also write to the field in order to toggle the cache -between writethrough (0) and writeback (1) mode. If the feature is -not available, the driver can instead look at the result of -negotiating VIRTIO_BLK_F_FLUSH: the cache will be in writeback mode -after reset if and only if VIRTIO_BLK_F_FLUSH is negotiated. +Because legacy devices do not have FEATURES_OK, transitional devices +MUST implement slightly different behavior around feature negotiation +when used through the legacy interface. In particular, when using the +legacy interface: + +\begin{itemize} +\item the driver MAY read or write \field{writeback} before setting + the DRIVER or DRIVER_OK \field{status} bit + +\item the device MUST NOT modify the cache mode (and \field{writeback}) + as a result of a driver setting a status bit, unless + the DRIVER_OK bit is being set and the driver has not set the + VIRTIO_BLK_F_CONFIG_WCE driver feature bit. + +\item the device MUST NOT modify the cache mode (and \field{writeback}) + as a result of a driver modifying the driver feature bits, for example + if the driver sets the VIRTIO_BLK_F_CONFIG_WCE driver feature bit but + does not set the VIRTIO_BLK_F_FLUSH bit. +\end{itemize} -Some older legacy devices did not operate in writethrough mode even -after a driver announced lack of support for VIRTIO_BLK_F_FLUSH. \subsection{Device Operation}\label{sec:Device Types / Block Device / Device Operation} @@ -4183,14 +4226,66 @@ A driver SHOULD accept the VIRTIO_BLK_F_RO feature if offered. A driver MUST set \field{sector} to 0 for a VIRTIO_BLK_T_FLUSH request. A driver SHOULD NOT include any data in a VIRTIO_BLK_T_FLUSH request. +If the VIRTIO_BLK_F_CONFIG_WCE feature is negotiated, the driver MAY +switch to writethrough or writeback mode by writing respectively 0 and +1 to the \field{writeback} field. After writing a 0 to \field{writeback}, +the driver MUST NOT assume that any volatile writes have been committed +to persistent device backend storage. + \devicenormative{\subsubsection}{Device Operation}{Device Types / Block Device / Device Operation} A device MUST set the \field{status} byte to VIRTIO_BLK_S_IOERR for a write request if the VIRTIO_BLK_F_RO feature if offered, and MUST NOT write any data. -Upon receipt of a VIRTIO_BLK_T_FLUSH request, the device SHOULD ensure -that any writes which were completed are committed to non-volatile storage. +A write is considered volatile when it is submitted; the contents of +sectors covered by a volatile write are undefined in persistent device +backend storage until the write becomes stable. A write becomes stable +once it is completed and one or more of the following conditions is true: + +\begin{enumerate} +\item\label{item:flush1} neither VIRTIO_BLK_F_CONFIG_WCE nor + VIRTIO_BLK_F_FLUSH feature were negotiated, but VIRTIO_BLK_F_FLUSH was + offered by the device; + +\item\label{item:flush2} the VIRTIO_BLK_F_CONFIG_WCE feature was negotiated and the + \field{writeback} field in configuration space was 0 \textbf{all the time between + the submission of the write and its completion}; + +\item\label{item:flush3} a VIRTIO_BLK_T_FLUSH request is sent \textbf{after the write is + completed} and is completed itself. +\end{enumerate} + +If the device is backed by persistent storage, the device MUST ensure that +stable writes are committed to it, before reporting completion of the write +(cases~\ref{item:flush1} and~\ref{item:flush2}) or the flush +(case~\ref{item:flush3}). Failure to do so can cause data loss +in case of a crash. + +If the driver changes \field{writeback} between the submission of the write +and its completion, the write could be either volatile or stable when +its completion is reported; in other words, the exact behavior is undefined. + +% According to the device requirements for device initialization: +% Offer(CONFIG_WCE) => Offer(FLUSH). +% +% After reversing the implication: +% not Offer(FLUSH) => not Offer(CONFIG_WCE). + +If VIRTIO_BLK_F_FLUSH was not offered by the + device\footnote{Note that in this case, according to + \ref{devicenormative:Device Types / Block Device / Device Initialization}, + the device will not have offered VIRTIO_BLK_F_CONFIG_WCE either.}, the +device MAY also commit writes to persistent device backend storage before +reporting their completion. Unlike case~\ref{item:flush1}, however, this +is not an absolute requirement of the specification. + +\begin{note} + An implementation that does not offer VIRTIO_BLK_F_FLUSH and does not commit + completed writes will not be resilient to data loss in case of crashes. + Not offering VIRTIO_BLK_F_FLUSH is an absolute requirement + for implementations that do not wish to be safe against such data losses. +\end{note} \subsubsection{Legacy Interface: Device Operation}\label{sec:Device Types / Block Device / Device Operation / Legacy Interface: Device Operation} When using the legacy interface, transitional devices and drivers @@ -4233,6 +4328,12 @@ serve as data consistency guarantee. Only a VIRTIO_BLK_T_FLUSH request does that. \end{note} +Some older legacy devices did not commit completed writes to persistent +device backend storage when VIRTIO_BLK_F_FLUSH was offered but not +negotiated. In order to work around this, the driver MAY set the +\field{writeback} to 0 (if available) or it MAY send an explicit flush +request after every completed write. + If the device has VIRTIO_BLK_F_SCSI feature, it can also support scsi packet command requests, each of these requests is of form: @@ -5577,7 +5678,7 @@ contents of \field{event}. The following events are defined: \end{lstlisting} By sending this event, the device signals a change in the configuration parameters - of a logical unit, for example the capacity or caching mode. + of a logical unit, for example the capacity or cache mode. \field{event} is set to VIRTIO_SCSI_T_PARAM_CHANGE. \field{lun} addresses a logical unit in the SCSI host. -- cgit v1.2.3 From f8d44600b775ffdce8be566c9c5764022ef2c3dc Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Wed, 21 Oct 2015 14:20:27 +0000 Subject: pci: clarify configuration access capability rules The point of the configuration access capability is to enable access to other capabilities. The intent never was to allow writes to a random place within device BARs. Limiting drivers simplifies devices - and devices can always add another capability if drivers ever want to access some other range. This resolves VIRTIO-145. Cc: Gerd Hoffmann Signed-off-by: Michael S. Tsirkin Accepted by electronic ballot: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=2865 git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@547 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- content.tex | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/content.tex b/content.tex index e054919..941daa6 100644 --- a/content.tex +++ b/content.tex @@ -1132,6 +1132,7 @@ The virtio device configuration layout includes several structures: \item Notifications \item ISR Status \item Device-specific configuration (optional) +\item PCI configuration access \end{itemize} Each structure can be mapped by a Base Address register (BAR) belonging to @@ -1578,6 +1579,12 @@ at BAR selected by \field{cap.bar} and store the first \field{cap.length} bytes The driver MUST NOT write a \field{cap.offset} which is not a multiple of \field{cap.length} (ie. all accesses MUST be aligned). +The driver MUST NOT read or write \field{pci_cfg_data} +unless \field{cap.bar}, \field{cap.length} and \field{cap.offset} +address \field{cap.length} bytes within a BAR range +specified by some other Virtio Structure PCI Capability +of type other than \field{VIRTIO_PCI_CAP_PCI_CFG}. + \subsubsection{Legacy Interfaces: A Note on PCI Device Layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Legacy Interfaces: A Note on PCI Device Layout} Transitional devices MUST present part of configuration -- cgit v1.2.3 From 7317dc565b19c5845c921b8152a5e3271ff9f81a Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Wed, 21 Oct 2015 14:20:51 +0000 Subject: intro: add advice on transition from legacy interfaces Reading legacy chapters gives a hint about what changed, let's help readers discover this useful shortcut. This resolves VIRTIO-146. Signed-off-by: Michael S. Tsirkin Reviewed-by: Cornelia Huck Accepted by electronic ballot: https://www.oasis-open.org/apps/org/workgroup/virtio/ballot.php?id=2866 git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@548 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- introduction.tex | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/introduction.tex b/introduction.tex index ac7eefa..ba67137 100644 --- a/introduction.tex +++ b/introduction.tex @@ -126,6 +126,16 @@ Similarly, a driver MAY implement: Devices or drivers with no legacy compatibility are referred to as non-transitional devices and drivers, respectively. +\subsection{Transition from earlier specification drafts} + +For devices and drivers already implementing the legacy +interface, some changes will have to be made to support this +specification. + +In this case, it might be beneficial for the reader to focus on +sections tagged "Legacy Interface" in the section title. +These highlight the changes made since the earlier drafts. + \section{Structure Specifications} Many device and driver in-memory structure layouts are documented using -- cgit v1.2.3 From 6e973374ed0ee2fd626569c09c55d46c67e55d6d Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Wed, 21 Oct 2015 14:21:16 +0000 Subject: cl: document resolution for VIRTIO-144 virtio-blk: restore VIRTIO_BLK_F_FLUSH and VIRTIO_BLK_F_CONFIG_WCE Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@549 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- cl-os.tex | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/cl-os.tex b/cl-os.tex index d4e1ae5..6befac3 100644 --- a/cl-os.tex +++ b/cl-os.tex @@ -12,12 +12,41 @@ See \ref{sec:Device Types / Block Device / Legacy Interface: Framing Requirements}. } \\ \hline -542 & 11 Oct 2015 & Paolo Bonzini & {virtio-blk: flush: -Fix driver vs. device typo +545 & 18 Oct 2015 & Paolo Bonzini & {virtio-blk: restore VIRTIO_BLK_F_FLUSH and VIRTIO_BLK_F_CONFIG_WCE -This is a simple non-material change. +VIRTIO_BLK_F_CONFIG_WCE is important in order to achieve good performance +(up to 2x, though more realistically +30-40\%) in latency-bound workloads. +However, it was removed by mistake together with VIRTIO_BLK_F_FLUSH. -See -\ref{devicenormative:Device Types / Block Device / Device Operation}. +In addition, even removing VIRTIO_BLK_F_FLUSH was probably not a great +idea, because it simplifies simple drivers (e.g. firmware) that are okay +with a writethrough cache but still need data to persist after power loss. +What really should have been removed is just the possibility that devices +not propose VIRTIO_BLK_F_FLUSH, but even that only deserves a "SHOULD" in +the new world of conformance statements. + +Restore these, with the following changes: + +* clarify and use conformance statements in order to define writeback +and writethrough caching according to what is commonly done by high-end +storage. + +* clarify (with conformance statements) the influence of the +VIRTIO_BLK_F_FLUSH feature on caching and how to proceed if only one of +VIRTIO_BLK_F_FLUSH and VIRTIO_BLK_F_CONFIG_WCE is negotiated. + +* strengthen the requirement for persisting writes to MUST after +a VIRTIO_BLK_T_FLUSH request (and in other cases too involving the +new features). + +The suggested behavior upon feature negotiation is okay for the Linux +implementation of virtio1, even after the implementation is modified to +support the two new features. + +This fixes VIRTIO-144. + +See \ref{sec:Device Types / Block Device}, +\ref{sec:Conformance / Driver Conformance / Block Driver Conformance} and +\ref{sec:Conformance / Device Conformance / Block Device Conformance}. } \\ \hline -- cgit v1.2.3 From cbeb3b681713eae1d736e5cc84672c6702989d94 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Wed, 21 Oct 2015 14:21:41 +0000 Subject: cl: document resolution for VIRTIO-145. pci: clarify configuration access capability rules Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@550 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- cl-os.tex | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/cl-os.tex b/cl-os.tex index 6befac3..34862e5 100644 --- a/cl-os.tex +++ b/cl-os.tex @@ -50,3 +50,19 @@ See \ref{sec:Device Types / Block Device}, \ref{sec:Conformance / Device Conformance / Block Device Conformance}. } \\ \hline +546 & 18 Oct 2015 & Michael S. Tsirkin & {pci: clarify configuration access capability rules + +The point of the configuration access capability is to enable +access to other capabilities. The intent never was to allow +writes to a random place within device BARs. +Limiting drivers simplifies devices - and devices can always +add another capability if drivers ever want to access +some other range. + +This resolves VIRTIO-145. + +See \ref{drivernormative:Virtio Transport Options / Virtio Over +PCI Bus / PCI Device Layout / PCI configuration access +capability}. +} \\ +\hline -- cgit v1.2.3 From 84b37a2a2e53806dac1e6def0e85ed7a0b9c5c82 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Wed, 21 Oct 2015 14:22:09 +0000 Subject: cl: document resolution for VIRTIO-146. add advice on transition from earlier drafts. Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@551 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- cl-os.tex | 10 ++++++++++ introduction.tex | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/cl-os.tex b/cl-os.tex index 34862e5..aee28d6 100644 --- a/cl-os.tex +++ b/cl-os.tex @@ -66,3 +66,13 @@ PCI Bus / PCI Device Layout / PCI configuration access capability}. } \\ \hline +547 & 18 Oct 2015 & Michael S. Tsirkin & {add advice on transition from legacy interfaces + +Reading legacy chapters gives a hint about what changed, +let's help readers discover this useful shortcut. + +This resolves VIRTIO-146. + +See \ref{sec:Transition from earlier specification drafts}. +} \\ +\hline diff --git a/introduction.tex b/introduction.tex index ba67137..979881e 100644 --- a/introduction.tex +++ b/introduction.tex @@ -126,7 +126,7 @@ Similarly, a driver MAY implement: Devices or drivers with no legacy compatibility are referred to as non-transitional devices and drivers, respectively. -\subsection{Transition from earlier specification drafts} +\subsection{Transition from earlier specification drafts}\label{sec:Transition from earlier specification drafts} For devices and drivers already implementing the legacy interface, some changes will have to be made to support this -- cgit v1.2.3 From f885416b280bd36a041133ac61ddc4aa3535ff50 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:08:18 +0000 Subject: title: fix previous link to cs03 Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@552 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- title.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/title.tex b/title.tex index 00eea75..c8d5a07 100644 --- a/title.tex +++ b/title.tex @@ -20,10 +20,10 @@ \end{oasistitlesection} \begin{oasistitlesection}{Previous version} -\url{http://docs.oasis-open.org/virtio/virtio/v1.0/cs02/tex/} +\url{http://docs.oasis-open.org/virtio/virtio/v1.0/cs03/tex/} {}(Authoritative)\newline -\url{http://docs.oasis-open.org/virtio/virtio/v1.0/cs02/virtio-v1.0-cs02.pdf}\newline -\url{http://docs.oasis-open.org/virtio/virtio/v1.0/cs02/virtio-v1.0-cs02.html} +\url{http://docs.oasis-open.org/virtio/virtio/v1.0/cs03/virtio-v1.0-cs03.pdf}\newline +\url{http://docs.oasis-open.org/virtio/virtio/v1.0/cs03/virtio-v1.0-cs03.html} \end{oasistitlesection} \begin{oasistitlesection}{Latest version} -- cgit v1.2.3 From 66f4d847b40dbf2b1f4c576c5253e3f4cd838b5a Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:08:45 +0000 Subject: REVISION: update for csprd05 Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@553 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- REVISION | 2 +- REVISION-DATE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/REVISION b/REVISION index 376c82e..2514f05 100644 --- a/REVISION +++ b/REVISION @@ -1 +1 @@ -virtio-v1.0-cs03 +virtio-v1.0-csprd05 diff --git a/REVISION-DATE b/REVISION-DATE index 86ffb4e..45c9bef 100644 --- a/REVISION-DATE +++ b/REVISION-DATE @@ -1 +1 @@ -02 August 2015 +29 October 2015 -- cgit v1.2.3 From 06149c892514cc4700d58f5f58c594ae7e39e821 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:09:07 +0000 Subject: virtio-net: fix inconsistent legacy header size Current text says: The legacy driver only presented num_buffers in the struct virtio_net_hdr when VIRTIO_NET_F_MRG_RXBUF was not negotiated; Should be: "... was negotiated ..." instead of "... was not negotiated ..." To be consistent with the following: without that feature the structure was 2 bytes shorter. Reported-by: Thomas Huth Signed-off-by: Michael S. Tsirkin Acked-by: Cornelia Huck git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@554 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- content.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content.tex b/content.tex index 941daa6..5b8a22c 100644 --- a/content.tex +++ b/content.tex @@ -3268,7 +3268,7 @@ according to the native endian of the guest rather than (necessarily when not using the legacy interface) little-endian. The legacy driver only presented \field{num_buffers} in the struct virtio_net_hdr -when VIRTIO_NET_F_MRG_RXBUF was not negotiated; without that feature the +when VIRTIO_NET_F_MRG_RXBUF was negotiated; without that feature the structure was 2 bytes shorter. When using the legacy interface, the driver SHOULD ignore the -- cgit v1.2.3 From bbc0cd3905883b5d95af0020025ec2ea34c51ffa Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:09:29 +0000 Subject: virtio header: tweak change motivation The changes are not just to remove Linux assumptions, we have also renamed ring->queue. Tweak the header description accordingly. Signed-off-by: Michael S. Tsirkin Acked-by: Cornelia Huck git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@555 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- content.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content.tex b/content.tex index 5b8a22c..38e9e43 100644 --- a/content.tex +++ b/content.tex @@ -717,7 +717,7 @@ helper routines in a more usable form, in include/uapi/linux/virtio_ring.h. This was explicitly licensed by IBM and Red Hat under the (3-clause) BSD license so that it can be freely used by all other projects, and is reproduced (with slight -variation to remove Linux assumptions) in \ref{sec:virtio-ring.h}~\nameref{sec:virtio-ring.h}. +variation) in \ref{sec:virtio-ring.h}~\nameref{sec:virtio-ring.h}. \chapter{General Initialization And Device Operation}\label{sec:General Initialization And Device Operation} -- cgit v1.2.3 From 3426a408198c535b21f32b60d587b54e310dcee6 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:09:52 +0000 Subject: headerfile: rename virtio_ring to virtio queue Done as a separate commit for benefit of latexdiff. Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@556 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- headerfile.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headerfile.tex b/headerfile.tex index b1a92c2..39213e0 100644 --- a/headerfile.tex +++ b/headerfile.tex @@ -5,4 +5,4 @@ This file is also available at the link All definitions in this section are for non-normative reference only. -\lstinputlisting{virtio-ring.h} +\lstinputlisting{virtio-queue.h} -- cgit v1.2.3 From bf1f8adf9939f16d604d9dce27b1fd5b9332d73d Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:10:13 +0000 Subject: Revert "headerfile rename virtio_ring to virtio queue" This immediately reverts the previous commit, solely for the benefit of latexdiff. Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@557 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- headerfile.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headerfile.tex b/headerfile.tex index 39213e0..b1a92c2 100644 --- a/headerfile.tex +++ b/headerfile.tex @@ -5,4 +5,4 @@ This file is also available at the link All definitions in this section are for non-normative reference only. -\lstinputlisting{virtio-queue.h} +\lstinputlisting{virtio-ring.h} -- cgit v1.2.3 From 4331df88a9c1db818c600d93e44b9cabab04e525 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:10:51 +0000 Subject: virtio-ring.h -> virtio-queue.h Since vring* and VRING* have been replaced with virtq* and VIRTQ* respectively, rename the header virtio_ring.h to virtio_queue.h. Suggested-by: Kevin Lo Signed-off-by: Michael S. Tsirkin Acked-by: Cornelia Huck git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@558 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- cl-cs03.tex | 2 +- content.tex | 4 +- headerfile.tex | 4 +- makezip.sh | 4 +- specvars.tex | 2 +- virtio-queue.h | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ virtio-ring.h | 122 --------------------------------------------------------- 7 files changed, 130 insertions(+), 130 deletions(-) create mode 100644 virtio-queue.h delete mode 100644 virtio-ring.h diff --git a/cl-cs03.tex b/cl-cs03.tex index ab26d64..72925ca 100644 --- a/cl-cs03.tex +++ b/cl-cs03.tex @@ -43,7 +43,7 @@ virtio-ring: comment fixup virtio_ring.h included with spec has this text: /* Support for avail_idx and used_idx fields */ it should really refer to avail_event and used_event. -See Appendix \ref{sec:virtio-ring.h}. +See Appendix \ref{sec:virtio-queue.h}. } \\ \hline 486 & 15 Mar 2015 & Jason Wang & {VIRTIO-136: diff --git a/content.tex b/content.tex index 38e9e43..36f2f78 100644 --- a/content.tex +++ b/content.tex @@ -442,7 +442,7 @@ this implies that loops in the descriptor chain are forbidden! \subsubsection{Indirect Descriptors}\label{sec:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor Table / Indirect Descriptors} Some devices benefit by concurrently dispatching a large number -of large requests. The VIRTIO_F_INDIRECT_DESC feature allows this (see \ref{sec:virtio-ring.h}~\nameref{sec:virtio-ring.h}). To increase +of large requests. The VIRTIO_F_INDIRECT_DESC feature allows this (see \ref{sec:virtio-queue.h}~\nameref{sec:virtio-queue.h}). To increase ring capacity the driver can store a table of indirect descriptors anywhere in memory, and insert a descriptor in main virtqueue (with \field{flags}\&VIRTQ_DESC_F_INDIRECT on) that refers to memory buffer @@ -717,7 +717,7 @@ helper routines in a more usable form, in include/uapi/linux/virtio_ring.h. This was explicitly licensed by IBM and Red Hat under the (3-clause) BSD license so that it can be freely used by all other projects, and is reproduced (with slight -variation) in \ref{sec:virtio-ring.h}~\nameref{sec:virtio-ring.h}. +variation) in \ref{sec:virtio-queue.h}~\nameref{sec:virtio-queue.h}. \chapter{General Initialization And Device Operation}\label{sec:General Initialization And Device Operation} diff --git a/headerfile.tex b/headerfile.tex index b1a92c2..cdc8114 100644 --- a/headerfile.tex +++ b/headerfile.tex @@ -1,8 +1,8 @@ -\chapter{virtio_ring.h}\label{sec:virtio-ring.h} +\chapter{virtio_queue.h}\label{sec:virtio-queue.h} This file is also available at the link \virtiourlh. All definitions in this section are for non-normative reference only. -\lstinputlisting{virtio-ring.h} +\lstinputlisting{virtio-queue.h} diff --git a/makezip.sh b/makezip.sh index de52abf..3c94f8e 100755 --- a/makezip.sh +++ b/makezip.sh @@ -17,8 +17,8 @@ fi zip -d $SPECDOC.zip tex/.gitattributes rm -fr listings mkdir -p listings -cp virtio-ring.h listings/virtio_ring.h -zip $SPECDOC.zip listings/virtio_ring.h +cp virtio-queue.h listings/virtio_queue.h +zip $SPECDOC.zip listings/virtio_queue.h rm -fr tmpfilesforzip mkdir -p tmpfilesforzip/tex echo "$SPECDOC" > tmpfilesforzip/tex/REVISION diff --git a/specvars.tex b/specvars.tex index 1f7cd9f..84f8bae 100644 --- a/specvars.tex +++ b/specvars.tex @@ -7,7 +7,7 @@ \urldef \virtiourltex\url{\virtiourlbase/tex/} \urldef \virtiourlpdf\url{\virtiourlbase/\virtiospecfile.pdf} \urldef \virtiourlhtml\url{\virtiourlbase/\virtiospecfile.html} -\urldef \virtiourlh\url{\virtiourlbase/listings/virtio_ring.h} +\urldef \virtiourlh\url{\virtiourlbase/listings/virtio_queue.h} \urldef \virtiourllatestpdf\url{http://docs.oasis-open.org/virtio/virtio/v\virtiorev/virtio-v\virtiorev.pdf} \urldef \virtiourllatesthtml\url{http://docs.oasis-open.org/virtio/virtio/v\virtiorev/virtio-v\virtiorev.html} \newcommand{\virtioworkproduct}{Standards Track Work Product} diff --git a/virtio-queue.h b/virtio-queue.h new file mode 100644 index 0000000..5a1e87d --- /dev/null +++ b/virtio-queue.h @@ -0,0 +1,122 @@ +#ifndef VIRTQUEUE_H +#define VIRTQUEUE_H +/* An interface for efficient virtio implementation. + * + * This header is BSD licensed so anyone can use the definitions + * to implement compatible drivers/servers. + * + * Copyright 2007, 2009, IBM Corporation + * Copyright 2011, Red Hat, Inc + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of IBM nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#include + +/* This marks a buffer as continuing via the next field. */ +#define VIRTQ_DESC_F_NEXT 1 +/* This marks a buffer as write-only (otherwise read-only). */ +#define VIRTQ_DESC_F_WRITE 2 +/* This means the buffer contains a list of buffer descriptors. */ +#define VIRTQ_DESC_F_INDIRECT 4 + +/* The device uses this in used->flags to advise the driver: don't kick me + * when you add a buffer. It's unreliable, so it's simply an + * optimization. */ +#define VIRTQ_USED_F_NO_NOTIFY 1 +/* The driver uses this in avail->flags to advise the device: don't + * interrupt me when you consume a buffer. It's unreliable, so it's + * simply an optimization. */ +#define VIRTQ_AVAIL_F_NO_INTERRUPT 1 + +/* Support for indirect descriptors */ +#define VIRTIO_F_INDIRECT_DESC 28 + +/* Support for avail_event and used_event fields */ +#define VIRTIO_F_EVENT_IDX 29 + +/* Arbitrary descriptor layouts. */ +#define VIRTIO_F_ANY_LAYOUT 27 + +/* Virtqueue descriptors: 16 bytes. + * These can chain together via "next". */ +struct virtq_desc { + /* Address (guest-physical). */ + le64 addr; + /* Length. */ + le32 len; + /* The flags as indicated above. */ + le16 flags; + /* We chain unused descriptors via this, too */ + le16 next; +}; + +struct virtq_avail { + le16 flags; + le16 idx; + le16 ring[]; + /* Only if VIRTIO_F_EVENT_IDX: le16 used_event; */ +}; + +/* le32 is used here for ids for padding reasons. */ +struct virtq_used_elem { + /* Index of start of used descriptor chain. */ + le32 id; + /* Total length of the descriptor chain which was written to. */ + le32 len; +}; + +struct virtq_used { + le16 flags; + le16 idx; + struct virtq_used_elem ring[]; + /* Only if VIRTIO_F_EVENT_IDX: le16 avail_event; */ +}; + +struct virtq { + unsigned int num; + + struct virtq_desc *desc; + struct virtq_avail *avail; + struct virtq_used *used; +}; + +static inline int virtq_need_event(uint16_t event_idx, uint16_t new_idx, uint16_t old_idx) +{ + return (uint16_t)(new_idx - event_idx - 1) < (uint16_t)(new_idx - old_idx); +} + +/* Get location of event indices (only with VIRTIO_F_EVENT_IDX) */ +static inline le16 *virtq_used_event(struct virtq *vq) +{ + /* For backwards compat, used event index is at *end* of avail ring. */ + return &vq->avail->ring[vq->num]; +} + +static inline le16 *virtq_avail_event(struct virtq *vq) +{ + /* For backwards compat, avail event index is at *end* of used ring. */ + return (le16 *)&vq->used->ring[vq->num]; +} +#endif /* VIRTQUEUE_H */ diff --git a/virtio-ring.h b/virtio-ring.h deleted file mode 100644 index 5a1e87d..0000000 --- a/virtio-ring.h +++ /dev/null @@ -1,122 +0,0 @@ -#ifndef VIRTQUEUE_H -#define VIRTQUEUE_H -/* An interface for efficient virtio implementation. - * - * This header is BSD licensed so anyone can use the definitions - * to implement compatible drivers/servers. - * - * Copyright 2007, 2009, IBM Corporation - * Copyright 2011, Red Hat, Inc - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of IBM nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#include - -/* This marks a buffer as continuing via the next field. */ -#define VIRTQ_DESC_F_NEXT 1 -/* This marks a buffer as write-only (otherwise read-only). */ -#define VIRTQ_DESC_F_WRITE 2 -/* This means the buffer contains a list of buffer descriptors. */ -#define VIRTQ_DESC_F_INDIRECT 4 - -/* The device uses this in used->flags to advise the driver: don't kick me - * when you add a buffer. It's unreliable, so it's simply an - * optimization. */ -#define VIRTQ_USED_F_NO_NOTIFY 1 -/* The driver uses this in avail->flags to advise the device: don't - * interrupt me when you consume a buffer. It's unreliable, so it's - * simply an optimization. */ -#define VIRTQ_AVAIL_F_NO_INTERRUPT 1 - -/* Support for indirect descriptors */ -#define VIRTIO_F_INDIRECT_DESC 28 - -/* Support for avail_event and used_event fields */ -#define VIRTIO_F_EVENT_IDX 29 - -/* Arbitrary descriptor layouts. */ -#define VIRTIO_F_ANY_LAYOUT 27 - -/* Virtqueue descriptors: 16 bytes. - * These can chain together via "next". */ -struct virtq_desc { - /* Address (guest-physical). */ - le64 addr; - /* Length. */ - le32 len; - /* The flags as indicated above. */ - le16 flags; - /* We chain unused descriptors via this, too */ - le16 next; -}; - -struct virtq_avail { - le16 flags; - le16 idx; - le16 ring[]; - /* Only if VIRTIO_F_EVENT_IDX: le16 used_event; */ -}; - -/* le32 is used here for ids for padding reasons. */ -struct virtq_used_elem { - /* Index of start of used descriptor chain. */ - le32 id; - /* Total length of the descriptor chain which was written to. */ - le32 len; -}; - -struct virtq_used { - le16 flags; - le16 idx; - struct virtq_used_elem ring[]; - /* Only if VIRTIO_F_EVENT_IDX: le16 avail_event; */ -}; - -struct virtq { - unsigned int num; - - struct virtq_desc *desc; - struct virtq_avail *avail; - struct virtq_used *used; -}; - -static inline int virtq_need_event(uint16_t event_idx, uint16_t new_idx, uint16_t old_idx) -{ - return (uint16_t)(new_idx - event_idx - 1) < (uint16_t)(new_idx - old_idx); -} - -/* Get location of event indices (only with VIRTIO_F_EVENT_IDX) */ -static inline le16 *virtq_used_event(struct virtq *vq) -{ - /* For backwards compat, used event index is at *end* of avail ring. */ - return &vq->avail->ring[vq->num]; -} - -static inline le16 *virtq_avail_event(struct virtq *vq) -{ - /* For backwards compat, avail event index is at *end* of used ring. */ - return (le16 *)&vq->used->ring[vq->num]; -} -#endif /* VIRTQUEUE_H */ -- cgit v1.2.3 From be7a82cd01062611291a8623ad868885c5523e3e Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:11:14 +0000 Subject: init: sort status bits Status bit order is inconsistent: they are neither in increasing order nor in the order they are likely to be used. The second approach seems more useful since there aren't that many bits, so the numerical order does not help much. A typical order of use would be: ACKNOWLEDGE DRIVER then either FAILED or FEATURES_OK then either FAILED or DRIVER_OK then DEVICE_NEEDS_RESET (if device detects an error) Sort the bits accordingly. Reported-by: Kevin Lo Signed-off-by: Michael S. Tsirkin Acked-by: Cornelia Huck git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@559 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- content.tex | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/content.tex b/content.tex index 36f2f78..4b45678 100644 --- a/content.tex +++ b/content.tex @@ -22,7 +22,8 @@ The \field{device status} field provides a simple low-level indication of the completed steps of this sequence. It's most useful to imagine it hooked up to traffic lights on the console indicating the status of each device. The -following bits are defined: +following bits are defined (listed below in the order in which +they would be typically set): \begin{description} \item[ACKNOWLEDGE (1)] Indicates that the guest OS has found the device and recognized it as a valid virtio device. @@ -34,6 +35,11 @@ following bits are defined: this bit. For example, under Linux, drivers can be loadable modules. \end{note} +\item[FAILED (128)] Indicates that something went wrong in the guest, + and it has given up on the device. This could be an internal + error, or the driver didn't like the device for some reason, or + even a fatal error during device operation. + \item[FEATURES_OK (8)] Indicates that the driver has acknowledged all the features it understands, and feature negotiation is complete. @@ -42,11 +48,6 @@ following bits are defined: \item[DEVICE_NEEDS_RESET (64)] Indicates that the device has experienced an error from which it can't recover. - -\item[FAILED (128)] Indicates that something went wrong in the guest, - and it has given up on the device. This could be an internal - error, or the driver didn't like the device for some reason, or - even a fatal error during device operation. \end{description} \drivernormative{\subsection}{Device Status Field}{Basic Facilities of a Virtio Device / Device Status Field} -- cgit v1.2.3 From 910b3521ddbe18ed8f63c39dfe4d3e88471ee1a1 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:11:35 +0000 Subject: fixupdiff: update for latest perl Escape {} in regexes to avoid warnings in latest perl. Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@560 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- fixupdiff.pl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fixupdiff.pl b/fixupdiff.pl index 5c82526..e274d00 100644 --- a/fixupdiff.pl +++ b/fixupdiff.pl @@ -4,15 +4,15 @@ my $lstlisting=0; while (<>) { my $line = $_; - if (m/%DIFDELCMD\s+<\s+\\begin{lstlisting}/) { + if (m/%DIFDELCMD\s+<\s+\\begin\{lstlisting\}/) { $lstlisting=1; $line =~s/%DIFDELCMD\s+) { # As a result, number of \color directives goes does sufficiently # enough to avoid the overflow error. - s/\\DIFdelbegin \\DIFdel{([^}]*)}\\DIFdelend/\\DIFdeltext{$1}/; - s/\\DIFaddbegin \\DIFadd{([^}]*)}\\DIFaddend/\\DIFaddtext{$1}/; + s/\\DIFdelbegin \\DIFdel\{([^}]*)\}\\DIFdelend/\\DIFdeltext{$1}/; + s/\\DIFaddbegin \\DIFadd\{([^}]*)\}\\DIFaddend/\\DIFaddtext{$1}/; print $line; - if (m/%DIFDELCMD\s+<\s+\\end{lstlisting}/) { + if (m/%DIFDELCMD\s+<\s+\\end\{lstlisting\}/) { print "}\n"; $lstlisting=0; } -- cgit v1.2.3 From 6dc3e400307a122155334dea0f61ace3af34135b Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:11:57 +0000 Subject: virtio header: fix diff generation add old cross reference as well as an chapter parameter to avoid latexdiff errors when chapter is renamed. Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@561 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- headerfile.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/headerfile.tex b/headerfile.tex index cdc8114..767005c 100644 --- a/headerfile.tex +++ b/headerfile.tex @@ -1,5 +1,5 @@ -\chapter{virtio_queue.h}\label{sec:virtio-queue.h} - +\chapter[virtio_queue.h]{virtio_queue.h}\label{sec:virtio-queue.h} +\label{sec:virtio-ring.h} This file is also available at the link \virtiourlh. All definitions in this section are for non-normative reference -- cgit v1.2.3 From caaf1f08c8d3082405de562c1b07c1af40fa2330 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:12:18 +0000 Subject: fixupdiff: actually apply the DIFadd/DIFdel hack looks like recent changes made it inactive: must change $line, not $_. Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@562 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- fixupdiff.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fixupdiff.pl b/fixupdiff.pl index e274d00..f66eaa3 100644 --- a/fixupdiff.pl +++ b/fixupdiff.pl @@ -26,8 +26,8 @@ while (<>) { # As a result, number of \color directives goes does sufficiently # enough to avoid the overflow error. - s/\\DIFdelbegin \\DIFdel\{([^}]*)\}\\DIFdelend/\\DIFdeltext{$1}/; - s/\\DIFaddbegin \\DIFadd\{([^}]*)\}\\DIFaddend/\\DIFaddtext{$1}/; + $line =~ s/\\DIFdelbegin \\DIFdel\{([^}]*)\}\\DIFdelend/\\DIFdeltext{$1}/; + $line =~ s/\\DIFaddbegin \\DIFadd\{([^}]*)\}\\DIFaddend/\\DIFaddtext{$1}/; print $line; if (m/%DIFDELCMD\s+<\s+\\end\{lstlisting\}/) { -- cgit v1.2.3 From a510be931481d7cf08e9f9a055f815e9fca11a50 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:12:41 +0000 Subject: makediff: cherry pick file name change Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@563 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- makediff.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/makediff.sh b/makediff.sh index d7df5d0..71b640e 100755 --- a/makediff.sh +++ b/makediff.sh @@ -19,6 +19,7 @@ while read -r rev; do echo "Applying $rev" git cherry-pick `git rev-list -1 -F --grep "$rev" $newrev` || exit 1 done << 'EOF' +headerfile: rename virtio_ring to virtio queue EOF #mv specvars.tex specvars-orig.tex -- cgit v1.2.3 From cf56d824c88b9707b1db7e591661aebdf67ede60 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 17:31:33 +0000 Subject: cl: list changes since CSPRD05 Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@565 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- cl-os.tex | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/cl-os.tex b/cl-os.tex index aee28d6..da78bf8 100644 --- a/cl-os.tex +++ b/cl-os.tex @@ -76,3 +76,59 @@ This resolves VIRTIO-146. See \ref{sec:Transition from earlier specification drafts}. } \\ \hline +554 & 16 Feb 2016 & Thomas Huth & {virtio-net: fix inconsistent legacy header size + + Current text says: + The legacy driver only presented num_buffers in the struct + virtio_net_hdr when VIRTIO_NET_F_MRG_RXBUF was not negotiated; + + Should be: + "\dots was negotiated \dots" instead of "\dots was not negotiated \dots" + + To be consistent with the following: + without that feature the structure was 2 bytes shorter. + +See \ref{sec:Device Types / Network Device / Device Operation / Legacy Interface: Device Operation}. +} \\ +\hline +555 & 16 Feb 2016 & Michael S. Tsirkin & {virtio header: tweak +change motivation + + The changes are not just to remove Linux assumptions, + we have also renamed ring->queue. + Tweak the header description accordingly. + +See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Helpers for Operating Virtqueues}. +} \\ +\hline +558 & 16 Feb 2016 & Michael S. Tsirkin & {rename virtio_ring.h to virtio_queue.h + + Since vring* and VRING* have been replaced with virtq* and VIRTQ* + respectively, rename the header virtio_ring.h to virtio_queue.h. + +See \ref{sec:virtio-queue.h}. +} \\ +\hline +559 & 16 Feb 2016 & Michael S. Tsirkin & {init: sort status bits + + Status bit order is inconsistent: they are neither in increasing + order nor in the order they are likely to be used. + + The second approach seems more useful since there aren't + that many bits, so the numerical order does not help much. + + A typical order of use would be: + +\begin{itemize} +\item ACKNOWLEDGE +\item DRIVER +\item then either FAILED or FEATURES_OK +\item then either FAILED or DRIVER_OK +\item then DEVICE_NEEDS_RESET (if device detects an error) +\end{itemize} + + Sort the bits accordingly. + +See \ref{sec:Basic Facilities of a Virtio Device / Device Status Field}. +} \\ +\hline -- cgit v1.2.3 From fed7c9840265d7a5f251db42f6ee6d0c3f67eee0 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 18:09:33 +0000 Subject: makediff: suppress diff for chater names Temporary hack since we have nameref pointing to a chapter name, and that conflicts with latexdiff. Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@566 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- makediff.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/makediff.sh b/makediff.sh index 71b640e..1dd75d4 100755 --- a/makediff.sh +++ b/makediff.sh @@ -52,6 +52,7 @@ sed 's/\\footnote{/\\footnote {/' new/flat.tex > new/flat-fixed.tex latexdiff-fast --config \ "FLOATENV=(?:figure|longtable|table|tabular|plate|lstlisting|note|enumerate|itemize)[\w\d*@]*,PICTUREENV=(?:picture|DIFdeltextcstwo|DIFnomarkup|lstlisting)[\w\d*@]*" \ --append-safecmd=field --append-textcmd=mmioreg \ + --exclude-textcmd=chapter \ --ignore-warnings -p diffpreamble.tex old/flat-fixed.tex \ new/flat-fixed.tex > virtio-diff-tofix.tex perl fixupdiff.pl virtio-diff-tofix.tex > virtio-diff.tex -- cgit v1.2.3 From dea81ca257e98a766ddf28ca410c17757f40aa80 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 19:32:32 +0000 Subject: acknowledgements: update affiliation for Thomas Huth Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@567 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- acknowledgements.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acknowledgements.tex b/acknowledgements.tex index 6c86d12..73f05c1 100644 --- a/acknowledgements.tex +++ b/acknowledgements.tex @@ -41,6 +41,6 @@ Gerd Hoffmann, Red Hat \newline Jason Wang, Red Hat \newline Laura Novich, Red Hat \newline Patrick Durusau, Technical Advisory Board, OASIS \newline -Thomas Huth, IBM \newline +Thomas Huth, Red Hat \newline Yan Vugenfirer, Red Hat / Daynix \newline \end{oasistitlesection} -- cgit v1.2.3 From e16283e8f18b84ed2e4372089ae402a76cbe69b1 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 19:33:08 +0000 Subject: acknowledgements: acknowledge review by Kevin Lo Cc: Kevin Lo Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@568 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- acknowledgements.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/acknowledgements.tex b/acknowledgements.tex index 73f05c1..53942b0 100644 --- a/acknowledgements.tex +++ b/acknowledgements.tex @@ -43,4 +43,5 @@ Laura Novich, Red Hat \newline Patrick Durusau, Technical Advisory Board, OASIS \newline Thomas Huth, Red Hat \newline Yan Vugenfirer, Red Hat / Daynix \newline +Kevin Lo, MSI \newline \end{oasistitlesection} -- cgit v1.2.3 From 472df8f030387cf302ae390609613a336a3027ef Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Tue, 16 Feb 2016 19:33:33 +0000 Subject: title: drop Rusty's email from chair/editor list I kept Rusty's name in the acknowledgements section, but listing him as Chair/Editor does not help since the email listed bounces. Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@569 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- title.tex | 2 -- 1 file changed, 2 deletions(-) diff --git a/title.tex b/title.tex index c8d5a07..8138417 100644 --- a/title.tex +++ b/title.tex @@ -36,12 +36,10 @@ \end{oasistitlesection} \begin{oasistitlesection}{Chairs} -Rusty Russell (\href{mailto:rusty@au.ibm.com}{rusty@au.ibm.com}), \href{http://www.ibm.com/}{IBM}\newline Michael S. Tsirkin (\href{mailto:mst@redhat.com}{mst@redhat.com}), \href{http://www.redhat.com/}{Red Hat}\newline \end{oasistitlesection} \begin{oasistitlesection}{Editors} -Rusty Russell (\href{mailto:rusty@au.ibm.com}{rusty@au.ibm.com}), \href{http://www.ibm.com/}{IBM}\newline Michael S. Tsirkin (\href{mailto:mst@redhat.com}{mst@redhat.com}), \href{http://www.redhat.com/}{Red Hat}\newline Cornelia Huck (\href{mailto:cornelia.huck@de.ibm.com}{cornelia.huck@de.ibm.com}), \href{http://www.ibm.com/}{IBM}\newline Pawel Moll (\href{mailto:pawel.moll@arm.com}{pawel.moll@arm.com}), \href{http://www.arm.com/}{ARM} -- cgit v1.2.3 From 2aa7268d2808a2fddd3fd81a1f1ff2abb62d37c7 Mon Sep 17 00:00:00 2001 From: mstsirkin Date: Fri, 22 Jul 2016 21:36:09 +0000 Subject: REVISION: update for cs04 Signed-off-by: Michael S. Tsirkin git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio/branches/v1.0@570 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652 --- REVISION | 2 +- REVISION-DATE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/REVISION b/REVISION index 2514f05..6a9f46a 100644 --- a/REVISION +++ b/REVISION @@ -1 +1 @@ -virtio-v1.0-csprd05 +virtio-v1.0-cs04 diff --git a/REVISION-DATE b/REVISION-DATE index 45c9bef..d14a9a6 100644 --- a/REVISION-DATE +++ b/REVISION-DATE @@ -1 +1 @@ -29 October 2015 +03 March 2016 -- cgit v1.2.3