baytrail broadwell: Use timestamps internal stash
No reason to carry timestamps on CAR stack, as implementation of timestamps internally stashes on CAR_GLOBAL table and migrates those to CBMEM. Change-Id: I5b3307df728b18cd7ebf3352f7f7e270ed1e9002 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/8022 Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
5780d6f387
commit
41759274fe
|
@ -28,14 +28,7 @@
|
||||||
#include <arch/cpu.h>
|
#include <arch/cpu.h>
|
||||||
#include <baytrail/mrc_wrapper.h>
|
#include <baytrail/mrc_wrapper.h>
|
||||||
|
|
||||||
#define NUM_ROMSTAGE_TS 4
|
|
||||||
struct romstage_timestamps {
|
|
||||||
uint64_t times[NUM_ROMSTAGE_TS];
|
|
||||||
int count;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct romstage_params {
|
struct romstage_params {
|
||||||
struct romstage_timestamps ts;
|
|
||||||
unsigned long bist;
|
unsigned long bist;
|
||||||
struct mrc_params *mrc_params;
|
struct mrc_params *mrc_params;
|
||||||
};
|
};
|
||||||
|
|
|
@ -99,14 +99,6 @@ static void spi_init(void)
|
||||||
write32(bcr, reg);
|
write32(bcr, reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void mark_ts(struct romstage_params *rp, uint64_t ts)
|
|
||||||
{
|
|
||||||
struct romstage_timestamps *rt = &rp->ts;
|
|
||||||
|
|
||||||
rt->times[rt->count] = ts;
|
|
||||||
rt->count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Entry from cache-as-ram.inc. */
|
/* Entry from cache-as-ram.inc. */
|
||||||
void * asmlinkage romstage_main(unsigned long bist,
|
void * asmlinkage romstage_main(unsigned long bist,
|
||||||
uint32_t tsc_low, uint32_t tsc_hi)
|
uint32_t tsc_low, uint32_t tsc_hi)
|
||||||
|
@ -117,9 +109,10 @@ void * asmlinkage romstage_main(unsigned long bist,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Save initial timestamp from bootblock. */
|
/* Save initial timestamp from bootblock. */
|
||||||
mark_ts(&rp, (((uint64_t)tsc_hi) << 32) | (uint64_t)tsc_low);
|
timestamp_init((((uint64_t)tsc_hi) << 32) | (uint64_t)tsc_low);
|
||||||
|
|
||||||
/* Save romstage begin */
|
/* Save romstage begin */
|
||||||
mark_ts(&rp, timestamp_get());
|
timestamp_add_now(TS_START_ROMSTAGE);
|
||||||
|
|
||||||
program_base_addresses();
|
program_base_addresses();
|
||||||
|
|
||||||
|
@ -233,7 +226,7 @@ void romstage_common(struct romstage_params *params)
|
||||||
struct chipset_power_state *ps;
|
struct chipset_power_state *ps;
|
||||||
int prev_sleep_state;
|
int prev_sleep_state;
|
||||||
|
|
||||||
mark_ts(params, timestamp_get());
|
timestamp_add_now(TS_BEFORE_INITRAM);
|
||||||
|
|
||||||
ps = fill_power_state();
|
ps = fill_power_state();
|
||||||
prev_sleep_state = chipset_prev_sleep_state(ps);
|
prev_sleep_state = chipset_prev_sleep_state(ps);
|
||||||
|
@ -249,7 +242,7 @@ void romstage_common(struct romstage_params *params)
|
||||||
/* Initialize RAM */
|
/* Initialize RAM */
|
||||||
raminit(params->mrc_params, prev_sleep_state);
|
raminit(params->mrc_params, prev_sleep_state);
|
||||||
|
|
||||||
mark_ts(params, timestamp_get());
|
timestamp_add_now(TS_AFTER_INITRAM);
|
||||||
|
|
||||||
handoff = romstage_handoff_find_or_add();
|
handoff = romstage_handoff_find_or_add();
|
||||||
if (handoff != NULL)
|
if (handoff != NULL)
|
||||||
|
@ -258,12 +251,6 @@ void romstage_common(struct romstage_params *params)
|
||||||
printk(BIOS_DEBUG, "Romstage handoff structure not added!\n");
|
printk(BIOS_DEBUG, "Romstage handoff structure not added!\n");
|
||||||
|
|
||||||
chromeos_init(prev_sleep_state);
|
chromeos_init(prev_sleep_state);
|
||||||
|
|
||||||
/* Save timestamp information. */
|
|
||||||
timestamp_init(params->ts.times[0]);
|
|
||||||
timestamp_add(TS_START_ROMSTAGE, params->ts.times[1]);
|
|
||||||
timestamp_add(TS_BEFORE_INITRAM, params->ts.times[2]);
|
|
||||||
timestamp_add(TS_AFTER_INITRAM, params->ts.times[3]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void asmlinkage romstage_after_car(void)
|
void asmlinkage romstage_after_car(void)
|
||||||
|
|
|
@ -23,16 +23,9 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <arch/cpu.h>
|
#include <arch/cpu.h>
|
||||||
|
|
||||||
#define NUM_ROMSTAGE_TS 4
|
|
||||||
struct romstage_timestamps {
|
|
||||||
uint64_t times[NUM_ROMSTAGE_TS];
|
|
||||||
int count;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct chipset_power_state;
|
struct chipset_power_state;
|
||||||
struct pei_data;
|
struct pei_data;
|
||||||
struct romstage_params {
|
struct romstage_params {
|
||||||
struct romstage_timestamps ts;
|
|
||||||
unsigned long bist;
|
unsigned long bist;
|
||||||
struct chipset_power_state *power_state;
|
struct chipset_power_state *power_state;
|
||||||
struct pei_data *pei_data;
|
struct pei_data *pei_data;
|
||||||
|
|
|
@ -38,14 +38,6 @@
|
||||||
#include <broadwell/romstage.h>
|
#include <broadwell/romstage.h>
|
||||||
#include <broadwell/spi.h>
|
#include <broadwell/spi.h>
|
||||||
|
|
||||||
static inline void mark_ts(struct romstage_params *rp, uint64_t ts)
|
|
||||||
{
|
|
||||||
struct romstage_timestamps *rt = &rp->ts;
|
|
||||||
|
|
||||||
rt->times[rt->count] = ts;
|
|
||||||
rt->count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Entry from cache-as-ram.inc. */
|
/* Entry from cache-as-ram.inc. */
|
||||||
void * asmlinkage romstage_main(unsigned long bist,
|
void * asmlinkage romstage_main(unsigned long bist,
|
||||||
uint32_t tsc_low, uint32_t tsc_hi)
|
uint32_t tsc_low, uint32_t tsc_hi)
|
||||||
|
@ -58,10 +50,10 @@ void * asmlinkage romstage_main(unsigned long bist,
|
||||||
post_code(0x30);
|
post_code(0x30);
|
||||||
|
|
||||||
/* Save initial timestamp from bootblock. */
|
/* Save initial timestamp from bootblock. */
|
||||||
mark_ts(&rp, (((uint64_t)tsc_hi) << 32) | (uint64_t)tsc_low);
|
timestamp_init((((uint64_t)tsc_hi) << 32) | (uint64_t)tsc_low);
|
||||||
|
|
||||||
/* Save romstage begin */
|
/* Save romstage begin */
|
||||||
mark_ts(&rp, timestamp_get());
|
timestamp_add_now(TS_START_ROMSTAGE);
|
||||||
|
|
||||||
/* System Agent Early Initialization */
|
/* System Agent Early Initialization */
|
||||||
systemagent_early_init();
|
systemagent_early_init();
|
||||||
|
@ -102,7 +94,7 @@ void romstage_common(struct romstage_params *params)
|
||||||
|
|
||||||
post_code(0x32);
|
post_code(0x32);
|
||||||
|
|
||||||
mark_ts(params, timestamp_get());
|
timestamp_add_now(TS_BEFORE_INITRAM);
|
||||||
|
|
||||||
params->pei_data->boot_mode = params->power_state->prev_sleep_state;
|
params->pei_data->boot_mode = params->power_state->prev_sleep_state;
|
||||||
|
|
||||||
|
@ -116,7 +108,8 @@ void romstage_common(struct romstage_params *params)
|
||||||
|
|
||||||
/* Initialize RAM */
|
/* Initialize RAM */
|
||||||
raminit(params->pei_data);
|
raminit(params->pei_data);
|
||||||
mark_ts(params, timestamp_get());
|
|
||||||
|
timestamp_add_now(TS_AFTER_INITRAM);
|
||||||
|
|
||||||
handoff = romstage_handoff_find_or_add();
|
handoff = romstage_handoff_find_or_add();
|
||||||
if (handoff != NULL)
|
if (handoff != NULL)
|
||||||
|
@ -126,12 +119,6 @@ void romstage_common(struct romstage_params *params)
|
||||||
printk(BIOS_DEBUG, "Romstage handoff structure not added!\n");
|
printk(BIOS_DEBUG, "Romstage handoff structure not added!\n");
|
||||||
|
|
||||||
chromeos_init(params->power_state->prev_sleep_state);
|
chromeos_init(params->power_state->prev_sleep_state);
|
||||||
|
|
||||||
/* Save timestamp information. */
|
|
||||||
timestamp_init(params->ts.times[0]);
|
|
||||||
timestamp_add(TS_START_ROMSTAGE, params->ts.times[1]);
|
|
||||||
timestamp_add(TS_BEFORE_INITRAM, params->ts.times[2]);
|
|
||||||
timestamp_add(TS_AFTER_INITRAM, params->ts.times[3]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void asmlinkage romstage_after_car(void)
|
void asmlinkage romstage_after_car(void)
|
||||||
|
|
Loading…
Reference in New Issue