@ -39,6 +39,20 @@ LGUEST_PATCH(pushf, movl lguest_data+LGUEST_DATA_irq_enabled, %eax)
.global lguest_noirq_start
.global lguest_noirq_end
/ * M : 0 0 4 When t h e H o s t r e f l e c t s a t r a p o r i n j e c t s a n i n t e r r u p t i n t o t h e G u e s t ,
* it s e t s t h e e f l a g s i n t e r r u p t b i t o n t h e s t a c k b a s e d o n
* lguest_ d a t a . i r q _ e n a b l e d , s o t h e G u e s t i r e t l o g i c d o e s t h e r i g h t t h i n g w h e n
* restoring i t . H o w e v e r , w h e n t h e H o s t s e t s t h e G u e s t u p f o r d i r e c t t r a p s ,
* such a s s y s t e m c a l l s , t h e p r o c e s s o r i s t h e o n e t o p u s h e f l a g s o n t o t h e
* stack, a n d t h e i n t e r r u p t b i t w i l l b e 1 ( i n r e a l i t y , i n t e r r u p t s a r e a l w a y s
* enabled i n t h e G u e s t ) .
*
* This t u r n s o u t t o b e h a r m l e s s : t h e o n l y t r a p w h i c h s h o u l d h a p p e n u n d e r L i n u x
* with i n t e r r u p t s d i s a b l e d i s P a g e F a u l t ( d u e t o o u r l a z y m a p p i n g o f v m a l l o c
* regions) , w h i c h h a s t o b e r e f l e c t e d t h r o u g h t h e H o s t a n y w a y . I f a n o t h e r
* trap * d o e s * g o o f f w h e n i n t e r r u p t s a r e d i s a b l e d , t h e G u e s t w i l l p a n i c , a n d
* we' l l n e v e r g e t t o t h i s i r e t ! : * /
/ * G : 0 4 5 There i s o n e f i n a l p a r a v i r t _ o p t h a t t h e G u e s t i m p l e m e n t s , a n d g l a n c i n g
* at i t y o u c a n s e e w h y I l e f t i t t o l a s t . I t ' s * c o o l * ! I t ' s i n * a s s e m b l e r * !
*