History log of /fuchsia/zircon/system/utest/core/vmar/vmar.cpp
Revision Date Author Comments
# 989ee4e8 13-Jun-2018 David Moore <davemoore@google.com>

[syscalls] Change vmar_... calls

- Create zx_vm_option_t type
- Change ZX_VM_FLAG_... to ZX_VM_... and make them new type.
- Change int32_t flags parameters to zx_vm_option_t options
- Make the options parameter be second.

- Modify vmar_..._old functions to keep other repos working.
Once they've all been updated these functions will go away.

ZX-2264
Test:CQ

Change-Id: I1faf4cc4e1e4dabf3d8ef680e398d83a545b0f09


# 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


# 997ec13a 24-May-2018 Adam Barth <abarth@google.com>

[syscalls] Remove count arguments from port_queue and port_wait

This argument is not used and always must be one. I tried implementing
some reasonable behavior for this parameter on port_queue, but it wasn't
clear what to do when we encounter an error during the queue operation
because there isn't an out parameter for how many we succeeded in
queuing.

Rather than having a half-baked feature, we should just remove the
parameter and add another function that does vectorized versions of
these operations if we need that in the future.

Change-Id: Ifffcd6d705442cc830912a67c8117ffe5ec8295d


# cb9b1324 16-Apr-2018 Garret Kelly <gdk@google.com>

[zx] Call zx_port_{wait,queue} with correct count

In the near future zx_port_{wait,queue} will not accept a count of zero.
Change all zircon callers to call these functions with a count of one.

ZX-1291 #comment

Change-Id: I5697208c7931a5e117f469c901c78f65615eeee0


# 9db0af33 20-Mar-2018 Shai Barack <shayba@google.com>

[syscall][vmo] removal of zx_vmo_{read,write}() actual parameter 4/n

This reverts commit d7c91f0a8a876bd4de8808595cafcd4f2c3fd7a1.

Change-Id: I5c61410f62850583a970d3ff2f44b6d58901509a


# d7c91f0a 19-Mar-2018 Benjamin Brittain <bwb@google.com>

[revert] Revert "[syscall][vmo] removal of zx_vmo_{read,write}() actual parameter 4/n"

This reverts commit 2d25909b7ab244d73172c9f5bc11d85b49ccefbb.

Change-Id: I09efe4e1d69d7aeadb051936d3ddc8237e7d39cf


# 2d25909b 14-Mar-2018 Shai Barack <shayba@google.com>

[syscall][vmo] removal of zx_vmo_{read,write}() actual parameter 4/n

Remove actual from zx_vmo_{read,write}
Mark zx_vmo_{read,write}_old as deprecated
Retarget most uses of zx_vmo_{read,write}_old to zx_vmo_{read,write}.

Still need to migrate a handful of uses of _old that had meaningful
usage of actual.
This is good enough to go ahead and migrate uses in Garnet and Topaz.

ZX-1802

Change-Id: If57329f9c5183a0dacd29083decbaf771925145f


# 939f4207 12-Mar-2018 Shai Barack <shayba@google.com>

[syscall][vmo] removal of zx_vmo_{read,write}() actual parameter 1/n

In preparation for changing the zx_vmo_read() and write() syscalls,
introduce aliases (zx_vmo_read_old() and write_old()) for the existing
behaviour, migrate zircon callers to the aliases, and mark the original
syscalls as deprecated.

Once the garnet and above layers have been migrated, the original
syscalls will be adjusted to remove the "actual" argument, and the
temporary _old() versions will be deprecated, and then removed.

ZX-1802

Change-Id: I2fab9a59caf4093fb585ada6015197017767aba2


# dfa4939c 05-Mar-2018 Todd Eisenberger <teisenbe@google.com>

[syscalls][vmar] Prohibit using SPECIFIC_OVERWRITE with MAP_RANGE

This combination is currently unused in the codebase, and would require
complicated logic to properly rollback the address space changes if the
MAP_RANGE part of the operation fails.

Change-Id: I0058b96b3b6af24995e001b6fef8cde35d5f7e20


# 250baf99 20-Feb-2018 Scott Graham <scottmg@chromium.org>

[debugger][vm] Fix process_(read|write)_memory offset clamp

f509df9187 clamped read/writes to the length of the associated VMAR, but
did not take into account the mapping being offset into the VMO. Fix
this and add a test.

Change-Id: Id2dd0551b88e06d2befd7de53b4737a8aa326808


# f509df91 30-Jan-2018 Scott Graham <scottmg@chromium.org>

[kernel][vm] Make sys_process_(read|write)_memory() clamp to mapping end

Previously, process_(read|write)_memory() would read/write any amount
out of the VMO in which it was started. Instead, clamp the length to
the mapped region. This is still not a full solution, as an ideal API
would need to read from the correct VMO for each page in the region,
but it's slightly less unexpected behavior.

ZX-1631

Change-Id: I24d543fd867160479e8e59b2a4951b6a87774314


# 75cd3680 05-Dec-2017 Roland McGrath <mcgrathr@google.com>

Clean up sloppy zx_handle_t/integer conflation

Change-Id: I5659232efa8531ef97261639cc65f211ee9f0cc8


# 9d2eeade 15-Oct-2017 Doug Evans <dje@google.com>

[kernel][exceptions] Send gone,suspended,resumed exceptions as signals

This is derived from CL 56613.
This also pulls in the debugger and exception tests from CLs 76025, 76026.

This patch reapplies 7e259986ff197b88212f9256a4859c8650feddfb.

ZX-814 #comment patch

Change-Id: Ida347bfed6644e2f33e86c0d6e26aee0c0f9c1a0


# b7fce3a5 02-Nov-2017 Doug Evans <dje@google.com>

Revert "[kernel][exceptions] Send gone,suspended,resumed exceptions as signals"

This reverts commit 7e259986ff197b88212f9256a4859c8650feddfb.

Garnet needs updating for deletion of ZX_EXCP_GONE

Change-Id: I2ecd3798df30fd64abbbebc6ade21e73473374ab


# 7e259986 15-Oct-2017 Doug Evans <dje@google.com>

[kernel][exceptions] Send gone,suspended,resumed exceptions as signals

This is derived from CL 56613.
This also pulls in the debugger and exception tests from CLs 76025, 76026.

ZX-814 #done

Change-Id: I9f5ac57079e90473092e88e84862461a295b1bfa


# 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


# fbdbcb7b 11-Aug-2017 Roland McGrath <mcgrathr@google.com>

[utest][vmar] Use proper atomics rather than volatile and nonstandard barrier

This eliminates the only use of the CF macro in userland.
In general CF should be replaced by (mxtl::)atomic_signal_fence.
Here there was no good reason to be using an explicit fence rather
than just doing simple, well-defined accesses.

Change-Id: I7579b2461db8cebe324a4470eaf214cb7fde7f40


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

[utest] Remove empty-string msg args from EXPECT_*() calls in C++

The msg argument to EXPECT_*() and ASSERT_*() is optional in C++ now,
so we can drop this argument when it's an empty string.

In the earlier conversions, I only converted ASSERT_*() and forgot to
convert EXPECT_*() too.

This change also converts a few ASSERT_*() instances that appeared
since the earlier changes.

MG-905

Change-Id: I034c6d6a6b614ab0b315dcd409435c9fe9e27e6c


# 4983c25c 02-Aug-2017 Mark Seaborn <mseaborn@google.com>

[utest] Remove empty-string msg args from ASSERT_*() calls in C++

The msg argument to ASSERT_*() is optional in C++ now, so we can drop
this argument when it's an empty string.

MG-905

Change-Id: I6a5d6917518f8c9c4865b761dcbefe296d54c924


# b31d7b7f 06-Jul-2017 George Kulakowski <kulakowski@google.com>

