Files
android_kernel_samsung_sm86…/smmu-proxy/qti-smmu-proxy-msgq.h
Chris Goldsworthy 4b658ee6ce securemsm-kernel: smmu-proxy: Add full drivers
Add the full drivers for the PVM and TVM.

Change-Id: I3046306fff91670928c750ffa31db02bd0240c9c
Signed-off-by: Chris Goldsworthy <quic_cgoldswo@quicinc.com>
2023-03-09 21:52:47 -08:00

108 linhas
2.9 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef SMMU_PROXY_MSGQ_H
#define SMMU_PROXY_MSGQ_H
#include <linux/gunyah/gh_rm_drv.h>
/**
* enum smmu_proxy_msg_type: Message types used by the SMMU proxy driver for
* communication.
* @SMMU_PROXY_MAP: The message is a request to map memory into the VM's
* SMMU.
* @SMMU_PROXY_MAP_RESP: The message is a response from a remote VM to a
* mapping request issued by the receiving VM
* @SMMU_PROXY_UNMAP: The message is a request to unmap some previously
* SMMU-mapped memory from the VM
* @SMMU_PROXY_UNMAP_RESP: The message is a response from a remote VM to an
* unmapping request issued by the receiving VM
* @SMMU_PROXY_ERR_RESP: The message is a response from a remote VM to give
* a generic error response for a prior message sent to the remote VM
*/
enum smmu_proxy_msg_type {
SMMU_PROXY_MAP,
SMMU_PROXY_MAP_RESP,
SMMU_PROXY_UNMAP,
SMMU_PROXY_UNMAP_RESP,
SMMU_PROXY_ERR_RESP,
SMMU_PROXY_MSG_MAX,
};
/**
* struct smmu_proxy_msg_hdr: The header for SMMU proxy messages
* @msg_type: The type of message.
* @msg_size: The size of message.
*/
struct smmu_proxy_msg_hdr {
u32 msg_type;
u32 msg_size;
} __packed;
/**
* struct smmu_proxy_msg_hdr: The header for responses to SMMU proxy messages
* @msg_type: The type of message.
* @msg_size: The size of message.
* @ret: Return code from remote VM
*/
struct smmu_proxy_resp_hdr {
u32 msg_type;
u32 msg_size;
s32 ret;
} __packed;
/**
* struct smmu_proxy_map_req: The message format for an SMMU mapping request from
* another VM.
* @hdr: Message header
* @hdl: The memparcel handle associated with the memory to be mapped in the SMMU
* of the relevant VM
* @cb_id: Context bank ID that we will map the memory associated with @hdl to
* @acl_desc: A GH ACL descriptor that describes the VMIDs that will be
* accessing the memory, as well as what permissions each VMID will have.
*/
struct smmu_proxy_map_req {
struct smmu_proxy_msg_hdr hdr;
u32 hdl;
u32 cb_id;
struct gh_acl_desc acl_desc;
} __packed;
/**
* struct smmu_proxy_map_resp: The message format for an SMMU mapping
* request response.
* @hdr: Response header
* @iova: IOVA of mapped memory
* @mapping_len: Lenth of IOMMU IOVA mapping
*/
struct smmu_proxy_map_resp {
struct smmu_proxy_resp_hdr hdr;
u64 iova;
u64 mapping_len;
} __packed;
/**
* struct smmu_proxy_unmap_req: The message format for an SMMU unmapping request from
* another VM.
* @hdr: Message header
* @hdl: The memparcel handle associated with the memory to be mapped in the SMMU
* of the relevant VM
*/
struct smmu_proxy_unmap_req {
struct smmu_proxy_msg_hdr hdr;
u32 hdl;
} __packed;
/**
* struct smmu_proxy_unmap_resp: The message format for an SMMU unmapping
* request response.
* @hdr: Response header
*/
struct smmu_proxy_unmap_resp {
struct smmu_proxy_resp_hdr hdr;
} __packed;
#endif /* SMMU_PROXY_MSGQ_H */