@@ -477,23 +477,22 @@ \subsection{Device Discovery}\label{sec:Virtio Transport Options / Virtio Over M
477477hypervisor/firmware interfaces. The following informative text describes
478478typical flows; the normative obligations follow.
479479
480- Bus implementations MAY discover their devices in various ways:
480+ Bus implementations discover their devices through a mix of platform data,
481+ hypervisor-provided enumeration, or message-based queries such as
482+ \busref {GET_DEVICES }. This specification defines \busref {GET_DEVICES } for
483+ environments that prefer message-driven enumeration, but it does not require
484+ its use when equivalent information is already known out-of-band.
485+
486+ \busnormative {\paragraph }{Device Discovery (Bus)}{Virtio Transport Options / Virtio Over Messages / Device Discovery / Bus}
481487\begin {itemize }
482- \item By parsing platform data such as a device tree or ACPI tables,
483- \item By receiving enumeration data from a hypervisor or firmware,
484- \item By using \busref {GET_DEVICES } messages
485- to query which device numbers are present on this bus instance.
488+ \item A bus implementation MUST ensure that every device number it exposes to the driver has been
489+ validated via either platform data or a successful query such as \busref {GET_DEVICES }.
490+ \item Once a device number is deemed present, the bus implementation SHOULD invoke \msgref {GET_DEVICE_INFO }
491+ so it can register the device with the host OS and allow the appropriate virtio driver to bind.
492+ \item If a bus implementation provides an alternative enumeration mechanism (e.g., ACPI, device tree),
493+ it MAY omit \busref {GET_DEVICES } provided the alternative delivers equivalent information to the driver.
486494\end {itemize }
487495
488- This specification \emph {defines } \busref {GET_DEVICES } for implementations that
489- wish to carry out discovery entirely via messages, but it does \textbf {not }
490- mandate use of this approach. A bus implementation MAY skip
491- \busref {GET_DEVICES } altogether if it already knows which devices exist (e.g.,
492- via a device tree). In any case, once a bus has established the presence of a
493- device, it SHOULD call \msgref {GET_DEVICE_INFO } to retrieve the device ID
494- and vendor ID. The bus can then register the device with the host OS
495- so the appropriate virtio driver probe routine is invoked.
496-
497496\subsection {Device Initialization }
498497\label {sec:Virtio Transport Options / Virtio Over Messages / Device Initialization }
499498
0 commit comments