[cpp][countof] Prefer the typesafe mxtl::count_of in C++ code

Change-Id: I3e475731f6872e6daf764f31964bed9f09186c7c


# 6bf8848c 29-Jun-2017 Brian Swetland <swetland@google.com>

[ports] deprecate MX_PORT_OPT_V2 - ports are just ports again

Change-Id: Ia8a942dd24b711ef76bfbd7316b9166b78c20ae4


# e32b34d8 28-Jun-2017 Brian Swetland <swetland@google.com>

[ports][exceptions] exception delivery via ports v2, remove ports v1

- exception binding mechanism moved from ports-v1 to ports-v2
- ports-v1 removed entirely
- ports-v1 tests removed entirely
- syscall support for ports-v1 removed entirely
- various ports-v1 clients migrated to ports-v2
(primarily unit tests using exceptions)
- high 4 bits of packet type reserved for flags
- PKT_FLAG_EPHEMERAL used to indicated that a packet is to be
deleted upon dequeue (previously that was done only for USER
packets, but we need that behaviour for EXCEPTION packets too)
- packet type flags are masked off before packet is returned to
userspace

Change-Id: Id70d4087c9a4b876ad42c934fb4817555fae3a12


# 8dd845fe 28-Jun-2017 Brian Swetland <swetland@google.com>

[ports-v2][exceptions] reduce size of mx_exception_packet_t

To enable migrating exception delivery to ports v2, we need exception
packets to fit in the 32 byte limit of ports v2 payloads. This change
reduces the exception packet to the minimal identifying information
(type, pid, and tid), with 16 bytes of expansion space for future
features.

Userspace callers are updated to adjust to the new packet format and
to obtain the mx_exception_report_t from mx_object_get_info() where
it is needed, instead of depending on it being inline in the packet.

Change-Id: I3018917f97cadb0f8b673c24dd96fa652096e583


# 7aa841ec 21-Jun-2017 Todd Eisenberger <teisenbe@google.com>

[utest][vmar] Add more tests for protect/unmap around demand paging

MG-868 #comment This test reproduces this bug.

Change-Id: Iba3290e02ab227ee15f8cfe26473c2364bf5afc1


# 5a9f91d3 15-Jun-2017 Todd Eisenberger <teisenbe@google.com>

[utest][vmar] Add test for overflow on rounding sizes

MG-856 #comment Add tests

Change-Id: Ice903d42944c4927110bc3797d194841998ab56e


# 39fa7a0e 15-Jun-2017 Todd Eisenberger <teisenbe@google.com>

[utest][vmar] Add tests to exercise MAP_RANGE and unaligned map lens

MG-847 #comment Add tests

Change-Id: Ic3741a9b2c058b8503d059d17d596db309a645ca


# 2915c67a 09-Jun-2017 George Kulakowski <kulakowski@google.com>

[utest][core] MX_ERR_-ify the core unit tests

Change-Id: Iebfbeba437831ad4b85d1b0bc6d6dc22bb721de9


# ae7c3ce0 06-Jun-2017 Todd Eisenberger <teisenbe@google.com>

[utest][vmar] Add test for mx_vmar_unmap with base not mapped

MG-829 #comment Add test case

Change-Id: I095abe41b10fa8399bd2203b98defbc9acdc4fe1


# 7f282dcf 05-May-2017 Carlos Pizano <cpu@chromium.org>

[kernel][magenta] Enforce job handle != 0

As a transitional step process creation accepted
an invalid handle as a job handle. Remove this.

Change-Id: Ibcd8d670e482199e665fea0002389068ac09c097


# 542fcb6f 12-Dec-2016 Todd Eisenberger <teisenbe@google.com>

[vmar] Implement the allocator for COMPACT regions

This allocator is far from perfect and will probably need to be replaced
once we start doing further analysis. However, this should be good
enough for meeting the claim for COMPACT.

