Skip to content

Commit 4bd9d34

Browse files
stsquadbonzini
authored andcommitted
KVM: document KVM_SET_GUEST_DEBUG api
In preparation for working on the ARM implementation I noticed the debug interface was missing from the API document. I've pieced together the expected behaviour from the code and commit messages written it up as best I can. Signed-off-by: Alex Bennée <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent f2a2516 commit 4bd9d34

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

Documentation/virtual/kvm/api.txt

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2565,6 +2565,50 @@ associated with the service will be forgotten, and subsequent RTAS
25652565
calls by the guest for that service will be passed to userspace to be
25662566
handled.
25672567

2568+
4.87 KVM_SET_GUEST_DEBUG
2569+
2570+
Capability: KVM_CAP_SET_GUEST_DEBUG
2571+
Architectures: x86, s390, ppc
2572+
Type: vcpu ioctl
2573+
Parameters: struct kvm_guest_debug (in)
2574+
Returns: 0 on success; -1 on error
2575+
2576+
struct kvm_guest_debug {
2577+
__u32 control;
2578+
__u32 pad;
2579+
struct kvm_guest_debug_arch arch;
2580+
};
2581+
2582+
Set up the processor specific debug registers and configure vcpu for
2583+
handling guest debug events. There are two parts to the structure, the
2584+
first a control bitfield indicates the type of debug events to handle
2585+
when running. Common control bits are:
2586+
2587+
- KVM_GUESTDBG_ENABLE: guest debugging is enabled
2588+
- KVM_GUESTDBG_SINGLESTEP: the next run should single-step
2589+
2590+
The top 16 bits of the control field are architecture specific control
2591+
flags which can include the following:
2592+
2593+
- KVM_GUESTDBG_USE_SW_BP: using software breakpoints [x86]
2594+
- KVM_GUESTDBG_USE_HW_BP: using hardware breakpoints [x86, s390]
2595+
- KVM_GUESTDBG_INJECT_DB: inject DB type exception [x86]
2596+
- KVM_GUESTDBG_INJECT_BP: inject BP type exception [x86]
2597+
- KVM_GUESTDBG_EXIT_PENDING: trigger an immediate guest exit [s390]
2598+
2599+
For example KVM_GUESTDBG_USE_SW_BP indicates that software breakpoints
2600+
are enabled in memory so we need to ensure breakpoint exceptions are
2601+
correctly trapped and the KVM run loop exits at the breakpoint and not
2602+
running off into the normal guest vector. For KVM_GUESTDBG_USE_HW_BP
2603+
we need to ensure the guest vCPUs architecture specific registers are
2604+
updated to the correct (supplied) values.
2605+
2606+
The second part of the structure is architecture specific and
2607+
typically contains a set of debug registers.
2608+
2609+
When debug events exit the main run loop with the reason
2610+
KVM_EXIT_DEBUG with the kvm_debug_exit_arch part of the kvm_run
2611+
structure containing architecture specific debug information.
25682612

25692613
5. The kvm_run structure
25702614
------------------------

0 commit comments

Comments
 (0)