x86: entry_64.S - trivial: space, comments fixup
Impact: cleanup Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Родитель
5ae3a139cf
Коммит
9f1e87ea3e
|
@ -1231,22 +1231,24 @@ END(call_softirq)
|
||||||
zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
|
zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
|
||||||
|
|
||||||
/*
|
/*
|
||||||
# A note on the "critical region" in our callback handler.
|
* A note on the "critical region" in our callback handler.
|
||||||
# We want to avoid stacking callback handlers due to events occurring
|
* We want to avoid stacking callback handlers due to events occurring
|
||||||
# during handling of the last event. To do this, we keep events disabled
|
* during handling of the last event. To do this, we keep events disabled
|
||||||
# until we've done all processing. HOWEVER, we must enable events before
|
* until we've done all processing. HOWEVER, we must enable events before
|
||||||
# popping the stack frame (can't be done atomically) and so it would still
|
* popping the stack frame (can't be done atomically) and so it would still
|
||||||
# be possible to get enough handler activations to overflow the stack.
|
* be possible to get enough handler activations to overflow the stack.
|
||||||
# Although unlikely, bugs of that kind are hard to track down, so we'd
|
* Although unlikely, bugs of that kind are hard to track down, so we'd
|
||||||
# like to avoid the possibility.
|
* like to avoid the possibility.
|
||||||
# So, on entry to the handler we detect whether we interrupted an
|
* So, on entry to the handler we detect whether we interrupted an
|
||||||
# existing activation in its critical region -- if so, we pop the current
|
* existing activation in its critical region -- if so, we pop the current
|
||||||
# activation and restart the handler using the previous one.
|
* activation and restart the handler using the previous one.
|
||||||
*/
|
*/
|
||||||
ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs)
|
ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
/* Since we don't modify %rdi, evtchn_do_upall(struct *pt_regs) will
|
/*
|
||||||
see the correct pointer to the pt_regs */
|
* Since we don't modify %rdi, evtchn_do_upall(struct *pt_regs) will
|
||||||
|
* see the correct pointer to the pt_regs
|
||||||
|
*/
|
||||||
movq %rdi, %rsp # we don't return, adjust the stack frame
|
movq %rdi, %rsp # we don't return, adjust the stack frame
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
DEFAULT_FRAME
|
DEFAULT_FRAME
|
||||||
|
@ -1264,17 +1266,17 @@ ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs)
|
||||||
END(do_hypervisor_callback)
|
END(do_hypervisor_callback)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
# Hypervisor uses this for application faults while it executes.
|
* Hypervisor uses this for application faults while it executes.
|
||||||
# We get here for two reasons:
|
* We get here for two reasons:
|
||||||
# 1. Fault while reloading DS, ES, FS or GS
|
* 1. Fault while reloading DS, ES, FS or GS
|
||||||
# 2. Fault while executing IRET
|
* 2. Fault while executing IRET
|
||||||
# Category 1 we do not need to fix up as Xen has already reloaded all segment
|
* Category 1 we do not need to fix up as Xen has already reloaded all segment
|
||||||
# registers that could be reloaded and zeroed the others.
|
* registers that could be reloaded and zeroed the others.
|
||||||
# Category 2 we fix up by killing the current process. We cannot use the
|
* Category 2 we fix up by killing the current process. We cannot use the
|
||||||
# normal Linux return path in this case because if we use the IRET hypercall
|
* normal Linux return path in this case because if we use the IRET hypercall
|
||||||
# to pop the stack frame we end up in an infinite loop of failsafe callbacks.
|
* to pop the stack frame we end up in an infinite loop of failsafe callbacks.
|
||||||
# We distinguish between categories by comparing each saved segment register
|
* We distinguish between categories by comparing each saved segment register
|
||||||
# with its current contents: any discrepancy means we in category 1.
|
* with its current contents: any discrepancy means we in category 1.
|
||||||
*/
|
*/
|
||||||
ENTRY(xen_failsafe_callback)
|
ENTRY(xen_failsafe_callback)
|
||||||
INTR_FRAME 1 (6*8)
|
INTR_FRAME 1 (6*8)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче