initcall: Correct use of relocation offset
The relocation offset can change in some initcall sequences. Handle this and make sure it is used for all debugging statements in init_run_list() Update the trace test to match. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
This commit is contained in:
@@ -49,13 +49,14 @@ static int initcall_is_event(init_fnc_t func)
|
|||||||
*/
|
*/
|
||||||
int initcall_run_list(const init_fnc_t init_sequence[])
|
int initcall_run_list(const init_fnc_t init_sequence[])
|
||||||
{
|
{
|
||||||
ulong reloc_ofs = calc_reloc_ofs();
|
ulong reloc_ofs;
|
||||||
const init_fnc_t *ptr;
|
const init_fnc_t *ptr;
|
||||||
enum event_t type;
|
enum event_t type;
|
||||||
init_fnc_t func;
|
init_fnc_t func;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
for (ptr = init_sequence; func = *ptr, func; ptr++) {
|
for (ptr = init_sequence; func = *ptr, func; ptr++) {
|
||||||
|
reloc_ofs = calc_reloc_ofs();
|
||||||
type = initcall_is_event(func);
|
type = initcall_is_event(func);
|
||||||
|
|
||||||
if (type) {
|
if (type) {
|
||||||
@@ -84,7 +85,8 @@ int initcall_run_list(const init_fnc_t init_sequence[])
|
|||||||
sprintf(buf, "event %d/%s", type,
|
sprintf(buf, "event %d/%s", type,
|
||||||
event_type_name(type));
|
event_type_name(type));
|
||||||
} else {
|
} else {
|
||||||
sprintf(buf, "call %p", func);
|
sprintf(buf, "call %p",
|
||||||
|
(char *)func - reloc_ofs);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("initcall failed at %s (err=%dE)\n", buf, ret);
|
printf("initcall failed at %s (err=%dE)\n", buf, ret);
|
||||||
|
@@ -175,7 +175,7 @@ def check_funcgraph(cons, fname, proftool, map_fname, trace_dat):
|
|||||||
# Then look for this:
|
# Then look for this:
|
||||||
# u-boot-1 0..... 282.101375: funcgraph_exit: 0.006 us | }
|
# u-boot-1 0..... 282.101375: funcgraph_exit: 0.006 us | }
|
||||||
# Then check for this:
|
# Then check for this:
|
||||||
# u-boot-1 0..... 282.101375: funcgraph_entry: 0.000 us | initcall_is_event();
|
# u-boot-1 0..... 282.101375: funcgraph_entry: 0.000 us | calc_reloc_ofs();
|
||||||
|
|
||||||
expected_indent = None
|
expected_indent = None
|
||||||
found_start = False
|
found_start = False
|
||||||
@@ -199,7 +199,7 @@ def check_funcgraph(cons, fname, proftool, map_fname, trace_dat):
|
|||||||
|
|
||||||
# The next function after initf_bootstage() exits should be
|
# The next function after initf_bootstage() exits should be
|
||||||
# initcall_is_event()
|
# initcall_is_event()
|
||||||
assert upto == 'initcall_is_event()'
|
assert upto == 'calc_reloc_ofs()'
|
||||||
|
|
||||||
# Now look for initf_dm() and dm_timer_init() so we can check the bootstage
|
# Now look for initf_dm() and dm_timer_init() so we can check the bootstage
|
||||||
# time
|
# time
|
||||||
|
Reference in New Issue
Block a user