https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=203874

John Baldwin <j...@freebsd.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |j...@freebsd.org

--- Comment #12 from John Baldwin <j...@freebsd.org> ---
Hmm, I don't recall which issue we ran into with VMWare.  We have had some
issues with Xen hypervisors that might be related.  They had to do with how the
hypervisor cached MSI-X table entries and that it didn't notice updates to the
table that FreeBSD's kernel performed because it assumed the table was not
modified once MSI-X was enabled in the capability register.

Commits related to those issues are r302181 + r302635 and r310806.

>From the thread about igb(4) that was quoted, it sounds like it might be a
similar issue where VMWare might be assuming that MSI-X tables are only updated
in a particular order.  FreeBSD follows a scheme where it marks all the table
entries as disabled and then enables MSI-X in the capability register and then
writes individual table entries as the driver calls bus_setup_intr().  This
means that the table can change while MSI-X is enabled.  A table entry might
also be written multiple times if a device driver moves an interrupt to a
different CPU than the one chosen by the system.  In real hardware this works
fine as the hardware checks the table to compose the MSI message before sending
each message.  Hypervisors might choose to cache the table since reading the
actual table might be too expensive.  However, in that case hypervisors have to
trap all writes to the table and update their cached copy for each write.  The
Xen issues had to do with Xen assuming it could ignore writes made while MSI-X
was active since Linux writes the whole table and then enables MSI-X.  I would
start by seeing if you have a shadow copy of the MSI-X table and if you make
assumptions about which writes to that table have to be trapped to update the
shadow table.

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
freebsd-virtualization@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-virtualization
To unsubscribe, send any mail to 
"freebsd-virtualization-unsubscr...@freebsd.org"

Reply via email to