VirtIO devices allocate an IO-BAR. The size of this BAR has to be a
power of two. If that's not the case, pci_emul will adjust the
size to a power of two.
VirtIO space has a size of 0x18 bytes. That's no power of two. For
that reason, pci_emul will adjust the size. If a VirtIO device
only uses the default register, it has no cfgread/cfgwrite
handler. Due to the size adjustment, it's possible that bhyve
calls this unimplemented handler. To avoid a segmentation fault,
check if a handler exists. If the handler does not exist, return
0xFF.
Details
Details
- Reviewers
- None
- Group Reviewers
bhyve
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Skipped - Unit
Tests Skipped