[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Different esps
> about line 329 in traps.c: > > fault_in_hypervisor: > + printk("fault_in_hypervisor 2\n"); > + printk("dom %d : esp1 %08lx, ss %08lx\n",current->domain, > current->thread.esp1, current->thread.ss1); > + > + execution_context_t ctxt; > + memcpy(&ctxt, > + get_execution_context(), > + sizeof(execution_context_t)); > + > + printk("eip %p esp %p eip %p addr %p flags %x\n", ctxt.eip, > ctxt.esp, gtb->eip, addr, ctxt.eflags); The EIP/ESP values you are printing aren't up to date. You should be printing regs->eip and regs->esp. Also something like: struct pt_regs *guest_regs = (struct pt_regs *)(current->thread.esp1-1); <print guest_regs->esp, guest_regs->eip> > 0xc3a91ff8 appears to be where ctxt.esp is pointing if you push some > values. The dual 0 eips worry me as well, I have not registered any > event-callbacks for the domain, perhaps that is the reason? But should I > not be allowed to run without registering for interrupts in a brand-new > domain? To me this looks like an interrupt-delivery gone bad. Maybe an exception of some kind? Did you fill in the trap_table (virtual IDT) in full_execution_context? -- Keir
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |