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
..
2017-11-27 15:37:16 +00:00
2019-03-29 20:21:28 +00:00
2017-11-27 15:37:16 +00:00
2019-05-23 17:18:56 +00:00
2018-07-26 16:51:23 +00:00
2018-03-28 23:33:26 +00:00
2018-08-11 13:23:09 +00:00
2019-04-10 16:09:06 +00:00
2019-06-05 19:29:02 +00:00
2018-06-13 03:35:24 +00:00
2018-09-01 02:23:45 +00:00
2018-07-20 22:50:21 +00:00
2018-07-31 16:39:38 +00:00
2019-02-08 13:10:45 +00:00
2018-11-27 14:58:19 +00:00
2018-12-19 21:56:54 +00:00
2019-04-25 16:47:15 +00:00
2019-04-02 12:50:01 +00:00
2017-12-28 05:33:19 +00:00
2019-05-16 17:41:16 +00:00
2017-11-27 15:37:16 +00:00
2018-09-26 18:40:57 +00:00
2019-03-14 14:34:36 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2019-04-16 20:08:19 +00:00
2019-01-11 08:35:49 +00:00
2018-07-23 18:08:56 +00:00
2019-04-20 02:54:20 +00:00
2018-08-19 07:12:35 +00:00
2018-12-21 17:22:15 +00:00
2018-11-30 19:40:16 +00:00
2018-10-27 05:26:09 +00:00
2019-06-04 16:07:01 +00:00
2019-04-05 20:12:19 +00:00
2018-05-30 15:08:59 +00:00
2018-01-06 12:34:03 +00:00
2019-02-05 21:37:34 +00:00
2017-11-27 15:37:16 +00:00
2019-05-10 16:44:35 +00:00
2019-02-04 21:28:25 +00:00
2019-03-07 00:01:28 +00:00
2019-05-23 18:37:05 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2018-01-05 07:28:48 +00:00
2017-12-05 05:02:46 +00:00
2017-11-27 15:37:16 +00:00
2017-11-30 20:33:45 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2019-03-12 08:31:43 +00:00
2019-03-11 22:23:56 +00:00
2018-01-05 05:34:20 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2018-06-06 18:52:33 +00:00
2019-02-21 01:30:37 +00:00
2018-08-21 11:22:49 +00:00
2019-05-22 21:06:10 +00:00
2018-01-05 07:28:58 +00:00
2018-08-12 13:29:40 +00:00
2019-03-29 16:05:30 +00:00
2018-05-28 09:41:44 +00:00
2018-11-30 19:40:16 +00:00
2019-05-18 21:01:36 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2019-01-23 10:05:27 +00:00
2019-01-22 13:11:15 +00:00
2017-12-28 05:34:04 +00:00
2019-05-27 17:33:20 +00:00
2018-10-20 17:22:04 +00:00
2019-05-04 02:09:30 +00:00
2017-11-27 15:37:16 +00:00
2018-01-02 16:50:57 +00:00
2019-03-18 19:26:36 +00:00
2017-11-27 15:37:16 +00:00
2019-05-23 18:37:05 +00:00
2018-10-13 02:21:23 +00:00
2018-05-11 19:37:18 +00:00
2019-05-08 11:05:30 +00:00
2017-11-27 15:37:16 +00:00
2019-06-03 23:07:46 +00:00
2018-10-22 02:34:10 +00:00
2019-05-30 15:07:39 +00:00
2017-11-27 15:37:16 +00:00
2018-02-23 17:20:53 +00:00
2018-05-19 20:57:22 +00:00
2017-11-27 15:37:16 +00:00
2017-12-26 16:20:38 +00:00
2019-01-30 12:32:47 +00:00
2018-11-03 18:03:24 +00:00
2019-02-22 15:31:50 +00:00
2019-05-09 19:03:52 +00:00
2019-04-28 22:37:59 +00:00
2019-04-06 22:14:03 +00:00
2018-10-26 19:16:17 +00:00
2019-01-17 20:01:06 +00:00
2019-05-15 03:39:27 +00:00
2017-11-27 15:28:26 +00:00
2018-08-03 18:35:20 +00:00
2018-12-15 23:20:08 +00:00
2019-04-24 06:25:21 +00:00
2019-05-22 01:22:33 +00:00
2018-05-18 14:14:04 +00:00
2018-09-24 19:06:09 +00:00
2019-02-04 21:28:25 +00:00
2019-02-04 21:28:25 +00:00
2018-08-08 20:30:12 +00:00
2018-07-01 17:51:52 +00:00
2018-07-10 18:44:44 +00:00
2019-04-16 14:07:14 +00:00
2019-01-06 02:39:03 +00:00
2018-09-19 07:09:55 +00:00
2018-01-29 14:23:44 +00:00
2018-06-17 17:31:16 +00:00
2019-05-25 21:57:01 +00:00
2018-10-21 00:48:38 +00:00
2019-02-06 04:00:37 +00:00
2018-12-06 00:09:39 +00:00
2017-12-13 16:13:17 +00:00
2018-06-29 21:15:17 +00:00
2018-08-08 20:15:40 +00:00
2017-12-27 03:23:01 +00:00
2019-02-03 08:15:26 +00:00
2017-11-27 15:37:16 +00:00
2019-06-03 16:51:07 +00:00
2019-02-18 03:15:25 +00:00
2018-03-19 05:49:26 +00:00
2019-03-05 02:53:41 +00:00
2019-04-30 14:44:39 +00:00
2017-11-27 15:37:16 +00:00
2019-02-27 18:13:41 +00:00
2018-11-04 19:24:49 +00:00
2017-11-27 15:37:16 +00:00
2018-06-13 06:11:04 +00:00
2019-06-02 23:38:19 +00:00
2019-02-04 01:24:10 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2018-06-23 23:08:25 +00:00
2017-11-27 15:37:16 +00:00
2018-03-05 16:13:29 +00:00
2019-03-03 10:00:26 +00:00
2019-04-22 17:52:46 +00:00
2018-07-10 13:03:06 +00:00
2017-11-27 15:37:16 +00:00
2018-05-02 19:36:46 +00:00
2019-03-15 14:42:23 +00:00
2018-02-16 20:46:44 +00:00
2018-08-09 02:47:22 +00:00
2017-11-27 15:37:16 +00:00
2018-12-19 22:47:37 +00:00
2017-11-27 15:37:16 +00:00
2018-11-02 22:23:25 +00:00
2018-11-27 09:46:01 +00:00
2018-04-29 10:45:09 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2019-04-08 04:07:37 +00:00
2017-11-27 15:37:16 +00:00
2017-12-20 20:25:28 +00:00
2017-11-27 15:37:16 +00:00
2019-02-25 18:27:19 +00:00
2019-04-23 03:52:43 +00:00
2017-11-27 15:37:16 +00:00
2017-11-27 15:37:16 +00:00
2018-02-08 14:53:34 +00:00
2017-11-27 15:37:16 +00:00
2019-01-17 18:07:59 +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