# Virtio feature negotiation contract (K1471–K1475) This transport-neutral model follows [Virtio 1.3, sections 2.2 and 3.1](https://docs.oasis-open.org/virtio/virtio/v1.3/virtio-v1.3.html). The caller owns a validated MMIO v2 or PCI common configuration region and performs correctly sized physical register accesses. - A new generation begins only after a physical device reset has been observed. The driver sets ACKNOWLEDGE and DRIVER before reading offered feature words. A stale generation cannot modify a newer session. - The accepted set must be a subset of both the offered set and the driver's explicitly supported set. Required bits must be present. Modern operation requires `VIRTIO_F_VERSION_1` (bit 32). Every accepted feature dependency must also be accepted. Unknown or reserved offered bits are ignored rather than copied through. - The driver writes accepted low and high feature words before setting FEATURES_OK. It rereads status and proceeds only if FEATURES_OK remains set and FAILED is clear. No feature changes are allowed after that point. DRIVER_OK follows device-specific queue setup, which is outside this local model. - A rejected proposal leaves the current session unchanged. Failed FEATURES_OK readback puts the generation into a failed state; the caller may restart only after another observed reset. Ownership cannot be released while an accepted session is live. - K1475 guest acceptance must exercise a real modern Virtio transport in direct and UEFI 256, 512, and 1024 MiB guests, log offered and accepted words, observe FEATURES_OK and DRIVER_OK, then reset and release all ownership. Product release acceptance remains separate.