forked from oasis-tcs/virtio-spec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
conformance.tex
677 lines (535 loc) · 44.5 KB
/
conformance.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Conformance
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Conformance}\label{sec:Conformance}
This chapter lists the conformance targets and clauses for each; this
also forms a useful checklist which authors are asked to consult for their
implementations!
\section{Conformance Targets}\label{sec:Conformance / Conformance Targets}
Conformance targets:
\begin{description}
\item[Driver] A driver MUST conform to four conformance clauses:
\begin{itemize}
\item Clause \ref{sec:Conformance / Driver Conformance}.
\item One of clauses \ref{sec:Conformance / Driver Conformance / PCI Driver Conformance}, \ref{sec:Conformance / Driver Conformance / MMIO Driver Conformance} or \ref{sec:Conformance / Driver Conformance / Channel I/O Driver Conformance}.
\item One of clauses
\ref{sec:Conformance / Driver Conformance / Network Driver Conformance},
\ref{sec:Conformance / Driver Conformance / Block Driver Conformance},
\ref{sec:Conformance / Driver Conformance / Console Driver Conformance},
\ref{sec:Conformance / Driver Conformance / Entropy Driver Conformance},
\ref{sec:Conformance / Driver Conformance / Traditional Memory Balloon Driver Conformance},
\ref{sec:Conformance / Driver Conformance / SCSI Host Driver Conformance},
\ref{sec:Conformance / Driver Conformance / Input Driver Conformance},
\ref{sec:Conformance / Driver Conformance / Crypto Driver Conformance},
\ref{sec:Conformance / Driver Conformance / Socket Driver Conformance},
\ref{sec:Conformance / Driver Conformance / File System Driver Conformance},
\ref{sec:Conformance / Driver Conformance / RPMB Driver Conformance},
\ref{sec:Conformance / Driver Conformance / IOMMU Driver Conformance},
\ref{sec:Conformance / Driver Conformance / Sound Driver Conformance},
\ref{sec:Conformance / Driver Conformance / Memory Driver Conformance},
\ref{sec:Conformance / Driver Conformance / I2C Adapter Driver Conformance},
\ref{sec:Conformance / Driver Conformance / SCMI Driver Conformance},
\ref{sec:Conformance / Driver Conformance / GPIO Driver Conformance} or
\ref{sec:Conformance / Driver Conformance / PMEM Driver Conformance}.
\item Clause \ref{sec:Conformance / Legacy Interface: Transitional Device and Transitional Driver Conformance}.
\end{itemize}
\item[Device] A device MUST conform to four conformance clauses:
\begin{itemize}
\item Clause \ref{sec:Conformance / Device Conformance}.
\item One of clauses \ref{sec:Conformance / Device Conformance / PCI Device Conformance}, \ref{sec:Conformance / Device Conformance / MMIO Device Conformance} or \ref{sec:Conformance / Device Conformance / Channel I/O Device Conformance}.
\item One of clauses
\ref{sec:Conformance / Device Conformance / Network Device Conformance},
\ref{sec:Conformance / Device Conformance / Block Device Conformance},
\ref{sec:Conformance / Device Conformance / Console Device Conformance},
\ref{sec:Conformance / Device Conformance / Entropy Device Conformance},
\ref{sec:Conformance / Device Conformance / Traditional Memory Balloon Device Conformance},
\ref{sec:Conformance / Device Conformance / SCSI Host Device Conformance},
\ref{sec:Conformance / Device Conformance / GPU Device Conformance},
\ref{sec:Conformance / Device Conformance / Input Device Conformance},
\ref{sec:Conformance / Device Conformance / Crypto Device Conformance},
\ref{sec:Conformance / Device Conformance / Socket Device Conformance},
\ref{sec:Conformance / Device Conformance / File System Device Conformance},
\ref{sec:Conformance / Device Conformance / RPMB Device Conformance},
\ref{sec:Conformance / Device Conformance / IOMMU Device Conformance},
\ref{sec:Conformance / Device Conformance / Sound Device Conformance},
\ref{sec:Conformance / Device Conformance / Memory Device Conformance},
\ref{sec:Conformance / Device Conformance / I2C Adapter Device Conformance},
\ref{sec:Conformance / Device Conformance / SCMI Device Conformance},
\ref{sec:Conformance / Device Conformance / GPIO Device Conformance} or
\ref{sec:Conformance / Device Conformance / PMEM Device Conformance}.
\item Clause \ref{sec:Conformance / Legacy Interface: Transitional Device and Transitional Driver Conformance}.
\end{itemize}
\end{description}
\conformance{\section}{Driver Conformance}\label{sec:Conformance / Driver Conformance}
A driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Device Status Field}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Feature Bits}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Device Reset}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Device Configuration Space}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Message Framing}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor Table}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor Table / Indirect Descriptors}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / Used Buffer Notification Suppression}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Available Ring}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Used Ring}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / Available Buffer Notification Suppression}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / Supplying Buffers to The Device / Updating idx}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Virtqueues / Supplying Buffers to The Device / Notifying The Device}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Packed Virtqueues}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / PAcked Virtqueues / The Virtqueue Descriptor Table}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Packed Virtqueues / Scatter-Gather Support}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Packed Virtqueues / The Virtqueue Descriptor Table / Indirect Descriptors}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Packed Virtqueues / Supplying Buffers to The Device / Updating flags}
\item \ref{drivernormative:Basic Facilities of a Virtio Device / Packed Virtqueues / Supplying Buffers to The Device / Sending Available Buffer Notifications}
\item \ref{drivernormative:General Initialization And Device Operation / Device Initialization}
\item \ref{drivernormative:General Initialization And Device Operation / Device Cleanup}
\item \ref{drivernormative:Reserved Feature Bits}
\end{itemize}
\conformance{\subsection}{PCI Driver Conformance}\label{sec:Conformance / Driver Conformance / PCI Driver Conformance}
A PCI driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / Virtio Structure PCI Capabilities}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Common configuration structure layout}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / ISR status capability}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / PCI configuration access capability}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization / MSI-X Vector Configuration}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Notification of Device Configuration Changes}
\end{itemize}
\conformance{\subsection}{MMIO Driver Conformance}\label{sec:Conformance / Driver Conformance / MMIO Driver Conformance}
An MMIO driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over MMIO / MMIO Device Register Layout}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over MMIO / MMIO-specific Initialization And Device Operation / Device Initialization}
\item \ref{drivernormative:Virtio Transport Options / Virtio Over MMIO / MMIO-specific Initialization And Device Operation / Notifications From The Device}
\end{itemize}
\conformance{\subsection}{Channel I/O Driver Conformance}\label{sec:Conformance / Driver Conformance / Channel I/O Driver Conformance}
A Channel I/O driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Basic Concepts}
\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting the Virtio Revision}
\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Communicating Status Information}
\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Host->Guest Notification / Notification via Adapter I/O Interrupts}
\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Guest->Host Notification}
\item \ref{drivernormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Resetting Devices}
\end{itemize}
\conformance{\subsection}{Network Driver Conformance}\label{sec:Conformance / Driver Conformance / Network Driver Conformance}
A network driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / Network Device / Device configuration layout}
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Packet Transmission}
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Setting Up Receive Buffers}
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Processing of Incoming Packets}
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Packet Receive Filtering}
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering}
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Gratuitous Packet Sending}
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Automatic receive steering in multiqueue mode}
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Offloads State Configuration / Setting Offloads State}
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Receive-side scaling (RSS) }
\item \ref{drivernormative:Device Types / Network Device / Device Operation / Control Virtqueue / Notifications Coalescing}
\end{itemize}
\conformance{\subsection}{Block Driver Conformance}\label{sec:Conformance / Driver Conformance / Block Driver Conformance}
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}
\conformance{\subsection}{Console Driver Conformance}\label{sec:Conformance / Driver Conformance / Console Driver Conformance}
A console driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / Console Device / Device Operation}
\item \ref{drivernormative:Device Types / Console Device / Device Operation / Multiport Device Operation}
\end{itemize}
\conformance{\subsection}{Entropy Driver Conformance}\label{sec:Conformance / Driver Conformance / Entropy Driver Conformance}
An entropy driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / Entropy Device / Device Operation}
\end{itemize}
\conformance{\subsection}{Traditional Memory Balloon Driver Conformance}\label{sec:Conformance / Driver Conformance / Traditional Memory Balloon Driver Conformance}
A traditional memory balloon driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / Memory Balloon Device / Feature bits}
\item \ref{drivernormative:Device Types / Memory Balloon Device / Device Operation}
\item \ref{drivernormative:Device Types / Memory Balloon Device / Device Operation / Memory Statistics}
\item \ref{drivernormative:Device Types / Memory Balloon Device / Device Operation / Free Page Hinting}
\item \ref{drivernormative:Device Types / Memory Balloon Device / Device Operation / Page Poison}
\item \ref{drivernormative:Device Types / Memory Balloon Device / Device Operation / Free Page Reporting}
\end{itemize}
\conformance{\subsection}{SCSI Host Driver Conformance}\label{sec:Conformance / Driver Conformance / SCSI Host Driver Conformance}
An SCSI host driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / SCSI Host Device / Device configuration layout}
\item \ref{drivernormative:Device Types / SCSI Host Device / Device Operation / Device Operation: Request Queues}
\item \ref{drivernormative:Device Types / SCSI Host Device / Device Operation / Device Operation: eventq}
\end{itemize}
\conformance{\subsection}{Input Driver Conformance}\label{sec:Conformance / Driver Conformance / Input Driver Conformance}
An input driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / Input Device / Device Initialization}
\item \ref{drivernormative:Device Types / Input Device / Device Operation}
\end{itemize}
\conformance{\subsection}{Crypto Driver Conformance}\label{sec:Conformance / Driver Conformance / Crypto Driver Conformance}
A Crypto driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / Crypto Device / Device configuration layout}
\item \ref{drivernormative:Device Types / Crypto Device / Device Initialization}
\item \ref{drivernormative:Device Types / Crypto Device / Device Operation / Control Virtqueue / Session operation / Session operation: create session}
\item \ref{drivernormative:Device Types / Crypto Device / Device Operation / Control Virtqueue / Session operation / Session operation: destroy session}
\item \ref{drivernormative:Device Types / Crypto Device / Device Operation / HASH Service Operation}
\item \ref{drivernormative:Device Types / Crypto Device / Device Operation / MAC Service Operation}
\item \ref{drivernormative:Device Types / Crypto Device / Device Operation / Symmetric algorithms Operation}
\item \ref{drivernormative:Device Types / Crypto Device / Device Operation / AEAD Service Operation}
\end{itemize}
\conformance{\subsection}{Socket Driver Conformance}\label{sec:Conformance / Driver Conformance / Socket Driver Conformance}
A socket driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / Socket Device / Feature bits}
\item \ref{drivernormative:Device Types / Socket Device / Device Operation / Buffer Space Management}
\item \ref{drivernormative:Device Types / Socket Device / Device Operation / Receive and Transmit}
\item \ref{drivernormative:Device Types / Socket Device / Device Operation / Device Events}
\end{itemize}
\conformance{\subsection}{File System Driver Conformance}\label{sec:Conformance / Driver Conformance / File System Driver Conformance}
A file system driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / File System Device / Device configuration layout}
\item \ref{drivernormative:Device Types / File System Device / Device Operation / Device Operation: High Priority Queue}
\item \ref{drivernormative:Device Types / File System Device / Device Operation / Device Operation: Notification Queue}
\item \ref{drivernormative:Device Types / File System Device / Device Operation / Device Operation: DAX Window}
\end{itemize}
\conformance{\subsection}{RPMB Driver Conformance}\label{sec:Conformance / Driver Conformance / RPMB Driver Conformance}
A RPMB driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / RPMB Device / Device Operation}
\end{itemize}
\conformance{\subsection}{IOMMU Driver Conformance}\label{sec:Conformance / Driver Conformance / IOMMU Driver Conformance}
An IOMMU driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / IOMMU Device / Feature bits}
\item \ref{drivernormative:Device Types / IOMMU Device / Device configuration layout}
\item \ref{drivernormative:Device Types / IOMMU Device / Device Initialization}
\item \ref{drivernormative:Device Types / IOMMU Device / Device operations}
\item \ref{drivernormative:Device Types / IOMMU Device / Device operations / ATTACH request}
\item \ref{drivernormative:Device Types / IOMMU Device / Device operations / DETACH request}
\item \ref{drivernormative:Device Types / IOMMU Device / Device operations / MAP request}
\item \ref{drivernormative:Device Types / IOMMU Device / Device operations / UNMAP request}
\item \ref{drivernormative:Device Types / IOMMU Device / Device operations / PROBE request}
\item \ref{drivernormative:Device Types / IOMMU Device / Device operations / PROBE properties / RESVMEM}
\item \ref{drivernormative:Device Types / IOMMU Device / Device operations / Fault reporting}
\end{itemize}
\conformance{\subsection}{Sound Driver Conformance}\label{sec:Conformance / Driver Conformance / Sound Driver Conformance}
A sound driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / Sound Device / Device Initialization}
\item \ref{drivernormative:Device Types / Sound Device / Item Information Request}
\item \ref{drivernormative:Device Types / Sound Device / Device Operation / PCM Stream Parameters}
\item \ref{drivernormative:Device Types / Sound Device / Device Operation / PCM Output Stream}
\item \ref{drivernormative:Device Types / Sound Device / Device Operation / PCM Input Stream}
\item \ref{drivernormative:Device Types / Sound Device / Device Operation / Control Element Value}
\item \ref{drivernormative:Device Types / Sound Device / Device Operation / Control Element Metadata}
\end{itemize}
\conformance{\subsection}{Memory Driver Conformance}\label{sec:Conformance / Driver Conformance / Memory Driver Conformance}
A memory driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / Memory Device / Device configuration layout}
\item \ref{drivernormative:Device Types / Memory Device / Device Initialization}
\item \ref{drivernormative:Device Types / Memory Device / Device Operation}
\item \ref{drivernormative:Device Types / Memory Device / Device Operation / PLUG request}
\item \ref{drivernormative:Device Types / Memory Device / Device Operation / UNPLUG request}
\item \ref{drivernormative:Device Types / Memory Device / Device Operation / UNPLUG ALL request}
\item \ref{drivernormative:Device Types / Memory Device / Device Operation / STATE request}
\end{itemize}
\conformance{\subsection}{I2C Adapter Driver Conformance}\label{sec:Conformance / Driver Conformance / I2C Adapter Driver Conformance}
An I2C Adapter driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / I2C Adapter Device / Device Operation}
\end{itemize}
\conformance{\subsection}{SCMI Driver Conformance}\label{sec:Conformance / Driver Conformance / SCMI Driver Conformance}
An SCMI driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / SCMI Device / Device Operation / cmdq Operation}
\item \ref{drivernormative:Device Types / SCMI Device / Device Operation / Setting Up eventq Buffers}
\end{itemize}
\conformance{\subsection}{GPIO Driver Conformance}\label{sec:Conformance / Driver Conformance / GPIO Driver Conformance}
A General Purpose Input/Output (GPIO) driver MUST conform to the following
normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / GPIO Device / requestq Operation}
\item \ref{drivernormative:Device Types / GPIO Device / eventq Operation}
\end{itemize}
\conformance{\subsection}{PMEM Driver Conformance}\label{sec:Conformance / Driver Conformance / PMEM Driver Conformance}
A PMEM driver MUST conform to the following normative statements:
\begin{itemize}
\item \ref{drivernormative:Device Types / PMEM Device / Device Initialization}
\end{itemize}
\conformance{\section}{Device Conformance}\label{sec:Conformance / Device Conformance}
A device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Device Status Field}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Feature Bits}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Device Reset}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Device Configuration Space}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Message Framing}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor Table}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Descriptor Table / Indirect Descriptors}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / Used Buffer Notification Suppression}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / The Virtqueue Used Ring}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Virtqueues / Available Buffer Notification Suppression}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Packed Virtqueues}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Packed Virtqueues / The Virtqueue Descriptor Table}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Packed Virtqueues / Scatter-Gather Support}
\item \ref{devicenormative:Basic Facilities of a Virtio Device / Shared Memory Regions}
\item \ref{devicenormative:Reserved Feature Bits}
\end{itemize}
\conformance{\subsection}{PCI Device Conformance}\label{sec:Conformance / Device Conformance / PCI Device Conformance}
A PCI device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / Virtio Structure PCI Capabilities}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Common configuration structure layout}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / ISR status capability}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Device-specific configuration}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Shared memory capability}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / PCI configuration access capability}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization / Non-transitional Device With Legacy Driver}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization / MSI-X Vector Configuration}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Used Buffer Notifications}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Notification of Device Configuration Changes}
\end{itemize}
\conformance{\subsection}{MMIO Device Conformance}\label{sec:Conformance / Device Conformance / MMIO Device Conformance}
An MMIO device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Virtio Transport Options / Virtio Over MMIO / MMIO Device Register Layout}
\end{itemize}
\conformance{\subsection}{Channel I/O Device Conformance}\label{sec:Conformance / Device Conformance / Channel I/O Device Conformance}
A Channel I/O device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Basic Concepts}
\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting the Virtio Revision}
\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Configuring a Virtqueue}
\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Communicating Status Information}
\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting Up Indicators / Setting Up Two-Stage Queue Indicators}
\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Host->Guest Notification / Notification via Adapter I/O Interrupts}
\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Guest->Host Notification}
\item \ref{devicenormative:Virtio Transport Options / Virtio over channel I/O / Device Operation / Resetting Devices}
\end{itemize}
\conformance{\subsection}{Network Device Conformance}\label{sec:Conformance / Device Conformance / Network Device Conformance}
A network device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / Network Device / Device configuration layout}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Packet Transmission}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Setting Up Receive Buffers}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Processing of Incoming Packets}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Packet Receive Filtering}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Gratuitous Packet Sending}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Automatic receive steering in multiqueue mode}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Receive-side scaling (RSS) / RSS processing}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Notifications Coalescing}
\end{itemize}
\conformance{\subsection}{Block Device Conformance}\label{sec:Conformance / Device Conformance / Block Device Conformance}
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}
\conformance{\subsection}{Console Device Conformance}\label{sec:Conformance / Device Conformance / Console Device Conformance}
A console device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / Console Device / Device Initialization}
\item \ref{devicenormative:Device Types / Console Device / Device Operation / Multiport Device Operation}
\end{itemize}
\conformance{\subsection}{Entropy Device Conformance}\label{sec:Conformance / Device Conformance / Entropy Device Conformance}
An entropy device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / Entropy Device / Device Operation}
\end{itemize}
\conformance{\subsection}{Traditional Memory Balloon Device Conformance}\label{sec:Conformance / Device Conformance / Traditional Memory Balloon Device Conformance}
A traditional memory balloon device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / Memory Balloon Device / Feature bits}
\item \ref{devicenormative:Device Types / Memory Balloon Device / Device Operation}
\item \ref{devicenormative:Device Types / Memory Balloon Device / Device Operation / Memory Statistics}
\item \ref{devicenormative:Device Types / Memory Balloon Device / Device Operation / Free Page Hinting}
\item \ref{devicenormative:Device Types / Memory Balloon Device / Device Operation / Page Poison}
\item \ref{devicenormative:Device Types / Memory Balloon Device / Device Operation / Free Page Reporting}
\end{itemize}
\conformance{\subsection}{SCSI Host Device Conformance}\label{sec:Conformance / Device Conformance / SCSI Host Device Conformance}
An SCSI host device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / SCSI Host Device / Device configuration layout}
\item \ref{devicenormative:Device Types / SCSI Host Device / Device Initialization}
\item \ref{devicenormative:Device Types / SCSI Host Device / Device Operation / Device Operation: Request Queues}
\item \ref{devicenormative:Device Types / SCSI Host Device / Device Operation / Device Operation: eventq}
\end{itemize}
\conformance{\subsection}{GPU Device Conformance}\label{sec:Conformance / Device Conformance / GPU Device Conformance}
A GPU device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / GPU Device / Device Initialization}
\item \ref{devicenormative:Device Types / GPU Device / Device Operation / Device Operation: Command lifecycle and fencing}
\end{itemize}
\conformance{\subsection}{Input Device Conformance}\label{sec:Conformance / Device Conformance / Input Device Conformance}
An input device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / Input Device / Device Initialization}
\item \ref{devicenormative:Device Types / Input Device / Device Operation}
\end{itemize}
\conformance{\subsection}{Crypto Device Conformance}\label{sec:Conformance / Device Conformance / Crypto Device Conformance}
A Crypto device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / Crypto Device / Device configuration layout}
\item \ref{devicenormative:Device Types / Crypto Device / Device Operation / Control Virtqueue / Session operation / Session operation: create session}
\item \ref{devicenormative:Device Types / Crypto Device / Device Operation / Control Virtqueue / Session operation / Session operation: destroy session}
\item \ref{devicenormative:Device Types / Crypto Device / Device Operation / HASH Service Operation}
\item \ref{devicenormative:Device Types / Crypto Device / Device Operation / MAC Service Operation}
\item \ref{devicenormative:Device Types / Crypto Device / Device Operation / Symmetric algorithms Operation}
\item \ref{devicenormative:Device Types / Crypto Device / Device Operation / AEAD Service Operation}
\end{itemize}
\conformance{\subsection}{Socket Device Conformance}\label{sec:Conformance / Device Conformance / Socket Device Conformance}
A socket device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / Socket Device / Feature bits}
\item \ref{devicenormative:Device Types / Socket Device / Device Operation / Buffer Space Management}
\item \ref{devicenormative:Device Types / Socket Device / Device Operation / Receive and Transmit}
\end{itemize}
\conformance{\subsection}{File System Device Conformance}\label{sec:Conformance / Device Conformance / File System Device Conformance}
A file system device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / File System Device / Device configuration layout}
\item \ref{devicenormative:Device Types / File System Device / Device Operation / Device Operation: High Priority Queue}
\item \ref{devicenormative:Device Types / File System Device / Device Operation / Device Operation: DAX Window}
\end{itemize}
\conformance{\subsection}{RPMB Device Conformance}\label{sec:Conformance / Device Conformance / RPMB Device Conformance}
An RPMB device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / RPMB Device / Device Initialization}
\item \ref{devicenormative:Device Types / RPMB Device / Device Operation / Device Operation: Program Key}
\item \ref{devicenormative:Device Types / RPMB Device / Device Operation / Device Operation: Get Write Counter}
\item \ref{devicenormative:Device Types / RPMB Device / Device Operation / Device Operation: Data Write}
\item \ref{devicenormative:Device Types / RPMB Device / Device Operation / Device Operation: Data Read}
\item \ref{devicenormative:Device Types / RPMB Device / Device Operation / Device Operation: Result Read}
\item \ref{devicenormative:Device Types / RPMB Device / Device Operation}
\end{itemize}
\conformance{\subsection}{IOMMU Device Conformance}\label{sec:Conformance / Device Conformance / IOMMU Device Conformance}
An IOMMU device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / IOMMU Device / Feature bits}
\item \ref{devicenormative:Device Types / IOMMU Device / Device configuration layout}
\item \ref{devicenormative:Device Types / IOMMU Device / Device operations}
\item \ref{devicenormative:Device Types / IOMMU Device / Device operations / ATTACH request}
\item \ref{devicenormative:Device Types / IOMMU Device / Device operations / DETACH request}
\item \ref{devicenormative:Device Types / IOMMU Device / Device operations / MAP request}
\item \ref{devicenormative:Device Types / IOMMU Device / Device operations / UNMAP request}
\item \ref{devicenormative:Device Types / IOMMU Device / Device operations / PROBE request}
\item \ref{devicenormative:Device Types / IOMMU Device / Device operations / PROBE properties / RESVMEM}
\item \ref{devicenormative:Device Types / IOMMU Device / Device operations / Fault reporting}
\end{itemize}
\conformance{\subsection}{Sound Device Conformance}\label{sec:Conformance / Device Conformance / Sound Device Conformance}
A sound device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / Jack Information}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / PCM Stream Information}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / PCM Stream Parameters}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / PCM Stream Release}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / PCM Output Stream}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / PCM Input Stream}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / Channel Map Information}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / Control Element Information}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / Control Element Metadata}
\item \ref{devicenormative:Device Types / Sound Device / Device Operation / Control Element Notifications}
\end{itemize}
\conformance{\subsection}{Memory Device Conformance}\label{sec:Conformance / Device Conformance / Memory Device Conformance}
A memory device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / Memory Device / Device configuration layout}
\item \ref{devicenormative:Device Types / Memory Device / Device Initialization}
\item \ref{devicenormative:Device Types / Memory Device / Device Operation}
\item \ref{devicenormative:Device Types / Memory Device / Device Operation / PLUG request}
\item \ref{devicenormative:Device Types / Memory Device / Device Operation / UNPLUG request}
\item \ref{devicenormative:Device Types / Memory Device / Device Operation / UNPLUG ALL request}
\item \ref{devicenormative:Device Types / Memory Device / Device Operation / STATE request}
\end{itemize}
\conformance{\subsection}{I2C Adapter Device Conformance}\label{sec:Conformance / Device Conformance / I2C Adapter Device Conformance}
An I2C Adapter device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / I2C Adapter Device / Device Operation}
\end{itemize}
\conformance{\subsection}{SCMI Device Conformance}\label{sec:Conformance / Device Conformance / SCMI Device Conformance}
An SCMI device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / SCMI Device / Feature bits}
\item \ref{devicenormative:Device Types / SCMI Device / Device Operation / cmdq Operation}
\item \ref{devicenormative:Device Types / SCMI Device / Device Operation / eventq Operation}
\item \ref{devicenormative:Device Types / SCMI Device / Device Operation / Shared Memory Operation}
\end{itemize}
\conformance{\subsection}{GPIO Device Conformance}\label{sec:Conformance / Device Conformance / GPIO Device Conformance}
A General Purpose Input/Output (GPIO) device MUST conform to the following
normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / GPIO Device / requestq Operation}
\item \ref{devicenormative:Device Types / GPIO Device / eventq Operation}
\end{itemize}
\conformance{\subsection}{PMEM Device Conformance}\label{sec:Conformance / Device Conformance / PMEM Device Conformance}
A PMEM device MUST conform to the following normative statements:
\begin{itemize}
\item \ref{devicenormative:Device Types / PMEM Device / Device Initialization}
\item \ref{devicenormative:Device Types / PMEM Device / Device Operation / Virtqueue flush}
\item \ref{devicenormative:Device Types / PMEM Device / Device Operation / Virtqueue return}
\end{itemize}
\conformance{\section}{Legacy Interface: Transitional Device and Transitional Driver Conformance}\label{sec:Conformance / Legacy Interface: Transitional Device and Transitional Driver Conformance}
A conformant implementation MUST be either transitional or
non-transitional, see \ref{intro:Legacy
Interface: Terminology}.
An implementation MAY choose to implement OPTIONAL support for the
legacy interface, including support for legacy drivers
or devices, by conforming to all of the MUST or
REQUIRED level requirements for the legacy interface
for the transitional devices and drivers.
The requirements for the legacy interface for transitional implementations
are located in sections named ``Legacy Interface'' listed below:
\begin{itemize}
\item Section \ref{sec:Basic Facilities of a Virtio Device /
Feature Bits / Legacy Interface: A Note on Feature Bits}
\item Section \ref{sec:Basic Facilities of a Virtio Device / Device Configuration Space / Legacy Interface: A Note on Configuration Space endian-ness}
\item Section \ref{sec:Basic Facilities of a Virtio Device / Device Configuration Space / Legacy Interface: Device Configuration Space}
\item Section \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Legacy Interfaces: A Note on Virtqueue Layout}
\item Section \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Legacy Interfaces: A Note on Virtqueue Endianness}
\item Section \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Message Framing / Legacy Interface: Message Framing}
\item Section \ref{sec:General Initialization And Device Operation / Device Initialization / Legacy Interface: Device Initialization}
\item Section \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Discovery / Legacy Interfaces: A Note on PCI Device Discovery}
\item Section \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Legacy Interfaces: A Note on PCI Device Layout}
\item Section \ref{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device Operation / Device Initialization / Virtio Device Configuration Layout Detection / Legacy Interface: A Note on Device Layout Detection}
\item Section \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}
\item Section \ref{sec:Virtio Transport Options / Virtio Over MMIO / Legacy interface}
\item Section \ref{sec:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting the Virtio Revision / Legacy Interfaces: A Note on Setting the Virtio Revision}
\item Section \ref{sec:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Configuring a Virtqueue / Legacy Interface: A Note on Configuring a Virtqueue}
\item Section \ref{sec:Virtio Transport Options / Virtio over channel I/O / Device Operation / Host->Guest Notification / Legacy Interfaces: A Note on Host->Guest Notification}
\item Section \ref{sec:Virtio Transport Options / Virtio over channel I/O / Device Initialization / Setting Up Indicators / Legacy Interfaces: A Note on Setting Up Indicators}
\item Section \ref{sec:Device Types / Network Device / Feature bits / Legacy Interface: Feature bits}
\item Section \ref{sec:Device Types / Network Device / Device configuration layout / Legacy Interface: Device configuration layout}
\item Section \ref{sec:Device Types / Network Device / Device Operation / Legacy Interface: Device Operation}
\item Section \ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering / Legacy Interface: Setting MAC Address Filtering}
\item Section \ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / VLAN Filtering / Legacy Interface: VLAN Filtering}
\item Section \ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Automatic receive steering in multiqueue mode / Legacy Interface: Automatic receive steering in multiqueue mode}
\item Section \ref{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Offloads State Configuration / Setting Offloads State / Legacy Interface: Setting Offloads State}
\item Section \ref{sec:Device Types / Block Device / Feature bits / Legacy Interface: Feature bits}
\item Section \ref{sec:Device Types / Block Device / Device configuration layout / Legacy Interface: Device configuration layout}
\item Section \ref{sec:Device Types / Block Device / Device Initialization / Legacy Interface: Device Initialization}
\item Section \ref{sec:Device Types / Block Device / Device Operation / Legacy Interface: Device Operation}
\item Section \ref{sec:Device Types / Console Device / Device configuration layout / Legacy Interface: Device configuration layout}
\item Section \ref{sec:Device Types / Console Device / Device Operation / Legacy Interface: Device Operation}
\item Section \ref{sec:Device Types / Memory Balloon Device / Feature bits / Legacy Interface: Feature bits}
\item Section \ref{sec:Device Types / Memory Balloon Device / Device Operation / Legacy Interface: Device Operation}
\item Section \ref{sec:Device Types / Memory Balloon Device / Device Operation / Memory Statistics / Legacy Interface: Memory Statistics}
\item Section \ref{sec:Device Types / SCSI Host Device / Device configuration layout / Legacy Interface: Device configuration layout}
\item Section \ref{sec:Device Types / SCSI Host Device / Device Operation / Legacy Interface: Device Operation}
\item Section \ref{sec:Device Types / SCSI Host Device / Device Operation / Device Operation: Request Queues / Legacy Interface: Device Operation: Request Queues}
\item Section \ref{sec:Device Types / SCSI Host Device / Device Operation / Device Operation: controlq / Legacy Interface: Device Operation: controlq}
\item Section \ref{sec:Device Types / SCSI Host Device / Device Operation / Device Operation: eventq / Legacy Interface: Device Operation: eventq}
\item Section \ref{sec:Reserved Feature Bits / Legacy Interface: Reserved Feature Bits}
\end{itemize}