Frederic Weisbecker wrote: > On Tue, Nov 03, 2009 at 09:22:04PM +0100, Jan Kiszka wrote: >>> Thinking about it, this check should cover every cases: >>> >>> if (vcpu->arch.switch_db_regs || __get_cpu_var(dr7) & DR_GLOBAL_ENABLE_MASK) >>> >>> If we have __get_cpu_var(dr7) & DR_GLOBAL_ENABLE_MASK, it means there is an >>> active breakpoint and then we should restore the current state. >>> >> And what about (__get_cpu_var(dr7) & DR_GLOBAL_ENABLE_MASK) only? Would >> you be able to live with unsync'ed hardware and software states? >> >> Jan >> > > > But if the guest has breakpoints activated, the host will inherit > them, which is really not something we want, assuming vcpu->arch.switch_db_regs > already protects us about that. > Nope, vmx&svm will clear dr7 on vmexit for us. Really, switch_db_regs should not be needed if we can leave the debug registers clobbered but disabled behind. Jan