History log of /fuchsia/zircon/kernel/lib/hypervisor/trap_map.cpp
Revision Date Author Comments
# c54c7ec9 15-Aug-2018 Alex Legg <alexlegg@google.com>

[hypervisor] Fix Trap destruction

Remove packets from the port dispatcher queue on destruction of the Trap
to prevent a bug where packets are freed after the arena that contains
them has been destructed.

Since Trap packets have nullptr as the handle a small modification to
CancelQueued was needed to allow PortPackets with null handles to be
canceled.

TEST=Run guest_integration_tests

Change-Id: Ibb394bf5e123bfac78942eb58d6c7d4acb1a939f


# e604d216 13-Aug-2018 Abdulla Kamar <abdulla@google.com>

[lib][hypervisor] Improve error message in TrapMap

Test: N/A
Change-Id: Ic57df9e9c5bf3cbedde51e7264d9b3680fcba93d


# 8e4ae406 02-Aug-2018 Abdulla Kamar <abdulla@google.com>

[lib][hypervisor] Only use IO traps on X86

If we are not on X86, we should not check for IO traps.

Test: Ran tests and "guest launch zircon_guest".
Change-Id: I5d3e83b92e6213109d64c75a3ff4d7c4d73104a3


# 77c95af7 06-Jun-2018 George Kulakowski <kulakowski@google.com>

[kernel][semaphore] Remove unused parameter to semaphore.Wait

Change-Id: Iabb0707f16e8d231dcc54888880f61b0b3549147


# 2042701f 27-Apr-2018 Mark Seaborn <mseaborn@google.com>

[kernel][port] Use resched_disable instead of tracking a wake_count

Change PortDispatcher and Semaphore to use resched_disable instead of
manually tracking whether we need to call thread_reschedule().

This shouldn't change the performance of ports. This is a cleanup in
the sense that it removes a use of "reschedule=false" and simplifies
the code.

Remove the !arch_ints_disabled() assertion from
thread_resched_disable(), because PortDispatcher::Queue() is called
with interrupts disabled via the following code path, which sends a
debug message when a thread exits as a result of being killed:

x86_iframe_process_pending_signals()/arm64_thread_process_pending_signals()
thread_process_pending_signals()
thread_do_suspend()
check_kill_signal()
thread_exit()
ThreadDispatcher::Exiting()
ExceptionPort::OnThreadExitForDebugger()
ThreadDispatcher::ExceptionHandlerExchange()
ExceptionPort::SendPacketWorker()
PortDispatcher::Queue()

The assertion was unnecessarily strict. Note that there are very few
places in the kernel that assert that interrupts are *not* disabled.

ZX-1690

Change-Id: I8142295202bfce332abb69e2b36a79bda0df20ab


# 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


# 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


# bea0b881 02-Dec-2017 Abdulla Kamar <abdulla@google.com>

[x86][hypervisor] Remove AutoVmcs::Reload logic

Every path that called Reload was immediately returning, to then have a
new instance of AutoVmcs reload the VMCS. The call to AutoVmcs::Reload
is redundant.

Instead, we replace AutoVmcs::Reload with AutoVmcs::Invalidate. All
paths that are blocking will require a StateInvalidator, which will then
invalidate the AutoVmcs so that any use of it after invalidation will
trip a DEBUG_ASSERT, making failure much more explicit than current.

Change-Id: I2497e63d7acc1de97571354ffdd05dc7e2c8cef5


# 780e9800 13-Oct-2017 Abdulla Kamar <abdulla@google.com>

[lib][hypervisor] Allow reloader to be null.

When using the TrapMap on arm64, we don't need to use the StateReloader.

Change-Id: Ibc58592c2d0e940283fed894073376005fbe9678


# 7fb7213b 01-Oct-2017 Abdulla Kamar <abdulla@google.com>

[lib][hypervisor] Rename PacketMux to TrapMap.

This more accurately describes what it does, and makes more sense in
the code.

Change-Id: Iae0223645dbf4b399ce29e15e10a8d3eeb8d3cf5