mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
ArmPkg: StandaloneMmCoreEntryPoint: Use ARM_FFA_ARGS for misc buffer
The MISC_MM_COMMUNICATE_BUFFER stored the FF-A direct message registers in a DIRECT_MSG_ARGS structure. Populating and reading it required manually re-indexing every register (EventSvcArgs->Arg4..Arg17 into DirectMsgArgs.Arg0..Arg13). This shifted the register positions and left the buffer layout inconsistent with the raw FF-A argument register file, making it error prone to correlate a slot with its architectural register. Signed-off-by: Kun Qin <kun.qin@microsoft.com>
This commit is contained in:
parent
b3f19fb5ce
commit
93ee300675
2 changed files with 20 additions and 32 deletions
|
|
@ -58,13 +58,13 @@ typedef struct ServiceTableEntry {
|
|||
*/
|
||||
typedef struct {
|
||||
/// Service guid
|
||||
EFI_GUID HeaderGuid;
|
||||
EFI_GUID HeaderGuid;
|
||||
|
||||
/// Length of Message. In case of misc service, sizeof (EventSvcArgs)
|
||||
UINTN MessageLength;
|
||||
UINTN MessageLength;
|
||||
|
||||
/// Delivered register values.
|
||||
DIRECT_MSG_ARGS DirectMsgArgs;
|
||||
ARM_FFA_ARGS FfaArgs;
|
||||
} MISC_MM_COMMUNICATE_BUFFER;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
|||
|
|
@ -780,20 +780,20 @@ SetEventCompleteSvcArgs (
|
|||
EventCompleteSvcArgs->Arg0 = ARM_FID_FFA_MSG_SEND_DIRECT_RESP2;
|
||||
|
||||
if (FfaMsgInfo->ServiceType == ServiceTypeMisc) {
|
||||
EventCompleteSvcArgs->Arg4 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg0;
|
||||
EventCompleteSvcArgs->Arg5 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg1;
|
||||
EventCompleteSvcArgs->Arg6 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg2;
|
||||
EventCompleteSvcArgs->Arg7 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg3;
|
||||
EventCompleteSvcArgs->Arg8 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg4;
|
||||
EventCompleteSvcArgs->Arg9 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg5;
|
||||
EventCompleteSvcArgs->Arg10 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg6;
|
||||
EventCompleteSvcArgs->Arg11 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg7;
|
||||
EventCompleteSvcArgs->Arg12 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg8;
|
||||
EventCompleteSvcArgs->Arg13 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg9;
|
||||
EventCompleteSvcArgs->Arg14 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg10;
|
||||
EventCompleteSvcArgs->Arg15 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg11;
|
||||
EventCompleteSvcArgs->Arg16 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg12;
|
||||
EventCompleteSvcArgs->Arg17 = mMiscMmCommunicateBuffer->DirectMsgArgs.Arg13;
|
||||
EventCompleteSvcArgs->Arg4 = mMiscMmCommunicateBuffer->FfaArgs.Arg4;
|
||||
EventCompleteSvcArgs->Arg5 = mMiscMmCommunicateBuffer->FfaArgs.Arg5;
|
||||
EventCompleteSvcArgs->Arg6 = mMiscMmCommunicateBuffer->FfaArgs.Arg6;
|
||||
EventCompleteSvcArgs->Arg7 = mMiscMmCommunicateBuffer->FfaArgs.Arg7;
|
||||
EventCompleteSvcArgs->Arg8 = mMiscMmCommunicateBuffer->FfaArgs.Arg8;
|
||||
EventCompleteSvcArgs->Arg9 = mMiscMmCommunicateBuffer->FfaArgs.Arg9;
|
||||
EventCompleteSvcArgs->Arg10 = mMiscMmCommunicateBuffer->FfaArgs.Arg10;
|
||||
EventCompleteSvcArgs->Arg11 = mMiscMmCommunicateBuffer->FfaArgs.Arg11;
|
||||
EventCompleteSvcArgs->Arg12 = mMiscMmCommunicateBuffer->FfaArgs.Arg12;
|
||||
EventCompleteSvcArgs->Arg13 = mMiscMmCommunicateBuffer->FfaArgs.Arg13;
|
||||
EventCompleteSvcArgs->Arg14 = mMiscMmCommunicateBuffer->FfaArgs.Arg14;
|
||||
EventCompleteSvcArgs->Arg15 = mMiscMmCommunicateBuffer->FfaArgs.Arg15;
|
||||
EventCompleteSvcArgs->Arg16 = mMiscMmCommunicateBuffer->FfaArgs.Arg16;
|
||||
EventCompleteSvcArgs->Arg17 = mMiscMmCommunicateBuffer->FfaArgs.Arg17;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -831,21 +831,9 @@ InitializeMiscMmCommunicateBuffer (
|
|||
{
|
||||
ZeroMem (Buffer, sizeof (MISC_MM_COMMUNICATE_BUFFER));
|
||||
|
||||
Buffer->MessageLength = sizeof (DIRECT_MSG_ARGS);
|
||||
Buffer->DirectMsgArgs.Arg0 = EventSvcArgs->Arg4;
|
||||
Buffer->DirectMsgArgs.Arg1 = EventSvcArgs->Arg5;
|
||||
Buffer->DirectMsgArgs.Arg2 = EventSvcArgs->Arg6;
|
||||
Buffer->DirectMsgArgs.Arg3 = EventSvcArgs->Arg7;
|
||||
Buffer->DirectMsgArgs.Arg4 = EventSvcArgs->Arg8;
|
||||
Buffer->DirectMsgArgs.Arg5 = EventSvcArgs->Arg9;
|
||||
Buffer->DirectMsgArgs.Arg6 = EventSvcArgs->Arg10;
|
||||
Buffer->DirectMsgArgs.Arg7 = EventSvcArgs->Arg11;
|
||||
Buffer->DirectMsgArgs.Arg8 = EventSvcArgs->Arg12;
|
||||
Buffer->DirectMsgArgs.Arg9 = EventSvcArgs->Arg13;
|
||||
Buffer->DirectMsgArgs.Arg10 = EventSvcArgs->Arg14;
|
||||
Buffer->DirectMsgArgs.Arg11 = EventSvcArgs->Arg15;
|
||||
Buffer->DirectMsgArgs.Arg12 = EventSvcArgs->Arg16;
|
||||
Buffer->DirectMsgArgs.Arg13 = EventSvcArgs->Arg17;
|
||||
Buffer->MessageLength = sizeof (DIRECT_MSG_ARGS);
|
||||
|
||||
CopyMem (&Buffer->FfaArgs, EventSvcArgs, sizeof (ARM_FFA_ARGS));
|
||||
|
||||
CopyGuid (&Buffer->HeaderGuid, ServiceGuid);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue