[Kos-dev] Double fault : ca continue

d2 kos-dev@yoda.isnpro.com
21 Feb 2001 14:29:57 +0100


 >> "Thomas" == Thomas Petazzoni <thomas.petazzoni@ifrance.com> writes:
 Thomas> peu plus de pile que prevu ? bref, pour l'instant je
 Thomas> comprends pas tout... pour moi notre solution est l'unique
 Thomas> solution, mais il semblerait que non. quelqu'un pour
 Thomas> m'expliquer ?

Leif veut pas du demand paging sur les piles cpl0. Ca se discute. De
meme, il indique que le doublefault doit etre un dernier recours. Ok.

Plusieurs questions :
  - que se passe-t'il quand, une fois le handler de doublefault lance,
    ce handler fait une exception (p.ex : page fault) ? Est-ce que ca
    genere une triple fault ou une #PF (j'insiste : le handler de
    double fault a ete appele avec succes, et est en cours
    d'execution).
  - Est-ce bien vraiment vrai qu'il n'y a aucun moyen de recuperer
    l'id de la fault precedente quand on est dans un doublefault ?
    Sinon, c'est pas trop grave, du moment qu'on peut retourner dans
    le contexte interrompu (qui est celui d'une exception). A verifier.

Sinon, cote alternatives de realisation, on a pas trop le choix :
  - Demand paging sur les piles cpl0 + cas particulier doublefault (task gate)
     -> necessite d'etre sur qu'une exception dans le doublefault n'entraine
        pas de triple fault
  - Demand paging sur les piles cpl0 + exceptions en task-gate.
  - Mapping statique de (petites) piles cpl0
  - un pool de piles cpl0 plus grandes, mais en nombre limite, qu'on
    assigne a la volee aux cpl3 qui font des syscalls ou qui sont
    running. Je pense pas que ca soit coherent, car ca revient a dire
    que toutes les taches ont forcement leur pile cpl0, donc qu'il n'y
    a pas d'assignement de pile "a la volee" a faire au sain du pool :
    on est dans le cas precedent en somme.

Bref, si la 1ere solution est dangereuse, il en reste 2 (la 4eme est
incoherente et revient a la 3).

Sinon, une interrogation : a-ce vraiment un sens de parler de threads
noyau (donc cpl0) "stand alone", c'est a dire non associes a un
contexte cpl3 ? En fait, je crois que si on se lance serieusement
la-dedans, on s'oriente vers qqch de bancal.

Sinon, rajoute ton patch bochs sur le CVS (module kos-contrib par
exemple).

Voila.

-- 
d2