On 12.07.2017 12:53, Thomas Huth wrote: > On 12.07.2017 10:33, Christian Borntraeger wrote: >> On 07/11/2017 03:56 PM, Thomas Huth wrote: >>> It's already possible to do a network boot of an s390x guest with an >>> external netboot image based on a Linux installation, but it would >>> be much more convenient if the s390-ccw firmware supported network >>> booting right out of the box, without the need to assemble such an >>> external image first. >>> >>> This patch series now introduces a s390-netboot.img that can be used >>> for network booting via DHCP and TFTP by re-using the networking stack >>> from the SLOF firmware (see https://github.com/aik/SLOF/ for details), >>> and adds a driver for virtio-net-ccw devices. >>> >>> The code can only be built if the roms/SLOF submodule has been checked >>> out (there is a sanity check for this in the Makefile). Once it has >>> been built, you can download a combined kernel + initrd image via TFTP >>> by starting QEMU for example with: >>> >>> qemu-system-s390x ... -device virtio-net,netdev=n1,bootindex=1 \ >>> -netdev user,id=n1,tftp=/path/to/tftp,bootfile=kernel.img >>> >>> Note that this version does not support downloading via config >>> files (i.e. pxelinux config files or .INS config files) yet. This >>> will be added later. >>> >>> v4: >>> - Cosmetic clean-ups according to the review feedback from v3 >>> - Fixed bug in the find_dev() function (spotted by Cornelia in v3) >>> - Added an additional patch to remove some unused structs from >>> virtio.h >>> >>> v3: >>> - Adressed the review feedback from v2 >>> - The last remaining SLOF patch has now been merged (big thanks to >>> Alexey!), so not sending this as RFC anymore - it is ready now for >>> integration, I think. >>> >>> v2: >>> - Put the network boot loader into a separate s390-netboot.img >>> binary instead of linking it directly into the s390-ccw firmware. >>> - Use the SLOF sources from the roms/SLOF/ submodule instead of >>> copying them into the pc-bios/s390-ccw folder >>> - Removed the .INS config file loading code for now - only support >>> combined kernel + initrd images in this initial implementation. >>> >>> Thomas Huth (11): >>> pc-bios/s390-ccw: Move libc functions to separate header >>> pc-bios/s390-ccw: Move ebc2asc to sclp.c >>> pc-bios/s390-ccw: Move virtio-block related functions into a separate >>> file >>> pc-bios/s390-ccw: Add a write() function for stdio >>> pc-bios/s390-ccw: Move byteswap functions to a separate header >>> pc-bios/s390-ccw: Remove unused structs from virtio.h >>> pc-bios/s390-ccw: Add code for virtio feature negotiation >>> roms/SLOF: Update submodule to latest status >>> pc-bios/s390-ccw: Add core files for the network bootloading program >>> pc-bios/s390-ccw: Add virtio-net driver code >>> pc-bios/s390-ccw: Link libnet into the netboot image and do the TFTP >>> load >>> >>> pc-bios/s390-ccw/Makefile | 13 +- >>> pc-bios/s390-ccw/bootmap.c | 2 + >>> pc-bios/s390-ccw/bootmap.h | 26 --- >>> pc-bios/s390-ccw/bswap.h | 30 ++++ >>> pc-bios/s390-ccw/libc.h | 45 +++++ >>> pc-bios/s390-ccw/main.c | 14 +- >>> pc-bios/s390-ccw/netboot.mak | 51 ++++++ >>> pc-bios/s390-ccw/netmain.c | 362 >>> +++++++++++++++++++++++++++++++++++++++ >>> pc-bios/s390-ccw/s390-ccw.h | 33 +--- >>> pc-bios/s390-ccw/sclp.c | 37 ++-- >>> pc-bios/s390-ccw/virtio-blkdev.c | 296 ++++++++++++++++++++++++++++++++ >>> pc-bios/s390-ccw/virtio-net.c | 135 +++++++++++++++ >>> pc-bios/s390-ccw/virtio-scsi.c | 1 + >>> pc-bios/s390-ccw/virtio.c | 306 ++++----------------------------- >>> pc-bios/s390-ccw/virtio.h | 46 ++--- >>> roms/SLOF | 2 +- >>> 16 files changed, 1011 insertions(+), 388 deletions(-) >>> create mode 100644 pc-bios/s390-ccw/bswap.h >>> create mode 100644 pc-bios/s390-ccw/libc.h >>> create mode 100644 pc-bios/s390-ccw/netboot.mak >>> create mode 100644 pc-bios/s390-ccw/netmain.c >>> create mode 100644 pc-bios/s390-ccw/virtio-blkdev.c >>> create mode 100644 pc-bios/s390-ccw/virtio-net.c >>> >> >> Was going to apply but then I updated the slof thing but building fails. Not >> sure yet why. >> >> In file included from >> /home/cborntra/REPOS/qemu/roms/SLOF/lib/libc/ctype/isdigit.c:13:0: >> /home/cborntra/REPOS/qemu/roms/SLOF/lib/libc/ctype/isdigit.c:15:17: error: >> expected ‘)’ before ‘ch’ >> int isdigit(int ch) > > What a bummer! Sorry, I've only cross-compiled the s390-ccw BIOS so far, > and that worked fine (since s390x machines are a little bit hard to get > here), but seems like there is still something ugly going on when you > build the code natively ... likely somethings wrong in the Makefile ... > I'll try to figure it out ... > > Thomas >
I haven't tried recently, but you could consider using one of these here https://developer.ibm.com/linuxone/ -- Mit freundlichen Grüßen/Kind Regards Viktor Mihajlovski IBM Deutschland Research & Development GmbH Vorsitzender des Aufsichtsrats: Martina Köderitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294