History log of /seL4-camkes-master/projects/seL4_projects_libs/libsel4vm/src/arch/x86/boot.c
Revision Date Author Comments
# 745291ce 27-Nov-2020 Gerwin Klein <gerwin.klein@data61.csiro.au>

Convert to SPDX license tags

Signed-off-by: Gerwin Klein <gerwin.klein@data61.csiro.au>


# 0bf36184 26-Feb-2020 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Renamed include 'guest_memory_map.h'

Renamed internal source include 'guest_memory_map.h' to a more
general name 'guest_memory.h'. This being more general for other
internal functions.


# 06e840ef 08-Jan-2020 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Remove init in x86 instr decoding

As the instruction definitions in the x86 instruction decoding
table are constant and in a static location we can define them
directly in the decoding tables. This removes the need to call
an initialisation function.


# ab3699dc 05-Jan-2020 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Refactoring of x86 instruction decoding

This commit refactors the x86 instruction decoding in-order to
make its implementation is more modular and easier to read and
update. The key changes being::
* moving "magic" instruction value constants into enum
definitions
* initialisation of an instruction decoding table that associates
a single op instruction with a decoding handler - simplifying
the 'vm_decode_instruction' function


# c69cd028 13-Dec-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

trivial: Style changed files


# 298c2359 13-Dec-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4vm: Allocate 1:1 pd in vm_create_vcpu_arch

This is created in the context of the vcpu object thus we move it out of
vm_init.


# ca31812e 01-Dec-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed page_size field in VM object

Removed the page_size field in the VM object. The page size of
allocations and mappings can be left to the library user to
define. Updated uses of the page_size field to directly define the
page size value instead.


# 58a8b656 09-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: default error callback out of mem utils

Moved the function 'default_error_fault_callback' out of
the guest memory utils interface and into its own interface
'guest_memory_helpers'. The intention is to eventually move
guest memory utils out of libsel4vm but we want to keep the
'default_error_fault_callback'.


# f1bcc013 01-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed vpcu_init cookie parameter

This parameter has never been needed or used hence we can remove
it.


# 29b7a4f3 01-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed vm_init cookie for arch params

Removed architecture specific vm initialisation params as both
architecture sources no longer need to pass in specific
parameters. This additionally means we can delete the 'cookie'
parameter since its no longer used.


# aa782bfb 01-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Consolidate notification/fault endpoint

Both arm and x86 source take in the hosts own endpoint such that
it can wait on it for notifications and events. Removed the
passing of the endpoint as an arch specfic boot parameter as
its now passed through the common vm_init function.


# e1947740 22-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed uses of 'vmm' in x86 source

Updated x86 source such that the naming convention used is to
prefix/postfix with 'vm' rather than 'vmm'. This change makes
the naming convention consistent as this library now represents a
single 'vm' instance rather than a vmm.


# 1283782d 21-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: x86 processor src as private interface

Moved the x86 processor source and header into the x86
architecture subdirectory. This has been transformed into an
private interface that only internal code can access. We choose
to abstract over processor source. Updated the processor header
includes to reflect this change.


# b649fca0 16-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Add x86 guest state initialisation

Added a helper function to the guest state interface for setting
the datastructure to a default state.


# 5d9bef1c 16-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Refactored x86 vmcs interface

The vmcs interface has been made private, this ensuring the guest
x86 context interface is the only interface with public methods for
updating vmcs fields. This ensures external vmcs updates are always
consistent with our internal shadow state. The vmcs read and write
helpers have been merged into the guest x86 context implementation
and made privately available to our internal source.


# e2420adf 15-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Make guest_state interface private

Make the guest_state interface a private header as we don't want
to expose this to the user. Updated the internal source to include
the private header.


# 7c175c94 15-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Make x86 vcpu guest state a pointer

Updated the reference to the guest state datastructure to be a
pointer. This being allocated at initialisation time. In addition
update all references of the guest state datastructure to reflect
the type change. This change stages way for making the guest state
datastructure a private interface.


