Message ID | cover.1542819633.git.alistair.francis@wdc.com (mailing list archive) |
---|---|
Headers | show |
Series | Connect a PCIe host and graphics support to RISC-V | expand |
On Wed, 2018-11-21 at 17:02 +0000, Alistair Francis wrote: > V7: > - Fix the GPEX memory mapping thanks to Bin Meng > - Fix the interrupt mapping thanks to Logan Gunthorpe > [...] > > Alistair Francis (6): > hw/riscv/virt: Increase the number of interrupts > hw/riscv/virt: Adjust memory layout spacing > hw/riscv/virt: Connect the gpex PCIe > riscv: Enable VGA and PCIE_VGA > hw/riscv/sifive_u: Connect the Xilinx PCIe > hw/riscv/virt: Connect a VirtIO net PCIe device Using QEMU master + these patches, libvirt master + my own patches, a disk image from [1] and the bbl from [2], I was able to run a pure PCI RISC-V guest, including connecting to it through ssh and performing a system update using dnf; based on these results, the series gets a big old Tested-by: Andrea Bolognani <abologna@redhat.com> [1] https://fedora-riscv.tranquillity.se/koji/ Unfortunately the site is broken at the moment :( [2] https://fedorapeople.org/groups/risc-v/disk-images/ PCI support is included in the bbl now! \o/
On Thu, Nov 22, 2018 at 2:59 AM Andrea Bolognani <abologna@redhat.com> wrote: > > On Wed, 2018-11-21 at 17:02 +0000, Alistair Francis wrote: > > V7: > > - Fix the GPEX memory mapping thanks to Bin Meng > > - Fix the interrupt mapping thanks to Logan Gunthorpe > > > [...] > > > > Alistair Francis (6): > > hw/riscv/virt: Increase the number of interrupts > > hw/riscv/virt: Adjust memory layout spacing > > hw/riscv/virt: Connect the gpex PCIe > > riscv: Enable VGA and PCIE_VGA > > hw/riscv/sifive_u: Connect the Xilinx PCIe > > hw/riscv/virt: Connect a VirtIO net PCIe device > > Using QEMU master + these patches, libvirt master + my own patches, > a disk image from [1] and the bbl from [2], I was able to run a pure > PCI RISC-V guest, including connecting to it through ssh and > performing a system update using dnf; based on these results, the > series gets a big old > > Tested-by: Andrea Bolognani <abologna@redhat.com> Great! Thanks for testing. Alistair > > > [1] https://fedora-riscv.tranquillity.se/koji/ > Unfortunately the site is broken at the moment :( > [2] https://fedorapeople.org/groups/risc-v/disk-images/ > PCI support is included in the bbl now! \o/ > -- > Andrea Bolognani / Red Hat / Virtualization >
On Thu, 22 Nov 2018 02:59:18 PST (-0800), abologna@redhat.com wrote: > On Wed, 2018-11-21 at 17:02 +0000, Alistair Francis wrote: >> V7: >> - Fix the GPEX memory mapping thanks to Bin Meng >> - Fix the interrupt mapping thanks to Logan Gunthorpe >> > [...] >> >> Alistair Francis (6): >> hw/riscv/virt: Increase the number of interrupts >> hw/riscv/virt: Adjust memory layout spacing >> hw/riscv/virt: Connect the gpex PCIe >> riscv: Enable VGA and PCIE_VGA >> hw/riscv/sifive_u: Connect the Xilinx PCIe >> hw/riscv/virt: Connect a VirtIO net PCIe device > > Using QEMU master + these patches, libvirt master + my own patches, > a disk image from [1] and the bbl from [2], I was able to run a pure > PCI RISC-V guest, including connecting to it through ssh and > performing a system update using dnf; based on these results, the > series gets a big old > > Tested-by: Andrea Bolognani <abologna@redhat.com> > > > [1] https://fedora-riscv.tranquillity.se/koji/ > Unfortunately the site is broken at the moment :( FWIW, I get my images from here https://fedorapeople.org/groups/risc-v/disk-images/ which is linked to from the Fedora wiki https://fedoraproject.org/wiki/Architectures/RISC-V/Disk_images the stage4 there is quite old (April, 2018), is yours newer? I'm having some problems updating my disk image and since I'm not a Fedora user I have no idea what's going on. > [2] https://fedorapeople.org/groups/risc-v/disk-images/ > PCI support is included in the bbl now! \o/ Great! I've yet to figure out how to get all the PCI stuff working, but I was trying to go with a virgl-based GPU which I suspect is broken for other reasons. What sort of devices did you attach?
On Mon, Nov 26, 2018 at 11:34:58AM -0800, Palmer Dabbelt wrote: > On Thu, 22 Nov 2018 02:59:18 PST (-0800), abologna@redhat.com wrote: > > On Wed, 2018-11-21 at 17:02 +0000, Alistair Francis wrote: > >> V7: > >> - Fix the GPEX memory mapping thanks to Bin Meng > >> - Fix the interrupt mapping thanks to Logan Gunthorpe > >> > > [...] > >> > >> Alistair Francis (6): > >> hw/riscv/virt: Increase the number of interrupts > >> hw/riscv/virt: Adjust memory layout spacing > >> hw/riscv/virt: Connect the gpex PCIe > >> riscv: Enable VGA and PCIE_VGA > >> hw/riscv/sifive_u: Connect the Xilinx PCIe > >> hw/riscv/virt: Connect a VirtIO net PCIe device > > > > Using QEMU master + these patches, libvirt master + my own patches, > > a disk image from [1] and the bbl from [2], I was able to run a pure > > PCI RISC-V guest, including connecting to it through ssh and > > performing a system update using dnf; based on these results, the > > series gets a big old > > > > Tested-by: Andrea Bolognani <abologna@redhat.com> > > > > > > [1] https://fedora-riscv.tranquillity.se/koji/ > > Unfortunately the site is broken at the moment :( > > FWIW, I get my images from here > > https://fedorapeople.org/groups/risc-v/disk-images/ > > which is linked to from the Fedora wiki > > https://fedoraproject.org/wiki/Architectures/RISC-V/Disk_images > > the stage4 there is quite old (April, 2018), is yours newer? I'm having some > problems updating my disk image and since I'm not a Fedora user I have no idea > what's going on. > > > [2] https://fedorapeople.org/groups/risc-v/disk-images/ > > PCI support is included in the bbl now! \o/ > > Great! I've yet to figure out how to get all the PCI stuff working, but I was > trying to go with a virgl-based GPU which I suspect is broken for other > reasons. What sort of devices did you attach? FWIW, here is my list of tests. Building riscv:virt:defconfig:initrd ... running ....... passed Building riscv:virt:defconfig:virtio-blk:rootfs ... running ........ passed Building riscv:virt:defconfig:virtio:rootfs ... running ........ passed Building riscv:virt:defconfig:virtio-pci:rootfs ... running ........ passed Building riscv:virt:defconfig:mmc:rootfs ... running ........ passed Building riscv:virt:defconfig:nvme:rootfs ... running ........ passed Building riscv:virt:defconfig:usb-ohci:rootfs ... running ........ passed Building riscv:virt:defconfig:usb-ehci:rootfs ... running ........ passed Building riscv:virt:defconfig:usb-xhci:rootfs ... running ......... passed Building riscv:virt:defconfig:usb-uas-ehci:rootfs ... running ......... passed Building riscv:virt:defconfig:usb-uas-xhci:rootfs ... running ......... passed Building riscv:virt:defconfig:scsi[53C810]:rootfs ... running ........... passed Building riscv:virt:defconfig:scsi[53C895A]:rootfs ... running ......... passed Building riscv:virt:defconfig:scsi[AM53C974]:rootfs ... skipped Building riscv:virt:defconfig:scsi[DC395]:rootfs ... skipped Building riscv:virt:defconfig:scsi[MEGASAS]:rootfs ... running ......... passed Building riscv:virt:defconfig:scsi[MEGASAS2]:rootfs ... running ........ passed Building riscv:virt:defconfig:scsi[FUSION]:rootfs ... running ....... passed Building riscv:virt:defconfig:scsi[virtio]:rootfs ... running ....... passed Building riscv:virt:defconfig:scsi[virtio-pci]:rootfs ... running ........ passed The skipped tests work as well, but the emulation is flaky and fails once in a while. This is obviously with usb enabled. Guenter
On Mon, 2018-11-26 at 11:34 -0800, Palmer Dabbelt wrote: > FWIW, I get my images from here > > https://fedorapeople.org/groups/risc-v/disk-images/ > > which is linked to from the Fedora wiki > > https://fedoraproject.org/wiki/Architectures/RISC-V/Disk_images > > the stage4 there is quite old (April, 2018), is yours newer? I'm having some > problems updating my disk image and since I'm not a Fedora user I have no idea > what's going on. Yeah, we have nightly built images now - they come in several flavors, even! http://185.97.32.145/koji/tasks?state=closed&view=flat&method=createAppliance&order=-id Note that there are some issues with the server configuration and the HSTS preload list shipped with browsers not playing nice with each other, so you'll have to tweak URLs a bit before you can actually download images, basically s,https://fedora-riscv.tranquillity.se,http://185.97.32.145, I wonder if it even makes sense to keep the old stage4 images around... And someone should definitely sweep through the wiki and make sure we don't point to obsolete information and all URLs are up to date. Maybe I should create that Fedora Account after all O:-) > > [2] https://fedorapeople.org/groups/risc-v/disk-images/ > > PCI support is included in the bbl now! \o/ > > Great! I've yet to figure out how to get all the PCI stuff working, but I was > trying to go with a virgl-based GPU which I suspect is broken for other > reasons. What sort of devices did you attach? I just tried today, and virtio-gpu doesn't work for me either: during boot I get [drm] radeon kernel modesetting enabled. [drm] pci: virtio-gpu-pci detected at 0000:00:05.0 [drm] virgl 3d acceleration not supported by host [TTM] Zone kernel: Available graphics memory: 993416 kiB [TTM] Initializing pool allocator [TTM] Initializing DMA pool allocator [drm] number of scanouts: 1 [drm] number of cap sets: 0 ------------[ cut here ]------------ WARNING: CPU: 3 PID: 1 at lib/scatterlist.c:275 __sg_alloc_table+0xba/0xbe Modules linked in: CPU: 3 PID: 1 Comm: swapper/0 Not tainted 4.19.0-rc8 #1 Call Trace: [<ffffffe0000383ec>] walk_stackframe+0x0/0xa0 [<ffffffe000038588>] show_stack+0x2a/0x34 [<ffffffe0006b12b2>] dump_stack+0x62/0x7c [<ffffffe00003c498>] __warn+0xd2/0xe4 [<ffffffe00003c544>] warn_slowpath_null+0x30/0x3e [<ffffffe0002a1646>] __sg_alloc_table+0xba/0xbe [<ffffffe0002a18c8>] sg_alloc_table+0x28/0xa6 [<ffffffe0002a1a1a>] __sg_alloc_table_from_pages+0xd4/0x1da [<ffffffe0002a1b30>] sg_alloc_table_from_pages+0x10/0x18 [<ffffffe00042c87c>] virtio_gpu_object_get_sg_table+0x90/0xa6 [<ffffffe00042bdfc>] virtio_gpu_object_attach+0x12c/0x14c [<ffffffe00042a1aa>] virtio_gpufb_create+0xe4/0x1c0 [<ffffffe0003345f2>] __drm_fb_helper_initial_config_and_unlock+0x198/0x334 [<ffffffe000334c5a>] drm_fb_helper_initial_config+0x2e/0x3a [<ffffffe00042a3f6>] virtio_gpu_fbdev_init+0xa6/0xce [<ffffffe000429556>] virtio_gpu_driver_load+0x36e/0x3be [<ffffffe00033a932>] drm_dev_register+0xfe/0x162 [<ffffffe000429968>] drm_virtio_init+0x48/0x158 [<ffffffe000429164>] virtio_gpu_probe+0x32/0x40 [<ffffffe0002f7e58>] virtio_dev_probe+0x10e/0x196 [<ffffffe00043546c>] really_probe+0x17e/0x1ea [<ffffffe000435654>] driver_probe_device+0x7a/0x90 [<ffffffe000435702>] __driver_attach+0x98/0x9a [<ffffffe000433bc2>] bus_for_each_dev+0x4a/0x72 [<ffffffe000434f28>] driver_attach+0x1a/0x22 [<ffffffe000434b06>] bus_add_driver+0x156/0x1b8 [<ffffffe000435c88>] driver_register+0x3a/0xd0 [<ffffffe0002f7f00>] register_virtio_driver+0x20/0x2e [<ffffffe000012d92>] virtio_gpu_driver_init+0x18/0x20 [<ffffffe00003664a>] do_one_initcall+0x2c/0x10a [<ffffffe000000a90>] kernel_init_freeable+0x11e/0x1ae [<ffffffe0006c2304>] kernel_init+0x12/0xf0 [<ffffffe000037472>] ret_from_exception+0x0/0xc ---[ end trace 161c50bff518fcd6 ]--- [drm] Initialized virtio_gpu 0.0.1 0 for virtio5 on minor 0 and the graphical console is not initialized. The libvirt guest XML I'm using is <domain type='qemu'> <name>riscv</name> <memory unit='GiB'>2</memory> <vcpu>4</vcpu> <os> <type arch='riscv64' machine='virt'>hvm</type> <kernel>/var/lib/libvirt/images/riscv.bbl</kernel> <cmdline>root=/dev/vda1</cmdline> </os> <devices> <emulator>/usr/bin/qemu-system-riscv64</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/var/lib/libvirt/images/riscv.raw'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> </disk> <controller type='pci' model='pcie-root'/> <controller type='virtio-serial'> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </controller> <interface type='network'> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'/> <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel> <graphics type='spice'/> <video> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </memballoon> <rng model='virtio'> <backend model='random'>/dev/urandom</backend> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </rng> </devices> </domain> but you're going to need a libvirt built from https://github.com/andreabolognani/libvirt/tree/riscv-pci in order to actually use it. I think the BBL I'm using doesn't have ballooning support, and I haven't bothered trying it either, but as reported earlier everything else (disk, networking, RNG, shutdown via qemu-guest-agent) works just fine.