<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>