|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 12/18 V2]:PVH xen: support invalid op, return PVH features etc...
>>> On 16.03.13 at 01:48, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/traps.c
> +++ b/xen/arch/x86/traps.c
> @@ -459,6 +459,10 @@ static void instruction_done(
> struct cpu_user_regs *regs, unsigned long eip, unsigned int bpmatch)
> {
> regs->eip = eip;
> +
> + if ( is_pvh_vcpu(current) )
> + return;
So how would breakpoint matching on emulated instructions work?
> +
> regs->eflags &= ~X86_EFLAGS_RF;
> if ( bpmatch || (regs->eflags & X86_EFLAGS_TF) )
> {
> @@ -475,6 +479,10 @@ static unsigned int check_guest_io_breakpoint(struct
> vcpu *v,
> unsigned int width, i, match = 0;
> unsigned long start;
>
> + if ( is_pvh_vcpu(v) ) {
> + /* for pvh, ctrlreg field is not implemented/used unless we need to
> */
???
> + return 0;
> + }
> if ( !(v->arch.debugreg[5]) ||
> !(v->arch.pv_vcpu.ctrlreg[4] & X86_CR4_DE) )
> return 0;
> @@ -908,14 +916,18 @@ static int emulate_invalid_rdtscp(struct cpu_user_regs
> *regs)
> unsigned long emulate_forced_invalid_op(struct cpu_user_regs *regs)
> {
> char sig[5], instr[2];
> - unsigned long eip, rc;
> + unsigned long eip, rc, addr;
>
> eip = regs->eip;
>
> /* Check for forced emulation signature: ud2 ; .ascii "xen". */
> - if ( (rc = copy_from_user(sig, (char *)eip, sizeof(sig))) != 0 )
> + if ( (rc = raw_copy_from_guest(sig, (char *)eip, sizeof(sig))) != 0 )
> {
> - propagate_page_fault(eip + sizeof(sig) - rc, 0);
> + addr = eip + sizeof(sig) - rc;
> + if ( is_pvh_vcpu(current) )
> + return addr;
> +
> + propagate_page_fault(addr, 0);
> return EXCRET_fault_fixed;
Returning "addr" here as well as EXCRET_* values, even if you got
this properly separated right now, looks like setting us up for
future problems.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |