<p>frank vibrans has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/21990">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">(WIP) soc/amd/common: Add PSP BIOS SMI info cmd<br><br>Add BIOS SMI info command to PSP BIOS-to-PSP communications path.  Gives<br>PSP information about its buffer in SMM space and how to generate an SMI<br>for PSP-to-BIOS communications.<br><br>Change-Id: I70d15ec6cd3a0bab12d8d284032c24cdaaa50cb3<br>Signed-off-by: Frank Vibrans <frank.vibrans@scarletltd.com><br>---<br>M src/soc/amd/common/block/include/amdblocks/psp.h<br>M src/soc/amd/common/block/psp/psp.c<br>2 files changed, 56 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/90/21990/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/src/soc/amd/common/block/include/amdblocks/psp.h b/src/soc/amd/common/block/include/amdblocks/psp.h<br>index 42b9fb7..96b1a11 100644<br>--- a/src/soc/amd/common/block/include/amdblocks/psp.h<br>+++ b/src/soc/amd/common/block/include/amdblocks/psp.h<br>@@ -70,6 +70,29 @@<br>   struct mbox_buffer_header header;<br> } __attribute__((packed,aligned(32)));<br> <br>+/* Buffer layout for BIOS command SMM info<br>+ */<br>+struct smm_trigger_info {<br>+ u64 address;<br>+ u32 address_type;<br>+    u32 value_width;<br>+     u32 value_and_mask;<br>+  u32 value_or_mask;<br>+} __attribute__((packed));<br>+<br>+struct smm_req_buffer {<br>+ u64 smm_base;<br>+        u64 smm_length;<br>+      u64 psp_smm_data_base;<br>+       u64 psp_smm_data_length;<br>+     struct smm_trigger_info smm_trig_info;<br>+} __attribute__((packed));<br>+<br>+struct mbox_smm_info_buffer {<br>+       struct mbox_buffer_header header;<br>+    struct smm_req_buffer req;<br>+} __attribute__((packed));<br>+<br> /* send_psp_command() error codes */<br> #define PSPSTS_SUCCESS      0<br> #define PSPSTS_NOBASE       1<br>@@ -93,5 +116,7 @@<br> <br> /* BIOS-to-PSP functions return 0 if successful, else negative value */<br> int psp_notify_dram(void);<br>+int psp_notify_smm_info(uintptr_t base, size_t length, uintptr_t psp_data_base,<br>+            size_t psp_data_length, struct smm_trigger_info *smm_trig_info);<br> <br> #endif /* __AMD_PSP_H__ */<br>diff --git a/src/soc/amd/common/block/psp/psp.c b/src/soc/amd/common/block/psp/psp.c<br>index 788de2c..ae90621 100644<br>--- a/src/soc/amd/common/block/psp/psp.c<br>+++ b/src/soc/amd/common/block/psp/psp.c<br>@@ -13,6 +13,7 @@<br>  * GNU General Public License for more details.<br>  */<br> <br>+#include <stddef.h><br> #include <arch/io.h><br> #include <timer.h><br> #include <device/pci_def.h><br>@@ -199,3 +200,33 @@<br> <br>      return cmd_status;<br> }<br>+<br>+/*<br>+ * Inform the PSP of the system's System Management Mode settings. This<br>+ * function is called when the system is in SMM.<br>+ */<br>+int psp_notify_smm_info(uintptr_t base, size_t length, uintptr_t psp_data_base,<br>+              size_t psp_data_length, struct smm_trigger_info *smm_trig_info)<br>+{<br>+  struct mbox_smm_info_buffer buffer;<br>+  int cmd_status;<br>+<br>+   printk(BIOS_DEBUG, "PSP: Notify SMM info... ");<br>+<br>+ buffer.header.size = sizeof(struct mbox_smm_info_buffer);<br>+    buffer.header.status = 0;<br>+    buffer.req.smm_base = base;<br>+  buffer.req.smm_length = length;<br>+      buffer.req.psp_smm_data_base = psp_data_base;<br>+        buffer.req.psp_smm_data_length = psp_data_length;<br>+    buffer.req.smm_trig_info = *smm_trig_info;<br>+<br>+        cmd_status = send_psp_command(MBOX_BIOS_CMD_SMM_INFO, &buffer);<br>+<br>+       if (cmd_status)<br>+              printk(BIOS_DEBUG, "%s\n", status_to_string(cmd_status));<br>+  else<br>+         printk(BIOS_DEBUG, "OK\n");<br>+<br>+     return cmd_status;<br>+}<br></pre><p>To view, visit <a href="https://review.coreboot.org/21990">change 21990</a>. To unsubscribe, 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/21990"/><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: I70d15ec6cd3a0bab12d8d284032c24cdaaa50cb3 </div>
<div style="display:none"> Gerrit-Change-Number: 21990 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: frank vibrans <frank.vibrans@scarletltd.com> </div>