# ddb615cb 10-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed [get|has]_interrupt callbacks

Removed the [get|has]_interrupt callbacks stored in the x86
vm->arch datastructure. Internal libsel4vm source can now directly
call into the i8259 source.


# 271455b0 10-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: i8259 implements x86 irq controller

Updated the i8259 to implement the guest irq controller interface.
This updates the i8259 source to implement the interface
prototypes. In addition this commit lifts the initialisation of
the APIC memory region to create a single guest irq controller
init function.


# c064928c 09-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Reintroduced IOPort interface to x86

Reintroduced the IOPort interface to the x86 VM. This is an
architecture specific interface that lets the user register in and
out callbacks for emulation on a specific io port.


# 76bffc7e 09-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Moved vm check in x86 'vm_init_arch'

Moved NULL check of VM handle in the x86 'vm_init_arch' function.
Code above it would derefernce the vm making the check pointless.


# 51f618ab 08-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Guest page dir reservation creation

As the guest page directory creation did not use reservations,
we updated it to use the vm memory reservation interface. In
addition since it is not a RAM region we can no longer use
vm_ram_touch. Updated the page preparation to use the internal
vm reservation mapping interface to force a mapping for us to
manipulate.


# c1c0021e 11-Sep-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed x86 ioport and pci source

Removed the x86 pci and ioport management source. This has since
been moved and refactored into the 'libsel4vmmcore' and
'libsel4pci' libraries. The VMM can choose to initialise the
management datastructures seperately.


# dd8820f3 09-Sep-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed vm_plat_callbacks

Due to the async notification callback being refactored to a new
location, the vm_plat_callbacks is only relevant to x86 source
code. This has been refactored to a x86 specific configuration
datastructure.


# d7437c3d 15-May-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Enabled vm_run to exit to caller

Introduced vm exit constants that can be used to return to the
library caller (vmm) for handling specific vm exits. Updated the
exit handling functions and vm run loop to handle cases where it
may exit and return an exit reason to the vmm. This is an initial
change that will allow the vm to reduce policy and refactor out
various drivers from the library such that it can be handled and
managed by the vmm.


# 156d37cf 12-Aug-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed x86 mmio interface

Removed the mmio interface in the x86 source. This is replaced
with the new guest memory interface.


# 2a78a936 11-Aug-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Updated x86 lapic fault handling

Updated the lapic fault hander to go through the new guest memory
interface as the mmio abstraction is now longer used on ept
faults.


# 5032b89d 17-Jul-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Renamed guest_memory to guest_ram

Renamed the guest_memory interface to 'guest_ram'. The functions
in the interface are intended to interact with guest ram memory.
Updated calls to the guest ram interface.


# ed2b25d5 10-May-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Made guest_vspace interface private

Refactored the guest_vspace source to be private. This in
particular makes 'vm_init_guest_vspace' a private function
(named 'vm_get_guest_vspace' prior).


# bfe0a05a 12-May-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Updated x86 usage of vm_guest_touch

Updated the x86 source to use 'vm_guest_mem_touch' over
'vm_guest_vspace_touch'. This now uses the 'guest_memory.h'
interface.


# 98529f20 06-May-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Updated x86 to use new vspace interface

Updated the sel4-x86-vmm source to use the new guest vspace
interface.


# 6cd6b022 07-May-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Dropped 'vm_' prefix in vm_vcpu struct

The 'vm_' prefix is reduntant since it exists in the vm_vcpu
struct context.


# db0c177d 07-May-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Renamed vm_pd field to vm_vspace_root

Renamed vm_pd field to vm_vspace_root as the top level data
structure is not necessarily a page directory.


# 7867c421 06-May-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Made arch_init functions private

Refactored the architecture specific init/boot functions into a
private interface. These are no needed in the public boot.h
interface.


# 668be99f 30-Apr-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: vm data-structure initialisation

Refactored the x86 and arm initialisation of the guest vm
data-structure. This brings the initialisation of the
vm data structure under the one interface 'sel4vm/boot.h'.