nb,soc/intel: Handle upper RAM boundary
Change-Id: I2d99523647dfb43265db8f2701b525afd1870fc5 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/55929 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
parent
e0ddbbb0d2
commit
0a18d64d00
12 changed files with 25 additions and 68 deletions
|
|
@ -100,8 +100,7 @@ static void nc_read_resources(struct device *dev)
|
|||
*/
|
||||
bmbound_hi = iosf_bunit_read(BUNIT_BMBOUND_HI) & ~((1 << 24) - 1);
|
||||
bmbound_hi <<= 4;
|
||||
if (bmbound_hi > 4ull * GiB)
|
||||
ram_from_to(dev, index++, 4ull * GiB, bmbound_hi);
|
||||
upper_ram_end(dev, index++, bmbound_hi);
|
||||
|
||||
/*
|
||||
* Reserve everything between A segment and 1MB:
|
||||
|
|
|
|||
|
|
@ -116,8 +116,7 @@ static void nc_read_resources(struct device *dev)
|
|||
*/
|
||||
bmbound_hi = iosf_bunit_read(BUNIT_BMBOUND_HI) & ~((1 << 24) - 1);
|
||||
bmbound_hi <<= 4;
|
||||
if (bmbound_hi > 4ull * GiB)
|
||||
ram_from_to(dev, index++, 4ull * GiB, bmbound_hi);
|
||||
upper_ram_end(dev, index++, bmbound_hi);
|
||||
|
||||
/*
|
||||
* Reserve everything between A segment and 1MB:
|
||||
|
|
|
|||
|
|
@ -259,7 +259,6 @@ static void mc_report_map_entries(struct device *dev, uint64_t *values)
|
|||
static void mc_add_dram_resources(struct device *dev, int *resource_cnt)
|
||||
{
|
||||
unsigned long base_k, size_k;
|
||||
unsigned long touud_k;
|
||||
unsigned long index;
|
||||
struct resource *resource;
|
||||
uint64_t mc_values[NUM_MAP_ENTRIES];
|
||||
|
|
@ -342,11 +341,7 @@ static void mc_add_dram_resources(struct device *dev, int *resource_cnt)
|
|||
IORESOURCE_ASSIGNED;
|
||||
|
||||
/* 4GiB -> TOUUD */
|
||||
base_k = 4096 * 1024; /* 4GiB */
|
||||
touud_k = mc_values[TOUUD_REG] >> 10;
|
||||
size_k = touud_k - base_k;
|
||||
if (touud_k > base_k)
|
||||
ram_resource_kb(dev, index++, base_k, size_k);
|
||||
upper_ram_end(dev, index++, mc_values[TOUUD_REG]);
|
||||
|
||||
/* Reserve everything between A segment and 1MB:
|
||||
*
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ static void sa_get_mem_map(struct device *dev, uint64_t *values)
|
|||
*/
|
||||
static void sa_add_dram_resources(struct device *dev, int *resource_count)
|
||||
{
|
||||
uintptr_t base_k, touud_k;
|
||||
uintptr_t base_k;
|
||||
size_t size_k;
|
||||
uint64_t sa_map_values[MAX_MAP_ENTRIES];
|
||||
uintptr_t top_of_ram;
|
||||
|
|
@ -212,11 +212,7 @@ static void sa_add_dram_resources(struct device *dev, int *resource_count)
|
|||
mmio_resource_kb(dev, index++, base_k / KiB, size_k / KiB);
|
||||
|
||||
/* 4GiB -> TOUUD */
|
||||
base_k = 4 * (GiB / KiB); /* 4GiB */
|
||||
touud_k = sa_map_values[SA_TOUUD_REG] / KiB;
|
||||
size_k = touud_k - base_k;
|
||||
if (touud_k > base_k)
|
||||
ram_resource_kb(dev, index++, base_k, size_k);
|
||||
upper_ram_end(dev, index++, sa_map_values[SA_TOUUD_REG]);
|
||||
|
||||
/*
|
||||
* Reserve everything between A segment and 1MB:
|
||||
|
|
|
|||
|
|
@ -191,7 +191,6 @@ static void mc_report_map_entries(struct device *dev, uint64_t *values)
|
|||
static void mc_add_dram_resources(struct device *dev)
|
||||
{
|
||||
unsigned long base_k, size_k;
|
||||
unsigned long touud_k;
|
||||
unsigned long index;
|
||||
struct resource *resource;
|
||||
uint64_t mc_values[NUM_MAP_ENTRIES];
|
||||
|
|
@ -262,11 +261,7 @@ static void mc_add_dram_resources(struct device *dev)
|
|||
IORESOURCE_ASSIGNED | IORESOURCE_CACHEABLE;
|
||||
|
||||
/* 4GiB -> TOUUD */
|
||||
base_k = 4096 * 1024; /* 4GiB */
|
||||
touud_k = mc_values[TOUUD_REG] >> 10;
|
||||
size_k = touud_k - base_k;
|
||||
if (touud_k > base_k)
|
||||
ram_resource_kb(dev, index++, base_k, size_k);
|
||||
upper_ram_end(dev, index++, mc_values[TOUUD_REG]);
|
||||
|
||||
/*
|
||||
* Reserve everything between A segment and 1MB:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue