From a4c7837fb3672f2e0bc46c748c7bd03eecf718c7 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 28 Oct 2020 14:55:10 +0100 Subject: [PATCH] Update to bender with optional microcode and HWP plugin support. Fixes #3871 --- tool/boot/README | 17 ++++++++++++----- tool/boot/bender | Bin 16768 -> 28284 bytes tool/boot/microcode | Bin 17272 -> 0 bytes tool/run/boot_dir/nova | 30 +++++++++++++----------------- 4 files changed, 25 insertions(+), 22 deletions(-) delete mode 100644 tool/boot/microcode diff --git a/tool/boot/README b/tool/boot/README index cca237b7d1..5c778dd6a9 100644 --- a/tool/boot/README +++ b/tool/boot/README @@ -2,19 +2,26 @@ 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', 'microcode' +:'bender' - The tools are part of the 'morbo' toolchain available under GPL. + The tool is part of the 'morbo' toolchain available under GPL. The toolchain was obtained from https://github.com/TUD-OS/morbo. + 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 + to 2G physical. Additionally, relocation can be limited to 256M for sel4. + + Optionally, the tool may load Intel microcode if configured via commandline. + The tool expects to find an module named micro.code which contains a valid Intel microcode file for the target CPU. + Additionally, the tool may adjust the Intel HWP default settings if + configured via commandline. + The changes are available from https://github.com/alex-ab/morbo.git. - git commit 003016e096fa132e2086b4db52d1fd965dbd7363 + git branch intel_hwp + git commit 84be1183b066e9ba78c874713db4e68a5c3393fa :'pulsar': diff --git a/tool/boot/bender b/tool/boot/bender index 52617f61e5b9b4ef69e2e7c2c0823ee655cc2a26..2acaeecbd955e34d0b59240c8a034c901bccc084 100755 GIT binary patch literal 28284 zcmeHwe|%KM)%V?GflXMr3#7Pcltq`CNQhZLOeEM4@(T^J5E7`MOGtK;Kz_M?}x?RJ7?z1nKNh3oH=u5ZrqYvm}f8;xacQ_i{%(J*~-mBW};?tsq2H$r)?b|FU+)X-E;TholCeJUQuy`_h z#0z_SX0$(Ld4<~$`4{f>v_CN#xxIN*&KIGts5yL^BVS5$p$Sio{9FV7FQhSk1TGWi zwV!JexF&&X61XOTYZAC7fol@DCV^`bxF&&X61XOTYZAC7f&Z^1u=lBYD<>bT{KFkq zF1Qd;o2T0m5}Fl0!B6KngkrRtjU3nFf3<+)0{asY6jUa+?0+8Np_Wrg_>GI{TqW<{ zO(DUOB5eqfq?XR_1GnY01zD08xwBOp1eA*Wdhvka^4+E6D+dBBx zU4--W&M#0fpp_uItwS_-OFtjOafYD63is)S8G7N=fYb~!D6s^jRz1aq%GIY2>1dO6 zv~k++Zb7)HP<^^r&mRH^+Hu{|vqU>IM}4|qFXkw|2(hcIrQin-< z@=7=yvdO)npekJgbJA(EQ#)=0@h(d{xZr|rw5Lk5z6^(#FAu*w2>zVf9w4aFoye1o zcI`z5Jsg3a)hjo@N}}chx&8RX<0L&)=>pmi#;Vd6c&=FCRHYYD&8bz{P?+0~M)i6I zIk#8#w^IaoTHl2}erKPy_(qOv?GPrY(q2?4DG7@wLvgBf2mmqdIIr131Qeu4PI7!J z4e>rG9H)TNS?zPwe!(D&le?u)u7u*HZliQ1N&Luh9>sf%K-1o07~&ME$G|f9ojoYi zUPrd4?Yxk}@9JK@91I_447Wp_e`!HQk9-G*NAt-Kn-9f!ennX!UX{Lzu%&$;h!Lj5 z*&rk)v1;eLCW<#Tze*~@3E%Pr#t@Og*pXz;kC}wLiNYA|dC*X$o6kpvCsQZc{3@vx zCysZVZ+?~Zh!f(qw@_stjobF8skF6E(1&qbaj({VIUL?z+#5x25e4f$3xBd>P@YWX~G=67ZY{nQH*MEg?{Sk5+b?>qhNU(4vK8AB6bVNKb-K16|s0f?b86(WgFPh7u!b6Qw~z<2W_jL{*e*qtr1@ z>K`=hm+s=kCAwhsDnXyP7cT`?N)iMJwaV*Pms^ah4w`C z@p2H~O`L0UZ=w<5+r9t*3@gi3AFl+0c3q_Gs9u&BDXXTkOPJyE0jfy{5mGq5Av4N^ zd`b?p9nX^hx{z*L$H|^T|Jn8akR_krd7McBZD#yUoDz7P+9mwZILD_!5+X!uRGf)QmK6%?m;7PrNLaeW zHI9)kUTGLF?IR86ghioyn$uUy0r3o`Pm!o$>g0$gnww%*itj5~Ms@Z3{!r|KwHUxR zLC~bE3?wNz0lT&lrXq}t&_}GDEDM%C5GB>;#Ej6A=JXZf03&&dkvz#rexR&2s!et& zWS2g=Y`BzhNjRj8!*UcbYS)8c=nRONl_!ZxhRH|s=8V*pB5O>ii`tpv@aZM2jGd2V zVTewf0{(XBT3|nET=HRUHd8B;qhn2{G7pv`6P9B)oikxNgurl1_dTdr)N=Youo>u} zy7IZe{#i?{+!!LRtFHFR4Vdg57zP{AXu#IdQ{FFk%KkvBy_q0

@AWj2}?3MBC(N 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 Y9r}>}$=YNP#~s5441d>a_!GtZKRDE^{Qv*} literal 16768 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 OM$q>gu1bP} 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