History log of /fuchsia/zircon/kernel/lib/hypervisor/hypervisor_unittest.cpp
Revision Date Author Comments
# 46a7c5a8 24-Jul-2018 Travis Geiselbrecht <travisg@google.com>

[kernel][pmm] change pmm single page alloc routines to return status

Move from returning a status and the page pointer and/or physical
address in an argument.

Tested: build and runtests on both x86 and arm

Change-Id: If10d877f152d355bfa1359338cd71f5aefbccfb4


# d2acc06e 12-Sep-2018 Abdulla Kamar <abdulla@google.com>

[hypervisor] Set fault flags based on VMAR flags

When we fault in pages for the guest physical address space, use the
VMAR flags for the faulting address to apply the correct fault flags.

This allows users to map VMOs into the guest VMAR that have a more
limited set of permissions.

MAC-166 #done

Test: Ran "k ut hypervisor", "linux_guest", and "zircon_guest".
Change-Id: I9d03b0b609daf20355fdb552a49b789b63830084


# 6b918c6f 20-Aug-2018 Abdulla Kamar <abdulla@google.com>

[hypervisor] Add VmAddressRegion::UnmapAllowPartial

Add VmAddressRegion::UnmapAllowPartial() so that we can set hypervisor
traps that cross multiple mappings.

Test: Ran "k ut hypervisor", "hypervisor-test", "vmar-test", and
"debian_guest".
Change-Id: I6f41b496ed0ae17db63d5ad0ba3ff0ad4df8cc0e


# 178322b9 09-Aug-2018 Abdulla Kamar <abdulla@google.com>

[lib][hypervisor] Traps outside of mapped memory

Allow traps to be set that are outside of mapped memory. This will
return success if attempt to set a trap that straddles mappings, but the
trap will not operate correctly in that situation.

Test: Ran "k ut hypervisor".
Change-Id: I0c8a70b9d9564b5892eb96b71c9798d86de9deb6


# ffd5fb53 06-Aug-2018 Abdulla Kamar <abdulla@google.com>

[mmu][hypervisor] Support for more memory types

Add support for uncached, uncached device, and write-combining to
stage-2 page tables on arm64 and EPT page tables on x86-64.

Test: Ran 'guest launch zircon_guest', 'hypervisor-test',
'machina_unittests', and 'k ut hypervisor'.
Change-Id: I9d8e55c8357384e04a099c1cb25ac977027ed239


# c60c64df 05-Aug-2018 Abdulla Kamar <abdulla@google.com>

[hypervisor] Make zx_guest_create return a VMAR

Modify zx_guest_create to return a VMAR that represents the guest
physical address space.

A follow up CL will cover changes to the MMU code that allows uncached
and write-combining VMOs to be mapped into the guest physical address
space VMAR.

Test: Ran 'vmar-test', 'hypervisor-test', 'machina_unittests',
and 'guest launch zircon_guest'
Change-Id: I4b9eada3ccb206a205c6b30f1cf882766ba70fed


# 30ac10bf 18-Jun-2018 Carlos Pizano <cpu@google.com>

[zircon] non-resizable VMOS

This CL introduces the first option for VMO creation
ZX_VMO_NOT_RESIZABLE that 'locks' the size of a root (non-clone) VMO

Also enables the same for COW clones via ZX_VMO_CLONE_NON_RESIZEABLE

This is meant to answer safety hazards of having a client pass
VMOs to servers which the client can resize while the server is
copying data into via a memory map.

Today this is done via ZX_INFO_HANDLE_COUNT but that turns out
is racy.

This CL also cleans up vmo-tests so they using proble_for_read
and probe_for_write instead of using unrelated syscalls to test
memory mappings.

TEST=added unittests in vmo_tests

ZX-2279 #comment progress

Change-Id: If69ce772dcccd92db83f5bda313ae2343ebb448e


# b58bad29 04-Apr-2018 Nick Maniscalco <maniscalco@google.com>

[kernel] Move unittest.h to include/lib/unittest/

Move unittest.h deeper in the tree so include statements will say:

Change-Id: I85cb027a53530cd2003d813f004aaea3509f9f40


# 87b543ef 18-Mar-2018 Abdulla Kamar <abdulla@google.com>

[hypervisor][ktrace] Add VCPU blocking events

Add ktrace events for when the VCPU is blocked while either waiting for
an interrupt or waiting for a port packet to become available.

This also restructures the way we record metadata for VCPU ktraces in
order to be more efficient.

PD-100 #comment

Change-Id: I43551a0068bb3d6393a9a58c21b3ea813edfb726


# 88a0e892 05-Mar-2018 Mike Voydanoff <voydanoff@google.com>

[build] Rename x86 project to "x64"

Build output will now be in build-x64 instead of build-x86
Renamed and updated various scripts as appropriate

Within zircon, $ARCH remains "x86".
This avoids having to rename kernel/arch/x86/ and change a lot of #include paths
Removed unnecessary $SUBARCH build variable

Renamed the kernel target from pc-x86 to pc, and the board name in boards.list
from "x86" to "pc".

Change-Id: I0eb44a21ba731653b92f3ce2b78a7819c0a8f61c


# 55f571e0 05-Mar-2018 Mark Seaborn <mseaborn@google.com>

[kernel][unittest] Remove unused "void* context" argument from test cases

This argument is always NULL.

This argument was part of an init/cleanup feature that was unused and
that was removed.

Change-Id: I997a268be10c6837b2d7529fb92c2df2e3bab814


# b7def50e 28-Feb-2018 Mark Seaborn <mseaborn@google.com>

[kernel][unittest] Remove unused init/cleanup function parameters

None of the in-kernel test cases provide init or cleanup functions.
They all pass NULL to UNITTEST_END_TESTCASE() for those parameters, so
we can remove those parameters. Note that unittest.c wasn't actually
using the cleanup function.

Change-Id: I0332bc5c870deec8a021f543ec2c31ef95c30d0f


# 35c1acbe 15-Feb-2018 Abdulla Kamar <abdulla@google.com>

[lib][hypervisor] Move everything into a namespace

Move everything, but vmm_guest_page_fault_handler, into the hypervisor
namespace.

Change-Id: Ied96a7945b26c4a1ed24c03b293d42c7d89e7812


# 4cd4a22c 28-Jan-2018 Abdulla Kamar <abdulla@google.com>

[arm64][hypervisor] Set VMID in aspace earlier

Set VMID earlier in the setup of the guest physical address space, so
that it's harder to mistakenly use the wrong VMID.

Change-Id: Ie413354471cc8e512e99e40c44e246befba5966c


# b8801913 25-Jan-2018 Abdulla Kamar <abdulla@google.com>

[utest] Check whether the hypervisor is supported

Adds a check to see whether the hypervisor is supported before running
Guest Physical Address Spaces tests on ARM64.

On ARM64, we need to jump to EL2 during operation of the Guest Physical
Address Space. If we run these tests without access to EL2, we'll fail.
This can be seen when run under QEMU without virtualisation support.

ZX-1614 #done

Change-Id: I345af9c09361e64aee4cd58d07385d5228783d2d


# 6260e1ee 19-Nov-2017 Abdulla Kamar <abdulla@google.com>

[arm64][hypervisor] Map GICV into guests

Map GICV into guests so that they can communicate with the vGIC.

ZX-1347 #comment

Change-Id: I1e4323ccf7ad26bbcd288af6c311ad24647a1d8b


# 5fb8e9ed 23-Sep-2017 Travis Geiselbrecht <travisg@google.com>

[kernel][vm] move vm.h to the new spot and remove some unused code

Change-Id: I69f1b804fb95dd44e3e0619943e8809519aa82ca


# f3e2126c 12-Sep-2017 Roland McGrath <mcgrathr@google.com>

[zx] Magenta -> Zircon

The Great Renaming is here!

Change-Id: I3229bdeb2a3d0e40fb4db6fec8ca7d971fbffb94


# 59e644b1 07-Sep-2017 George Kulakowski <kulakowski@google.com>

[zircon][mxtl->fbl] Rename mxtl to fbl

Change-Id: Ie21b6498e1bfb0a7fa0315e40b9e5c3ee78646be


# e1490736 01-Sep-2017 Travis Geiselbrecht <travisg@google.com>

[kernel][vm] move kernel/kernel/vm to just kernel/vm

Change-Id: I8f724a9f8a61415712661d1fdd3dc4e1c70cf620


# 8196f160 25-Aug-2017 Abdulla Kamar <abdulla@google.com>

[hypervisor] Replace all status_t with mx_status_t.

As requested from a previous CL. (Also ran clang-format.)

Change-Id: Ib4106f3c03f2084755c596062d34c8f72e42dcdb


# ef8b498d 21-Aug-2017 George Kulakowski <kulakowski@google.com>

[hypervisor][status] Use mx_status_t instead of status_t

Change-Id: I5491394231771d04352ab48e7adf5a0b434926c4


# 4b913ba9 10-Aug-2017 Mark Seaborn <mseaborn@google.com>

[unittest] Use ASSERT_NE()/EXPECT_NE() instead of ASSERT_NEQ()/EXPECT_NEQ()

This is to make the interface more consistent with gtest, which uses
the _NE suffix rather than _NEQ for "not equal".

Change-Id: Ic03fda7322ab79cbd806c8f849b6956d201c6d45


# ce8c0523 20-Jul-2017 Abdulla Kamar <abdulla@google.com>

[hypervisor] Restructure around VCPUs.

This changes the structure of the hypervisor to be modelled around
virtual CPUs. Each VCPU is associated with a thread and a CPU, in
order to increase performance and simplify communication with user
space.

While the kernel-side of the hypervisor has been restructured, the
user space-side has not been modified to take advantage of the
optimisations that are possible. This will come in a follow up CL.

Change-Id: Ic0c9be724f12c9de601fc4b892d74ba224b0d85e


# 464f7a4d 11-Jul-2017 Travis Geiselbrecht <travisg@google.com>

[kernel][vm] flip the VmObject::Create() calls to returning an error and taking a ref ptr as an arg

Lets us more easily check errors inside the create function and return the right thing instead
of just MX_ERR_NO_MEMORY

Change-Id: I20f6e9453204a8d0f6ce2eabf735451c8d10d952


# 4e88dcc0 28-Jun-2017 Tim Detwiler <tjdetwiler@google.com>

[hypervisor][vm] Allocate a root VMAR for guests.

First steps towards allowing for on-demand allocation of pages to guests.
All pages are still committed up front but this will stop happening once
we begin handling the EPT violations for uncommitted pages.

Change-Id: I808ee3402f4903046bbcb4f76b8231fb51cf86cf