On Wed, Mar 09, 2016 at 09:39:44PM +0100, Ladi Prosek wrote: > On Wed, Mar 9, 2016 at 9:25 PM, Michael S. Tsirkin <m...@redhat.com> wrote: > > Thanks a lot for looking into this! > > I'll review early next week. > > > > On Wed, Mar 09, 2016 at 07:19:59PM +0100, Ladi Prosek wrote: > >> The goal here is to support booting from modern only (non-transitional) > >> virtio-net devices. > > > > Side-note: it is preferable to use transitional > > devices through the modern interface, as well. > > That's actually the case in this series, apologies for the inaccurate > wording. If the VIRTIO_PCI_CAP_COMMON_CFG capability is found, the > driver uses the modern interface. > > > Some advantages include: > > - ability to work without enabling IO space (or even memory space) > > - ability to reduce ring size, and generally lower memory > > consumption > > Gotcha. I made no changes to the ring layout in this series in order > to keep it simple. My understanding is that minimizing the code size > here could be more important than optimizing run-time performance (the > driver ignores pretty much all virtio-net feature flags for example) > but I'm open to suggestions.
It's not about performance - I believe in the past number of bootable NICs was limited because we run out of memory for the rings+packets. But these optimizations can come later. > >> The code strives to comply with the virtio 1.0 spec > >> and is heavily inspired by the Linux kernel implementation. > >> > >> One notable divergence from Linux is the explicit differentiation > >> between port I/O and memory I/O due to the lack of __iomem in iPXE. See > >> struct virtio_pci_region for details. > >> > >> src/drivers/bus/pciextra.c | 54 ++++++--- > >> src/drivers/bus/virtio-pci.c | 213 ++++++++++++++++++++++++++++++++- > >> src/drivers/bus/virtio-ring.c | 12 +- > >> src/drivers/net/virtio-net.c | 259 > >> +++++++++++++++++++++++++++++++++++++++-- > >> src/drivers/net/virtio-net.h | 18 +++ > >> src/include/ipxe/errfile.h | 1 + > >> src/include/ipxe/pci.h | 2 + > >> src/include/ipxe/virtio-pci.h | 231 ++++++++++++++++++++++++++++++++++++ > >> src/include/ipxe/virtio-ring.h | 9 ++ > >> 9 files changed, 769 insertions(+), 30 deletions(-) > >> > >> [PATCH 1/4] [pci] Add pci_find_next_capability > >> [PATCH 2/4] [virtio] Add virtio 1.0 constants and data structures > >> [PATCH 3/4] [virtio] Add virtio 1.0 PCI support > >> [PATCH 4/4] [virtio] Add virtio-net 1.0 support _______________________________________________ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel