[Bug 244363] Assertion failed: error == 0, file pci_emul.c, line 517, function modify_bar_registration
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Mon Feb 24 10:19:38 UTC 2020
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=244363
Bug ID: 244363
Summary: Assertion failed: error == 0, file pci_emul.c, line
517, function modify_bar_registration
Product: Base System
Version: 12.0-STABLE
Hardware: amd64
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: bhyve
Assignee: virtualization at FreeBSD.org
Reporter: sjorge+signup at blackdot.be
I'm running into an issue when using PCI passthrough with bhyve.
I am running into this on SmartOS but when googling the problem I found a few
FreeBSD users also running into the same problem. After chatting with Michael
Dexter, I as suggested to also fine a bug bere.
List of other people hitting the problem on FreeBSD:
-
https://forums.freebsd.org/threads/vm-bhyve-windows-2012-r2-and-passthru.60832/
-
https://www.ixsystems.com/community/threads/bhyve-pci-passthrough-errors.57284/
-
https://forums.freebsd.org/threads/bhyve-passthru-issue-with-lsi-logic-sas2008--
pci-express-fusion-mpt-sas-2.65269/
- bug #211062, comment #8
SmartOS bug report:
- https://github.com/joyent/smartos-live/issues/901
Bhyve is dumping core when the following assert is tripped:
Assertion failed: error == 0, file pci_emul.c, line 517, function
modify_bar_registration
This is only tripped when the guest OS is windows (10). I do not have issues
with a freebsd, illumos, or linux guest. So something windows is doing
triggeres it.
I also noticed I am only getting this on PCIe devices that have multiple BAR
entries.
I captured the output in a FreeBSD guest that got the PCIe devices via
passthrough, you can see they have 2 BARs. ( Found of no easy way to capture
this info on SmartOS, but this is probably easier for here anyway )
```
ixl0 at pci0:0:8:0: class=0x020000 card=0x37d215d9 chip=0x37d28086 rev=0x09
hdr=0x00
vendor = 'Intel Corporation'
device = 'Ethernet Connection X722 for 10GBASE-T'
class = network
subclass = ethernet
bar [10] = type Prefetchable Memory, range 64, base 0xc1000000, size
16777216, enabled
bar [1c] = type Prefetchable Memory, range 64, base 0xc2000000, size
32768, enabled
cap 01[40] = powerspec 3 supports D0 D3 current D0
cap 05[50] = MSI supports 1 message, 64 bit, vector masks
cap 11[70] = MSI-X supports 8 messages, enabled
Table in map 0x1c[0x0], PBA in map 0x1c[0x1000]
cap 10[a0] = PCI-Express 2 endpoint max data 256(512) FLR RO
link x1(x1) speed 2.5(2.5) ASPM disabled(L0s/L1)
cap 03[e0] = VPD
VPD ident = 'Example VPD'
ixl1 at pci0:0:8:1: class=0x020000 card=0x37d215d9 chip=0x37d28086 rev=0x09
hdr=0x00
vendor = 'Intel Corporation'
device = 'Ethernet Connection X722 for 10GBASE-T'
class = network
subclass = ethernet
bar [10] = type Prefetchable Memory, range 64, base 0xc3000000, size
16777216, enabled
bar [1c] = type Prefetchable Memory, range 64, base 0xc4000000, size
32768, enabled
cap 01[40] = powerspec 3 supports D0 D3 current D0
cap 05[50] = MSI supports 1 message, 64 bit, vector masks
cap 11[70] = MSI-X supports 8 messages, enabled
Table in map 0x1c[0x0], PBA in map 0x1c[0x1000]
cap 10[a0] = PCI-Express 2 endpoint max data 256(512) FLR RO
link x1(x1) speed 2.5(2.5) ASPM disabled(L0s/L1)
cap 03[e0] = VPD
VPD ident = 'Example VPD'
```
Michael Zeller who is also on the bhyve weekly called help me debug this a bit
(on SmartOS)
We traced it to `Also the call to unregister_mem() ends up seeing an ENOENT
from mmio_rb_lookup(&mmio_rb_root, memp->base, &entry);`
mmio_rb_lookup is macro that we (illumos) copied from FreeBSD and it wasn't
changed. So it would make sense that there is indeed a bug in there both
FreeBSd and SmartOS bhyve users would hit the same error.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-virtualization
mailing list