From a149131dc2f73b8e3071bc575444efdee0f274ad Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Mon, 6 Aug 2018 21:43:54 +0200 Subject: [PATCH] run: add microcode chain bootloader to nova Fixes #2762 --- repos/ports/run/microcode.run | 24 ++++++++++++++++++++---- tool/autopilot.list | 1 + tool/boot/README | 11 +++++++---- tool/boot/bender | Bin 16520 -> 16768 bytes tool/boot/microcode | Bin 0 -> 17272 bytes tool/run/boot_dir/nova | 19 +++++++++++++++++++ 6 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 tool/boot/microcode diff --git a/repos/ports/run/microcode.run b/repos/ports/run/microcode.run index 13c3b850a..bbb034ef5 100644 --- a/repos/ports/run/microcode.run +++ b/repos/ports/run/microcode.run @@ -1,5 +1,9 @@ assert_spec x86 +set ::env(MAKEFLAGS) s +set path_microcode "[exec [genode_dir]/tool/ports/current microcode_intel]/src/app/intel/intel-ucode" +set microcode_files [glob -nocomplain -dir $path_microcode *-*-*] + if { [get_cmd_switch --autopilot] } { if {[have_include "power_on/qemu"]} { @@ -9,8 +13,23 @@ if { [get_cmd_switch --autopilot] } { # platform_info data about CPUs on other kernels missing assert_spec nova + + if { [have_spec x86_64] } { + file copy -force $path_microcode/06-3c-03 bin/micro.code + } else { + file copy -force $path_microcode/06-17-06 bin/micro.code + } } +if {![file exists bin/micro.code]} { + puts "\nMissing bin/micro.code file for your target machine." + puts "Please select for your target CPU the microcode patch located in $path_microcode/xx-xx-xx." + puts "and copy it to bin/micro.code. xx-xx-xx stands for your target CPU, family-model-stepping\n" + exit 0 +} + +proc apply_microcode { } { return true } + build "core init test/microcode" create_boot_directory @@ -33,10 +52,6 @@ install_config { } -set ::env(MAKEFLAGS) s -set path_microcode [exec [genode_dir]/tool/ports/current microcode_intel] -set microcode_files [glob -dir $path_microcode/src/app/intel *-*-*] - file copy -force {*}$microcode_files bin/ @@ -57,6 +72,7 @@ run_genode_until "microcode check done" 30 # cleanup if { [get_cmd_switch --autopilot] } { + file delete -force bin/micro.code foreach file $microcode_files { file delete bin/$file } diff --git a/tool/autopilot.list b/tool/autopilot.list index ebbfadba2..3f6ed181e 100644 --- a/tool/autopilot.list +++ b/tool/autopilot.list @@ -128,3 +128,4 @@ vmm weak_ptr xml_generator xml_node +microcode diff --git a/tool/boot/README b/tool/boot/README index 70f69efef..809465ac2 100644 --- a/tool/boot/README +++ b/tool/boot/README @@ -2,16 +2,19 @@ This directory contains boot-loader files needed to boot Genode and to create boot images. The tools are available in binary form. Pointers to the source code respectively the download source of binaries are described below. -:'bender' +:'bender', 'microcode' - The 'bender' tool is part of the 'morbo' toolchain available under GPL. + The tools are part of the 'morbo' toolchain available under GPL. The toolchain was obtained from https://github.com/TUD-OS/morbo. - For Genode the bender was modified so that binaries are only relocated up + For Genode bender was modified so that binaries are only relocated up to 2G physical. Additional, relocation can be limited to 256M for sel4. + The microcode tools expect to find a module named micro.code which contains + a valid Intel microcode file for the target CPU. + The changes are available from https://github.com/alex-ab/morbo.git. - branch genode_bender, git commit e4744198ed481886c48e3dee12c1fbd47411770f + git commit 003016e096fa132e2086b4db52d1fd965dbd7363 :'pulsar': diff --git a/tool/boot/bender b/tool/boot/bender index b79f5b7ba6d4f8458546c8c0eac0453a2736be52..52617f61e5b9b4ef69e2e7c2c0823ee655cc2a26 100755 GIT binary patch delta 9643 zcmeBZWNc_=oFL&C!63n4!oa|g;lKa}CJYJ;j0_qK> z1`Y;x1_lNNus8z)!^A-SgtT2CUfMz(fwY~K3=9nX25CDq1Q;07c7lvZPy4`skmJki zzY`c37#cu$rvU>4!#)iL35NX)0t^hFm+U#>DZ$WrDf1jCEFVhjw;M+A0&y!rA7BLhQVV8#JM35JZjAldz53=GFv zR9=GEn;~o+Z3%`K%b~iKX-P0N*n*tOaNP9)CVOW!Z?Z@ctjwJ-xi%YhP}@bLeoPcrhfB^X|FG{51=r~~P> z7Gq#A{NH>;pt<%51Aj|90|Uc;0R{$!Ue^bmzg{?tOfFzj&{Gs)U|7LeD%^a6aTg0H z0=J#$b$#$cMudSOt@VG27XS9+fq?-Ty&wb6i%#Chq@cPU#9ko^_CLtzQr)!H|D_rW z1y~puz8&E!m20rwV>y|bStWe~NYNXfj4L1=;ULZtfyRHJ_$`&}yb%;+cC_4U| zf}-ceA{GXQ*DBy3ZT#1nblt2}%J5P^K<5nWMJs@Q8DQ} z*zKUx8KPp)9ik%B9cggPMa7Px(?!Li+eJk}+eJk|Iz&aK(?vz2GekwF+eO8K+0nrA z20v4q+hk6bhWaxg=U0m`cKfIZ@VBmEU|{GjQE}+5QE{=X0a-bV0c53RiHZV$dml*F zMa82#M8&7mMMa=9L`9_AMMcEYMMbBmq@1hUMMc2UMMa}1qoGE{j-f=n+eO8sxkg2V zp_`$c%hE+ffWL|1|Ns9Wb=@H3gT1&aAY)} z`2TXoWKj-X-iu5O44tVvT27X*zL+xEpTnJLso>-p9CFec3SgD32l%HP;NNzj!X@aOxU( z>Pj%Yc+Lkl?4<)E1B2u1Ie~%yOHX8UfMm|{F)&2O{VzR}u@=PL$2WN+r=Ma_;Q!(e z8HYe3$$Sh9QN5v0x?LZ1`+Z<`z4O2L!;5{B6}TjG;l)2b28MtDkP)6B30^)129S2|58YuP6JD(6pIpqP!PLq>c`la}yA~+5Z{(f4 zk4qvs4y1k(D9VorG}InvD3Q!K4=QuPRy_gP_en>B;iW4ml1i`a0F@@(r5CzWca#dh zoXNnzaNP9*D1{z(y#kWzc9+;$$1K6n`Kz1Zg{KI($Sa#{$*rQ&>-yw>=@odmP5$*C zl<`{*l!}9jg94B%-cD}dmgSR#lt8aJx}AT#)SA4STYmCC-p15WaPF{awqPt_H@yAQ zfQf;jTe9<*;ib+St+)AGT0jZ0PNO?dr?W%(M@4|yMMdDa zi;4)yt-_#0nkUm;C((T1fAgjPmaod$irg%J6gf@4$0zBeVR^7zCFp;NiU0_Qh6nEk z`7AJF8pw@p+@N?>csYlWfuZ>z$1xWbZHCs9{4Jp%z9k!fs~sZ)!(?lIB{u#RF%UDJ zU!1Glx`@rXMunr?c(T2KN_{zR5gRD!7qf!2Gj=-*bh@Z0c<{HZ0C~chqdS-fIWKX8 za!E@MNX|{8J4~n3MMa_$l(St_WVl^aBuYx)x#x%AE2x)3RCtOw%A+h@R5;2*x?NN_ zm|avPxJYH@Ru$u`~rTyhss0Wuw7F;0z8N3es@1mm8d|2Y; zoqzxTcb<5W_V@q)&Vw%(gLogndS0}%fr|E0^@bW1Z3h0BwT zT+6`5-};UbRGA1EUOMigq61Z|((TI9{DR|qDMzP^icfcpijQTCiVlBE{UJsMhHe)X zmF@tZZU>Ie>zv2=TNZ%CYE)FZ<-5ySI&XHys2DUJ{Ljz8(D}KuM8%}@eDh_7#^<2& ziP=TPpfg5=2bBD}eN;HQV?bf8VggErnkPDaR029j|2 zz#?ATMTJ8;Lf><(R#bS#HpLP`3Fa-NVhkritct6;9u`7(d)waKj1ZA^AF}yafrnK zVjht0&JQn?A^JOSyzu`0|9|J<*SkRB*IXgMSen!Aq7u;^q7q{nqT*5>2X?Scd04lP zN!kzyAO4Jo@s} zUvS0Y#ZU^ai9j{XYmROg6`Af36@}&_IgsSoc{DsMxUv2XxTGFF{47S1H?Z25>>G^6UTq*L%S=U@2G)gT4gA%PEWu4E3OT^SDb3IDLa^>P{CG zuvtN zwoXu3ya)o7pI}S6LsV2=2>tp0zcWNdqxpzH=W&qVEL~K1%AC8!I)8NgsEE9%We546 zt@9Ts_h=qs3}a!u(8&f;2=YA0d%Ynl3OlcJOE7dZyjaBp@?dHE%juw&2%9CSWZeo1 zZ*zSKhSz@G&Me27L4gf+)hxHAhV%#J&AfI_VK1xKedPe4HD3s69S@Qd*L z-{8=&3{l}J7cb@q83?YH^jR4gUQ2+&r0jL`8=jq@c3(i}r_L8I;vtnhD25qci!@s^ zm$Y==c;Wg3lowiWm%e-bwDHKA%?(1I8QH@@!S;h`a+OG}RJXnaL&h8su>vHT#RRLx zohA#4uCMPr7`#KlP=cXbBF*x231^yf32XBKp4T7Jx+9p{BLi+aKO=2r#{zc|bHH@`6GbWve>y{+L_N{Q|3^$ov@ zOH}Jw8-5kM=4kj;TB6nPtD>a%_4NNPDjcsTb~E=Dv%FXjGLQ?x<_0yiKEEvb|Nnn; zjS2^2w{bbU;s55tEU($Rt67>4bM)q@2z34ma1H4Ekj0S2_2MTR14C42{jbR80|p(g z|DmF+?BKN4d93q7=XK5xrRQFoL5yQAXE(eAF)kQx+%f(&7g$`IpYb1j#nRPRVkp4? zD#$y0|Cc`Lc2QyJtx*x^e5d*EzmE!w<%cqX9iZOci(jC+739?yy)G*C0=||<`J49s z`~RPRpDV+QdkhQ=uV26d7@VeHq5N{zKTwj10T&~nLe@n^pf^NC)?Rg%YaVD-9(WUOfKy|No0UlP^jrX`S$tU|=YT zZ~nnmBGoMl?yw$gILn{b*(1cz&&}Y}2^MR%J>of8R#KYji05Q0NmZs3o|6+L73v#o z1Q<$~onC+Myl^i-RRR{M$lQnEAII)V%PTr{!b`n{)H; z|D|^f4@5=Bfi<+AERpX#?9}D--?_v2f6IYVKEq2+mKRI7j=2c`XL$X^v-EN2hv+zP ziVX(!ic2NCB@GX>-Yyk<9qv}ozc259>)R4R%lD<9I}i6dGxG1N_}_W$^|RLhrBcU1 zxs}22z-xVX{(brXEp=2%L|WgLe(LWQR2WKFk1;U3W-|QN zY1nxq3LGh+;ouHsnCAJ;bHTxew>xcAEHBr}cI(XO{McPHgXQwmu6iC7{_Srszwi9X z`LdH|hV$$Dt(Pj93@`PHOz8aB&2;&J>i_=?44q675Cc1pc3uQGMN_(KRBF0oR4O`u zaNa1@>6Xq1TGA|e{S9bZrCuC@N~}svpTgqy;(XBz5K<*z+id3NVS~B@^zVf z^B$FYPy>j8zvUjNMGI{XX>@w9ygUoaKkqtEbl!q>0}s9vIQT+cJHk~yp4xONSG)Bdv^;>Cj>;KZM)=QC)>`5AKVCYC4YQ3KoV^ZcyHAc2VJAdHs4nNTGI(3QOk?kLDl$OSq1^wD^E( zzSkcPK4&`40`43){`+6gz);TqpGAf7+v|_ul%NR8?A<&ny&@W*#_x+CfB*jnaYO(2 zI!lg9CuL>U|^_cU;wq(K&5E6GpJ1{(d%LZ>deY?7jkqnb_cR_mVi67JSDs! ze_k-W^u0ud=e5ud1_nk3<`5MgkH%l1BvLNY4eFj>JNQh1yF^8VfBg^3@8$P9-@&>a z-6EU2Z8q|+zo2=&^OtsriU|MqUk6_a)PKL#X|vIfe>` zOO!o2-x*%&w%N>Vvyt%^L<2~5=^JLj#z!DqI|aK-RAibDvUJy|2>b_i!CCfom#7F> zmZ-4s_gaApUszJi1P6^HbB+qjZqP6bC}gx{>Q#DKR#@h!u+++S2mI-{>D&B*rMrUV z@}n+L#<+C(J?F2^0G8KxL8_0lfVwE4Rzo5!0n?F0#OmudFnNb;Q_--%|}wenW_1WM6Zvb3Qyqw5)~B?ezD{acq{5u>aA$?`vpa1_G{!eSJ){^IM2Q?wGq9MB9P41Du%mdcv zWh}vvA!SfCgrP-!f|@X`%jw#R@-9NRLrVJRrkX98_YuP z@1R;jAUZDoaM(UB1_p-UfE}xhB^X{9egFS|Hz*Z7Nm;>ED!bv|vlMXg@uL0P|Nnla zPj+kqsp9$m|Nm=#h(zAE|Np&9FTB3;`d@fh=QU7?c3$&4T;cpx~~@6L8y*1nd%HtaB+@!X-1)chuyx*YxcrDQL`9MDY5;}z`#(?+a1gU z@{Bi62h;02x{Qnr4E)af^78v|NqWcoyR(FyvP7qy=}rDsDcJd z35L%48!rU^|Nn1z2~@0FeySDfyx8r`qwS-@(#6Bk!6V@G`W0g_&&wLnKu)j#NQy;; zk*WCzhv5ORM-3089dB>|4?Q;@U~2xsSNcBfIIEwD1cL+vNRBnYM1o-kL)vlHAQK6O z0*2lRARnZ4PGLwekzjCWuKyuX`o{1;T4xKx1dxF31O^6%(hq6JSvQzUFi0?h&Ddlr z!63<)cARyKsRV-*h_TI7fME1u^!RN-)TQ82d~m7~~myCxA=@ zS$Mz{WZ{p3(l=?xSryDdeG(1DuLN)$5~Zi3^f=-1IExYmtas}06Eja9Bhn2 z>8C8_ouHa#7bv86fP($Sxj+B^XEE*qh3pPcFz*D_TQ7F}`TsxS80#K02?kI={4kSX zU}B5{H*6Z~-}G=WFdPS|W9aNr*}=@faJ)t305hn%VqoZOQ8~iQz|c8GGUX1+PnE1CvF&%u! z!FZ5=n-lZF2ONwyzF*+qe!%h|f9nNM*WnOL=ZQ{;j@APun%#52KJw@dX6&4za)cRF zk3wX7ix@k%fKBca>JWZ?xw{4IX{69#_{a60dLfhNwvF6b6+mw|nbbR3boqn$q9@ z|M%+HS-$3P29-FyQ^3M7BTPY6$Pd91pXMJzB?Zkt1o&G)RX~@EjQCEFZQ!`*a8cog zX*m2FoTpe+dRzqO4-Iup9Hp=Lx79I!KMtB2D!tbm$MwDbI4GroO7J|c&KLaK^0*H^<><}PU}Ajz z{Wz#oTEfv_&Cnao`1;%TP+ z0shvHpdk+z6%K0){??}uHcRKP7eWky3=Eb>`CBjj`~M#_1t9|t(AG;O=3&hz{|6i1 z=HF%_;cWP^^W4FgEX~jOjd`{{FqU9I<67P-z212u`ul~r!-fYo|Iw6XnVh62JXug* zW%6u2H>IM~oc!d(l2nD<(wvgar2PC6h2oN;(&Q2a)dB@wI|bE(&G+>#GG?buzy*B- zl)?Rt+xij=J_4pqpwdaq0K^70CK(ta4I~(h1)hV18LGf+i1;Q035IIP24#@MMFR=Y zoDHbvVmLIJ(J+zQ#85ZgI3+37*eG#xuHipM7LfImvyELQZ#LHT22GuT^f5Dl3OWV` zP=<%_nL$+uhzZ6l3?IQ}g8Hvu0R~WxWMJ@N0G03{5yr{VCZ_eESxHb$&d9*bpaq)m zHIZNdB``(?CI%Y@28KPL`A`N>yNa0s+*<%?Wnf?cnIFW!zyO+{n8d`uz{J4F5C@e5 zQ6TwL1_p*B+!74J3=nycdeE>FD4;;<^FbX3&`_H%)Bw<&GDtHBgA8Z|F`yX4?}oBL z6o@|sR$_EE2 z8^~m+07!uV8ebBP4;ok0kd|NwfCjN9BLf4d?+hwFKv8Inrrwf~f#I8+1OsU91{4ML zj*JWpT=EhOjZg!;&@=?2@ng{V>5L2v7nCFzVxjtL7#SFJl_eN*pnT9g>P%$`216(x zG{<^MS%Se4!mnpo&d9*Pts=o-4H012#mKW18BP8#BLl-WF^G?a7#JA@nHU&47$g`rGcYg+G1N0Mfcn`#L?jsIg9R8FOhJhO zno9&27#ZxD7#Kk76+jk%3~*y&VAv)l!B7NMFUQQlP$z+~z@LeMp$bWVEE6P`CNMED z2r@7;q%bisoD!2@PzUL+XJBL~V`5;akd|O@X9l^5k)eT!fk9hMg5fX|gg=3afkA*x zg5fqJguj4^fdSO60(Ce*2CiXZU@(-DU;tHzAO~({VqgF*PJqZWGVEt!VAv%o!H^HK zkb#lm6cYo(31djMtQTZpWB|?Lt`L=A(1a>@#>Bv|j8B503+jOHObiT~Qjl^1WC5rs z*)J!-pa@mZ#mvC)Ku&@|49XW_W?(p>D8T^Ao*?zI%nS@4#UvPdp&n3WW?+a>l3?%# z<$sU@9cBiG>7o)0f=~mjnHd;Bt42T>0UQO)3=Djd65s*~q~3*@f#IU41jA*h`dDTL zhDRa@2UIdMFn|`k!1Nb`%RWfK2QsgLnSsGTP=X2?+)ZsJt%=1495(2!ydPF#P{74+>!h0S0D-{W-24)tU#cbjj z`E!#pE-{k4`f?A;UO$y+3O<*U(*ENCCFsQ@;r4Ufv+F&yIlD(21 zs9NnYVPH6L8q~f-)dEVTAmtEI1_o<~$x04t4j|&y delta 9349 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 E0KY-Q`Tzg` diff --git a/tool/boot/microcode b/tool/boot/microcode new file mode 100644 index 0000000000000000000000000000000000000000..86668ae8cef53ed8e68a891491bbe322bee6663d GIT binary patch literal 17272 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 literal 0 HcmV?d00001 diff --git a/tool/run/boot_dir/nova b/tool/run/boot_dir/nova index 8cc20416d..73f0e4d93 100644 --- a/tool/run/boot_dir/nova +++ b/tool/run/boot_dir/nova @@ -9,6 +9,7 @@ proc run_boot_string { } { return "\nHypervisor reports " } +proc apply_microcode { } { return false } proc core_link_address { } { return "0x100000" } @@ -66,6 +67,11 @@ proc run_boot_dir {binaries} { set serial_bender_opt "" + if {[apply_microcode]} { + exec cp bin/micro.code [run_dir]/boot/ + exec cp [genode_dir]/tool/boot/microcode [run_dir]/boot/ + } + if {[have_include "image/disk"]} { exec mkdir -p [run_dir]/boot/grub exec cp [genode_dir]/tool/boot/bender [run_dir]/boot/bender @@ -126,6 +132,10 @@ proc run_boot_dir {binaries} { puts $fh " insmod multiboot2" puts $fh " insmod gzio" puts $fh " multiboot2 /boot/bender $serial_bender_opt" + if {[apply_microcode]} { + puts $fh " module2 /boot/microcode serial" + puts $fh " module2 /boot/micro.code micro.code" + } puts $fh " module2 /boot/hypervisor hypervisor iommu novpid [kernel_output]" puts $fh " module2 /boot/image.elf.gz image.elf" puts $fh "}" @@ -143,11 +153,20 @@ proc run_boot_dir {binaries} { # install_pxe_bootloader_to_run_dir + if {[apply_microcode]} { + exec cp [genode_dir]/tool/boot/microcode [run_dir]/boot/ + exec cp bin/micro.code [run_dir]/boot/ + } + # # Generate pulsar config file # set fh [open "[run_dir]/config-52-54-00-12-34-56" "WRONLY CREAT TRUNC"] puts $fh " exec /boot/bender" + if {[apply_microcode]} { + puts $fh " load /boot/microcode serial" + puts $fh " load /boot/micro.code micro.code" + } puts $fh " load /boot/hypervisor iommu novpid [kernel_output]" puts $fh " load /boot/image.elf" close $fh