The VM is created, but not booted
#!/bin/bash
curl --unix-socket $1 -i \
-X PUT 'http://localhost/api/v1/vm.create' \
-H 'Accept: application/json' \
Not KVM bound. The VFIO API deconstructs a device into regions, irqs, etc. The userspace application (QEMU, cloud-hypervisor, etc..) is responsible for reconstructing it into a device for e.g. a guest VM to consume.
Boot with intel_iommu=on
.
Devices are bound together for isolation, IOMMU capabilities and platform topology reasons. It is not configurable.
Firecracker comes with an internal way of logging a timestamp that measures time elapsed between the very start of the guest VM and the moment a specific IO port has been written to.
That allows for marking specific moment along the boot process by having code writing to this port.
Here we're going to measure the time it takes for a Firecracker guest VM to reach userspace. To do so we're going to build 3 components:
On PCI, a 256 bytes configuration address space, made of 64x32 bits registers, is used to configure PCI devices.
The PCI configuration space contains the function's vendor and device IDs, but also the memory mapped regions description (BAR) the function will be able to use.
This is the legacy method. Both PCI and PCI-e must support it.
gometalinter --exclude="vendor/.*" --tests --exclude=".*\.pb\.go" --disable-all --enable=gofmt --concur
rency=2 --enable=misspell --enable=vet --enable=ineffassign --enable=gocyclo --cyclo-over=15 --enable=gol
int --deadline=600s --enable=structcheck --enable=unused --enable=staticcheck --enable=maligned --enable=
varcheck --enable=unconvert virtcontainers
CreateSandbox