Page MenuHomeFreeBSD
Feed Advanced Search

Jan 2 2021

bryanv published D27928: if_vtnet: Add counter for recevied host segmentation offloaded for review.
Jan 2 2021, 10:06 PM
bryanv published D27927: if_vtnet: Moderneize default tunables for review.
Jan 2 2021, 10:06 PM
bryanv published D27926: if_vtnet: Cleanup bits of the Tx path for review.
Jan 2 2021, 10:06 PM
bryanv published D27925: if_vtnet: Resort softc fields for review.
Jan 2 2021, 10:06 PM
bryanv published D27924: if_vtnet: Improve support for software LRO for review.
Jan 2 2021, 10:05 PM
bryanv published D27923: if_vtnet: Clean up the tunables definitions for review.
Jan 2 2021, 10:05 PM
bryanv published D27922: if_vtnet: Schedule Rx task if pending items when enabling interrupt for review.
Jan 2 2021, 10:05 PM
bryanv published D27921: if_vtnet: Limit allocations of unused virtqueues for review.
Jan 2 2021, 10:05 PM
bryanv published D27920: if_vtnet: Rework 4be723f63 max multiqueue pairs check for review.
Jan 2 2021, 10:04 PM
bryanv published D27919: if_vtnet: Initial support for software LRO for review.
Jan 2 2021, 10:03 PM
bryanv published D27918: if_vtnet: Use separate variable to keep track of returned negotiated features for review.
Jan 2 2021, 10:03 PM
bryanv published D27917: if_vtnet: Set the interface max TSO values for review.
Jan 2 2021, 10:02 PM
bryanv published D27916: if_vtnet: Add support for CTRL_GUEST_OFFLOADS feature for review.
Jan 2 2021, 10:02 PM
bryanv published D27915: if_vtnet: Move remaining ioctl handlers to separate functions for review.
Jan 2 2021, 10:02 PM
bryanv published D27914: if_vtnet: move IFFLAGS ioctl handler to separate function for review.
Jan 2 2021, 10:01 PM
bryanv published D27913: if_vtnet: cleanup the interface setup methods for review.
Jan 2 2021, 10:01 PM
bryanv published D27912: if_vtnet: Only set IFCAP_JUMBO_MTU when jumbo MTU is supported for review.
Jan 2 2021, 10:01 PM
bryanv published D27911: if_vntet: Move the Tx interrupt threshold into the Txq structure for review.
Jan 2 2021, 10:01 PM
bryanv published D27910: if_vtnet: Defer updating generated MAC address until attached for review.
Jan 2 2021, 10:00 PM
bryanv published D27909: if_vtnet: Remove attach PROMISC handling for review.
Jan 2 2021, 10:00 PM
bryanv published D27908: if_vtnet: Support VIRTIO_NET_F_SPEED_DUPLEX for review.
Jan 2 2021, 10:00 PM
bryanv published D27907: if_vtnet: Support VIRTIO_NET_F_MTU for review.
Jan 2 2021, 10:00 PM
bryanv published D27906: if_vtnet: improve and cleanup the receive code for review.
Jan 2 2021, 10:00 PM
bryanv published D27931: if_vtnet: Disable F_MTU feature if MTU is invalid for review.
Jan 2 2021, 9:59 PM
bryanv published D27933: if_vtnet: Set lro_nsegs for host LRO packets for review.
Jan 2 2021, 9:59 PM
bryanv published D27905: virtio_blk: Use DISKFLAG_WRITE_PROTECT for RO disks for review.
Jan 2 2021, 8:52 PM
bryanv published D27904: if_vtnet: Add initial modern (V1) support for review.
Jan 2 2021, 8:52 PM
bryanv published D27903: virtio_scsi: Add modern (V1) support for review.
Jan 2 2021, 8:51 PM
bryanv published D27902: virtio_blk: Add modern (V1) support for review.
Jan 2 2021, 8:51 PM
bryanv published D27901: virtio_console: Add modern (V1) support for review.
Jan 2 2021, 8:50 PM
bryanv published D27900: virtio_balloon: Add modern (V1) support for review.
Jan 2 2021, 8:50 PM
bryanv published D27899: virtio_random: Add modern (V1) support for review.
Jan 2 2021, 8:49 PM
bryanv published D27898: virtio_pci: Add sysctl to show current features for review.
Jan 2 2021, 8:49 PM
bryanv updated the diff for D27857: Add VirtIO modern support to virtqueue.

Update

Jan 2 2021, 8:18 PM
bryanv updated the diff for D27856: virtio: Add VirtIO PCI modern (V1) support.

Update

Jan 2 2021, 8:15 PM

Dec 31 2020

bryanv added a comment to D27855: Summary: Revert prior VirtIO "V1" network support to simplify upcoming V1 changes.

Everything those commits did is necessary for V1. It's not sufficient per the spec, granted, but having the commits to support _some_ V1 implementations is strictly better than supporting _none_. If you have commits to introduce the missing parts of the V1 feature negotiation sequence then add them, but don't revert what's already there only to reintroduce it later. Otherwise you will break TinyEMU and the FPGA-based system we have built atop its VirtIO implementation.

It is so wrong and incomplete that I have zero interest in trying to sort out the merge conflicts in the patches series I have for V1 support. This is so far away from _some_ V1 support that it is effectively _none_. Fix TinyEMU: it would appear it otherwise supports legacy but has a bug that requires VIRTIO_F_VERSION_1 to be negotiated.

That is grossly incorrect. There are a couple of deficiencies, and as I just said, everything I did is required for V1.

No, it is not just "a couple". I would advise you to read the VirtIO V1 spec. Or look at D27856 that starts to add V1 support. The OASIS TC did not spend years to develop a V1 specification that just ... negotiates VIRTIO_F_VERSION_1 on top of legacy VirtIO. Doing so here is so far from any V1 support that it is wrong pointless.

I have read the spec. MMIO v1 is not all that different from MMIO v0.95; PCI changed a fair amount, but not MMIO. And a lot of v1 is just optional additional flexibility/features that FreeBSD does not try to negotiate, so are irrelevant. As for the changes to the configuration registers themselves, those have already been implemented. The only thing missing is proper endianness handling for big-endian systems, something which VirtIO has a poor track record of anyway, and is only needed if you have both a modern device and a big-endian guest, something which wouldn't have worked before anyway.

What I don't understand is why not just fix TinyEMU? It must already basically support legacy because that is ultimately what ends up being used here, but it would appear to have a bug that requires VIRTIO_F_VERSION_1 to be negotiated. This is NOT "_some_ V1 implementation"; it is V-TinyEMU, with no good reason.

It's not legacy; see below.

I pointed out to you privately at the time that the change to vtnet_rx_header broke other assumptions but I never got a response, so there is little that is salvageable from these commits.

There was a regression that I fixed very quickly for one specific case that bhyve hit. I started to draft a response to your private email but quite frankly it was extremely rude and condescending so I gave up and decided it was best to not engage in such conversation. And saying it's "wrong and incomplete", "effectively _none_" and "there is little that is salvageable" just continues in that manner and I am not enthused about working with you to improve VirtIO support if that's how you want to treat my contributions.

My email was not about that regression. For the record, here is the email I sent you:

Please be sure to add me (bryanv@) on any VirtIO code reviews in the future. I'm working on rebasing some older work I have to add actual V1 support.

Note that you broke the previous assumption around the RX padding by adding 2 bytes to the structure. And for this change in general, we should not be advertising half-baked V1 support like this. This is not non-legacy support. At quick glance, this looks to be exploiting non spec compliant behavior in the TinyEMU.

Please try to minimize changes in this area because it just makes rebasing V1 support harder.

I'm not quite sure what part is "extremely rude and condescending".

Yes, "... you broke the previous assumption around the RX padding by adding 2 bytes": by adding virtio_net_hdr_mrg_rxbuf to the vtnet_rx_header WITHOUT adjusting VTNET_RX_HEADER_PAD, the IP header no longer lands on a word boundary. We all introduce breakages, but being told so isn't rude.

That's not a breakage though, that's just a performance regression, and can trivially be fixed by changing the 4 to a 2 (or, better, replacing it with 4 - (sizeof(union) % 4) so it's never wrong).

Dec 31 2020, 5:46 AM
bryanv added a comment to D27855: Summary: Revert prior VirtIO "V1" network support to simplify upcoming V1 changes.

Everything those commits did is necessary for V1. It's not sufficient per the spec, granted, but having the commits to support _some_ V1 implementations is strictly better than supporting _none_. If you have commits to introduce the missing parts of the V1 feature negotiation sequence then add them, but don't revert what's already there only to reintroduce it later. Otherwise you will break TinyEMU and the FPGA-based system we have built atop its VirtIO implementation.

It is so wrong and incomplete that I have zero interest in trying to sort out the merge conflicts in the patches series I have for V1 support. This is so far away from _some_ V1 support that it is effectively _none_. Fix TinyEMU: it would appear it otherwise supports legacy but has a bug that requires VIRTIO_F_VERSION_1 to be negotiated.

That is grossly incorrect. There are a couple of deficiencies, and as I just said, everything I did is required for V1.

Dec 31 2020, 2:17 AM
bryanv added a comment to D27855: Summary: Revert prior VirtIO "V1" network support to simplify upcoming V1 changes.

Everything those commits did is necessary for V1. It's not sufficient per the spec, granted, but having the commits to support _some_ V1 implementations is strictly better than supporting _none_. If you have commits to introduce the missing parts of the V1 feature negotiation sequence then add them, but don't revert what's already there only to reintroduce it later. Otherwise you will break TinyEMU and the FPGA-based system we have built atop its VirtIO implementation.

Dec 31 2020, 12:03 AM

Dec 30 2020

bryanv published D27857: Add VirtIO modern support to virtqueue for review.
Dec 30 2020, 11:29 PM
bryanv published D27856: virtio: Add VirtIO PCI modern (V1) support for review.
Dec 30 2020, 11:29 PM
bryanv published D27855: Summary: Revert prior VirtIO "V1" network support to simplify upcoming V1 changes for review.
Dec 30 2020, 11:28 PM
bryanv added a reverting change for rG8c3988dff98e: virtio: Support non-legacy network device and queue: D27855: Summary: Revert prior VirtIO "V1" network support to simplify upcoming V1 changes.
Dec 30 2020, 11:27 PM

Dec 17 2020

bryanv added a comment to D26933: virtio_pci: Use the table BAR and PBA BAR from MSI-X cap.
In D26933#618091, @jhb wrote:

This looks odd to me having to push this down into the driver. I don't really like how to code flows with the 'msix_load' variable. I'm not sure what your VMM here is, but I'd much rather only apply this to transitional or modern devices.

Where else would you put it? It's hard to do in the PCI bus itself because the resource is often used for other things in the driver and you can only bus_alloc_resource() "once" for a given BAR. Most hardware stores the table and PBA in fixed locations which don't require quite this amount of dynamic behavior. In terms of VirtIO drivers, this file seems like the right place to do it?

Dec 17 2020, 5:51 PM

Dec 15 2020

bryanv added a comment to D26933: virtio_pci: Use the table BAR and PBA BAR from MSI-X cap.

This looks odd to me having to push this down into the driver. I don't really like how to code flows with the 'msix_load' variable. I'm not sure what your VMM here is, but I'd much rather only apply this to transitional or modern devices.

Dec 15 2020, 3:54 PM

Dec 2 2020

bryanv accepted D27449: vxlan: stop checking CSUM_ENCAP_VXLAN when converting inner CSUM flags into normal, for decapsulation..
Dec 2 2020, 11:50 PM

Oct 26 2020

bryanv added inline comments to D26915: virtio_pci: Allow memory space for configuration.
Oct 26 2020, 4:47 PM

Oct 24 2020

bryanv requested changes to D26915: virtio_pci: Allow memory space for configuration.
Oct 24 2020, 6:31 PM

Mar 6 2020

bryanv added a comment to D23987: [if_vtnet] Add VIRTIO_NET_F_MTU flag support..

I have added support for this feature (and more) in my VirtIO V1 branch that I plan on committing soon.

Mar 6 2020, 3:21 PM

Feb 4 2020

bryanv accepted D23401: Make access to VirtIO configuration with proper endianness on big endian platforms.
Feb 4 2020, 3:55 PM · PowerPC

Jan 30 2020

bryanv added inline comments to D23401: Make access to VirtIO configuration with proper endianness on big endian platforms.
Jan 30 2020, 5:46 PM · PowerPC

Nov 21 2019

bryanv accepted D22490: virtio_random(4): Drop no longer needed unload kludge.
Nov 21 2019, 10:18 PM

Sep 27 2019

bryanv requested changes to D21708: Add VIRTIO_BLK_T_DISCARD support to the virtio-blk driver.
Sep 27 2019, 5:18 PM

Jul 19 2019

D20987: bhyve: add backend rx backpressure to virtio-net is now accepted and ready to land.
Jul 19 2019, 3:28 AM

Jul 5 2019

D20659: bhyve: abstraction for network backends is now accepted and ready to land.
Jul 5 2019, 4:57 PM

Jun 21 2019

bryanv accepted D20703: VirtIO SCSI: validate seg_max from hypervisor.
Jun 21 2019, 8:05 PM
D20703: VirtIO SCSI: validate seg_max from hypervisor now requires changes to proceed.

Sorry I wasn't clearer: use virtqueue_size() after the allocate to do the check. Do not add a new virtqueue_size bus interface.

Jun 21 2019, 4:55 PM
bryanv added inline comments to D20703: VirtIO SCSI: validate seg_max from hypervisor.
Jun 21 2019, 1:33 PM

Jun 20 2019

bryanv added inline comments to D20703: VirtIO SCSI: validate seg_max from hypervisor.
Jun 20 2019, 3:22 PM
D20703: VirtIO SCSI: validate seg_max from hypervisor now requires changes to proceed.

I don't think this is the right approach. Don't add a new virtqueue_size bus interface. Use virtqueue_size() after the allocate VQ call. VirtIO V1 supports VQ resizing that I would like to support later so for cases like this we'd need additional checking after the allocate anyways.

Jun 20 2019, 12:59 PM
D20529: bhyve: fix reporting of virtio scsi seg_max is now accepted and ready to land.
Jun 20 2019, 12:09 AM

Jun 13 2019

bryanv accepted D20626: bhyve: move common code to net_utils.c.
Jun 13 2019, 3:22 PM

Jun 11 2019

bryanv accepted D20581: bhyve: virtio: introduce vq_kick_enable() and vq_kick_disable().
Jun 11 2019, 2:13 AM

Jun 6 2019

bryanv added a comment to D20529: bhyve: fix reporting of virtio scsi seg_max.

And does it make sense to limit to sub-256kB ios when linux qemu allows 512kB?

I don't know of a reason, but I'm not familiar with this area. @bryanv?

Jun 6 2019, 7:35 PM
bryanv added a comment to D20529: bhyve: fix reporting of virtio scsi seg_max.

Essentially, yeah: virtqueue_enqueue: vtscsi0 request - too many segments to enqueue: 65, 64/0

Jun 6 2019, 1:00 PM
bryanv added a comment to D20529: bhyve: fix reporting of virtio scsi seg_max.

What is the panic message?

Jun 6 2019, 2:37 AM

Jun 4 2019

bryanv added a comment to D20406: virtio(4): Expose PNP metadata through newbus.

@cem LGTM

Jun 4 2019, 1:32 AM
bryanv accepted D20407: virtio(4): Add PNP match metadata for virtio devices.

@cem LGTM

Jun 4 2019, 1:32 AM

Jun 2 2019

bryanv accepted D20419: virtio_random(4): Fix random(4) integration.
Jun 2 2019, 2:48 AM

Jun 1 2019

bryanv added a comment to D20419: virtio_random(4): Fix random(4) integration.

Other drivers following the callout pattern seem to be: bcm2835_rng.c, octeon_rnd.c, hifn7751.c, glxsb.c, tpm20.c although perhaps there is a desired functional difference that I am not aware of.

Jun 1 2019, 6:50 PM
bryanv added inline comments to D20406: virtio(4): Expose PNP metadata through newbus.
Jun 1 2019, 6:33 PM

May 28 2019

bryanv added a comment to D20419: virtio_random(4): Fix random(4) integration.

@markm: Can you explain the difference in the prior version of this driver that is callout based and this change? It seems there is at least one driver in the tree that uses the callout pattern.

May 28 2019, 8:22 PM
bryanv added a comment to D20419: virtio_random(4): Fix random(4) integration.

It has been a long while since I wrote this driver but the callout pattern was certainly cribbed from another driver in the tree. Has this API changed over the years?

May 28 2019, 1:18 PM

May 25 2019

bryanv added inline comments to D20406: virtio(4): Expose PNP metadata through newbus.
May 25 2019, 11:35 PM
bryanv added inline comments to D20407: virtio(4): Add PNP match metadata for virtio devices.
May 25 2019, 11:15 PM

May 7 2019

bryanv added inline comments to D20147: Remove non-functional SCTP checksum offload support for virtio.
May 7 2019, 3:07 PM
bryanv accepted D20147: Remove non-functional SCTP checksum offload support for virtio.

This is fine. I made a similar change in my VirtIO V1 branch (https://github.com/bryanv/freebsd/commit/a2903365a44b710929e52bf00b85a501856a7510) but I have not had the time to commit it yet.

May 7 2019, 3:06 PM

Apr 3 2019

bryanv requested changes to D19815: fix virtio Device Configuration Space on big endian platforms (i.e. PowerPC64). Also enable virtio drivers on default PowerPC64 kernel configuration.

Please reread my prior comment. This is not correct.

Apr 3 2019, 7:27 PM
bryanv requested changes to D19815: fix virtio Device Configuration Space on big endian platforms (i.e. PowerPC64). Also enable virtio drivers on default PowerPC64 kernel configuration.

This is not correct. You are quoting from the V1 spec but the FreeBSD VirtIO drivers are written against the pre-V1 (0.9.5 aka legacy) which uses guest endian.

Apr 3 2019, 7:08 PM

Mar 14 2019

bryanv added a member for iflib: bryanv.
Mar 14 2019, 5:45 PM
bryanv accepted D19573: ether: centralize fake hwaddr generation.
Mar 14 2019, 3:48 AM

Feb 18 2019

bryanv accepted D19104: vmxnet3: add native netmap support.
Feb 18 2019, 6:52 PM

Jan 29 2019

bryanv accepted D19015: vtnet: fix typo in vtnet_free_taskqueues.
Jan 29 2019, 1:34 PM

Nov 14 2018

bryanv accepted D17916: vtnet: fix netmap support.
Nov 14 2018, 2:58 PM

Nov 12 2018

bryanv added inline comments to D17916: vtnet: fix netmap support.
Nov 12 2018, 5:05 PM
bryanv added inline comments to D17916: vtnet: fix netmap support.
Nov 12 2018, 2:20 PM

Nov 11 2018

bryanv added inline comments to D17916: vtnet: fix netmap support.
Nov 11 2018, 8:09 PM

Nov 10 2018

bryanv added inline comments to D17916: vtnet: fix netmap support.
Nov 10 2018, 4:48 PM
bryanv added a comment to D17916: vtnet: fix netmap support.

Can you update this diff with the full context? Thanks.

Nov 10 2018, 4:30 PM

Oct 22 2018

bryanv accepted D16305: Table driven hypervisor detection and addition of VirtualBox..
Oct 22 2018, 7:57 PM

Jul 23 2018

bryanv updated subscribers of D16305: Table driven hypervisor detection and addition of VirtualBox..
Jul 23 2018, 4:27 AM

Jul 19 2018

bryanv added inline comments to D16306: paravirt: Add KVM clock timecounter support.
Jul 19 2018, 3:17 PM
bryanv added inline comments to D16305: Table driven hypervisor detection and addition of VirtualBox..
Jul 19 2018, 1:49 PM

Jul 18 2018

bryanv abandoned D1435: paravirt: Add KVM clock timecounter support.
Jul 18 2018, 3:04 PM
bryanv abandoned D1434: paravirt: Add detection of KVM using new hypervisor interface.
Jul 18 2018, 3:03 PM
bryanv abandoned D1433: paravirt: Add detection of VMware using new hypervisor interface.
Jul 18 2018, 3:03 PM
bryanv abandoned D1432: paravirt: Add detection of bhyve using new hypervisor interface.
Jul 18 2018, 3:03 PM
bryanv abandoned D1431: paravirt: Add simple hypervisor registration and detection interface .
Jul 18 2018, 3:03 PM
bryanv abandoned D1430: paravirt: Add interface to calculate the TSC frequency from pvclock.
Jul 18 2018, 3:02 PM

Jul 9 2018

bryanv updated subscribers of D1435: paravirt: Add KVM clock timecounter support.
In D1435#343209, @mmacy wrote:

@bryanv What do you feel remains to be done?

Jul 9 2018, 3:25 PM

Jun 17 2018

bryanv committed rS335305: Update VirtIO definitions from Linux virtio_config.h and virtio_ring.h headers.
Update VirtIO definitions from Linux virtio_config.h and virtio_ring.h headers
Jun 17 2018, 8:46 PM