| // Copyright 2019 The Fuchsia Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 | library fuchsia.hardware.securemem; | 
 |  | 
 | using zx; | 
 |  | 
 | /// This protocol currently is a temporary measure to allow for services to get the physical address | 
 | /// of a previously pinned VMO until trusted services can be handed BTI handles. | 
 | protocol Device { | 
 |     /// Gets the physical address of a previously pinned VMO. | 
 |     /// | 
 |     /// Note: | 
 |     ///  * The VMO must be contiguous. | 
 |     ///  * `secure_mem` is expected to have a stable physical address that is pinned by some other | 
 |     ///    entity. The protocol implementation should not be expected to keep the VMO pinned. | 
 |     ///  * The server implementation must not use an IOMMU-backed BTI handle, as the physical | 
 |     ///    address of the VMO being pinned must be stable. | 
 |     GetSecureMemoryPhysicalAddress(resource struct { | 
 |         secure_mem zx.handle:VMO; | 
 |     }) -> (struct { | 
 |         s zx.status; | 
 |         paddr zx.paddr; | 
 |     }); | 
 | }; |