class Guest

Defined at line 28 of file ../../src/virtualization/bin/vmm/guest.h

Public Members

static const size_t kMaxVcpus

Public Methods

zx::result<ktl::unique_ptr<Guest>> Create ()

static

Defined at line 40 of file ../../zircon/kernel/arch/x86/hypervisor/guest.cc

const PhysMem & phys_mem ()

Defined at line 45 of file ../../src/virtualization/bin/vmm/guest.h

const zx::guest & object ()

Defined at line 46 of file ../../src/virtualization/bin/vmm/guest.h

void Guest (const Guest & )

Defined at line 47 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

void Guest (Guest && )

Defined at line 48 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

Guest & operator= (const Guest & )

Defined at line 49 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

Guest & operator= (Guest && )

Defined at line 50 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

hypervisor::GuestPhysicalAspace & PhysicalAspace ()

Defined at line 57 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

fbl::RefPtr<VmAddressRegion> RootVmar ()

Defined at line 58 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

hypervisor::TrapMap & Traps ()

Defined at line 59 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

zx_paddr_t MsrBitmapsAddress ()

Defined at line 60 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

zx::result<uint16_t> TryAllocVpid ()

Defined at line 62 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

zx::result<> FreeVpid (uint16_t vpid)

Defined at line 63 of file ../../zircon/kernel/arch/x86/include/arch/hypervisor.h

const IoMappingList & mappings ()

Defined at line 87 of file ../../src/virtualization/bin/vmm/guest.h

const VcpuArray & vcpus ()

Defined at line 88 of file ../../src/virtualization/bin/vmm/guest.h

const std::vector<GuestMemoryRegion> & memory_regions ()

Defined at line 89 of file ../../src/virtualization/bin/vmm/guest.h

uint64_t mem_pluggable_region_addr ()

Defined at line 91 of file ../../src/virtualization/bin/vmm/guest.h

zx_status_t Init (uint64_t guest_memory, uint64_t pluggable_region_size, uint64_t pluggable_region_alignment)

Defined at line 244 of file ../../src/virtualization/bin/vmm/guest.cc

zx_status_t CreateMapping (TrapType type, uint64_t addr, size_t size, uint64_t offset, IoHandler * handler, async_dispatcher_t * dispatcher)

Setup a trap to delegate accesses to an IO region to |handler|.

Defined at line 350 of file ../../src/virtualization/bin/vmm/guest.cc

void ~Guest ()

Defined at line 93 of file ../../zircon/kernel/arch/x86/hypervisor/guest.cc

zx_status_t CreateSubVmar (uint64_t addr, size_t size, zx::vmar * vmar)

Creates a VMAR for a specific region of guest memory.

Defined at line 362 of file ../../src/virtualization/bin/vmm/guest.cc

zx::result<> SetTrap (uint32_t kind, zx_vaddr_t addr, size_t len, fbl::RefPtr<PortDispatcher> port, uint64_t key)

Defined at line 95 of file ../../zircon/kernel/arch/x86/hypervisor/guest.cc

zx_status_t StartVcpu (uint64_t id, zx_gpaddr_t entry, zx_gpaddr_t boot_ptr)

Starts a VCPU. The first VCPU must have an |id| of 0.

Defined at line 368 of file ../../src/virtualization/bin/vmm/guest.cc

zx_status_t Interrupt (uint64_t mask, uint32_t vector)

Signals an interrupt to the VCPUs indicated by |mask|.

Defined at line 390 of file ../../src/virtualization/bin/vmm/guest.cc

void set_stop_callback (fit::function<void (fit::result< ::fuchsia::virtualization::GuestError>)> stop_callback)

Sets a stop callback that can be triggered by a VCPU to stop VMM execution.

Defined at line 409 of file ../../src/virtualization/bin/vmm/guest.cc

void Stop (fit::result< ::fuchsia::virtualization::GuestError> result)

Stop the VMM with the given error code.

Defined at line 414 of file ../../src/virtualization/bin/vmm/guest.cc

uint64_t GetPageAlignedGuestMemory (uint64_t guest_memory)

Returns zx_system_get_page_size aligned guest memory.

Defined at line 118 of file ../../src/virtualization/bin/vmm/guest.cc

bool PageAlignGuestMemoryRegion (GuestMemoryRegion & region)

Attempts to page align the start and end of a guest memory region. Returns false if the

resulting region is zero (or less) pages long.

Defined at line 133 of file ../../src/virtualization/bin/vmm/guest.cc

cpp20::span<const GuestMemoryRegion> GetDefaultRestrictionsForArchitecture ()

Returns a non-overlapping list of restricted memory regions, ordered by base address.

Defined at line 113 of file ../../src/virtualization/bin/vmm/guest.cc

bool GenerateGuestMemoryRegions (uint64_t guest_memory, cpp20::span<const GuestMemoryRegion> restrictions, std::vector<GuestMemoryRegion> * regions)

Generates guest memory regions with total size |guest_memory|, avoiding any device memory.

Defined at line 167 of file ../../src/virtualization/bin/vmm/guest.cc

bool FitPluggableRegionBase (cpp20::span<const GuestMemoryRegion> restrictions, uint64_t base, uint64_t size, uint64_t alignment, uint64_t * result_base)

Find the aligned base offset for the pluggable memory region avoiding restricted regions

Defined at line 229 of file ../../src/virtualization/bin/vmm/guest.cc