John Baldwin 24be3f513f Don't simulate PBA access if the PBA is in a separate BAR.
bhyve has to virtualize the MSI-X table to trap reads and writes to
that table and map those to virtual interrupts that it maps real host
interrupts on to.  For the pending-bit-array (PBA), bhyve passes
accesses from the guest directly to the hardware.

bhyve's virtualization of the MSI-X table is done by intercepting all
reads and writes to the BAR holding the MSI-X table.  However, if the
PBA is stored in the same BAR as the MSI-X table, accesses to the PBA
portion of this BAR have to be forwarded to the real BAR.

However, in the case that the PBA was stored in a separate BAR and
it's offset in that separate BAR overlapped with the portion of the
MSI-X table BAR that the table used, the handlers for the table BAR
would incorrectly think that some accesses were PBA reads and writes.
This caused a crash in bhyve when it indirected a NULL pointer.  Fix
this case by never trying to handle PBA access if the PBA lives in a
separate BAR.

Reported by:	gallatin
Tested by:	gallatin
Reviewed by:	markj, Patrick Mooney
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D20523
2019-06-05 19:29:02 +00:00
..
2019-03-29 20:21:28 +00:00
2018-08-11 13:23:09 +00:00
2018-12-19 21:56:54 +00:00
2019-04-02 12:50:01 +00:00
2019-03-14 14:34:36 +00:00
2018-08-19 07:12:35 +00:00
2018-11-30 19:40:16 +00:00
2019-02-05 21:37:34 +00:00
2019-02-04 21:28:25 +00:00
2018-06-06 18:52:33 +00:00
2019-02-21 01:30:37 +00:00
2018-08-12 13:29:40 +00:00
2018-05-28 09:41:44 +00:00
2017-12-28 05:34:04 +00:00
2019-05-04 02:09:30 +00:00
2018-01-02 16:50:57 +00:00
2018-10-22 02:34:10 +00:00
2018-02-23 17:20:53 +00:00
2018-05-19 20:57:22 +00:00
2019-05-22 01:22:33 +00:00
2019-02-04 21:28:25 +00:00
2019-02-04 21:28:25 +00:00
2018-09-19 07:09:55 +00:00
2018-06-17 17:31:16 +00:00
2019-02-03 08:15:26 +00:00
2018-03-19 05:49:26 +00:00
2019-03-05 02:53:41 +00:00
2019-04-22 17:52:46 +00:00
2018-12-19 22:47:37 +00:00
2019-04-23 03:52:43 +00:00
2018-02-08 14:53:34 +00:00
2019-05-24 05:34:21 +00:00
2019-05-24 05:34:21 +00:00
2018-07-24 20:20:17 +00:00