Change-Id: I4152a924cf670ae23a96d1e15c3a4d1909fd82ce


# ac42d15b 28-Mar-2017 Todd Eisenberger <teisenbe@google.com>

[vmar] Improve non-COMPACT randomized allocator

This replaces the pick-a-spot at random allocator with one that
is aware of the existing allocations, so it will never try to place
on top of an existing one.

The old allocator could get unlucky and spuriously fail allocations, and
had some undesirable rounding behavior.

The changed test corrects flakiness due to randomization.

Change-Id: I98550c51c00495601a627effe1c8807d6a56f93e


# a411ad70 05-Feb-2017 Doug Evans <dje@google.com>

[kernel][exceptions] Fix mx_task_kill handling

This patch completes the fix for MG-502,
which is to unblock threads waiting in ExceptionHandlerExchange
when they are killed.

MG-502 #done

Change-Id: Ifa71a48606291a7d10daca647247621d99c87aae


# 9c57c8b9 24-Feb-2017 Christopher Anderson <cja@google.com>

[syscalls] object_bind_exception_port -> task_bind_exception_port

MG-535 #done
Change-Id: Icf61537df9417a18d9a7ff9f5eef15ca5fc939b7


# 682950da 17-Feb-2017 George Kulakowski <kulakowski@google.com>

[musl][magenta] Move process handle header into magenta

Change-Id: I00eb8f5ca7fbaf9297f3b1e5b391be00ce5d11e2


# 2e8aaccb 13-Feb-2017 Todd Eisenberger <teisenbe@google.com>

[utest][vmar] Fix a flaky test

This test becomes flaky once we turn on ASLR due to the random
allocation (expected error code changes in one case), due to
trying to map outside of the VMAR.

Change-Id: I585c5e99c28cd32cdfbe6f6dac147cb0e0a00c3f


# 5455c73e 31-Jan-2017 Roland McGrath <mcgrathr@google.com>

[utest][vmar] Properly align stack for test thread

ARM64 hardware cares about the stack alignment.
The ABI is not a suggestion.

Change-Id: Ifb71d6ad58ce1f2e0aa7330c53f577dedcca8f07


# fbe78489 27-Jan-2017 Todd Eisenberger <teisenbe@google.com>

[utest][vmar] Handle error conditions more cleanly

Change-Id: I63784059a0c2eead3a25a4eb66b3c59e66d6c308


# 0665e20f 26-Jan-2017 Todd Eisenberger <teisenbe@google.com>

[utest][vmar] Fix hang in VMAR tests

We need to resume the thread after killing it, otherwise the
test process hangs on exit.

Change-Id: I7af1a16314361a5b4b8bbeb5724889a016c85a43


# 5bfc2db6 23-Jan-2017 Todd Eisenberger <teisenbe@google.com>

[mmu] Skip unmapped pages when updating mappings

Pages may be unmapped due to demand paging. The old behavior
would cause the update function to bail early and only partially
change the protections.

Adds a test to validate that this situation does not reoccur.

MG-475 #done

Change-Id: Ieb5d754758509ccf7ac103a4327c0244e214306f


# d5f096a6 06-Dec-2016 Todd Eisenberger <teisenbe@google.com>

[vmar][protect] Remove size=0 compatibility hack

Change-Id: I95839d6f7a5ad76237d2b843d7ba238fc4cc60eb


# 04c683a2 05-Dec-2016 Todd Eisenberger <teisenbe@google.com>

[vmar][protect] Implement splitting protect

mx_vmar_protect can now be called on subranges of mappings and
across multiple mappings. See the docs for more details.

Change-Id: Ia295ae5b31b1d8ae0912dfd891f4f4fa84c07ebf


# 1ccf454a 12-Jan-2017 Carlos Pizano <cpu@google.com>

[system][utest] Process tests

This change adds a bunch of tests regarding circular
references of handles that we were missing.

It also improves mini-process lib and renames
some process names.

