1*13534ee8SJean-Philippe BruckerThis document describes how to test each device, which is required when 2*13534ee8SJean-Philippe Bruckermodifying the common I/O infrastructure. 3*13534ee8SJean-Philippe Brucker 4*13534ee8SJean-Philippe Brucker 5*13534ee8SJean-Philippe Brucker9P 6*13534ee8SJean-Philippe Brucker-- 7*13534ee8SJean-Philippe Brucker 8*13534ee8SJean-Philippe Brucker CONFIG_NET_9P_VIRTIO 9*13534ee8SJean-Philippe Brucker 10*13534ee8SJean-Philippe BruckerWithout a --disk parameter, kvmtool shares part of the host filesystem 11*13534ee8SJean-Philippe Bruckerwith the guest using 9p. Otherwise, use the `--9p <directory>,<tag>` 12*13534ee8SJean-Philippe Bruckerparameter to share a directory with the guest, and mount it in the guest 13*13534ee8SJean-Philippe Bruckerwith: 14*13534ee8SJean-Philippe Brucker 15*13534ee8SJean-Philippe Brucker $ mount -t 9p <tag> <mountpoint> 16*13534ee8SJean-Philippe Brucker 17*13534ee8SJean-Philippe Brucker 18*13534ee8SJean-Philippe BruckerBALLOON 19*13534ee8SJean-Philippe Brucker------- 20*13534ee8SJean-Philippe Brucker 21*13534ee8SJean-Philippe Brucker CONFIG_VIRTIO_BALLOON 22*13534ee8SJean-Philippe Brucker 23*13534ee8SJean-Philippe Brucker $ lkvm run ... --balloon 24*13534ee8SJean-Philippe Brucker 25*13534ee8SJean-Philippe BruckerDisplay memory statistics: 26*13534ee8SJean-Philippe Brucker 27*13534ee8SJean-Philippe Brucker $ lkvm stat -a -m 28*13534ee8SJean-Philippe Brucker *** Guest memory statistics *** 29*13534ee8SJean-Philippe Brucker ... 30*13534ee8SJean-Philippe Brucker 31*13534ee8SJean-Philippe BruckerRemove 20MB of memory from the guest: 32*13534ee8SJean-Philippe Brucker 33*13534ee8SJean-Philippe Brucker $ lkvm balloon -n guest-$(pidof lkvm) -i 20 34*13534ee8SJean-Philippe Brucker 35*13534ee8SJean-Philippe Brucker 36*13534ee8SJean-Philippe BruckerBLOCK 37*13534ee8SJean-Philippe Brucker----- 38*13534ee8SJean-Philippe Brucker 39*13534ee8SJean-Philippe Brucker CONFIG_VIRTIO_BLK 40*13534ee8SJean-Philippe Brucker 41*13534ee8SJean-Philippe Brucker $ lkvm run ... --disk <raw or qcow2 image> 42*13534ee8SJean-Philippe Brucker 43*13534ee8SJean-Philippe Brucker 44*13534ee8SJean-Philippe BruckerCONSOLE 45*13534ee8SJean-Philippe Brucker------- 46*13534ee8SJean-Philippe Brucker 47*13534ee8SJean-Philippe Brucker $ lkvm run ... --console virtio 48*13534ee8SJean-Philippe Brucker 49*13534ee8SJean-Philippe BruckerSee also virtio-console.txt 50*13534ee8SJean-Philippe Brucker 51*13534ee8SJean-Philippe Brucker 52*13534ee8SJean-Philippe BruckerNET 53*13534ee8SJean-Philippe Brucker--- 54*13534ee8SJean-Philippe Brucker 55*13534ee8SJean-Philippe Brucker CONFIG_VIRTIO_NET (guest) 56*13534ee8SJean-Philippe Brucker CONFIG_VHOST_NET (host) 57*13534ee8SJean-Philippe Brucker 58*13534ee8SJean-Philippe BruckerBy default kvmtool instantiates a user network device. In order to test 59*13534ee8SJean-Philippe Bruckerboth tap and vhost, setup a tap interface on a local network. 60*13534ee8SJean-Philippe Brucker 61*13534ee8SJean-Philippe BruckerIn the host: 62*13534ee8SJean-Philippe Brucker 63*13534ee8SJean-Philippe Brucker # ip tuntap add tap0 mode tap user $USER 64*13534ee8SJean-Philippe Brucker # ip link set tap0 up 65*13534ee8SJean-Philippe Brucker # ip link add br0 type bridge 66*13534ee8SJean-Philippe Brucker # ip link set tap0 master br0 67*13534ee8SJean-Philippe Brucker # ip link set br0 up 68*13534ee8SJean-Philippe Brucker # ip addr add 192.168.3.1/24 dev br0 69*13534ee8SJean-Philippe Brucker 70*13534ee8SJean-Philippe Brucker $ lkvm run ... -n mode=tap,tapif=tap0,vhost=1 71*13534ee8SJean-Philippe Brucker 72*13534ee8SJean-Philippe BruckerIn the guest: 73*13534ee8SJean-Philippe Brucker 74*13534ee8SJean-Philippe Brucker # ip link set eth0 up 75*13534ee8SJean-Philippe Brucker # ip addr add 192.168.3.12/24 dev eth0 76*13534ee8SJean-Philippe Brucker $ ping -c 1 192.168.3.1 77*13534ee8SJean-Philippe Brucker 64 bytes from 192.168.3.1: seq=0 ttl=64 time=0.303 ms 78*13534ee8SJean-Philippe Brucker 79*13534ee8SJean-Philippe Brucker 80*13534ee8SJean-Philippe BruckerRNG 81*13534ee8SJean-Philippe Brucker--- 82*13534ee8SJean-Philippe Brucker 83*13534ee8SJean-Philippe Brucker CONFIG_HW_RANDOM_VIRTIO 84*13534ee8SJean-Philippe Brucker 85*13534ee8SJean-Philippe Brucker $ lkvm run ... --rng 86*13534ee8SJean-Philippe Brucker 87*13534ee8SJean-Philippe BruckerIn the guest: 88*13534ee8SJean-Philippe Brucker 89*13534ee8SJean-Philippe Brucker $ cat /sys/devices/virtual/misc/hw_random/rng_available 90*13534ee8SJean-Philippe Brucker virtio_rng.0 91*13534ee8SJean-Philippe Brucker 92*13534ee8SJean-Philippe Brucker 93*13534ee8SJean-Philippe BruckerSCSI 94*13534ee8SJean-Philippe Brucker---- 95*13534ee8SJean-Philippe Brucker 96*13534ee8SJean-Philippe Brucker CONFIG_SCSI_VIRTIO (guest) 97*13534ee8SJean-Philippe Brucker CONFIG_TCM_FILEIO (host) 98*13534ee8SJean-Philippe Brucker CONFIG_VHOST_SCSI (host) 99*13534ee8SJean-Philippe Brucker 100*13534ee8SJean-Philippe BruckerIn the host, create a fileio backstore and a target: 101*13534ee8SJean-Philippe Brucker 102*13534ee8SJean-Philippe Brucker # targetcli (https://github.com/open-iscsi/targetcli-fb) 103*13534ee8SJean-Philippe Brucker /> cd backstores/fileio 104*13534ee8SJean-Philippe Brucker /backstores/fileio> create kvmtool_1 /srv/kvmtool_1 2M 105*13534ee8SJean-Philippe Brucker Created fileio kvmtool_1 with size 2097152 106*13534ee8SJean-Philippe Brucker /backstores/fileio> cd /vhost 107*13534ee8SJean-Philippe Brucker /vhost> create 108*13534ee8SJean-Philippe Brucker Created target naa.500140571c9308aa. 109*13534ee8SJean-Philippe Brucker Created TPG 1. 110*13534ee8SJean-Philippe Brucker /vhost> cd naa.500140571c9308aa/tpg1/luns 111*13534ee8SJean-Philippe Brucker /vhost/naa.50...8aa/tpg1/luns> create /backstores/fileio/kvmtool_1 112*13534ee8SJean-Philippe Brucker Created LUN 0. 113*13534ee8SJean-Philippe Brucker 114*13534ee8SJean-Philippe Brucker $ lkvm run ... --disk scsi:naa.500140571c9308aa 115*13534ee8SJean-Philippe Brucker [ 0.479644] scsi host0: Virtio SCSI HBA 116*13534ee8SJean-Philippe Brucker [ 0.483009] scsi 0:0:1:0: Direct-Access LIO-ORG kvmtool_1 4.0 PQ: 0 ANSI: 6 117*13534ee8SJean-Philippe Brucker 118*13534ee8SJean-Philippe Brucker [ 1.242833] sd 0:0:1:0: [sda] 4096 512-byte logical blocks: (2.10 MB/2.00 MiB) 119*13534ee8SJean-Philippe Brucker 120*13534ee8SJean-Philippe Brucker 121*13534ee8SJean-Philippe BruckerVSOCK 122*13534ee8SJean-Philippe Brucker----- 123*13534ee8SJean-Philippe Brucker 124*13534ee8SJean-Philippe Brucker CONFIG_VSOCKETS 125*13534ee8SJean-Philippe Brucker CONFIG_VIRTIO_VSOCKETS (guest) 126*13534ee8SJean-Philippe Brucker CONFIG_VHOST_VSOCK (host) 127*13534ee8SJean-Philippe Brucker 128*13534ee8SJean-Philippe BruckerIn the host, start a vsock server: 129*13534ee8SJean-Philippe Brucker 130*13534ee8SJean-Philippe Brucker $ socat - VSOCK-LISTEN:1234 131*13534ee8SJean-Philippe Brucker 132*13534ee8SJean-Philippe BruckerWe pick 12 as the guest ID. 0 and 1 are reserved, and the host has default 133*13534ee8SJean-Philippe BruckerID 2. 134*13534ee8SJean-Philippe Brucker 135*13534ee8SJean-Philippe Brucker $ lkvm run ... --vsock 12 136*13534ee8SJean-Philippe Brucker 137*13534ee8SJean-Philippe BruckerIn the guest, send a message to the host: 138*13534ee8SJean-Philippe Brucker 139*13534ee8SJean-Philippe Brucker $ echo Hello | socat - VSOCK-CONNECT:2:1234 140*13534ee8SJean-Philippe Brucker 141*13534ee8SJean-Philippe BruckerThe host server should display "Hello". 142