diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2007-07-26 13:41:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-26 14:35:17 -0400 |
commit | f56a384e98aa81065038c4e16f39ed989ccae687 (patch) | |
tree | 923bcaabd76a88351fe5e61370143350747a90c4 /drivers/lguest/lguest_asm.S | |
parent | f8f0fdcd40449d318f8dc30c1b361b0b7f54134a (diff) |
lguest: documentation VII: FIXMEs
Documentation: The FIXMEs
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/lguest/lguest_asm.S')
-rw-r--r-- | drivers/lguest/lguest_asm.S | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/lguest/lguest_asm.S b/drivers/lguest/lguest_asm.S index 3126ae923cc0..f182c6a36209 100644 --- a/drivers/lguest/lguest_asm.S +++ b/drivers/lguest/lguest_asm.S | |||
@@ -39,6 +39,20 @@ LGUEST_PATCH(pushf, movl lguest_data+LGUEST_DATA_irq_enabled, %eax) | |||
39 | .global lguest_noirq_start | 39 | .global lguest_noirq_start |
40 | .global lguest_noirq_end | 40 | .global lguest_noirq_end |
41 | 41 | ||
42 | /*M:004 When the Host reflects a trap or injects an interrupt into the Guest, | ||
43 | * it sets the eflags interrupt bit on the stack based on | ||
44 | * lguest_data.irq_enabled, so the Guest iret logic does the right thing when | ||
45 | * restoring it. However, when the Host sets the Guest up for direct traps, | ||
46 | * such as system calls, the processor is the one to push eflags onto the | ||
47 | * stack, and the interrupt bit will be 1 (in reality, interrupts are always | ||
48 | * enabled in the Guest). | ||
49 | * | ||
50 | * This turns out to be harmless: the only trap which should happen under Linux | ||
51 | * with interrupts disabled is Page Fault (due to our lazy mapping of vmalloc | ||
52 | * regions), which has to be reflected through the Host anyway. If another | ||
53 | * trap *does* go off when interrupts are disabled, the Guest will panic, and | ||
54 | * we'll never get to this iret! :*/ | ||
55 | |||
42 | /*G:045 There is one final paravirt_op that the Guest implements, and glancing | 56 | /*G:045 There is one final paravirt_op that the Guest implements, and glancing |
43 | * at it you can see why I left it to last. It's *cool*! It's in *assembler*! | 57 | * at it you can see why I left it to last. It's *cool*! It's in *assembler*! |
44 | * | 58 | * |