Hi Bin, On Fri, 7 Sep 2018 09:49:24 +0800 Bin Meng <bmeng...@gmail.com> wrote:
> Hi Tuomas, > > On Fri, Sep 7, 2018 at 5:03 AM Tuomas Tynkkynen > <tuomas.tynkky...@iki.fi> wrote: > > > > Hi Bin, > > > > On 09/04/2018 12:31 PM, Bin Meng wrote: > > > Hi Lukas, > > > > > > On Tue, Sep 4, 2018 at 5:39 AM Auer, Lukas > > > <lukas.a...@aisec.fraunhofer.de> wrote: > > >> > > >> On Thu, 2018-08-30 at 00:54 -0700, Bin Meng wrote: > > >>> This adds QEMU RISC-V 'virt' board target support, with the > > >>> hope of helping people easily test U-Boot on RISC-V. > > >>> > > >>> The QEMU virt machine models a generic RISC-V virtual machine > > >>> with support for the VirtIO standard networking and block > > >>> storage devices. It has CLINT, PLIC, 16550A UART devices in > > >>> addition to VirtIO and it also uses device-tree to pass > > >>> configuration information to guest software. It implements > > >>> RISC-V privileged architecture spec v1.10. > > >>> > > >>> Both 32-bit and 64-bit builds are supported. Support is pretty > > >>> much preliminary, only booting to U-Boot shell with the UART > > >>> driver on a single core. Booting Linux is not supported yet. > > >>> > > >> > > >> For your information and to avoid duplicate work, I am working > > >> on a patch set that improves RISC-V support in u-boot. I am > > >> currently able to boot Linux on a multi-core setup in QEMU, but > > >> they are not quite ready to submit yet. > > >> > > > > > > This is great! My next step is to work on virtio driver support in > > > U-Boot as qemu-riscv virt machine has these devices but we don't > > > have corresponding drivers in U-Boot. > > At some point I was working on porting the virtio stack from Linux > > to U-Boot and IIRC got virtio-blk and virtio-net working on ARM. > > But other things consumed my time and I never quite finished that > > work. Let me know if you want to take a look. > > This is great. I just finished reading the virtio 1.0 spec and was > about to start the work. My interest was to add virtio-blk and > virtio-net driver to U-Boot too since they are most common devices > (others are not used too much I believe). If you already have the > drivers working, I can help to bring them upstream. You can find my branch here: https://github.com/dezgeg/u-boot/tree/virtio It should work under qemu_arm64_defconfig as follows: qemu-system-aarch64 -machine virt -cpu cortex-a57 -m 512 \ -bios u-boot.bin -s -nographic \ -netdev user,id=net0 -device virtio-net-device,netdev=net0 \ -drive if=none,file=disk.img,id=disk0 \ -device virtio-blk-device,drive=disk0 I tried with Fedora-Server-netinst-aarch64-28-1.1.iso I had lying around and letting it auto-boot worked fine. Also interrupting the boot and doing 'virtio scan; dhcp' gets a successful DHCP lease from QEMU's internal server. I took a brief look and these things still need work: - Some of the virtio headers imported verbatim cause compiler warnings because we don't disable strict aliasing. - Architectures need to import various definitions from Linux. At least PAGE_SIZE & PAGE_SHIFT and wmb() & rmb(). (currently there are just gross hacks around this) - Feature negotiation (needed for virtio-net to be able to set/get a MAC address) is not implemented yet. - The virtio-pci transport is not implemented, only virtio-mmio. - Error handling is missing in many places. - Resource cleanup in some places, like virtio-net which needs to remove live buffers from the RX virtqueue on shutdown and I haven't looked into how to do that. - Lots of small things like removing debug/commented out code, wrong kerneldoc comments, dead/uneeded code etc. to be cleaned up. Have fun and let me know if you have questions. - Tuomas _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot