[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Single step in HVM domU on Intel machine may see wrong DB6
On 05.03.2014 03:22, Zhang, Yang Z wrote: Jan Beulich wrote on 2014-02-27:On 27.02.14 at 02:31, "Zhang, Yang Z" <yang.z.zhang@xxxxxxxxx> wrote:Jan Beulich wrote on 2014-02-27:On 26.02.14 at 06:15, "Zhang, Yang Z" <yang.z.zhang@xxxxxxxxx>wrote:@@ -2690,9 +2688,13 @@ void vmx_vmexit_handler(structcpu_user_regs*regs)__vmread(EXIT_QUALIFICATION, &exit_qualification); HVMTRACE_1D(TRAP_DEBUG, exit_qualification); write_debugreg(6, exit_qualification | 0xffff0ff0); - if ( !v->domain->debugger_attached || cpu_has_monitor_trap_flag ) - goto exit_and_crash; - domain_pause_for_debugger(); + if ( v->domain->debugger_attached ) + domain_pause_for_debugger(); + else + { + __restore_debug_registers(v); + hvm_inject_hw_exception(TRAP_debug,HVM_DELIVER_NO_ERROR_CODE); +}I suppose you need to set DR6.BS after restoring the reigsters?Right but is not enough. If flag_dr_dirty is set, we need to restore register from hardware. Conversely, restore is from debugreg and set DR6 to exit_qualification.After some more thought, I in fact doubt that restoring the debug registers is in line with the current model: We should simply set DR6.BS in the in-memory copy when the debug registers aren't live yet (and it doesn't hurt to always do that). And since DR6 bits generally are sticky, I think exit_qualification actually needs to be or-ed into the in-memory copy.Will guest be confused to see the DR6.BS always set? You can't set DR6.BS unconditionally! This bit should be set only in case of a debug trap caused by single stepping, of course! At least our BS2000 domU will crash in case of an unmotivated DR6.BS in debug trap handling. Juergen -- Juergen Gross Principal Developer Operating Systems PBG PDG ES&S SWE OS6 Telephone: +49 (0) 89 62060 2932 Fujitsu e-mail: juergen.gross@xxxxxxxxxxxxxx Mies-van-der-Rohe-Str. 8 Internet: ts.fujitsu.com D-80807 Muenchen Company details: ts.fujitsu.com/imprint.html _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |