<p>Richard Spiegel has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/25740">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">soc/amd/common/block/include/amdblocks/psp.h: Define mailbox buffers<br><br>The Platform Security Processor use predefined buffers to some of the<br>commands, though not all (some commands are just command and status,<br>which forms the header of any command). This buffer is placed in a memory<br>area called the mailbox, and its address is passed to the psp through<br>special registers. Commands that don't need a special buffer use the<br>default buffer, which only contains the header. Define the special buffers,<br>and create a union of them, including the default buffer.<br><br>BUG=b:77940747<br>TEST=None.<br><br>Change-Id: I6143d7e85476061395962b95ad8864ac32a1d4a3<br>Signed-off-by: Richard Spiegel <richard.spiegel@silverbackltd.com><br>---<br>M src/soc/amd/common/block/include/amdblocks/psp.h<br>1 file changed, 64 insertions(+), 5 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/40/25740/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/soc/amd/common/block/include/amdblocks/psp.h b/src/soc/amd/common/block/include/amdblocks/psp.h</span><br><span>index 4c9878a..ad76990 100644</span><br><span>--- a/src/soc/amd/common/block/include/amdblocks/psp.h</span><br><span>+++ b/src/soc/amd/common/block/include/amdblocks/psp.h</span><br><span>@@ -29,7 +29,7 @@</span><br><span> #define MBOX_BIOS_CMD_PSP_QUERY    0x05</span><br><span> #define MBOX_BIOS_CMD_BOOT_DONE    0x06</span><br><span> #define MBOX_BIOS_CMD_CLEAR_S3_STS 0x07</span><br><span style="color: hsl(0, 100%, 40%);">-#define MBOX_BIOS_CMD_C3_DATA_INFO 0x08</span><br><span style="color: hsl(120, 100%, 40%);">+#define MBOX_BIOS_CMD_S3_DATA_INFO 0x08</span><br><span> #define MBOX_BIOS_CMD_NOP          0x09</span><br><span> #define MBOX_BIOS_CMD_SMU_FW       0x19</span><br><span> #define MBOX_BIOS_CMD_SMU_FW2      0x1a</span><br><span>@@ -64,13 +64,72 @@</span><br><span>  u32 status;     /* command status, filled by PSP if applicable */</span><br><span> } __packed;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* command-specific buffer definitions:  see NDA document #54267</span><br><span style="color: hsl(0, 100%, 40%);">- *   todo: create new definitions here for additional c2p_mbox_command commands</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(120, 100%, 40%);">+/* command-specific buffer definitions:  see NDA document #54267 */</span><br><span> </span><br><span> struct mbox_default_buffer { /* command-response buffer unused by command */</span><br><span>      struct mbox_buffer_header header;</span><br><span style="color: hsl(0, 100%, 40%);">-} __attribute__((packed,aligned(32)));</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__((packed, aligned(32)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct smm_trigger_buffer {</span><br><span style="color: hsl(120, 100%, 40%);">+       u64 address;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 address_type;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 value_width;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 value_and_mask;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 value_or_mask;</span><br><span style="color: hsl(120, 100%, 40%);">+} __packed;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct smm_req_buffer {</span><br><span style="color: hsl(120, 100%, 40%);">+    u64 smm_base;</span><br><span style="color: hsl(120, 100%, 40%);">+ u64 smm_length;</span><br><span style="color: hsl(120, 100%, 40%);">+       u64 psp_data_region;</span><br><span style="color: hsl(120, 100%, 40%);">+  u64 psp_data_length;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct smm_trigger_buffer trigger;</span><br><span style="color: hsl(120, 100%, 40%);">+} __packed;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* command-response buffer used by command MBOX_BIOS_CMD_SMM_INFO */</span><br><span style="color: hsl(120, 100%, 40%);">+struct mbox_smm_buffer {</span><br><span style="color: hsl(120, 100%, 40%);">+     struct mbox_buffer_header header;</span><br><span style="color: hsl(120, 100%, 40%);">+     struct smm_req_buffer buffer;</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__((packed, aligned(32)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* command-response buffer used by command MBOX_BIOS_CMD_SX_INFO */</span><br><span style="color: hsl(120, 100%, 40%);">+struct mbox_sx_buffer {</span><br><span style="color: hsl(120, 100%, 40%);">+        struct mbox_buffer_header header;</span><br><span style="color: hsl(120, 100%, 40%);">+     u8 SleepType;</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__((packed, aligned(32)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* command-response buffer used by command MBOX_BIOS_CMD_RSM_INFO */</span><br><span style="color: hsl(120, 100%, 40%);">+struct mbox_rsm_buffer {</span><br><span style="color: hsl(120, 100%, 40%);">+      struct mbox_buffer_header header;</span><br><span style="color: hsl(120, 100%, 40%);">+     u64 vector_address;</span><br><span style="color: hsl(120, 100%, 40%);">+   u64 vector_length;</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__((packed, aligned(32)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* command-response buffer used by command MBOX_BIOS_CMD_PSP_QUERY */</span><br><span style="color: hsl(120, 100%, 40%);">+struct mbox_psp_query_buffer {</span><br><span style="color: hsl(120, 100%, 40%);">+  struct mbox_buffer_header header;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 capabilities;</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__((packed, aligned(32)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct s3_data_req_buffer {</span><br><span style="color: hsl(120, 100%, 40%);">+     u64 s3_restore_buffer_base;</span><br><span style="color: hsl(120, 100%, 40%);">+   u64 s3_restore_buffer_size;</span><br><span style="color: hsl(120, 100%, 40%);">+} __packed;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* command-response buffer used by command MBOX_BIOS_CMD_S3_DATA_INFO */</span><br><span style="color: hsl(120, 100%, 40%);">+struct mbox_s3_data_buffer {</span><br><span style="color: hsl(120, 100%, 40%);">+    struct mbox_buffer_header header;</span><br><span style="color: hsl(120, 100%, 40%);">+     s3_data_req_buffer request;</span><br><span style="color: hsl(120, 100%, 40%);">+} __attribute__((packed, aligned(32)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+union mbox_buffer {</span><br><span style="color: hsl(120, 100%, 40%);">+   mbox_default_buffer default;</span><br><span style="color: hsl(120, 100%, 40%);">+  mbox_smm_buffer smm;</span><br><span style="color: hsl(120, 100%, 40%);">+  mbox_sx_buffer sx;</span><br><span style="color: hsl(120, 100%, 40%);">+    mbox_rsm_buffer resume;</span><br><span style="color: hsl(120, 100%, 40%);">+       mbox_psp_query_buffer query;</span><br><span style="color: hsl(120, 100%, 40%);">+  mbox_s3_data_buffer s3_data;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span> </span><br><span> /* send_psp_command() error codes */</span><br><span> #define PSPSTS_SUCCESS      0</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/25740">change 25740</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/25740"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I6143d7e85476061395962b95ad8864ac32a1d4a3 </div>
<div style="display:none"> Gerrit-Change-Number: 25740 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Richard Spiegel <richard.spiegel@silverbackltd.com> </div>