HomeFreeBSD

Increase the VirtIO segment count to support modern Windows guests.

Description

Increase the VirtIO segment count to support modern Windows guests.

The Windows virtio driver ignores the advertized seg_max field and
assumes the host can accept up to 67 segments in indirect descriptors,
triggering an assert in the bhyve process.

This brings back r282922 but with a couple of changes:

  • It raises the block interface segment limit to 128 instead of 67.
  • Linux's virtio driver assumes that the segment limit is no larger than the ring size. To avoid breaking Linux guests, raise the VirtIO ring size to 128, and cap the VirtIO segment limit at ring size - 2 (effectively 126).

Reviewed by: rgrimes, Patrick Mooney <pmooney@pfmooney.com>
Obtained from: Joyent (Linux workaround)
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D18831

Details

Committed
jhbMay 2 2019, 10:46 PM
Reviewer
rgrimes
Differential Revision
D18831: Increase bhyve BLOCKIF_IOV_MAX and VTBLK_RINGSZ to 128 to support modern Windows guests
Parents
rS347032: directory.3: add a STANDARDS section
Branches
Unknown
Tags
Unknown

Event Timeline

Just an FYI, I tested this patch last night and I was able to get the virtiostor drivers installed during a Windows 10 Professional install. Thanks for the work you are doing on this!