|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V10 PATCH 11/23] PVH xen: support invalid op emulation for PVH
On Thu, 8 Aug 2013 09:55:26 +0100
George Dunlap <george.dunlap@xxxxxxxxxxxxx> wrote:
> On 08/08/13 02:49, Mukesh Rathor wrote:
> > On Wed, 7 Aug 2013 12:29:13 +0100
> > George Dunlap <George.Dunlap@xxxxxxxxxxxxx> wrote:
> >
> >> On Wed, Jul 24, 2013 at 2:59 AM, Mukesh Rathor
.........
> >>> + if ( (rc = raw_copy_from_guest(sig, (char *)eip,
> >>> sizeof(sig))) != 0 ) {
> >>> propagate_page_fault(eip + sizeof(sig) - rc, 0);
> >>> return EXCRET_fault_fixed;
> >>> @@ -931,7 +936,7 @@ static int emulate_forced_invalid_op(struct
> >>> cpu_user_regs *regs) eip += sizeof(sig);
> >>>
> >>> /* We only emulate CPUID. */
> >>> - if ( ( rc = copy_from_user(instr, (char *)eip,
> >>> sizeof(instr))) != 0 )
> >>> + if ( ( rc = raw_copy_from_guest(instr, (char *)eip,
> >>> sizeof(instr))) != 0 ) {
> >>> propagate_page_fault(eip + sizeof(instr) - rc, 0);
> >>> return EXCRET_fault_fixed;
> >>> @@ -1076,6 +1081,12 @@ void propagate_page_fault(unsigned long
> >>> addr, u16 error_code) struct vcpu *v = current;
> >>> struct trap_bounce *tb = &v->arch.pv_vcpu.trap_bounce;
> >>>
> >>> + if ( is_pvh_vcpu(v) )
> >>> + {
> >>> + hvm_inject_page_fault(error_code, addr);
> >>> + return;
> >>> + }
> >> Would it make more sense to rename this function
> >> "pv_inject_page_fault", and then make a macro to switch between the
> >> two?
> > I don't think so, propagate_page_fault seems generic enough.
>
> What I meant was something similar to what I suggested for patch 10
> -- make propagate_page_fault() truly generic, by making it check what
> mode is running and calling either pv_inject_page_fault() or
> hvm_inject_page_fault() as appropriate.
I guess, what you mean:
propagate_page_fault():
{
if (pvh)
hvm_inject_pf
else if pv
pv_inject_pf
}
where pv_inject_pf() is all the code after my "if pvh" in the current
patch. Small enough change I can accomodate in the next patch.
Mukesh
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |