<p>Pratikkumar V Prajapati has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/21528">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">soc/intel/common/sgx: Define and use soc_fill_sgx_param()<br><br>To remove chip.h dependency from SGX common code<br>- Create API soc_fill_sgx_param() and use it in sgx.c<br>- Implement same API for skylake/kabylake<br>- define sgx_param_t structure<br><br>Change-Id: I358f0817bec5dd6cd147a645675b5688969a04e0<br>Signed-off-by: Pratik Prajapati <pratikkumar.v.prajapati@intel.com><br>---<br>M src/soc/intel/common/block/include/intelblocks/sgx.h<br>M src/soc/intel/common/block/sgx/sgx.c<br>M src/soc/intel/skylake/cpu.c<br>3 files changed, 31 insertions(+), 13 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/28/21528/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/src/soc/intel/common/block/include/intelblocks/sgx.h b/src/soc/intel/common/block/include/intelblocks/sgx.h<br>index efcad61..1b341f5 100644<br>--- a/src/soc/intel/common/block/include/intelblocks/sgx.h<br>+++ b/src/soc/intel/common/block/include/intelblocks/sgx.h<br>@@ -16,6 +16,10 @@<br> #ifndef SOC_INTEL_COMMON_BLOCK_SGX_H<br> #define SOC_INTEL_COMMON_BLOCK_SGX_H<br> <br>+struct sgx_param_t {<br>+ uint8_t enable;<br>+};<br>+<br> /*<br>  * Lock SGX memory.<br>  * CPU specific code needs to provide the implementation.<br>@@ -34,4 +38,8 @@<br>  */<br> void sgx_configure(void);<br> <br>+/* SOC specific API to get SGX params.<br>+ * returns 0, if able to get SGX params; otherwise returns -1 */<br>+int soc_fill_sgx_param(struct sgx_param_t *sgx_param);<br>+<br> #endif /* SOC_INTEL_COMMON_BLOCK_SGX_H */<br>diff --git a/src/soc/intel/common/block/sgx/sgx.c b/src/soc/intel/common/block/sgx/sgx.c<br>index ec1b638..072b922 100644<br>--- a/src/soc/intel/common/block/sgx/sgx.c<br>+++ b/src/soc/intel/common/block/sgx/sgx.c<br>@@ -15,7 +15,6 @@<br> <br> #include <assert.h><br> #include <console/console.h><br>-#include <chip.h><br> #include <cpu/x86/msr.h><br> #include <cpu/x86/mtrr.h><br> #include <cpu/intel/microcode.h><br>@@ -40,16 +39,14 @@<br>         msr_t prmrr_base;<br>     msr_t prmrr_mask;<br>     msr_t msr;<br>-   device_t dev = SA_DEV_ROOT;<br>-  assert(dev != NULL);<br>- config_t *conf = dev->chip_info;<br>+  struct sgx_param_t sgx_param;<br> <br>-     if (!conf) {<br>-         printk(BIOS_ERR, "SGX: failed to get chip_info\n");<br>+        if (soc_fill_sgx_param(&sgx_param) < 0) {<br>+             printk(BIOS_ERR, "SGX: failed to get sgx_param from soc\n");<br>                return;<br>       }<br> <br>- if (!conf->sgx_enable || !is_sgx_supported())<br>+     if (!sgx_param.enable || !is_sgx_supported())<br>                 return;<br> <br>    /* PRMRR base and mask are read from the UNCORE PRMRR MSRs<br>@@ -160,17 +157,15 @@<br> <br> void sgx_configure(void)<br> {<br>-  device_t dev = SA_DEV_ROOT;<br>-  assert(dev != NULL);<br>- config_t *conf = dev->chip_info;<br>   const void *microcode_patch = intel_mp_current_microcode();<br>+  struct sgx_param_t sgx_param;<br> <br>-     if (!conf) {<br>-         printk(BIOS_ERR, "SGX: failed to get chip_info\n");<br>+        if (soc_fill_sgx_param(&sgx_param) < 0) {<br>+             printk(BIOS_ERR, "SGX: failed to get sgx_param from soc\n");<br>                return;<br>       }<br> <br>- if (!conf->sgx_enable || !is_sgx_supported() || !is_prmrr_set()) {<br>+        if (!sgx_param.enable || !is_sgx_supported() || !is_prmrr_set()) {<br>            printk(BIOS_ERR, "SGX: pre-conditions not met\n");<br>          return;<br>       }<br>diff --git a/src/soc/intel/skylake/cpu.c b/src/soc/intel/skylake/cpu.c<br>index 1e12c65..811f57e 100644<br>--- a/src/soc/intel/skylake/cpu.c<br>+++ b/src/soc/intel/skylake/cpu.c<br>@@ -504,3 +504,18 @@<br>          wrmsr(MSR_LT_LOCK_MEMORY, msr);<br>       }<br> }<br>+<br>+int soc_fill_sgx_param(struct sgx_param_t *sgx_param)<br>+{<br>+ device_t dev = SA_DEV_ROOT;<br>+  assert(dev != NULL);<br>+ config_t *conf = dev->chip_info;<br>+<br>+       if (!conf) {<br>+         printk(BIOS_ERR, "Failed to get chip_info for SGX param\n");<br>+               return -1;<br>+   }<br>+<br>+ sgx_param->enable = conf->sgx_enable;<br>+  return 0;<br>+}<br></pre><p>To view, visit <a href="https://review.coreboot.org/21528">change 21528</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/21528"/><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: I358f0817bec5dd6cd147a645675b5688969a04e0 </div>
<div style="display:none"> Gerrit-Change-Number: 21528 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Pratikkumar V Prajapati <pratikkumar.v.prajapati@intel.com> </div>