hv: fix host call stack dump issue

As scheduler uses its own stack for now,
there is no need to check stack validity,
so wipe it out.

Tracked-On: #2455
Signed-off-by: Tw <wei.tan@intel.com>
Reviewed-by: Jason Chen CJ <jason.cj.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Tw 2019-01-29 21:30:15 +08:00 committed by wenlingz
parent 5214a60bbf
commit efc64d778f
2 changed files with 7 additions and 15 deletions

View File

@ -13,7 +13,7 @@
{ \
asm volatile ("movq %0, %%rsp\n" \
"pushq %1\n" \
"call *%2\n" \
"jmpq *%2\n" \
: \
: "r"(rsp), "rm"(SP_BOTTOM_MAGIC), "a"(to)); \
}

View File

@ -186,7 +186,7 @@ static void dump_guest_context(uint16_t pcpu_id)
static void show_host_call_trace(uint64_t rsp, uint64_t rbp_arg, uint16_t pcpu_id)
{
uint64_t rbp = rbp_arg;
uint64_t rbp = rbp_arg, return_address;
uint32_t i = 0U;
uint32_t cb_hierarchy = 0U;
uint64_t *sp = (uint64_t *)rsp;
@ -201,11 +201,6 @@ static void show_host_call_trace(uint64_t rsp, uint64_t rbp_arg, uint16_t pcpu_i
printf("\r\n");
printf("Host Call Trace:\r\n");
if ((rsp >
(uint64_t)&per_cpu(stack, pcpu_id)[CONFIG_STACK_SIZE - 1])
|| (rsp < (uint64_t)&per_cpu(stack, pcpu_id)[0])) {
return;
}
/* if enable compiler option(no-omit-frame-pointer) the stack layout
* should be like this when call a function for x86_64
@ -220,16 +215,13 @@ static void show_host_call_trace(uint64_t rsp, uint64_t rbp_arg, uint16_t pcpu_i
*
* if the address is invalid, it will cause hv page fault
* then halt system */
while ((rbp <=
(uint64_t)&per_cpu(stack, pcpu_id)[CONFIG_STACK_SIZE - 1])
&& (rbp >= (uint64_t)&per_cpu(stack, pcpu_id)[0])
&& (cb_hierarchy < CALL_TRACE_HIERARCHY_MAX)) {
printf("----> 0x%016llx\r\n",
*(uint64_t *)(rbp + sizeof(uint64_t)));
if (*(uint64_t *)(rbp + (2U*sizeof(uint64_t)))
== SP_BOTTOM_MAGIC) {
while (cb_hierarchy < CALL_TRACE_HIERARCHY_MAX) {
return_address = *(uint64_t *)(rbp + sizeof(uint64_t));
if (return_address == SP_BOTTOM_MAGIC) {
break;
}
printf("----> 0x%016llx\r\n",
*(uint64_t *)(rbp + sizeof(uint64_t)));
rbp = *(uint64_t *)rbp;
cb_hierarchy++;
}