Este documento constituye una guía técnica y didáctica para la implementación de controladores de dispositivos (device drivers) enfocada en las capas PCI y VirtIO. El objetivo es instruir al desarrollador sobre cómo gestionar la inicialización de dispositivos virtuales, comenzando por la capa PCI y descendiendo hacia el protocolo VirtIO hasta llegar al dispositivo final.
El texto detalla el funcionamiento del Mecanismo de Acceso a la Configuración Mejorado (ECAM), esencial para la arquitectura PCI Express (PCIe). Explica cómo localizar la dirección física del ECAM mediante la tabla MCFG de ACPI y describe la estructura de direccionamiento basada en números de bus, dispositivo, función y registros. Se proporcionan implementaciones concretas en lenguaje Rust para manejar la estructura de los encabezados de los dispositivos (Type 0) y puentes (Type 1), permitiendo identificar dispositivos mediante el Vendor ID (0x1AF4 para VirtIO).
Además, el material aborda la gestión de capacidades mediante listas enlazadas dentro del espacio ECAM y la configuración de interrupciones señalizadas por mensaje (MSI-X). Para habilitar MSI-X, el desarrollador debe desactivar las interrupciones heredadas en el registro de comando y activar el bit 15 del registro de control de mensajes. Este flujo de trabajo es fundamental para cualquier persona que desarrolle kernels o sistemas operativos que requieran interactuar con hardware virtualizado.
