On 07/04/16 04:49, Konrad Rzeszutek Wilk wrote:
> From: Ross Lagerwall <ross.lagerw...@citrix.com>
>
> Naturally the backtrace is presented when an instruction
> hits an bug_frame or %p is used.
>
> The payloads do not support bug_frames yet - however the functions
> the payloads call could hit an BUG() or WARN().
>
> The traps.c has logic to scan for it this - and eventually it will
> find the correct bug_frame and the walk the stack using %p to print
> the backtrace. For %p and symbols to print a string -  the
> 'is_active_kernel_text' is consulted which uses an 'struct virtual_region'.
>
> Therefore we register our start->end addresses so that
> 'is_active_kernel_text' will include our payload address.
>
> We also register our symbol lookup table function so that it can
> scan the list of payloads and retrieve the correct name.
>
> Lastly we change vsprintf to take into account s and namebuf.
> For core code they are the same, but for payloads they are different.
> This gets us:
>
> Xen call trace:
>    [<ffff82d080a00041>] revert_hook+0x31/0x35 [xen_hello_world]
>    [<ffff82d0801431bd>] xsplice.c#revert_payload+0x86/0xc6
>    [<ffff82d080143502>] check_for_xsplice_work+0x233/0x3cd
>    [<ffff82d08017a0b2>] domain.c#continue_idle_domain+0x9/0x1f
>
> Which is great if payloads have similar or same symbol names.
>
> Signed-off-by: Ross Lagerwall <ross.lagerw...@citrix.com>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.w...@oracle.com>

Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to