[roll] Roll fuchsia [kernel][smmu] Add DeviceAspace and host-test.

Add some utility classes along with host-test to the kernel ARM SMMU
driver.

The three classes added are:
+ DeviceAspace
+ TranslationTableHelper
+ PageCache

They will be used in a subsequent change to manage a VMSAv8-64 address
space used by the SMMU to enforce device access control on a per-page
basis.

The helper classes actually depend on very little of the actual kernel
code, they mostly only need to be able to get pages from the PMM, and
translate between physical addresses and their corresponding kernel
virtual addresses in order to manage the PTEs.

This said, making a mistake in this code when being used by the SMMU
is very likely to hang or crash the system, making it very difficult
to debug.

So, instead of writing in-kernel or fuchsia user-mode unit tests, add
host-tests instead, mocking out the small number of kernel
dependencies needed to exercise the code.  This makes it possible to
verify the code host-side without needing a functioning fuchsia
environment.  It can also make things significantly easier to debug
when needed as host-side debuggers can be used if desired.

Original-Original-Bug: 42108551
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1576305
Original-Original-Revision: 3021e91456c8962274ed84b3fd256e3439306e74
GitOrigin-RevId: dd86e94976250edc0a32ca0174e06ea96316f68a
Change-Id: I9e378805e8bfa023842ee2e5ad7a8162d3d1e587
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1618651
Cr-Commit-Position: refs/heads/main@{#193033}
1 file changed
tree: 75d7aadf541f47733ef470f71c0c7e9dbda48a2b
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.