History log of /seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/arch/arm/vm.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>


# f9a39c84 22-Jan-2020 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Created 'vcpu_start' interface

This commit introduces a new interface function, 'vcpu_start',
that can be invoked to configure and start a newly created vcpu
object. This change refactors over the private 'vcpu_resume'
interface. The key impact over this change is the user will now
need to invoke 'vcpu_start' for each vcpu rather then relying
on 'vm_run' to do so. This adds the needed flexibility for
operations such a deferring the starting of a vcpu e.g. until
necessary psci/pm operations are performed.


# 73c08dc7 22-Jan-2020 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Use badge on arm vm exits to id vcpu

Updated the arm vm_run implementation to use the badge from an
exit to identify the vcpu the exit corresponds with. This
following changes that introduced the badging of the VMM endpoint
for each VCPU created.

Co-authored-by: Anna Lyons <anna@gh.st>


# 78716172 10-Dec-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed tcb field 'is_supended'

Since all the tcbs we manage are relative to a vcpu, we don't
need to manage the state of the tcb since its implied from the
vcpu state 'vcpu_online'


# 0ae7cce1 03-Dec-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Handle seL4_Fault_VPPIEvent on arm

The kernel now reservs PPI events and forwards them to user
level through a new vcpu fault type, seL4_Fault_VPPIEvent. We
extend the vcpu handlers for this new fault type that subsequently
injects the PPI into the VCPU.


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

trivial: Style changed files


# b7c9a52e 08-Dec-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: WFx fault handling to vmmplatsupport

Moved the handling of WFx faults to sel4vmmplatsupport. Prior
libsel4vm would overwrite any programmed handlers for the WFx
fault. This gives the user more flexibility to program WFx fault
behavour.


# 2942720e 08-Dec-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Changed wfi fault to general vcpu fault

Generalised the function 'new_wfi_fault' such that it can be used
for other vcpu faults. This additionally removes the 'is_wfi'
field since we record the hsr value in the fault object.


# 8766c802 14-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Moved software breakpoint emulation

Moved the software breakpoint emulation into
the vcpu exception emulation in libsel4vmmplatsupport


# 6b94edb7 14-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Moved trace/debug sysreg emulation

Moved the trace/debug system register emulation into
the vcpu exception emulation in libsel4vmmplatsupport


# 75d24848 13-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Added arm unhandled vcpu fault callback

Added the ability to register a callback for vcpu faults we cant
handle. This gives the user the opportunity to inject any
emulation for specific vcpu faults before aborting.


# 6ba3709f 13-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Updated arm unhandled VCPU fault print

Updated the ARM VCPU unhandled fault print with more useful
debug information e.g. HSR Exception class


# c4fc88eb 13-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Added common HSR decode definitions

Created a new common arm include "processor.h" that has constant
defines and macros for decoding HSR values. This is common across
both aarch64 and arm_hyp. Updated arm sources to use these new
include (where revelant).


# 188298fe 13-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Removed duplicated WFI HSR value

Removed a duplicated HSR WFI constant value. Updated the arm vm
vcpu fault handler to use the definition in the processor.h
include.


# 99efa98a 17-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Fixed 'vm_run' bug due to invalid state

The condition to enter the arm vm_run loop was never met due to the
'ret' variable being incorrectly initialised. This is was clearly
implemented incorrectly and lead to inconsistent behaviour on
different platforms. Fixed the issue by ensuring the value of
the 'ret' variable is initialised.


# 007de985 09-Nov-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Made arm fault interface private

The arm fault interface is only used internally as external
source uses the vcpu fault interface instead. Moved and
consolidated the fault interface into the internal arm sources.


# 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.


# 94113f06 17-Oct-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Moved VM tcb object into vcpu object

There is a strong association between a VCPU and the TCB it is
binded to. Thus the TCB object should exist in the context of the
VCPU it is associated with. In addition this makes the VM library
open to possible SMP extensions. This commit updates the
initialisation of the TCB object when creating a VCPU and
the means of accessing TCB objects.


# 51ca6a20 05-Oct-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4vm: Pass seL4_MessageInfo_t via callback

Callback handlers need to extract additional information out of the
message info other than just the label, such as the length.


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

libsel4vm: Notification callback interface

Added a new interface to register a callback for notification
callbacks. This changes the plat callback interface, moving the
callback out of the datastructure into a more general location.
Updated the vm_run architecture implementations to reflect this
change.


# 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.


# 54fc9dfe 14-May-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: Refactored arm vm event handler

Refactored the arm vm event/exit handler. This refactors the vm
exit handler code into a series of individual handlers for the
various vm exit cases. The overall intention with these changes
is to make the vm exit handler more modular and to reduce the
complexity of the vm_run function.


# d25a190c 13-May-2019 Alison Felizzi <Alison.Felizzi@data61.csiro.au>

libsel4vm: VM run interface

Refactored the run invocation into 'vm_run'. This updates the x86
and arm source to implement their runtime event loops when the
'vm_run' interface is used. The intented functionality of vm run
is such that it will start the vm catching vm exits. This will
either handle the exits internally or forward it to the user.