History log of /fuchsia/zircon/kernel/object/bus_transaction_initiator_dispatcher.cpp
Revision Date Author Comments
# 60edf683 18-Sep-2018 George Kulakowski <kulakowski@google.com>

[bti] Use the common SoloDispatcher lock

Test: CQ; clang locking analysis
Change-Id: Ia5949904e1d328fc87c3a1539d21f02851c82c4e


# 36320886 19-Jul-2018 Corey Tabaka <eieio@google.com>

[kernel] Dispatchers and most kernel objects lockdep instrumented.

- Convert SoloDispatcher to a CRTP template type similar to
PeerDispatcher. This makes the lock classes for different solo
dispatchers distinct.
- Instrument the locks for all dispatchers.
- Instrument the locks for all kernel objects except those that
lock the thread_lock.

Bug: ZX-23
Test: k ut all and system/test/* pass + manual stress testing.

Change-Id: I8106c04911e47ea15ccce8e7abd5fbd62adfa6fe


# 66c48779 04-Apr-2018 Todd Eisenberger <teisenbe@google.com>

[syscalls][bti] Introduce zx_bti_release_quarantine

This allows BTI holders to release quarantined PMTs. This will
generally be done by a driver after the device is initialized and its
DMA systems quiesced.

ZX-1936 #comment Introduce quarantine syscall

Change-Id: Ic6bf132381f994607d02d987e0302f3c9cf3265b


# a3688d5b 27-Mar-2018 Todd Eisenberger <teisenbe@google.com>

[kernel][bti] Implement quarantine semantics

If a PMT is closed without pmt_unpin being called on it, the memory will
be moved to a quarantine list in the BTI. If the last handle to the BTI
is closed, the contents of the quarantine will be leaked rather than
released, to prevent stray DMA.

Change-Id: Ic60623fd818e60c8b0679b07f1d36cf03874bb36


# ea17ab2e 27-Mar-2018 Todd Eisenberger <teisenbe@google.com>

[syscalls][bti] Remove deprecated syscalls

This removes zx_bti_unpin and the old form of zx_bti_pin.
zx_bti_pin_new is now aliased to zx_bti_pin, with plans to remove
the zx_bti_pin_new name.

ZX-1936 #comment Remove old syscalls

Change-Id: I1913eba02db4d0dae4eef45d987050069b2e867a


# 286261a3 14-Mar-2018 Todd Eisenberger <teisenbe@google.com>

[syscalls][bti] Introduce Pinned Memory Tokens

This introduces two system calls:
1) zx_bti_pin_new: This will replace zx_bti_pin (and be renamed to
zx_bti_pin). It is identical to zx_bti_pin, except it additionally
returns a handle to a new type of object, a Pinned Memory Token.
When this object is destroyed using zx_pmt_unpin(), the memory
pinned by zx_bti_pin_new() is unpinned.
2) zx_pmt_unpin: This will replace zx_bti_unpin. In the current
implementation, it is no different than zx_handle_close. However, in
a subsequent diff it will be used to create a quarantine for DMA
targets in the event of driver process crash.

ZX-1936 #comment Introduce the new syscalls

Change-Id: I39d9bd8ce3582cd54b323246df286bba03a54a1c


# f08644e3 14-Mar-2018 Todd Eisenberger <teisenbe@google.com>

[object][bti] Fix error code for mismatched buffer size

Was ZX_ERR_BUFFER_TOO_SMALL in one case and ZX_ERR_INVALID_ARGS in
another, but the error is returned for too small and too large, so
converge on ZX_ERR_INVALID_ARGS.

Change-Id: Ic0684ab6884950433d3ba72807ae646bbb9a4506


# b15ac85e 27-Feb-2018 Todd Eisenberger <teisenbe@google.com>

[syscalls][bti] Tweak the bti_pin interface

- Change the |perms| field of bti_pin to |options|, to keep arg count
down
- Reorder args to match the more common ordering for options fields.
- Remove the internal logic for special-casing contiguous buffers.
- Remove the |actual_addrs_len| argument, and require exact length matches.
- Provide separate definitions for the options, rather than reusing the
VMAR flags
- Introduce a COMPRESS option, which allows opting-in to smaller address
lists.

Change-Id: I8f561b11ef2844b10662802835f3e8616ae13f96


# 5f45d5a3 12-Sep-2017 Todd Eisenberger <teisenbe@google.com>

[object][bti] Implement the BusTransactionInitiatorDispatcher

ZX-693

Change-Id: I4b2cecde4bb689c8a68a9f0eb80a5fd23dd917e9