summaryrefslogtreecommitdiff
path: root/src/soc/intel/icelake
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/icelake')
-rw-r--r--src/soc/intel/icelake/include/soc/smm.h8
-rw-r--r--src/soc/intel/icelake/memmap.c13
-rw-r--r--src/soc/intel/icelake/smmrelocate.c20
3 files changed, 14 insertions, 27 deletions
diff --git a/src/soc/intel/icelake/include/soc/smm.h b/src/soc/intel/icelake/include/soc/smm.h
index 75cb4eae3c..498a2217bf 100644
--- a/src/soc/intel/icelake/include/soc/smm.h
+++ b/src/soc/intel/icelake/include/soc/smm.h
@@ -28,10 +28,10 @@ struct ied_header {
} __packed;
struct smm_relocation_params {
- u32 smram_base;
- u32 smram_size;
- u32 ied_base;
- u32 ied_size;
+ uintptr_t smram_base;
+ size_t smram_size;
+ uintptr_t ied_base;
+ size_t ied_size;
msr_t smrr_base;
msr_t smrr_mask;
msr_t emrr_base;
diff --git a/src/soc/intel/icelake/memmap.c b/src/soc/intel/icelake/memmap.c
index 317f0fb702..046774f0c6 100644
--- a/src/soc/intel/icelake/memmap.c
+++ b/src/soc/intel/icelake/memmap.c
@@ -27,9 +27,9 @@
#include <soc/systemagent.h>
#include <stdlib.h>
-void smm_region(void **start, size_t *size)
+void smm_region(uintptr_t *start, size_t *size)
{
- *start = (void *)sa_get_tseg_base();
+ *start = sa_get_tseg_base();
*size = sa_get_tseg_size();
}
@@ -44,16 +44,14 @@ void smm_region(void **start, size_t *size)
* | (TSEG) |
* +-------------------------+ TSEG
*/
-int smm_subregion(int sub, void **start, size_t *size)
+int smm_subregion(int sub, uintptr_t *start, size_t *size)
{
uintptr_t sub_base;
size_t sub_size;
- void *smm_base;
const size_t ied_size = CONFIG_IED_REGION_SIZE;
const size_t cache_size = CONFIG_SMM_RESERVED_SIZE;
- smm_region(&smm_base, &sub_size);
- sub_base = (uintptr_t)smm_base;
+ smm_region(&sub_base, &sub_size);
switch (sub) {
case SMM_SUBREGION_HANDLER:
@@ -75,9 +73,8 @@ int smm_subregion(int sub, void **start, size_t *size)
return -1;
}
- *start = (void *)sub_base;
+ *start = sub_base;
*size = sub_size;
-
return 0;
}
diff --git a/src/soc/intel/icelake/smmrelocate.c b/src/soc/intel/icelake/smmrelocate.c
index 9630844123..dfdec22180 100644
--- a/src/soc/intel/icelake/smmrelocate.c
+++ b/src/soc/intel/icelake/smmrelocate.c
@@ -172,11 +172,7 @@ void smm_relocation_handler(int cpu, uintptr_t curr_smbase,
static void fill_in_relocation_params(struct smm_relocation_params *params)
{
- void *handler_base;
- size_t handler_size;
- void *ied_base;
- size_t ied_size;
- void *tseg_base;
+ uintptr_t tseg_base;
size_t tseg_size;
u32 emrr_base;
u32 emrr_size;
@@ -191,14 +187,8 @@ static void fill_in_relocation_params(struct smm_relocation_params *params)
phys_bits = cpu_phys_address_size();
smm_region(&tseg_base, &tseg_size);
- smm_subregion(SMM_SUBREGION_HANDLER, &handler_base, &handler_size);
- smm_subregion(SMM_SUBREGION_CHIPSET, &ied_base, &ied_size);
-
- params->smram_size = handler_size;
- params->smram_base = (uintptr_t)handler_base;
-
- params->ied_base = (uintptr_t)ied_base;
- params->ied_size = ied_size;
+ smm_subregion(SMM_SUBREGION_HANDLER, &params->smram_base, &params->smram_size);
+ smm_subregion(SMM_SUBREGION_CHIPSET, &params->ied_base, &params->ied_size);
/* SMRR has 32-bits of valid address aligned to 4KiB. */
params->smrr_base.lo = (params->smram_base & rmask) | MTRR_TYPE_WRBACK;
@@ -241,8 +231,8 @@ static void setup_ied_area(struct smm_relocation_params *params)
ied_base = (void *)params->ied_base;
- printk(BIOS_DEBUG, "IED base = 0x%08x\n", params->ied_base);
- printk(BIOS_DEBUG, "IED size = 0x%08x\n", params->ied_size);
+ printk(BIOS_DEBUG, "IED base = 0x%08x\n", (u32)params->ied_base);
+ printk(BIOS_DEBUG, "IED size = 0x%08x\n", (u32)params->ied_size);
/* Place IED header at IEDBASE. */
memcpy(ied_base, &ied, sizeof(ied));