Hardware Abstraction Layer for FreeRTOS

#include <remoteproc.h>

Data Fields

u32 type
 
u32 da
 
u32 pa
 
u32 len
 
u32 flags
 
u32 reserved
 
u8 name [32]
 

Detailed Description

struct fw_rsc_carveout - physically contiguous memory request

This resource entry requests the host to allocate a physically contiguous memory region.

These request entries should precede other firmware resource entries, as other entries might request placing other data objects inside these memory regions (e.g. data/code segments, trace resource entries, ...).

Allocating memory this way helps utilizing the reserved physical memory (e.g. CMA) more efficiently, and also minimizes the number of TLB entries needed to map it (in case rproc is using an IOMMU). Reducing the TLB pressure is important; it may have a substantial impact on performance.

If the firmware is compiled with static addresses, then da should specify the expected device address of this memory region. If da is set to FW_RSC_ADDR_ANY, then the host will dynamically allocate it, and then overwrite da with the dynamically allocated address.

We will always use da to negotiate the device addresses, even if it isn't using an iommu. In that case, though, it will obviously contain physical addresses.

Some remote processors needs to know the allocated physical address even if they do use an iommu. This is needed, e.g., if they control hardware accelerators which access the physical memory directly (this is the case with OMAP4 for instance). In that case, the host will overwrite pa with the dynamically allocated physical address. Generally we don't want to expose physical addresses if we don't have to (remote processors are generally not trusted), so we might want to change this to happen only when explicitly required by the hardware.

Field Documentation

◆ da

u32 fw_rsc_carveout::da

device address

◆ flags

u32 fw_rsc_carveout::flags

iommu protection flags

is used to provide IOMMU protection flags

◆ len

u32 fw_rsc_carveout::len

length (in bytes)

◆ name

u8 fw_rsc_carveout::name[32]

human-readable name of the requested memory region

should (optionally) contain a human readable name of this carveout region (mainly for debugging purposes).

◆ pa

u32 fw_rsc_carveout::pa

physical address

◆ reserved

u32 fw_rsc_carveout::reserved

reserved (must be zero)

◆ type

u32 fw_rsc_carveout::type

resource type

See also
fw_rsc_hdr

The documentation for this struct was generated from the following file: