Message ID | 1366978377-16823-11-git-send-email-dingel@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On 26.04.2013, at 14:12, Dominik Dingel wrote: > Pass the eboot device info and the loadparm in register 7 and 8. > Use this values in the BIOS to directly boot the respective > operating system. > > Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com> > > diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c > index 36daa67..960ba71 100644 > --- a/hw/s390x/ipl.c > +++ b/hw/s390x/ipl.c > @@ -77,6 +77,10 @@ static void s390_ipl_from_disk(VirtIOBlkCcw *dev, uint64_t pswaddr) > env->psw.addr = pswaddr; > env->psw.mask = IPL_PSW_MASK; > env->regs[7] = ccw_dev->sch->devno; > + env->regs[7] = (env->regs[7] << 16) | (ccw_dev->sch->schid); > + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->cssid); > + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->ssid); > + env->regs[8] = ccw_dev->loadparm; No, we want a list. > s390_add_running_cpu(cpu); > } > > diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img Please do blob patches at the end of the series in a separate patch. Alex > index b549a86e55194bbf54e25f839e52b490ac308260..fe8d2c6b9f5d937ea156084f7eb248b17e1fa89c 100644 > GIT binary patch > literal 17528 > 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 > > literal 9432 > zcmeHNZ){W76+h25c_s<r5hCiA2yP;41r}UG!d56%pD6@rvts&Zm~|TsaUfPhLLGxp > zyJ^viw9r4pMQ!(GAFOuhO=~66jIN|Z>f406zuF>AsFk{@-d@ovnXb=mw5D|A?sx9< > zb4~Z9Q@{F3*XQ1I&pG$p-#z!-_iTS}TVHP=pi#91Xc^jyp%=r23g7f-XG&3%Zl(q@ > zsgV|<&$0`=aYGTk==FR`)NFbjpDH=lYw-9&5#9BAKJ|M1S%`b>s$R(JcjTFllXeXS > zE9#B=ROzwK|EWizbna5}Q@!iYvR%En@EQtMj`=7)Wxd_#>x%pNKf<41v@TgkppHNt > zfjR<p1nLOX5vU_jN1%>C9f3Lmbp$>?0;Tue!xVK~`G9=LzJ!<gSFKsRw(6ymuBrG0 > zeu2Wf{-s7wSm%hI)e2f7?-uNF@c(i8Po$ZXg+R(E(A0)JO?8qnVNkoZf`Zm@YD|f7 > zV%^~Lt({hmTC7(|vtF0)+5)fRUCQb>&uJU5_REwoJn1z&LetRMN+C7Q@<Am(WX;Ms > z-$#1}{5u`@DpueK7E0J|VLC*c)vRonLi)v^TQCUzgw?zO`;wIM_%mdO;M1N&-WFJm > zE+4^Kb$QG&^4C!wD+pk8uOsp>;Y{Wu6td$OA7aaazo_+eU({!4oGtHxWnF&5`W+Gc > zZF9OXVQ4x)ofz9`{ecYY𝔷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 > > diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c > index 53a460d..9cd3edf 100644 > --- a/pc-bios/s390-ccw/bootmap.c > +++ b/pc-bios/s390-ccw/bootmap.c > @@ -173,7 +173,7 @@ fail: > return -1; > } > > -int zipl_load(void) > +int zipl_load(uint64_t load_parm) > { > struct mbr *mbr = (void*)sec; > uint8_t *ns, *ns_end; > @@ -223,7 +223,7 @@ int zipl_load(void) > > /* Run the default entry */ > > - prog_table_entry = (struct scsi_blockptr *)(sec + pte_len); > + prog_table_entry = (struct scsi_blockptr *)(sec + (pte_len *(1+load_parm))); > > return zipl_run(prog_table_entry); > > diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c > index fd40fa5..0c1c11c 100644 > --- a/pc-bios/s390-ccw/main.c > +++ b/pc-bios/s390-ccw/main.c > @@ -20,7 +20,7 @@ void virtio_panic(const char *string) > while (1) { } > } > > -static void virtio_setup(void) > +static void virtio_setup(uint16_t dev_no) > { > struct schib schib; > int i; > @@ -35,7 +35,7 @@ static void virtio_setup(void) > if (r == 3) { > break; > } > - if (schib.pmcw.dnv) { > + if (schib.pmcw.dnv && (schib.pmcw.dev == dev_no)) { > if (virtio_is_blk(blk_schid)) { > found = true; > break; > @@ -52,10 +52,24 @@ static void virtio_setup(void) > > int main(void) > { > + uint64_t boot_value; > + uint64_t load_parm; > + register uint64_t reg7 asm("7"); > + register uint64_t reg8 asm("8"); > + > + asm volatile( > + " stg %2, %0\n" > + " stg %3, %1\n" > + : "=m" (boot_value), "=m" (load_parm) > + : "d" (reg7), "d" (reg8) > + : "cc"); > + > sclp_setup(); > - virtio_setup(); > - if (zipl_load() < 0) > + virtio_setup(boot_value >> 32); > + > + if (zipl_load(load_parm) < 0) { > sclp_print("Failed to load OS from hard disk\n"); > + } > disabled_wait(); > while (1) { } > } > diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h > index 8241b0a..2851995 100644 > --- a/pc-bios/s390-ccw/s390-ccw.h > +++ b/pc-bios/s390-ccw/s390-ccw.h > @@ -63,7 +63,7 @@ void virtio_setup_block(struct subchannel_id schid); > int virtio_read(ulong sector, void *load_addr); > > /* bootmap.c */ > -int zipl_load(void); > +int zipl_load(uint64_t load_parm); > > static inline void *memset(void *s, int c, size_t n) > { > -- > 1.7.9.5 >
On 26.04.2013, at 14:12, Dominik Dingel wrote: > Pass the eboot device info and the loadparm in register 7 and 8. > Use this values in the BIOS to directly boot the respective > operating system. > > Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com> > > diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c > index 36daa67..960ba71 100644 > --- a/hw/s390x/ipl.c > +++ b/hw/s390x/ipl.c > @@ -77,6 +77,10 @@ static void s390_ipl_from_disk(VirtIOBlkCcw *dev, uint64_t pswaddr) > env->psw.addr = pswaddr; > env->psw.mask = IPL_PSW_MASK; > env->regs[7] = ccw_dev->sch->devno; > + env->regs[7] = (env->regs[7] << 16) | (ccw_dev->sch->schid); > + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->cssid); > + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->ssid); > + env->regs[8] = ccw_dev->loadparm; > s390_add_running_cpu(cpu); > } > > diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img > index b549a86e55194bbf54e25f839e52b490ac308260..fe8d2c6b9f5d937ea156084f7eb248b17e1fa89c 100644 > GIT binary patch > literal 17528 > zcmeHPe^4CPeSf=ma0fzoCCl<ja_q%s671OcKscqgr#T5skVlb;qNFHJA|oA$8zZ2{ > zNl`RzOKNqh)=J{>*s0UWAIubT8V_k#gf!5h<)+ni=tN0Kq8Yo5XG-T}M>V#EE$mVo > z@%s6G-`l(06N>SSJJUaIXSlcT?f3Vu_kDXe{P9D(TTIgsxyuxranB2(xrn<QQ#U&s > zd5nohQ7U4hOoTBf*b?>J;vqDrX6`7&?Rv!>8IJHu6=aNu(1Mz|qngp@P*mOL@PcZ- > z<7pZPh2a~qRIQ%7BjXXyhr|=Xc<Pn5Jl<VQC^Wa#H^KzXik~|&-si9uQtNB}BzqRG > zq6LZ;C|aOsfuaS97ARVvXn~>yiWVqZplE@j1wL{M%ug@0i|XuxY?Xg785GlPwlkWI > zIzytm-Ev0LHBw?_JR8GGkk^Cln2$9?#n|n_K4ptr=s94=CpU==piq^KovjhU`RTKk > z2!<AO^xGBvtWC7}Gnjb=2l5sATz4+LD1?H|%wqm)NEA^Rpt&(-Ip0s?Wkj3hT+CP^ > z{7Aapw#3L?!f3;&pS%nj`yk27kt&9HE@oS1#s>7$ps_8zO`K`BZGro`%qvpLKPAeb > zI0u}$^sOS0J}Dl|TFw~}+-J>(@fX~<0c+LywMf;-$AxHxG$VLRvZX4W5;rlg10)Y? > zQbAN1FATX1k{EJrAi2_8dHyop@3&?}`kZ_L&jJyFm5abhi7@09>vpqzolLpjrCi<t > z%eJ#+V`SM-C}-O?ZQFjxUY#8z3zIB?872Ar24RZ|d`883{v;Wzn8z+az_V&Dgn65m > zeppNLG4|2j^jZFP-be6`%hP6_95Im3X8FR`k#8-qIu3Q5uym|NHLM}Ze}j9+^$1yp > z=fQT%B5#}&H#02HCpU`?WX<wf=%hS8%<~!2eC6-RJ0B3UHQty7ybW)TLXObN;hY?> > zUKVoDr!&El(TZh7=+nu-6C}fP$ejs+h)3LY@OqHfzmt>gi;Pb><`A3^Wlh=_C&hY( > zebPhY)9^)q8gJv;qRx3>0tZyji%sxvP^<@L{bX3w0b`bB$~|GZ!vzvUvPn}=tbYoT > zIGWxn<$h4ZybkcQq#J9<_sFAgHmc_t5lrtAlvAH0nZpT^nf0Trp{KV=2|8QaA!qu2 > z#6OLT@=Qdi$On|mJtYSzld--oB3R?iMALjD9g))GsaB4$s5i!_W|UWD7p}&<9s_Oi > z1<MY(xB_5AEI`s{cUWVY^tP*)vep=~#`ByrW99Ej6VBrlLj;>Fi|T^lJUyb;08^Fz > zq_DI07@`uAf1K~w&ny3-DKv}yfQE-)Ih*fb8=AY=7+JRTHd9Pifnv32QV`&IGx0=q > zGSesJudZ1&P&1-rtFqH<tKU};D*h&K78@`}R5HX9*(mOnZ1?ecaQ%O3i{H%tsNl~s > z{w#Gp#JF8dy~gi}AHoOo(?5*(>bx&!C|8z$0YAXP#0mM6N!JJqd&W6D6J=C?5TWTi > zg+Q#L@)DoWzc7ZbN>W~3)Rs(%a>lw>V=anN1qppE;F29`0L$5a^#|T(Wa~^6()<N; > zcurG1sVQ#CQG60qLd##HOuaf$z&DhG>L<;v#xYkpe@<*->W}KIQ_%o#>&%?tES#Y% > zrOeUU_A%_GnKbWWPDW*Z`T=3^9pw+GGKDbnsY*A?f6HY}1{|Sp_*_ok`;faCj#!&@ > zxCwL=1!MtY&zP(bHv-zN3?!57Kqjt-UnN~Z9g)Cv|C;P%+zW_V<rU*jUT^31JN%Jw > zc9opW_Y_1KvS3%D`U#y?hY=jJ#U1D(tWy@c2y_sTf1LN>lqe<okfu_vnTT^*Tfth8 > zBFR$^YPcT2|M@+U>OuIkkU)1G@K!kRO<0k753UM`!duWE(EdTz0S(N`bF&!wiimGk > z;hT|P6dplZSsM&>f5bKZ8`ukx7wCepo|g*}J*FxYLyZCoa?ejYOZgniv>^ko_;y%G > zt+Qto`dgYeJj!>fQ&YVK<pbnG-4Oe%Hm+6jHLB?zd)X{kxInIa<wWelTdF2*f?tL; > z?<w#mn@r`R(&l^G)x%A;Eq215;5DWDoGH4;J~E8BeHEHUnJ-rhw|5~wg}#xG6hs?& > zh(0+g<<}{8C~C-qCTR!hNFVU1j8yTQJg57BXM|<yr=^~!ls}FLKC_iQOn1Us2QIin > z^{&LzQRoyUuHd(WeRC}5Q$TTs{3Uc)CD!uN|DW~FtM=x~N=oXndYk%jUnY4x?vXmz > zGp<gPZJ;QR-S^SZ%$*?=?HE~^&k)-`^ci9eJ!jUT^9;N={iG1hS;uKdoUgd?miHBV > zU&lG0Zm2H6(^x;_X7ZEOCDhq$#9!5QeXlDFd_N30+Q)~f8>Q|OyIKHib<`noOl3gD > zQx)>(ozg&dVP!#82BP%h0cR93&O7GW3gjKm2%0+8PvWFH+HJVwE=9i8WH~?5{mDsz > zvj<LY7UNdp$++$!D$t8@ZKY@J`13@`Am?Ydzb>pS<)j)1uRCBXRT*xAoDNrqE!ev) > zXIWIgxXxK{7POpG<YQOPl_Tj$OyCsv@2fuj7VsBDaAd0(<U8^oS#lZlm!27P-bGG3 > zJHZ1_;T_0Mb!Hg!Ry5>-j~n-HfWkT8ES=#}VjVqaAG87k6-7PsXn&lwe=J{z^Rbf8 > zYw$<(LXsbAzCQ-t(e&?%I?Q*Z_X~r0#EA#*#C)DBK_4sS(jTrRhCpu^^tMyXfS!t* > z2Um+5$d|9#=t98rM&+Gs8>FPYcAR$X;3d=uSdC;@`3f|cQ29qEXC3XlmbI-g*ItT$ > z;EK)qED=WZyAT%dpP-;RF7TxOHxF;%>=EV@z>o;5r&21bO$P9OU{Gh1OE2P~hs?k} > zY*004xu1sI;KXtput4<M{R1}e<R96Np&PDaFJ1Gzxepo1aum(Ou-H&KVqoWVhB#_! > zAvx6q?k*V%^#S4qTW#Bn)Q@}$k<YsbzgO5SK98*532OIIKRfwn&@D>%?a^ouPi~*T > z9lw=WAFH>>UPPBHuJ2JZf)tH8n{U*<0Xw$Q2f~x~@TuPGemiZz4vl<bMZ(t9*L)!D > zoR+~zJ)Ppzye(=|y(A57n|9$!R4gNBJ=#}^GFz_|?_#La1(cavhsS;Rrawb+dzJR_ > zScx+PTx1|c)@nYcej@O7M1{A@;&a&i4pAYXD*y<)L3^kQ_tX;;HH+d)bz+|VqA_=( > zRCVu0s(BP;@?Rm#u-F7_x1&~P0pt(fOxTF1aeYFkw_CTt=3IeRMyPgib=b&sMnHki > z%oE6^W~$scC8PJJZi}8Te;3a<C+VF+t7Vz$EtFcNxS=;6@|S9k3=)U}iYkSJ2vbsU > zWaQTXN8X1l=R8%gk#o%U?g3;|^H;EG{$zK(4lx7S50UKP&Ys8Vg0hQhc?LNhe(2|z > z(SB&TwQ{9_tnufTC?hEt<{wnO0wgM`5#Wp_KM|E_h8WdU3_LgaxxySm<x~~(jtu(6 > zhn^=tunj*84C*5<fZGMOeefB>nQpS2Y1$b*7HDM)MDzOq>;I@vfAVt_8diJjEp$e; > z%4?5I##=Y)h3Q=()@PJeupSi^n4iZSv5e1I?rG1bZ#4z)&s+HH(+FLK$uaQW<H!>_ > z%SGul28<bwJJqS)OS<i}oPTb@U%mq%Y~wxB{+$@Ko^fpqN}z!%UB!3R%-_u@kM^D% > zSgr5!^hxk1?|Un+kt7~lB93qZLIir=1M5AD>aFT;_(aGVwS0o2H-;S*bjaJ>>%gb= > znA7gcd%^oZA};ye)%Z5)xcD=?mHivCw0`dwZvHOd>PGgI#?t%g-7GSxYvk6_81#kb > z(lr+H#F-!&&__%WHpYLXxM_Yu*HT-{;m{m%P^BO_ETZ;4y)P#@Qld;hSMp_1OAtTM > z9Qm3*`%xSjkD$-f)+7tOD5=lWTwHB0DlP`g{QmC|7xXKm=w(J(YxHmYmMj99e?S_i > zZ*8oH6y@;$-|9XOZ;PnUV>mi5d){>7)D79j*ejt>W&!%*o!jECp*ap?V`F%+flHXe > z7{r2m?dh|RC6cK`-#rI=9=GG2#}bD+?XJF~z45AY1tTT>5)gG!wsa(VI^%Y#&+h5# > zh}(~R-tJ2F9kIJRl5snp7<ilzPV8#iEkvUCSVvDHZXfA5oH!&1I?;RB9_T!Lq_a0= > zcckotJ$;8B7osB`PYThc=q5WA*unnf0AO<K1?c6XTnu!kY%sD3AM)fV9PRBTMkf;e > zJz9E*Bq0?R4zMtGoe=%WzQf6mBX+9eU{9w|>K`EPUby-KI2)2D6P*JtFIOreeZQ?t > zb)0`M34Z!Irshq3M|<LSZ(qv(S~8L9v<FfhsiOmA$L_v?6xlh^n@HLHdOQY`sOyHE > zG2F;nvFqMP?1z%cK7Jze^bW%gY)aR2hx&TE5{Hi_JK)h?*MUUL*cNyIpY(giPe}R7 > z0`4D^^3^tsPh)%n<AjvI8O69D<t3Xc6h`>cY{hsS<8dkf3%|28&q(>2gYhLPUvI>| > zY)Sbh=mugKGZ_1&yxfivaF;<h0JzKG7Ys|e(2cQC%D3*u2)MUSV;sUbhjCWQw;Sju > zrx>5b7{v&BC6M#&moN@Wc?ET(#KG8uaSqiXjGvlDPzfPdDdc<y>!rsr4r2uWch6u1 > z|93AS1;Bp^{6gTrG=Z^O%Krg==y@sMtH3ye+{YLO|798hw+ubPfV;X6<MTpYn`kgj > z>=nlGN@H8a4MRu|y6(o`EmB@Qh4C@5``aboD*a~Yboi;V%9qUM_3O+%1p4!z{q+1# > z2pZiV{&oW%vH;f$KSS^Y!dC-6Q-GTS*IF-JOXaBm00YM6@*L@%c|4*&3SW;Cz89}@ > z)<>V@zJM6OAnv*ru02Pa0B`}`2!if1?$-+60Qe=qpZ3vLb~#bNfau2|4{UC{;DcWx > zxdX=YegxRZcowlci}92fzNK=mlo9$@wGZ(*kC?U*%jI6YO3i1<&xhcb5&NX~2_L-D > zquUQIAeVW!l=H2C|Be^FrIH<N{?V#pk$p|*KYs>z)n2^H4C%kOfDOY#|M~9$J}LHk > z;*R}neyM;B(LV?HIlv$D(VrvwX1ss_>9L4huL1l&dEr}hV82kn0C04HPXPMAK92jf > z<O9Kf8SobYzt77@v)Nf77r~#F@{RC^fS&?9@YXEP>wy0<;MWr8x1fe0|KC8(z;Epz > zeyVK!x`)@_ppzYI;2V4p&rx&5o@@1cqCh={?*V*2;G2E$96rfHc=##!J;0v?{9k$D > zTPhu@6Xu^>*H6I<z`F#zWiMXk8Af}pfD!a4LH@r<e(mzXt324Z3VZ|LUk7}n51#et > zDgY<FOA!BWE+XGdAH0gsg#rYENBm!&0sU3#=$8t>nLgtG@;T6-@X=@a1IG9L7(^fO > z|JLrc(=V+Cd@JC6er{0-e5}9?pkKNV@ZHzwdx`V0P+$1D^d$Dg2LX>AB%kjss&JW? > z3K&2Rx(E;Pe<g_fmDTWGT^*0)gZ@{}18=t%PwgXx<(upqg8o-1p5F7pEB{^co0sGY > zLI1^Zz!${rZ1A_lEx?Oc(E>#a6fID+K+yt43luF-v_R1UMGF)yP_#hN0{`zUK<DmF > z_zQey&lkkespJbcBsQ22|M#Ourr&vBpl-|fQ=e&Sy5FwB(>v{k+J@TSvFoFC_0jEh > z+wGdY_}--z-<$CIJ=^g!gxZ1bfm9M-VTjsP=kb)NJvcBRYVjpQXYJwMqqPT*CVJxc > zB;ukr*%$9fb%@%|?gL%;)}!-4H@<Vp%|z{?z9aOl%tvP~dIPOri3|Qe5TQAjxTS9* > zHSUTY!=CvD+`IDtt%nxer!jpq6m?hB=+fmGzB$YNe+H9Q2KE1u5JLT52`p99y5}O_ > zxEG9@lb`YN|1z|^HF`8IxxjjK<)taUVJgH||5pO95w)QFJ&Z=>!OQ>C*Wz!ZcZ#?^ > xsmIVMHP3x|`R~H2YySc}?Vxuobm1M1?{eX3q(8R14}vE<=JeX$f@dzi_+Pmx)SLhS > > literal 9432 > zcmeHNZ){W76+h25c_s<r5hCiA2yP;41r}UG!d56%pD6@rvts&Zm~|TsaUfPhLLGxp > zyJ^viw9r4pMQ!(GAFOuhO=~66jIN|Z>f406zuF>AsFk{@-d@ovnXb=mw5D|A?sx9< > zb4~Z9Q@{F3*XQ1I&pG$p-#z!-_iTS}TVHP=pi#91Xc^jyp%=r23g7f-XG&3%Zl(q@ > zsgV|<&$0`=aYGTk==FR`)NFbjpDH=lYw-9&5#9BAKJ|M1S%`b>s$R(JcjTFllXeXS > zE9#B=ROzwK|EWizbna5}Q@!iYvR%En@EQtMj`=7)Wxd_#>x%pNKf<41v@TgkppHNt > zfjR<p1nLOX5vU_jN1%>C9f3Lmbp$>?0;Tue!xVK~`G9=LzJ!<gSFKsRw(6ymuBrG0 > zeu2Wf{-s7wSm%hI)e2f7?-uNF@c(i8Po$ZXg+R(E(A0)JO?8qnVNkoZf`Zm@YD|f7 > zV%^~Lt({hmTC7(|vtF0)+5)fRUCQb>&uJU5_REwoJn1z&LetRMN+C7Q@<Am(WX;Ms > z-$#1}{5u`@DpueK7E0J|VLC*c)vRonLi)v^TQCUzgw?zO`;wIM_%mdO;M1N&-WFJm > zE+4^Kb$QG&^4C!wD+pk8uOsp>;Y{Wu6td$OA7aaazo_+eU({!4oGtHxWnF&5`W+Gc > zZF9OXVQ4x)ofz9`{ecYY𝔷mqjJlo9Ghc#6=h~A-do5+}a5o7^_>Yo1_GP%F4;V > zvB$wl=2J<vf1%o!tW{Dv=7&5>8+DdWeo(|hXW_L5t@o7VBT8}x>uIO!7X95?#lFdZ > zCh~caFg_?u3wjE&kAZg)c)sSQD9U&SEiWRh)$j)^o`2t-#OGzU7T9Ckkofk+;3U~q > zM1y-7(fPN4wm$!+(z)me1HLJpTNPHmPL6i7oV?%|GZE^rE>M@!y8tYq0=%M5d<Mu^ > ztF<Cp1eqvpwQi&)#%_KRp3cGYEcTEb<2F}@tXoI})=Pk|YuzY6!ip{{KNl(-VhV>o > zAgUscwlg=N)<X%$EW=N0wUnM+eO8USYDHOCdO=xgK<h0aqQU-e&^~V`fkP)e4>#-s > zvhAjT@2e;T+6ZbUg%Lq*Mr}hiQX)xHf;w<Q;uCRd*XMQJnQ@0Im}}3F;I-cZFIy9a > zp+(j$U;hljW=>wQP0Z3|ZK4*;8g7W0ag(e~at<^MdgT<Ef!6L*H<*oRH389P>w2Qw > zH9=dnBw5Sh^;hJTlrh5|w7~;0A*fx=9@6L8`hu%g1gA4h4W?n@%RMv9HmeqArQ^ki > z<IbOx4_RR;d4|YT#CD7_az&)|jiz!>xhEmYG}R+G57-kn^1yFl%Py~&TCaF&UdZg& > z5-*$98abCV%UhG8y!qMj@<uaR-h#27Q{&}LQ{76QCWzYK*yk49LPEHO$nvQTim!4^ > zEARIl_V1iJ1ETa=xxi-tv3#Cm+1jlU(EK%O5cMohbHp*QO(Dlb04(G9cH%~Wo|^sv > zMW>fh=Z?7DQ0l~Ynv2Z!M#vF%2q!siBNo98(W1z<)7$5z6NuwGM#rcbUBaWum*U}y > zj`69Exy5Ks#ce*NOG`=)`=~)XOyMN>)^23bxX}XdnxGBub{HaH-2g5q<dAoE*mi?y > z8v(U0>{#iHo8<gFU&LNSkSIg+Jn98&FLrt-8ICB2DVm6vDQT1m@f`lz637jluxTMU > zIF&d%hoP|vUiGPQ&DyIWzk;9Ue&5H?UI|;w_wr?GYC+lHSm`S{!h}~TG6nDietQj* > zGwIeu(k&#(Eg&|64&ogcZzOs&x_}-f+Ugjrg}lHT0vg9<2|PaO$V^Faa8AO!9@qyL > z>u*j8Q+WFyX`R}D6I8ihs(YVji{+J+FP$kL=G|u>a6T`x?<z+OBOVl9oZGbB$Zb1- > z+D7W;d<(=V@*GZhxNlsY_>;&=o<~~3bS=m&g^Zz2cZ9~1hE1neG?;4tqLDR_#_f<S > z*gyh%hp1p}wQEsN&b1JU5d%Bnp5e8bhWm5SanP65j9)($a$mt*uSC{hwspLRihl<p > zdle$@4E7T1D!uLJ3i=2;kNXbN?_hW64XMtDi94CIa7<;}))dam=`WGoBW4IEP2$9_ > zEWP~!Z1H`e&okz=eGjA3Qi@Y^CI7DoaAZxPo<?SBs>zgRTvz$Dlms;+UWi_b{L1>h > z=lRtioqioL*+yTkMi~3`Q>%j{qGT~gp=S%@Yo;UAg}IeIW$8&?#V0Rg58tz03g0<t > z&3-bitMAf#`!mCXX^|Th!=wFavFjdjAUk?U4E1NzBApp~u#xT>6-P7KTxN9b{^18j > zdhlpwU{D+wJu;H+Xe4@gXR?ndGjg<lIFlBK`VVFX=zwRF4Q56Tim}0ihXzM-jXpnn > zWMqW-4`&V!!-8jgUv{uR?MwKYEU}59xVGqSKrwWeI%-GI7j&%h+sRS?Hx&FRg3#xJ > zL`-z^dZiqroj2_g+p^iwENRPww_x}%>LMxsjrGtIplQ&vQhvnB??^e9Laet*`SAqk > zX3#%^-YeymW1u<U8wLHbl>Z5Vo|p0}qCvY1+Jl=h1Ud)WgI$B2z&ByD4Hbz|JJ!;? > zxS(;zE3iZD+|-Ns@XE5@lM8;>(A#2rD_6`ed~W5IUZe<9l;@P(lll|k#}_`<c%o^d > zxwoYd^u|~|$4$LR=b2*myZ%SMuf=Zg2HB6Fa8oY^nwdgAULy}l<qfX`Sg>4hGgFi; > zsJw=ExC8z;Q<N8bpRE3b1N&NtnR+qAzH#|kjs4!1ca`U`qp5Moz3GWjv6olqbugy& > zaZ@iYIOnmnXpNo68i88{10III+IP627aRV{6a{feZ0Bk2fd4L2lnd9`>1%nj27mVd > z0t@Ly{Y9oI4^-rVjanM>*zRR+=*4g|Q<SGaW4Cr+J&F2f9f3Lmbp+}Nd{G2A5%V1t > z+<w=6v^aD8yJt?^c=sLOzuexqvNJsYLg$t3x8J@=th(pEd$x(b%*c^rt3^+&JJuua > zKR7V3wr5}W+Wp!7k%1wR#k0>?W^_cX+pvD)SG&JOyT%Uh*-jK28yd@HbN%}%mK!{l > zquBnjF^Y|h<_2R2M~=kyAIS`-*Jjcb%Z{e|bNv(>9NKpv+ka?q-%vXHX^&z9qlfrO > zsoIFKPqAIed&j;g2CUzN>OW?vD_$>xqY9pjR0;d{Sfx+ZOAL%9sQfI%MO~+O-l`N) > zp@q25@u+WC_4t1<{^hT((ecXvOz?F?zM>bcP@mM!k9W(e|4JYC>7*wZsZj5E!dC|M > z{bklVRDb;yeeZuKMBe{UFrH(<no>LeZQy@KzY))PTyCh)fd3rkv9FyU??zSqxG&(* > zj<c0M-tDd_{(MaDM)muj)qk&|Re5x)+VJI>a;<p`s>-0z@nNMmSj$D**Qfsi-qmcN > > diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c > index 53a460d..9cd3edf 100644 > --- a/pc-bios/s390-ccw/bootmap.c > +++ b/pc-bios/s390-ccw/bootmap.c > @@ -173,7 +173,7 @@ fail: > return -1; > } > > -int zipl_load(void) > +int zipl_load(uint64_t load_parm) > { > struct mbr *mbr = (void*)sec; > uint8_t *ns, *ns_end; > @@ -223,7 +223,7 @@ int zipl_load(void) > > /* Run the default entry */ > > - prog_table_entry = (struct scsi_blockptr *)(sec + pte_len); > + prog_table_entry = (struct scsi_blockptr *)(sec + (pte_len *(1+load_parm))); > > return zipl_run(prog_table_entry); > > diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c > index fd40fa5..0c1c11c 100644 > --- a/pc-bios/s390-ccw/main.c > +++ b/pc-bios/s390-ccw/main.c > @@ -20,7 +20,7 @@ void virtio_panic(const char *string) > while (1) { } > } > > -static void virtio_setup(void) > +static void virtio_setup(uint16_t dev_no) > { > struct schib schib; > int i; > @@ -35,7 +35,7 @@ static void virtio_setup(void) > if (r == 3) { > break; > } > - if (schib.pmcw.dnv) { > + if (schib.pmcw.dnv && (schib.pmcw.dev == dev_no)) { What if I have no dev_no passed in? We need to support the mode where the user doesn't specify any device he wants to boot from. > if (virtio_is_blk(blk_schid)) { > found = true; > break; > @@ -52,10 +52,24 @@ static void virtio_setup(void) > > int main(void) > { > + uint64_t boot_value; > + uint64_t load_parm; > + register uint64_t reg7 asm("7"); > + register uint64_t reg8 asm("8"); > + > + asm volatile( > + " stg %2, %0\n" > + " stg %3, %1\n" > + : "=m" (boot_value), "=m" (load_parm) > + : "d" (reg7), "d" (reg8) > + : "cc"); What is this for? If you have a local register variable, won't that value get saved automatically? Alex > + > sclp_setup(); > - virtio_setup(); > - if (zipl_load() < 0) > + virtio_setup(boot_value >> 32); > + > + if (zipl_load(load_parm) < 0) { > sclp_print("Failed to load OS from hard disk\n"); > + } > disabled_wait(); > while (1) { } > } > diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h > index 8241b0a..2851995 100644 > --- a/pc-bios/s390-ccw/s390-ccw.h > +++ b/pc-bios/s390-ccw/s390-ccw.h > @@ -63,7 +63,7 @@ void virtio_setup_block(struct subchannel_id schid); > int virtio_read(ulong sector, void *load_addr); > > /* bootmap.c */ > -int zipl_load(void); > +int zipl_load(uint64_t load_parm); > > static inline void *memset(void *s, int c, size_t n) > { > -- > 1.7.9.5 >
On Fri, 26 Apr 2013 18:56:44 +0200 Alexander Graf <agraf@suse.de> wrote: > > On 26.04.2013, at 14:12, Dominik Dingel wrote: > > > Pass the eboot device info and the loadparm in register 7 and 8. > > Use this values in the BIOS to directly boot the respective > > operating system. > > > > Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com> > > > > diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c > > index 36daa67..960ba71 100644 > > --- a/hw/s390x/ipl.c > > +++ b/hw/s390x/ipl.c > > @@ -77,6 +77,10 @@ static void s390_ipl_from_disk(VirtIOBlkCcw *dev, uint64_t pswaddr) > > env->psw.addr = pswaddr; > > env->psw.mask = IPL_PSW_MASK; > > env->regs[7] = ccw_dev->sch->devno; > > + env->regs[7] = (env->regs[7] << 16) | (ccw_dev->sch->schid); > > + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->cssid); > > + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->ssid); > > + env->regs[8] = ccw_dev->loadparm; > > s390_add_running_cpu(cpu); > > } > > > > diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img > > index b549a86e55194bbf54e25f839e52b490ac308260..fe8d2c6b9f5d937ea156084f7eb248b17e1fa89c 100644 > > GIT binary patch > > literal 17528 > > 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 > > > > literal 9432 > > zcmeHNZ){W76+h25c_s<r5hCiA2yP;41r}UG!d56%pD6@rvts&Zm~|TsaUfPhLLGxp > > zyJ^viw9r4pMQ!(GAFOuhO=~66jIN|Z>f406zuF>AsFk{@-d@ovnXb=mw5D|A?sx9< > > zb4~Z9Q@{F3*XQ1I&pG$p-#z!-_iTS}TVHP=pi#91Xc^jyp%=r23g7f-XG&3%Zl(q@ > > zsgV|<&$0`=aYGTk==FR`)NFbjpDH=lYw-9&5#9BAKJ|M1S%`b>s$R(JcjTFllXeXS > > zE9#B=ROzwK|EWizbna5}Q@!iYvR%En@EQtMj`=7)Wxd_#>x%pNKf<41v@TgkppHNt > > zfjR<p1nLOX5vU_jN1%>C9f3Lmbp$>?0;Tue!xVK~`G9=LzJ!<gSFKsRw(6ymuBrG0 > > zeu2Wf{-s7wSm%hI)e2f7?-uNF@c(i8Po$ZXg+R(E(A0)JO?8qnVNkoZf`Zm@YD|f7 > > zV%^~Lt({hmTC7(|vtF0)+5)fRUCQb>&uJU5_REwoJn1z&LetRMN+C7Q@<Am(WX;Ms > > z-$#1}{5u`@DpueK7E0J|VLC*c)vRonLi)v^TQCUzgw?zO`;wIM_%mdO;M1N&-WFJm > > zE+4^Kb$QG&^4C!wD+pk8uOsp>;Y{Wu6td$OA7aaazo_+eU({!4oGtHxWnF&5`W+Gc > > zZF9OXVQ4x)ofz9`{ecYY𝔷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 > > > > diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c > > index 53a460d..9cd3edf 100644 > > --- a/pc-bios/s390-ccw/bootmap.c > > +++ b/pc-bios/s390-ccw/bootmap.c > > @@ -173,7 +173,7 @@ fail: > > return -1; > > } > > > > -int zipl_load(void) > > +int zipl_load(uint64_t load_parm) > > { > > struct mbr *mbr = (void*)sec; > > uint8_t *ns, *ns_end; > > @@ -223,7 +223,7 @@ int zipl_load(void) > > > > /* Run the default entry */ > > > > - prog_table_entry = (struct scsi_blockptr *)(sec + pte_len); > > + prog_table_entry = (struct scsi_blockptr *)(sec + (pte_len *(1+load_parm))); > > > > return zipl_run(prog_table_entry); > > > > diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c > > index fd40fa5..0c1c11c 100644 > > --- a/pc-bios/s390-ccw/main.c > > +++ b/pc-bios/s390-ccw/main.c > > @@ -20,7 +20,7 @@ void virtio_panic(const char *string) > > while (1) { } > > } > > > > -static void virtio_setup(void) > > +static void virtio_setup(uint16_t dev_no) > > { > > struct schib schib; > > int i; > > @@ -35,7 +35,7 @@ static void virtio_setup(void) > > if (r == 3) { > > break; > > } > > - if (schib.pmcw.dnv) { > > + if (schib.pmcw.dnv && (schib.pmcw.dev == dev_no)) { > > What if I have no dev_no passed in? We need to support the mode where the user doesn't specify any device he wants to boot from. There is actually no code path where you would boot the BIOS and at the sametime have no device passed in. > > > if (virtio_is_blk(blk_schid)) { > > found = true; > > break; > > @@ -52,10 +52,24 @@ static void virtio_setup(void) > > > > int main(void) > > { > > + uint64_t boot_value; > > + uint64_t load_parm; > > + register uint64_t reg7 asm("7"); > > + register uint64_t reg8 asm("8"); > > + > > + asm volatile( > > + " stg %2, %0\n" > > + " stg %3, %1\n" > > + : "=m" (boot_value), "=m" (load_parm) > > + : "d" (reg7), "d" (reg8) > > + : "cc"); > > What is this for? If you have a local register variable, won't that value get saved automatically? It's a real verbose way to say here in this register we have the boot parameter stored in... And my confidence in understanding local register variables is not so that I would hope to get it perfectly right. > > Alex > > > + > > sclp_setup(); > > - virtio_setup(); > > - if (zipl_load() < 0) > > + virtio_setup(boot_value >> 32); > > + > > + if (zipl_load(load_parm) < 0) { > > sclp_print("Failed to load OS from hard disk\n"); > > + } > > disabled_wait(); > > while (1) { } > > } > > diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h > > index 8241b0a..2851995 100644 > > --- a/pc-bios/s390-ccw/s390-ccw.h > > +++ b/pc-bios/s390-ccw/s390-ccw.h > > @@ -63,7 +63,7 @@ void virtio_setup_block(struct subchannel_id schid); > > int virtio_read(ulong sector, void *load_addr); > > > > /* bootmap.c */ > > -int zipl_load(void); > > +int zipl_load(uint64_t load_parm); > > > > static inline void *memset(void *s, int c, size_t n) > > { > > -- > > 1.7.9.5 > > >
On 26.04.2013, at 19:55, Dominik Dingel wrote: > On Fri, 26 Apr 2013 18:56:44 +0200 > Alexander Graf <agraf@suse.de> wrote: > >> >> On 26.04.2013, at 14:12, Dominik Dingel wrote: >> >>> Pass the eboot device info and the loadparm in register 7 and 8. >>> Use this values in the BIOS to directly boot the respective >>> operating system. >>> >>> Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com> >>> >>> diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c >>> index 36daa67..960ba71 100644 >>> --- a/hw/s390x/ipl.c >>> +++ b/hw/s390x/ipl.c >>> @@ -77,6 +77,10 @@ static void s390_ipl_from_disk(VirtIOBlkCcw *dev, uint64_t pswaddr) >>> env->psw.addr = pswaddr; >>> env->psw.mask = IPL_PSW_MASK; >>> env->regs[7] = ccw_dev->sch->devno; >>> + env->regs[7] = (env->regs[7] << 16) | (ccw_dev->sch->schid); >>> + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->cssid); >>> + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->ssid); >>> + env->regs[8] = ccw_dev->loadparm; >>> s390_add_running_cpu(cpu); >>> } >>> >>> diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img >>> index b549a86e55194bbf54e25f839e52b490ac308260..fe8d2c6b9f5d937ea156084f7eb248b17e1fa89c 100644 >>> GIT binary patch >>> literal 17528 >>> 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 >>> >>> literal 9432 >>> zcmeHNZ){W76+h25c_s<r5hCiA2yP;41r}UG!d56%pD6@rvts&Zm~|TsaUfPhLLGxp >>> zyJ^viw9r4pMQ!(GAFOuhO=~66jIN|Z>f406zuF>AsFk{@-d@ovnXb=mw5D|A?sx9< >>> zb4~Z9Q@{F3*XQ1I&pG$p-#z!-_iTS}TVHP=pi#91Xc^jyp%=r23g7f-XG&3%Zl(q@ >>> zsgV|<&$0`=aYGTk==FR`)NFbjpDH=lYw-9&5#9BAKJ|M1S%`b>s$R(JcjTFllXeXS >>> zE9#B=ROzwK|EWizbna5}Q@!iYvR%En@EQtMj`=7)Wxd_#>x%pNKf<41v@TgkppHNt >>> zfjR<p1nLOX5vU_jN1%>C9f3Lmbp$>?0;Tue!xVK~`G9=LzJ!<gSFKsRw(6ymuBrG0 >>> zeu2Wf{-s7wSm%hI)e2f7?-uNF@c(i8Po$ZXg+R(E(A0)JO?8qnVNkoZf`Zm@YD|f7 >>> zV%^~Lt({hmTC7(|vtF0)+5)fRUCQb>&uJU5_REwoJn1z&LetRMN+C7Q@<Am(WX;Ms >>> z-$#1}{5u`@DpueK7E0J|VLC*c)vRonLi)v^TQCUzgw?zO`;wIM_%mdO;M1N&-WFJm >>> zE+4^Kb$QG&^4C!wD+pk8uOsp>;Y{Wu6td$OA7aaazo_+eU({!4oGtHxWnF&5`W+Gc >>> zZF9OXVQ4x)ofz9`{ecYY𝔷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 >>> >>> diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c >>> index 53a460d..9cd3edf 100644 >>> --- a/pc-bios/s390-ccw/bootmap.c >>> +++ b/pc-bios/s390-ccw/bootmap.c >>> @@ -173,7 +173,7 @@ fail: >>> return -1; >>> } >>> >>> -int zipl_load(void) >>> +int zipl_load(uint64_t load_parm) >>> { >>> struct mbr *mbr = (void*)sec; >>> uint8_t *ns, *ns_end; >>> @@ -223,7 +223,7 @@ int zipl_load(void) >>> >>> /* Run the default entry */ >>> >>> - prog_table_entry = (struct scsi_blockptr *)(sec + pte_len); >>> + prog_table_entry = (struct scsi_blockptr *)(sec + (pte_len *(1+load_parm))); >>> >>> return zipl_run(prog_table_entry); >>> >>> diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c >>> index fd40fa5..0c1c11c 100644 >>> --- a/pc-bios/s390-ccw/main.c >>> +++ b/pc-bios/s390-ccw/main.c >>> @@ -20,7 +20,7 @@ void virtio_panic(const char *string) >>> while (1) { } >>> } >>> >>> -static void virtio_setup(void) >>> +static void virtio_setup(uint16_t dev_no) >>> { >>> struct schib schib; >>> int i; >>> @@ -35,7 +35,7 @@ static void virtio_setup(void) >>> if (r == 3) { >>> break; >>> } >>> - if (schib.pmcw.dnv) { >>> + if (schib.pmcw.dnv && (schib.pmcw.dev == dev_no)) { >> >> What if I have no dev_no passed in? We need to support the mode where the user doesn't specify any device he wants to boot from. > > There is actually no code path where you would boot the BIOS and at the sametime have no device passed in. If we drop patch 1 there is will be. > >> >>> if (virtio_is_blk(blk_schid)) { >>> found = true; >>> break; >>> @@ -52,10 +52,24 @@ static void virtio_setup(void) >>> >>> int main(void) >>> { >>> + uint64_t boot_value; >>> + uint64_t load_parm; >>> + register uint64_t reg7 asm("7"); >>> + register uint64_t reg8 asm("8"); >>> + >>> + asm volatile( >>> + " stg %2, %0\n" >>> + " stg %3, %1\n" >>> + : "=m" (boot_value), "=m" (load_parm) >>> + : "d" (reg7), "d" (reg8) >>> + : "cc"); >> >> What is this for? If you have a local register variable, won't that value get saved automatically? > > It's a real verbose way to say here in this register we have the boot parameter stored in... And my confidence in understanding local register variables is not so that I would hope to get it perfectly right. Then grab yourself someone who knows :). Alex
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index 36daa67..960ba71 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -77,6 +77,10 @@ static void s390_ipl_from_disk(VirtIOBlkCcw *dev, uint64_t pswaddr) env->psw.addr = pswaddr; env->psw.mask = IPL_PSW_MASK; env->regs[7] = ccw_dev->sch->devno; + env->regs[7] = (env->regs[7] << 16) | (ccw_dev->sch->schid); + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->cssid); + env->regs[7] = (env->regs[7] << 8) | (ccw_dev->sch->ssid); + env->regs[8] = ccw_dev->loadparm; s390_add_running_cpu(cpu); } diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img index b549a86e55194bbf54e25f839e52b490ac308260..fe8d2c6b9f5d937ea156084f7eb248b17e1fa89c 100644 GIT binary patch literal 17528 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 literal 9432 zcmeHNZ){W76+h25c_s<r5hCiA2yP;41r}UG!d56%pD6@rvts&Zm~|TsaUfPhLLGxp zyJ^viw9r4pMQ!(GAFOuhO=~66jIN|Z>f406zuF>AsFk{@-d@ovnXb=mw5D|A?sx9< zb4~Z9Q@{F3*XQ1I&pG$p-#z!-_iTS}TVHP=pi#91Xc^jyp%=r23g7f-XG&3%Zl(q@ zsgV|<&$0`=aYGTk==FR`)NFbjpDH=lYw-9&5#9BAKJ|M1S%`b>s$R(JcjTFllXeXS zE9#B=ROzwK|EWizbna5}Q@!iYvR%En@EQtMj`=7)Wxd_#>x%pNKf<41v@TgkppHNt zfjR<p1nLOX5vU_jN1%>C9f3Lmbp$>?0;Tue!xVK~`G9=LzJ!<gSFKsRw(6ymuBrG0 zeu2Wf{-s7wSm%hI)e2f7?-uNF@c(i8Po$ZXg+R(E(A0)JO?8qnVNkoZf`Zm@YD|f7 zV%^~Lt({hmTC7(|vtF0)+5)fRUCQb>&uJU5_REwoJn1z&LetRMN+C7Q@<Am(WX;Ms z-$#1}{5u`@DpueK7E0J|VLC*c)vRonLi)v^TQCUzgw?zO`;wIM_%mdO;M1N&-WFJm zE+4^Kb$QG&^4C!wD+pk8uOsp>;Y{Wu6td$OA7aaazo_+eU({!4oGtHxWnF&5`W+Gc zZF9OXVQ4x)ofz9`{ecYY𝔷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 diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c index 53a460d..9cd3edf 100644 --- a/pc-bios/s390-ccw/bootmap.c +++ b/pc-bios/s390-ccw/bootmap.c @@ -173,7 +173,7 @@ fail: return -1; } -int zipl_load(void) +int zipl_load(uint64_t load_parm) { struct mbr *mbr = (void*)sec; uint8_t *ns, *ns_end; @@ -223,7 +223,7 @@ int zipl_load(void) /* Run the default entry */ - prog_table_entry = (struct scsi_blockptr *)(sec + pte_len); + prog_table_entry = (struct scsi_blockptr *)(sec + (pte_len *(1+load_parm))); return zipl_run(prog_table_entry); diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c index fd40fa5..0c1c11c 100644 --- a/pc-bios/s390-ccw/main.c +++ b/pc-bios/s390-ccw/main.c @@ -20,7 +20,7 @@ void virtio_panic(const char *string) while (1) { } } -static void virtio_setup(void) +static void virtio_setup(uint16_t dev_no) { struct schib schib; int i; @@ -35,7 +35,7 @@ static void virtio_setup(void) if (r == 3) { break; } - if (schib.pmcw.dnv) { + if (schib.pmcw.dnv && (schib.pmcw.dev == dev_no)) { if (virtio_is_blk(blk_schid)) { found = true; break; @@ -52,10 +52,24 @@ static void virtio_setup(void) int main(void) { + uint64_t boot_value; + uint64_t load_parm; + register uint64_t reg7 asm("7"); + register uint64_t reg8 asm("8"); + + asm volatile( + " stg %2, %0\n" + " stg %3, %1\n" + : "=m" (boot_value), "=m" (load_parm) + : "d" (reg7), "d" (reg8) + : "cc"); + sclp_setup(); - virtio_setup(); - if (zipl_load() < 0) + virtio_setup(boot_value >> 32); + + if (zipl_load(load_parm) < 0) { sclp_print("Failed to load OS from hard disk\n"); + } disabled_wait(); while (1) { } } diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h index 8241b0a..2851995 100644 --- a/pc-bios/s390-ccw/s390-ccw.h +++ b/pc-bios/s390-ccw/s390-ccw.h @@ -63,7 +63,7 @@ void virtio_setup_block(struct subchannel_id schid); int virtio_read(ulong sector, void *load_addr); /* bootmap.c */ -int zipl_load(void); +int zipl_load(uint64_t load_parm); static inline void *memset(void *s, int c, size_t n) {
Pass the eboot device info and the loadparm in register 7 and 8. Use this values in the BIOS to directly boot the respective operating system. Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com>