On Tue, Apr 20, 2010 at 07:37:13PM +0200, Alexander Graf wrote: > This patch adds a firmware blob to the S390 target. The blob is a simple > implementation of a virtio client that tries to read the second stage > bootloader from sectors described as of offset 0x20 in the MBR. > > In combination with an updated zipl this allows for booting from virtio > block devices. This firmware is built from the same sources as the second > stage bootloader. You can find a virtio capable s390-tools in this repo: > > git://repo.or.cz/s390-tools.git > > Signed-off-by: Alexander Graf <ag...@suse.de> >
Thanks, applied. > v1 -> v2: > > - Update bootloader code to support booting from non-virtio aware > zipl disks. Now you don't need to modify zipl in the guest anymore > just to boot. > - Add safety checks > - Add documentation on where to find the sources > - Make bios optional > > v2 -> v3: > > - Add brackets > > v3 -> v4: > > - Add s390-zipl.rom to BLOBs > --- > Makefile | 3 ++- > hw/s390-virtio.c | 26 ++++++++++++++++++++++++++ > pc-bios/README | 5 +++++ > pc-bios/s390-zipl.rom | Bin 0 -> 3344 bytes > 4 files changed, 33 insertions(+), 1 deletions(-) > create mode 100755 pc-bios/s390-zipl.rom > > diff --git a/Makefile b/Makefile > index a404fda..5523af7 100644 > --- a/Makefile > +++ b/Makefile > @@ -178,7 +178,8 @@ pxe-e1000.bin \ > pxe-ne2k_pci.bin pxe-pcnet.bin \ > pxe-rtl8139.bin pxe-virtio.bin \ > bamboo.dtb petalogix-s3adsp1800.dtb \ > -multiboot.bin linuxboot.bin > +multiboot.bin linuxboot.bin \ > +s390-zipl.rom > else > BLOBS= > endif > diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c > index c36a8b2..898f442 100644 > --- a/hw/s390-virtio.c > +++ b/hw/s390-virtio.c > @@ -52,6 +52,10 @@ > #define INITRD_PARM_SIZE 0x010410UL > #define PARMFILE_START 0x001000UL > > +#define ZIPL_START 0x009000UL > +#define ZIPL_LOAD_ADDR 0x009000UL > +#define ZIPL_FILENAME "s390-zipl.rom" > + > #define MAX_BLK_DEVS 10 > > static VirtIOS390Bus *s390_bus; > @@ -188,6 +192,28 @@ static void s390_init(ram_addr_t ram_size, > > env->psw.addr = KERN_IMAGE_START; > env->psw.mask = 0x0000000180000000ULL; > + } else { > + ram_addr_t bios_size = 0; > + char *bios_filename; > + > + /* Load zipl bootloader */ > + if (bios_name == NULL) { > + bios_name = ZIPL_FILENAME; > + } > + > + bios_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); > + bios_size = load_image(bios_filename, > qemu_get_ram_ptr(ZIPL_LOAD_ADDR)); > + > + if ((long)bios_size < 0) { > + hw_error("could not load bootloader '%s'\n", bios_name); > + } > + > + if (bios_size > 4096) { > + hw_error("stage1 bootloader is > 4k\n"); > + } > + > + env->psw.addr = ZIPL_START; > + env->psw.mask = 0x0000000180000000ULL; > } > > if (initrd_filename) { > diff --git a/pc-bios/README b/pc-bios/README > index 437ef1c..be86dde 100644 > --- a/pc-bios/README > +++ b/pc-bios/README > @@ -28,3 +28,8 @@ > virtio 1af4:1000 > > http://rom-o-matic.net/ > + > +- The S390 zipl loader is an addition to the official IBM s390-tools > + package. That fork is maintained in its own git repository at: > + git://repo.or.cz/s390-tools.git > + > diff --git a/pc-bios/s390-zipl.rom b/pc-bios/s390-zipl.rom > new file mode 100755 > index > 0000000000000000000000000000000000000000..915995087824864cfa362176886e94c4473d8c6f > GIT binary patch > literal 3344 > zcmZuzdvH|M8UOC?hP%xJ4gtdQD4v7`l7hGiv0$LMH$WPE;37(cwKWR~A(EFNp#nu# > zjrGx5msD)4?yicxbf7ieii...@%rc=j5cfh8xolzf_g>;?jK$-r6`Zv-*+|vE!~-W > z_nhy3&)@er...@pyrlbq<GPPh*p3n9w5m&=)LX($^#`b2m...@2~tzyuu5f&msF^_ > zybHYv_cav~6a}9nAQk|n?~tT%he}93BWbFdOMcZuWAX1(T{J-rQJy2*U(wEI1&!|? > zpsn}frgh_gocqk12h6jjhpy8ogos...@5_;%)IH=QCO`s2;RJl=XE>*=nFYQ3JN$; > znmq...@6p<(a!#-DcoN~CAATIRHlRsDu`ByK%KAyY!Q?I6{yK%IMNPMFm!9*{HtEb > zQY*=bkqkzK9POl`F&vG^{1~KQDG$7`R4b&9CBfr!gdL)Q_AL;N3ZHp3bJVQ|e#ZdB > zfV$+>!OLnqs}AKbK5mL5CCZdjKIJ=t+2Cn0ICAj3(;o...@lv)iPqd^Kh8P1`8AKef1 > zidbGpr*&lIAvveN7!qL`rAo<wq<|zmQj>s#l)zz)j0RMXcM9K0h43sOiis$rP~r%- > z;zZAJ3`fsl9gT>5...@gkna|rrS6Y%yEw*xT=&pXwDnCf?N9rVx)c...@0zrxywkf5o > z^e*pn&?}&SsVyP#m|8<*pY=SiSnoHh+gRf{AZZVQ`fzq_UPX>IcCb*(o<hreYB>qW > zBTJ~4uoZDrF~qO+tOd_H?Dn$mtDk~<k*2R!%YCHQ7=BIvCuH7$7DIol1>l9...@os > zebK(n0t%(TLb`8I5?BBcbBMdZe<3rSB;{x3QH1i<z...@m1mx_xp>p-ue!C_oco>3 > zIOb-QxJI&4eMLH&y...@i^&nSAQ0qff8QKl6{{*C7RQr*=KWMaPVLu!6dz~n%qX4UL > zVF{`)Xrmkh3$?dZpqAlTq<2l~6-xd82i*akvkzeb...@ik15tv8oybdue$%@sDN|3 > z8yWWZ1@;s*...@5bje*dpwftckl)y7TkQ_K57_m1KVm2Fev0RS=4!T+*gwyEhX#p~ > zg&g0...@vitcqw{>1sy|`Y5UHrjWHXMrt(qtV%)F9$iD-*!vOPTTUb$qVO)NCnuT~ > z6m|yF=sqWfCJZ~VbP&DYMf=|>K1Qf*pL(D6A`gOgI<Xk)7M)(<#1i1j...@u?%dyz > zj`...@t)PI;A)y{&5Mx}L%#={NP=y|l8~?}BZ0p8F6Kr89;jM$b~FMnY-o=~lLXzB > zH)v%|ktB3nmri~`x;HSWySLY<=MGxIXr1^=HpUy{<G#5T;{qLH7gb`Ka(r?)zVevp > zp#Sy5ksXW-5V7V-9itQJ_>xy0|Hmus&2zm5tcpQDC4tSy{ke2T-RDi~yFEcXXLK!8 > z_1%;x<xV+qxGo|B*ojy~0vmx+#4hASebDbn-aFFAxzhEfXI#5`Y`ESIx-oc}orV<( > z`jE>i%xzQ*SG9j^t&|j%?mpi6YOG>OyG+ToGz-4HXQx12Xr<kKz%p-1d5SFCHmW1w > zNAF*G9a9*Zz&RV0JQin$tMz2R?qy#f$8*;ho^=P^i|kqen...@`cfvcceugxvd))j > zpWBBzXA4ijcAv(<#FvFUPcW7AB)R;1^sAmc$3N4&K6EShcp0j6NO$sVO|Q2jM8-+f > z7jo_Pp(9ES;16PQ(gg1B>S#(M4=JJUfQ5y4W)8=)RO?uLV+_c>p^*%8oH&2p=5vzI > zA78niLZJ4&osjB?%;uCQL=h^HyFjLqH?4WMy2bN2et42&pM|g2ryr*p...@1x_s^x > z6o...@zi(t|3{TALpS>4JVhPU1-e1Xpql7?rY6ZCJYkg2VczU;7jXWs)Z<KoMa$NA > z3O&891Q~nd^nl+@>4~7{obh+|>hk-$$mWxGgN2#TbLjXscwg%zI=J4_D2srTOkq~T > zL!OxnwA5)mfk...@aom3cu*cg@pTQyz?{g>G-nZ}MK<>7!?E{*o~u3p`bRN8yF3Rs > zj{%O?cv<V+0o&89R7zUne5zm4ZtzcWL~0^(is...@qumy1o5sv)vBc$z%i937M#&1 > z...@dszdz`<{^)vDC<oam=Kp>ZB(cAP&6#D?pVb7&mqUOi4DndD9|mOBg?$E*>&+%({~ > z3anlc...@pbtx^m0vjkblb1iozn_wcnzjv1%mj6gnar}+zxbk#$(lF7)(75Eb;y0K > z...@kyej^viwh0xvyg8md<zJw2XHftL=08qowuYA=q?vF`Hc6mH9D;$AIq9Aor3ps > z^y+U+r4xGn=aK2*d0A;-aqaf...@uh`j^q-;+}_!({hLS?KL5?y_Bb|<XyjET-q~o > z...@ra&xbPt!q<Lds-xMp=MB>u48Y^_n_n?^;Ed19FBm;Wj4d2z<_68sBvABks%hp< > zoT8UGqwrV6%K*Q|pc...@5!f0qsxhy-uvyji%mq~&wS#UXP?{sBlGz)-wA)MY~gor > zzqz18syjr=nr8}...@*2$&#koQC~GZI_n!HW_<0shQ{?x8=8N65ae?gAKuu~+ScCj > zNasGa)9f|>@z|!W?#<tObj#M?9ALRue(}...@%qtk=kk;Vew$UjWa+Y+Z`Lk1fAZq4 > z*UasA+<djceaem{yw...@t^mb*@g8w...@$z`g}n;e...@jgrk=2hpm_4x~kgthn= > z&mu9G3UY~VUMy)@m29kt=aR(!`fuy<*j+@;ZJXmQ%?+|O-qgH~*2kM$8XIIwd%U5! > ztx0ZbY-(+6>&hlwcxq...@0-um+<aqZtm=AZhxq=G2Sr3F(SzvRgzY;%Pf-?k?Y&L > z+ZyJ|ns`ekt63xgw^4sr!**md...@ccy~*egvhj+br=f(P1Yyyv2uCOD!IP1y;W|A > QcQ(j|=1m*F6cobyFEAqGg#Z8m > > literal 0 > HcmV?d00001 > > -- > 1.6.0.2 > > > > -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurel...@aurel32.net http://www.aurel32.net