[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] hvm_emulate_one() usage
Hi, At 16:34 +0200 on 28 Dec (1356712445), Razvan Cojocaru wrote: > Hello, > > I have a dom0 userspace application that receives mem_events. Mem_events > are being received if a page fault occurs, and until I clear the page > access rights I keep receiving the event in a loop. If I do clear the > page access rights, I will no longer receive mem_events for said page. > > What I thought I'd do was to add a new flag to the mem_event response > (MEM_EVENT_FLAG_EMULATE_WRITE), and have this code execute in > p2m_mem_access_resume() in xen/arch/x86/mm/p2m.c: > > mem_event_get_response(d, &rsp); > > if ( rsp.flags & MEM_EVENT_FLAG_EMULATE_WRITE ) > { > struct hvm_emulate_ctxt ctx[1] = {}; > struct vcpu *current_vcpu = current; > > set_current(d->vcpu[rsp.vcpu_id]); This won't work -- as Andrew pointed out, set_current() can only happen safely as part of a proper context switch. If you want to cause the vcpu to single-step, I think it's better to follow the existing debugger code, which marks the vcpu for single-stepping and the schedules it as usual. How about (from your user-space tool): - use XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_ON to enable single-stepping. - respond to the mem_event that you're handling, causing the vcpu to be unpaused. Then when the vcpu is scheduled, it will single-step in its own context, and you'll get another mem_event (assuming you've set HVM_PARAM_MEMORY_EVENT_SINGLE_STEP). Once that happens: - use XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_OFF to disable single-stepping. - respond to that event to unpause the vcpu. I guess if you're tyring to have some special case in the single-step handler that allows it to write to a page that it normally coudn't you might need to add an interface for controlling that. Cheers, Tim. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |