soc/intel: common,skl,cnl,icl: drop reserved mmio memory size calculation
Remove the calculation of the Reserved Intel MMIO Memory size from systemagent and memmap, since it is not needed. The size is used in SA to calculate the space between cbmem_top and TSEG without DPR and Chipset Reserved Memory. Since this will always be equal to 0, the reservation will be skipped and TSEG, DPR and Chipset Reserved Memory will get reserved alltogether. By reading the code and pratical testing we figured out that: - TSEG - DPR - reserved - top_of_memory == 0 - TSEG - DPR - reserved == top_of_memory This means the whole block will never reserve anything because it is always 0. Hence the code can be removed for simplification. Tested successfully on X11SSM-F Change-Id: I0cc730551eb3a79c78a971b40056de8d029f4b82 Signed-off-by: Michael Niewöhner <foss@mniewoehner.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36216 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Michael Niewöhner Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
b17f3d3d3c
commit
40f893e9f3
|
@ -211,21 +211,6 @@ static uintptr_t calculate_dram_base(size_t *reserved_mem_size)
|
||||||
return dram_base;
|
return dram_base;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* SoC implementation
|
|
||||||
*
|
|
||||||
* SoC call to summarize all Intel Reserve MMIO size and report to SA
|
|
||||||
*/
|
|
||||||
size_t soc_reserved_mmio_size(void)
|
|
||||||
{
|
|
||||||
struct ebda_config cfg;
|
|
||||||
|
|
||||||
retrieve_ebda_object(&cfg);
|
|
||||||
|
|
||||||
/* Get Intel Reserved Memory Range Size */
|
|
||||||
return cfg.reserved_mem_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fill up memory layout information */
|
/* Fill up memory layout information */
|
||||||
void fill_soc_memmap_ebda(struct ebda_config *cfg)
|
void fill_soc_memmap_ebda(struct ebda_config *cfg)
|
||||||
{
|
{
|
||||||
|
|
|
@ -106,8 +106,4 @@ void soc_add_fixed_mmio_resources(struct device *dev, int *resource_cnt);
|
||||||
/* SoC specific APIs to get UNCORE PRMRR base and mask values
|
/* SoC specific APIs to get UNCORE PRMRR base and mask values
|
||||||
* returns 0, if able to get base and mask values; otherwise returns -1 */
|
* returns 0, if able to get base and mask values; otherwise returns -1 */
|
||||||
int soc_get_uncore_prmmr_base_and_mask(uint64_t *base, uint64_t *mask);
|
int soc_get_uncore_prmmr_base_and_mask(uint64_t *base, uint64_t *mask);
|
||||||
|
|
||||||
/* SoC call to summarize all Intel Reserve MMIO size and report to SA */
|
|
||||||
size_t soc_reserved_mmio_size(void);
|
|
||||||
|
|
||||||
#endif /* SOC_INTEL_COMMON_BLOCK_SA_H */
|
#endif /* SOC_INTEL_COMMON_BLOCK_SA_H */
|
||||||
|
|
|
@ -46,11 +46,6 @@ __weak int soc_get_uncore_prmmr_base_and_mask(uint64_t *base,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__weak size_t soc_reserved_mmio_size(void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
__weak unsigned long sa_write_acpi_tables(struct device *dev,
|
__weak unsigned long sa_write_acpi_tables(struct device *dev,
|
||||||
unsigned long current,
|
unsigned long current,
|
||||||
struct acpi_rsdp *rsdp)
|
struct acpi_rsdp *rsdp)
|
||||||
|
@ -125,8 +120,7 @@ static void sa_get_mem_map(struct device *dev, uint64_t *values)
|
||||||
* These are the host memory ranges that should be added:
|
* These are the host memory ranges that should be added:
|
||||||
* - 0 -> 0xa0000: cacheable
|
* - 0 -> 0xa0000: cacheable
|
||||||
* - 0xc0000 -> top_of_ram : cacheable
|
* - 0xc0000 -> top_of_ram : cacheable
|
||||||
* - top_of_ram -> TSEG - DPR: uncacheable
|
* - top_of_ram -> BGSM: cacheable with standard MTRRs and reserved
|
||||||
* - TESG - DPR -> BGSM: cacheable with standard MTRRs and reserved
|
|
||||||
* - BGSM -> TOLUD: not cacheable with standard MTRRs and reserved
|
* - BGSM -> TOLUD: not cacheable with standard MTRRs and reserved
|
||||||
* - 4GiB -> TOUUD: cacheable
|
* - 4GiB -> TOUUD: cacheable
|
||||||
*
|
*
|
||||||
|
@ -155,18 +149,11 @@ static void sa_get_mem_map(struct device *dev, uint64_t *values)
|
||||||
static void sa_add_dram_resources(struct device *dev, int *resource_count)
|
static void sa_add_dram_resources(struct device *dev, int *resource_count)
|
||||||
{
|
{
|
||||||
uintptr_t base_k, touud_k;
|
uintptr_t base_k, touud_k;
|
||||||
size_t dpr_size = 0, size_k;
|
size_t size_k;
|
||||||
size_t reserved_mmio_size;
|
|
||||||
uint64_t sa_map_values[MAX_MAP_ENTRIES];
|
uint64_t sa_map_values[MAX_MAP_ENTRIES];
|
||||||
uintptr_t top_of_ram;
|
uintptr_t top_of_ram;
|
||||||
int index = *resource_count;
|
int index = *resource_count;
|
||||||
|
|
||||||
if (CONFIG(SA_ENABLE_DPR))
|
|
||||||
dpr_size = sa_get_dpr_size();
|
|
||||||
|
|
||||||
/* Get SoC reserve memory size as per user selection */
|
|
||||||
reserved_mmio_size = soc_reserved_mmio_size();
|
|
||||||
|
|
||||||
top_of_ram = (uintptr_t)cbmem_top();
|
top_of_ram = (uintptr_t)cbmem_top();
|
||||||
|
|
||||||
/* 0 - > 0xa0000 */
|
/* 0 - > 0xa0000 */
|
||||||
|
@ -181,14 +168,8 @@ static void sa_add_dram_resources(struct device *dev, int *resource_count)
|
||||||
|
|
||||||
sa_get_mem_map(dev, &sa_map_values[0]);
|
sa_get_mem_map(dev, &sa_map_values[0]);
|
||||||
|
|
||||||
/* top_of_ram -> TSEG - DPR - Intel Reserve Memory Size*/
|
/* top_of_ram -> BGSM */
|
||||||
base_k = top_of_ram;
|
base_k = top_of_ram;
|
||||||
size_k = sa_map_values[SA_TSEG_REG] - dpr_size - base_k
|
|
||||||
- reserved_mmio_size;
|
|
||||||
mmio_resource(dev, index++, base_k / KiB, size_k / KiB);
|
|
||||||
|
|
||||||
/* TSEG - DPR - Intel Reserve Memory Size -> BGSM */
|
|
||||||
base_k = sa_map_values[SA_TSEG_REG] - dpr_size - reserved_mmio_size;
|
|
||||||
size_k = sa_map_values[SA_BGSM_REG] - base_k;
|
size_k = sa_map_values[SA_BGSM_REG] - base_k;
|
||||||
reserved_ram_resource(dev, index++, base_k / KiB, size_k / KiB);
|
reserved_ram_resource(dev, index++, base_k / KiB, size_k / KiB);
|
||||||
|
|
||||||
|
|
|
@ -190,21 +190,6 @@ static uintptr_t calculate_dram_base(size_t *reserved_mem_size)
|
||||||
return dram_base;
|
return dram_base;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* SoC implementation
|
|
||||||
*
|
|
||||||
* SoC call to summarize all Intel Reserve MMIO size and report to SA
|
|
||||||
*/
|
|
||||||
size_t soc_reserved_mmio_size(void)
|
|
||||||
{
|
|
||||||
struct ebda_config cfg;
|
|
||||||
|
|
||||||
retrieve_ebda_object(&cfg);
|
|
||||||
|
|
||||||
/* Get Intel Reserved Memory Range Size */
|
|
||||||
return cfg.reserved_mem_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fill up memory layout information */
|
/* Fill up memory layout information */
|
||||||
void fill_soc_memmap_ebda(struct ebda_config *cfg)
|
void fill_soc_memmap_ebda(struct ebda_config *cfg)
|
||||||
{
|
{
|
||||||
|
|
|
@ -212,21 +212,6 @@ static uintptr_t calculate_dram_base(size_t *reserved_mem_size)
|
||||||
return dram_base;
|
return dram_base;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* SoC implementation
|
|
||||||
*
|
|
||||||
* SoC call to summarize all Intel Reserve MMIO size and report to SA
|
|
||||||
*/
|
|
||||||
size_t soc_reserved_mmio_size(void)
|
|
||||||
{
|
|
||||||
struct ebda_config cfg;
|
|
||||||
|
|
||||||
retrieve_ebda_object(&cfg);
|
|
||||||
|
|
||||||
/* Get Intel Reserved Memory Range Size */
|
|
||||||
return cfg.reserved_mem_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fill up memory layout information */
|
/* Fill up memory layout information */
|
||||||
void fill_soc_memmap_ebda(struct ebda_config *cfg)
|
void fill_soc_memmap_ebda(struct ebda_config *cfg)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue