2010-06-26 8 views
5

Estoy tratando de entender el mecanismo de virtio en Linux. Leí que la función kick notificará al lado del host sobre los búferes recién publicados. Estoy buscando especialmente en virtio_net. Una vez que un paquete está listo para la transmisión, la función de patada se llama here. Desde aquí tracé la llamada y creo que va al this. Desde aquí, ¿a dónde va? Qué código contiene el controlador backend de virtio. ¿Dónde está el código en el hipervisor al que irá esta patada? Gracias ...¿Dónde está la entrada de hypercalls en kvm?

Gracias, Bala

Respuesta

3

El puerto IO accede aquí se comunica con el "hardware" de la máquina virtual, que se realiza mediante la instancia QEMU que soporta la máquina virtual. El lugar para comenzar en el código QEMU es virtio_ioport_write() in hw/virtio-pci.c.

+0

Muchas gracias. Una pregunta más. ¿Se está ejecutando la instancia de qemu en el espacio de usuario de guestOS o el espacio de usuario de HostOS? – bala1486

+1

Espacio de usuario del sistema operativo host. ¿Has leído el original [kvm paper] (http://www.kernel.org/doc/ols/2007/ols2007v1-pages-225-230.pdf)? QEMU es el código de espacio de usuario que proporciona virtualización de E/S como se describe en las secciones 3.1 y 5.1. El sistema operativo invitado no necesita algo especial para ejecutar; pero el uso de un mecanismo como virtio (donde el invitado tiene conocimiento de que está virtualizado y hace uso de un soporte especial) permite un rendimiento de E/S mucho mayor. (Esto es "paravirtualización" como se describe brevemente en la sección 8.2 del documento). –

Cuestiones relacionadas