2010-06-26 2 views
5

J'essaie de comprendre le mécanisme de virtio dans Linux. J'ai lu que la fonction kick informera le côté hôte des tampons nouvellement publiés. Je regarde particulièrement virtio_net. Une fois qu'un paquet est prêt pour la transmission, la fonction kick est appelée here. D'ici j'ai tracé l'appel et je pense qu'il va à this. D'ici où ça va? Quel code contient le pilote backend de virtio. Où est le code dans l'hyperviseur auquel ce coup va aller? Merci ...Où est l'entrée de hypercall dans kvm?

Merci, Bala

Répondre

3

Le port IO accède ici sont en communication avec le « matériel » de la machine virtuelle, qui est mis en œuvre par l'instance QEMU qui prend en charge la machine virtuelle. Le point de départ dans le code QEMU est virtio_ioport_write() in hw/virtio-pci.c.

+0

Merci beaucoup. Encore une question. L'instance qemu s'exécute-t-elle dans l'espace utilisateur de l'invitéOS ou dans l'espace utilisateur de HostOS? – bala1486

+1

Espace utilisateur du système d'exploitation hôte. Avez-vous lu l'original [kvm paper] (http://www.kernel.org/doc/ols/2007/ols2007v1-pages-225-230.pdf)? QEMU est le code de l'espace utilisateur fournissant la virtualisation d'E/S comme décrit dans les sections 3.1 et 5.1. Le système d'exploitation invité n'a besoin de rien de particulier à exécuter; mais l'utilisation d'un mécanisme tel que virtio (où l'invité sait qu'il est virtualisé et utilise un support spécial) permet des performances d'E/S beaucoup plus élevées. (Ceci est "paravirtualisation" comme décrit brièvement dans la section 8.2 de l'article.) –