[Kos-dev] #DF et interruptions

Thomas Petazzoni kos-dev@enix.org
Mon, 11 Jun 2001 12:06:03 +0200


> >   - on ne sait pas ce qui a ete empile ou pas empile avant la
> >     frontiere de page qui a cause le #DF. La pile etait-elle :
> >     Comment on differencie les 4 cas au niveau du #DF ? A quoi sera
> >     positionne le esp du contexte interrompu ?

si le double fault a lieu pendant le handler d'IRQ (c'est a dire pas
pendant l'un des push qui lancent l'execution du handler), on a vu qu'il
n'y avait pas de probleme, car l'EIP est bien sauvegarde dans le TSS.
reste le probleme d'un double fault durant un des push qui precedent
l'execution du handler.

avec un peu de bol, il ne sauvegarde pas le nouvel EIP dans le TSS
systeme, et cet EIP reste celui de la tache interrompue par l'IRQ. on
pourra donc calculer combien de pushs il a fait, les virer, rajouter une
page pour la pile, et relancer a la main l'IRQ.

mais concernant le premier cas, ce qui est etrange c'est que ca aurait
du marcher avant qu'on fasse le test sur isr_nested_level, et pourtant
le EOI etait pas envoye... etrange tout de meme.

amicalement,

thomas
-- 
PETAZZONI Thomas
thomas.petazzoni@meridon.com
ICQ : 34937744
Projet KOS : http://kos.enix.org