From d66a8df66e00cd6f6d5f393a30c4af611abe003f Mon Sep 17 00:00:00 2001 From: Florent Gluck <florent.gluck@hesge.ch> Date: Mon, 14 Oct 2024 23:45:27 +0200 Subject: [PATCH] Updated lab-virtual_game_machine.md Added 2 pre-compiled guests: guest_display_phys.bin and guest_display_pv.bin --- .../lab-virtual_game_machine.md | 28 ++++++++++++++++++ .../validation/guests/guest_display_phys.bin | Bin 0 -> 8340 bytes .../validation/guests/guest_display_pv.bin | Bin 0 -> 8344 bytes 3 files changed, 28 insertions(+) create mode 100755 labs/lab-virtual_game_machine/validation/guests/guest_display_phys.bin create mode 100755 labs/lab-virtual_game_machine/validation/guests/guest_display_pv.bin diff --git a/labs/lab-virtual_game_machine/lab-virtual_game_machine.md b/labs/lab-virtual_game_machine/lab-virtual_game_machine.md index a388fc4..3b6a93c 100644 --- a/labs/lab-virtual_game_machine/lab-virtual_game_machine.md +++ b/labs/lab-virtual_game_machine/lab-virtual_game_machine.md @@ -497,3 +497,31 @@ Delay: 200000 us (phys) ............................... ``` \normalsize + +### `guest_display_pv.bin` +\vspace{-.3cm} + +Ce guest initialise un affichage graphique d'une résolution de 600 par 400 pixels en programmant un affichage virtuel en utilisant l'hypercall n°3. Le VMM doit donc ouvrir une fenêtre graphique de la résolution demandée (600x400). + +Il écrit ensuite sur la console virtuelle les deux messages ci-dessous avant de boucler indéfiniement. + +\footnotesize +``` +Using paravirtualized display driver (pv). +Display resolution: 600x400 pixels. +``` +\normalsize + +### `guest_display_phys.bin` +\vspace{-.3cm} + +Ce guest a le même fonctionnement que le guest précédent, à la différence qu'il initialise un affichage graphique en programmant un affichage réel (physique). Le VMM doit donc procéder à l'émulation en ouvrant une fenêtre graphique de la résolution demandée (600x400). + +Le texte écrit sur la console virtuelle est également légèrement différent\ : + +\footnotesize +``` +Using native display driver (phys). +Display resolution: 600x400 pixels. +``` +\normalsize diff --git a/labs/lab-virtual_game_machine/validation/guests/guest_display_phys.bin b/labs/lab-virtual_game_machine/validation/guests/guest_display_phys.bin new file mode 100755 index 0000000000000000000000000000000000000000..8139e08b597e634aea6a97def44296b729409c8d GIT binary patch literal 8340 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 literal 0 HcmV?d00001 diff --git a/labs/lab-virtual_game_machine/validation/guests/guest_display_pv.bin b/labs/lab-virtual_game_machine/validation/guests/guest_display_pv.bin new file mode 100755 index 0000000000000000000000000000000000000000..dc6c3441c4b417f2057aa2c246940cc3990ea1f6 GIT binary patch literal 8344 zcmeyx&nRZkz^`y1t@#8aztVwMq6{1iX*&cM`fl`H=sWOYHZKFim)Cz8py2<11_p+i z=NZ8C<ns*T4C)Y>(9WmLZzQ^1IXYe6bi4BG0*Q9Ie&`JS()@-ci>KH1O+XgQivzq2 z49!ObCY(GBR?jh^`3+CTcSZ(=7ym`UGW^>Ps2*ToU}*l~Q2KZRT-}Sa|NsAQe#4Q) znDGgu`WQrYw<`z#wgb&?I07<0gM`<^g%AFK%X|UJOhu9rfa&=PlBq_Lk!XIv-+bZ$ zO#T~4J{lqqbBaXs8=n8A94}Hp4mu(La+3kX2SyNuFO>fO|KIJ()9L!<xa$W{FuYdm zcKwpp&A`7M;?xfyW5pn<n_a&!{dfJ)So;AKuyxm<UT%CN!NkCD-1Q4szxazBK?a77 zL%qFU{({W@!g!)X;J@pa#@a9c85tPr9yGt<=xqhb1^h4N>2~G#e*rm=o8NF`7&9_3 zfSkPm;cRyhe*&DJ0Wu0CR0|i%5(M#c;rxur3=mVI;6hpQASGUKe#UL65_7mv7T98S z2p=Ad;FR(K5>B8L!qMycAs~zS#XN3sI)JGYIPUs~fw91^+x1U(C`Tte<$%SRaELP$ z_)P$5U}*lKRq_oQq%ZFL|NlRW^~F-KLs+_9IRaj6gt2)7VB*LY3ota;fy_a-SOJT; zNVh9ThwGc;u79AiU7>F}P@T)rU<Y%SLn+KzS<)|hAg%xf<V*+?<_M^vFLr>O&iNu4 zBFn$c^-aKw0}#&tQURFw|5A|`5fD*Os4*}wyq4?^<>_|)!+4>Kfq&b9fER%f>Hn^O zx?KhM*Sm@we86Ps`lsjyG?1F#aCC=qbi49&g#PJp{gK7@;{Ct>|C^7n@NaYd6Y#<Z zqMd)6>yLmJtPl>&t)LL?aQ%~|{9+HX7D<SzZdaaw7rP-6-L3)wFV;iYFx?j5;Jec0 zdZoklIimb{(HZ)t+f|^`^+UI-NT(~fED`K=eIAg-`l5srC8cP<9R8%k^+A{GlMdH! zU9Jy0T)%@-7gMk6w}33R7Y^upK#}$Ytol7TEq(yo2DXQ@*Y$ls7W)exR6P=iGRs>K z>;jZB3sfLL3n@j2G<qS$1s6syq&^6M&FgmMIQRp#kh+E>gRPL-29XC@4lRwAKtvFZ zod*#>aV*%&c#Elgh%RU`)m;0byzVAEtsn)314JE)=^)oYgF*}<jUE*L`4JxGfR(!7 z^7<)~3~ErEMv}o66ssZfAj=aV1@laZ2qGvZLj+J9OE@S}AiAJIfnH)azd;HOBZyKI z3qTHnh6V>j8a*^V^5F`N>qs)Fp|KZ923u&%g~)>}hbD|}hzKGyS|I`$j%COSco7GY zBOEyH5QW49jwnPahJB0~A3+u4Ye*9TJ#enTh0$}(E+iS$z*&GKgDr3xAo56olLrw& z1WpD-0L8I{L&FlHi<r=0hbTp{0OTNOQn||mOB1l{0dD9VgA1dF#u_9U)X<oOB!ew9 ziXieJ%b`gn0Vcwe0dBKIL-<7aAEFSa|2dl9@MI~z$l?Hd?nNJne#4WY!^*($!s9!r z!Vv&949(dX7+zSw`C0leEI=wjtuCGnZBSy7hD&C+vNJHe;70J1I2agS{Qd?vtbmh& z;l*nRA6Dyt+N)?SRY*I8@r4*O*ljSC2FG0=Ff?#8z?yW{-L4-P5A;q*U}0eBc74Ej zp%YZ4e&`KQ>~{UrApn(C;6;}G<8X|@{lDvn=GqVbb^E(rA9T9@Iqv#}L!5!(wN$t3 zmoA2mLr~oyr9I8Af0+KeegVt094Nip?fQUq9s>gd*s4Fr7$Uk|LF#lt;tc!<aVCg( z7D)UND@>eq0a)vg<E~$X#2FZlxxQz79RM~PVQX&yW0&ju4knPzaH$_4@BDD+3Vna@ z5le?av+EBg{%x-B9aQ-l7#dm+RI++BpZMU=;rbrQt;<1nCvbx8KJNMg+=`Xxc71`c z%HbHpJdid2U0*cTz5q9V?}IeWL-GhC#3S~{UGH3I;$}GJdb^Z=o9pd^4>+1nICY2K zN$X@f?s}!586<Vt`<Uw`9sX^umk&PR;B{tjVdy->zs>d1!3PqY7dj7hyI$!OIPUrc z>=Ns4*C&{f2MWt5s0?bvJ?RZ71V_w&*C)-jPyFllL#x2x<~JhUt^ysdFS<i{Ixif2 zz{Ggr-~$$rbsV51@uRW!$9Z-JhI-X5*BAWTE_Ay}9DKmi?JL50;@|_0-Jk^3?fZlA zB;!ra3u&E<6S`ynz<NfY9HRfigB6?#L7BmWfq~(L_7`w^hNQ~h6JkN#sKz%OEDQ{w zM*ajw28N6XCI*HVGa%|-Fo80`MNkv$4Nr!KI0M5AmcL*VKqkVKXM~6|Fl78^W?<-T z{qg(%|9}@e8A0|cG{512iJbWZ);HnxUr5ib`3=keQi1=aJQ)lO3<q8~vVk-RAeGv? zRx>cXkb~q`h<hRZ!?aG<FZ|m<O*xK$Eaw+|s46&`-*Egd<;Ze)!G$5glO^<GE66Y4 z0sz!pJ_+H$j0YDhA}=OFM4=ruNP8dN5(i~@XhV{v*Y!(47Uv6Xh<cbQ7%G@vaH6UZ z>2{TXwDm#BsiF1_Ly2U!tH8k*@*S>kz+A3wSAp+0I$eLfW&<}Ue{}nbbi4ilmo?u% zc3$ju{nH!3*cti<l2i_LH5Mo^Fmy1XDs%nOT>FEe^f1^+VKhA#jxp$VhyLky<zT#U z3{=eUbcg;ybdV%^K@H{)-L4-3An^nWFK$rJ`iMX$xKIJ7wBY79CY=vD4|lurIP?bm z?+ks@d1!|K0|SEx<At3d8tUZi0|K1~8y_-!`2WB2k>)AOD<uMrZx}$Wx*nB3{GhJJ zo6bXxk3bDN%_}fg>!lK2Rgh5g3l_!)%^VD!51J1!bh^HPc5GkrGJzZ}(8XY*%HMh$ z)J1g_=ynz8VrV(Q-va87f;s&A4mAHz<!@OGN|ZlT`FqZQ85R8fhrx_w{+?YR#*5_U zAENy2>lhgrx>;H)#2Fa=Kj?N9=?!4%3>E2S=ybi&T+742-v>(f-L5x4Wf2FcAI<UK zm*>ChmzNbFjmYXhyp{p!s1xpX{m=zU+eoVagSsRiKrSu4{n80t=N(Y?Wz6FGUwWt4 z^-941(ibldfis@MYZb7Oa^0?1JUU&kbh}>Z4t>!j!UXF72>f@2x~1FoO6!5rt1n+N zfC31~3lF+oAArne$l?lsnVdn6$^GaiKY<u4@W1p4%wT>p41R41_McI=E5|VgRk(*< zD}se(KoN=-lCRk(yk?p3nsLH^MC7+V`}_a@YsLv+Qy98kzjWR~l#LRg9vusKyny3H z-fwWZ1W8c`x?R6?Gk_Cz^BZt!knrLxq#_3kcDr&cZc$)hIL_Lkz`!7SHk$o7YmWj0 z!^VtzR>xT<C@?TAsh-RPDOSN{yC_H<ykKWyywG{@;6paX69*qKGhXQBX$9qf#uJPO zkT}pv09+F=F<$5uISN*Efwldb5W`}Sc?&^S9(=&sc?irhys#J~0A?S2!H!Mzff$-7 z$f=zNcY{psJkfcJf5{=<gAaH$Pe_88OpFH@4=|n(1hH8TK45_|k%d_gK466kGlTpB zQ4C{t^MV2iY&u90WEij8^+R{)m(B}@m%u^T?fPLc$Q9k-AObs{@z6q$2;&7rREdCw z5<mlj9G$LzUh~0=F!10=x2piS$Ps8gQ2G>Fqc*<*r4DclhX+)Aigkzn=yhW3bo~L+ z>%rLR`=?6?)F44<y$jbW)9uOwDnUaf(mGw=be!mLebI5D!}UqGt3Vpqgg0rOuD_1C z{$c2HebM|tzWITC$DuCQzs(OGa9-$e{oCdGr1=4J^8@CC4_KiR^Pv)dn@==!xc&u~ z@*u<hb^CI3yZ!(bxs08Gps|mWhgcZERii|6Ee9iiYYV8p_WAq&Kd82;{gPNJ+%397 zgMne;6a@wb%|o4FPIK*-lu{ui3C0VHL5iAdzm$VCtU=ZQ;xyNODF$f(vB4%WURVrb zcZ-6^g<!pJSb_qwm|jS|2j>iUwU&0Ab%6#0!+-W23lta_7BA8OH5ynl7&sUhvKTTz zVlO<vgE9iUPKYru^tyh4ln8u5SsVc`W`m_<AgN$6NOh;^5(Nf^U1u=W=A)=xp}@e< zDY`}hWF1ci$O$jpA@$INlZPjyb%&_1bh)T-ygLkLzJX9_-7YE|Y44$&w-6d61{HdH zIBfz5PUv<~Vc}<#IGn}snk9?zHA6sfU{F|is2m&r0{#`yaqI(q5Bgq!>K>i{1}`H1 z{r?}qzmk6;yL@bXTvTLqMDr1r^9(+j=@}*QL8&PWj7+|vJ|UjY{yzRe!HSBYJl4R? z5L%p>m#$EdSd>_nSyWP*n3GwRnxc@BSzM5lSgDXwlv$Qqq@Ynyrm4rp-~tsbN-fUM zDJ{v&&$CicO{q{#Q7Fi)NX;qM<6>aAFTlXyDagRkB19hMhw5Dfr9tNW5oBNx0lAlf zfq}6qh=H+&gHf7?g{6a$fkB1=f+Jr1|8D?N<H*O+%H+h$nsbzgg@v%bfEWM&Yar`O zf#?I7Ys0|605Z25S)QpKtN<h*!@$6B_{IPKpr#@N%w8sl0fgN9`NjYLUMS|e!OaEP zEBo^Q|EVbQ6T$L?%&mHf-9Lo%Wxf3WUjo^_5U_RN@CCUi36DG|9HL(S{|^cicsN8L z^w%&jFoeDQ|6do`{7i^EA$NJ>u@~enXFT#CcUiyu|6dN--YAH@Ah&|tWr@e#a~K#H zOke*0FO94}9HD;?0|SG>%m4q2k>#24!3sd;-vJc|FaQ6yM3yfFOM}Dp4+8_koR|Oq z+ab$WLF5UA%c7V6|2rY;tApqR*$WDnBQO8|H$j#!K*)o_<pvIULiS#H`TsvRBLf3G zo|)MhK_<iO-T&(Ue?Am>F1S3%-nFm)|CdFPmxRlM;$zht-1<TBG2`w3{|w0bnf`#R z2ZtvpJ}Tb*|KEY^Z>AQoJRyIbc=!Lm7P7uHur`9_&aQX=|AXeV5aA)h1k#DiJ_Trb zHS5Fw{}IUcxim8~1spvLDztFv1%)vPZ~O57zZ$aMB#@1S%eo~W{{Lr3*5?e-2g>)L zG}HY7EiE$;HuKbn|NqU9%`AeLNyrZ;KK%c$gsd+Pq7URhkXu0JN+QdLBIH5o=<tXC z|5cFX6A<#CbaWhtJRx^&Cg85EIOGYLJO9J~|4WeF%d`OOV3>cEKmPx(i7cNAmSzB@ z7m$B-KK}o|i3us+xim8~uVMlx7(#Y0`uzXDI<ncx5VHyCoA~)ZX!;tF*8_>um-qSq ze;s7|G9dauegVa8)#v~Jossh}$S>B6V84LEBLOrQ|K<OGV`MWR#VR<TH!v_Ttoic) zzcsRaIm8Y^ep>(K|Nk~*eM}8tjUanLZWI0b|NnFp`N?p3P(1W}{r`V9iu`o2yn&&S iv5BdfxrL>ple3Gf8%Rmv^<;2o4Acz+b--8{7#ILs)c)20 literal 0 HcmV?d00001 -- GitLab