Change-Id: Id4f1ccefd052f487bd5fbb3e492808681ec2cbb0


# 74d96698 02-Dec-2016 Todd Eisenberger <teisenbe@google.com>

[vmar][map] Add support for SPECIFIC_OVERWRITE

SPECIFIC_OVERWRITE allows mx_vmar_map callers to request
overwriting of existing mappings, atomically with respect
to other mx_vmar_map/unmap/protect calls. See docs for
more details.

MG-133 #done This addresses the spirit of the bug, if not the letter.

Change-Id: I011bb6339817e7a2c4e33e2338ad458871e666d6


# 6cdc3cb5 11-Jan-2017 Brian Swetland <swetland@google.com>

[magenta][syscalls] provide pseudo syscall mx_job_default()

This is similar to mx_process_self(), but since the job may not
be the job that the current process is a child of, we call it
job_default -- the default job within which the process may try
to create additional processes.

Change-Id: I5169cf91b732de794fc2f9e18a78c2a51030d6c8


# f264e421 10-Jan-2017 George Kulakowski <kulakowski@google.com>

[jobs] Partially jobify coretests

Change-Id: Ide029018cc9e15826e9708f562c0f6ac903fab2c


# 618e1f08 02-Dec-2016 Todd Eisenberger <teisenbe@google.com>

[vmar][unmap] Remove size=0 compatibility hack

For compatibility with the old interface, we were allowing size=0
to be passed in to mean "unmap the entire mapping that contains
the base address".

Change-Id: I9f6f560a685aff37fcd56d92ffca4ed94655b88b


# 01bfdb53 01-Dec-2016 Todd Eisenberger <teisenbe@google.com>

[vmar][unmap] Add support for unmapping multiple regions

The mx_vmar_unmap call can now unmap multiple mappings/regions
simultaneously, as long as there is no partial overlap with a subregion.

Change-Id: Ib3d3d6db8dbe5a2c991da75f5e1f462228fd8da3


# ac6bdcb0 16-Dec-2016 Todd Eisenberger <teisenbe@google.com>

[vmar][map] Require that vmo_offset + size not overflow

Change-Id: I134b81e09a80be99ce3c92667273e11b0101fbb8


# e13f1d16 30-Nov-2016 Todd Eisenberger <teisenbe@google.com>

[vmar][unmap] Support splitting a single mapping

Unmap is now capable of unmapping a subset of a mapping rather than
requiring the entire mapping to be unmapped. This is the first
step towards implementing the originally planned mx_vmar_unmap
syscall, which can unmap multiple regions.

Change-Id: Iafa5082f32a7d9732ad55ee2f2e43d4fee4bb77a


# d576cfd1 16-Dec-2016 Todd Eisenberger <teisenbe@google.com>

[vmar] Reject map attempts with unaligned vmo_offsets

Change-Id: I9846be9d8a1062bf92706f9f77011beaa481cdc4


# 63d4263f 16-Dec-2016 Todd Eisenberger <teisenbe@google.com>

[vmar] Accept unaligned lengths in unmap/protect

This makes the interface a little more ergonomic to use
alongside mx_vmar_map. If a non-page-aligned len is
passed in, it is rounded up to the next page.

Change-Id: I06ff5d5f19f680d98d8430e1be6ba19caadc4cc7


# 77dc978d 22-Nov-2016 Todd Eisenberger <teisenbe@google.com>

[vmar] Add MX_INFO_VMAR to object_get_info to export VMAR base/len

Change-Id: I1c4ce79221413e9b3d185c5c0974727db94da7bd


# 2d1c46fe 15-Nov-2016 Todd Eisenberger <teisenbe@google.com>

[vm] Implement new VM Address Region syscall interface

For compatibility, allow passing a process handle instead of a VMAR
to the vmar_map/unmap/protect calls and add usermode shims that
translate the old syscalls into the new ones.

Change-Id: I9ba29921d45f47d0d068e46e113dac1d139fce52