Zhichao Huang <zhichao.huang@xxxxxxxxxx> writes: > On Tue, Mar 31, 2015 at 04:08:04PM +0100, Alex Bennée wrote: >> This adds support for SW breakpoints inserted by userspace. >> >> We do this by trapping all BKPT exceptions in the >> hypervisor (MDCR_EL2_TDE). > > why should we trap all debug exceptions? > > The trap for cp14 register r/w seems enough to record relevant > informations to context switch the dbg register while neccessary. Lets think about this case when the SW breakpoint exception occurs: If KVM doesn't trap it and pass it back to userspace to handle it would have to deliver it to the guest. The guest not having inserted the breakpoint in the first place would get very confused. So what we actually do is re-route the exception to the hypervisor and stop the VM and return to userspace with the debug information. Once in QEMU we check to see if the SW breakpoint was one of the ones we inserted at which point control is passed back to the host GDB (attached via the GDB stub in QEMU). If it is not a breakpoint which was set-up by the host then it must be one for the guest at which point we need to ensure the exception is delivered to the guest for it to process. -- Alex Bennée -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html