1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
@startuml Launch
start
:parse command line;
if (load SINIT) then (false)
-[#red]->
stop
endif
if (detect TPM) then (false)
-[#red]->
stop
endif
:check SE_SVN;
:read VLP;
if (platform TXT capable?) then (no)
-[#red]->
stop
endif
if (post-SINIT launch?) then (yes)
:handle post-launch;
if (S3 wakeup) then (yes)
:verify integrity;
:relinquish locality 2;
:jump to kernel\nresume vecor;
stop
else (no)
:protect memory;
:verify modules against VLP;
if (TPM1.2?) then (yes)
:verify NV against VLP;
else (no)
endif
:init MLE/kernel shared page;
:relinquish locality 2;
:launch kernel;
stop
endif
else (no)
:prepare CPU;
:relinquish locality 0;
if (S3 wakeup) then (no)
:build MLE pagetable;
:configure VTd;
:set loader to MLE struct;
:set loader to SINIT struct;
else (yes)
endif
:init event log;
:save & set MTRRs;
:call GETSEC[SENTER];
stop
endif
@enduml
|