John Baldwin 1925586e03 Honor the disabled setting for MSI-X interrupts for passthrough devices.
Add a new ioctl to disable all MSI-X interrupts for a PCI passthrough
device and invoke it if a write to the MSI-X capability registers
disables MSI-X.  This avoids leaving MSI-X interrupts enabled on the
host if a guest device driver has disabled them (e.g. as part of
detaching a guest device driver).

This was found by Chelsio QA when testing that a Linux guest could
switch from MSI-X to MSI interrupts when using the cxgb4vf driver.

While here, explicitly fail requests to enable MSI on a passthrough
device if MSI-X is enabled and vice versa.

Reported by:	Sony Arpita Das @ Chelsio
Reviewed by:	grehan, markj
MFC after:	2 weeks
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D27212
2020-11-24 23:18:52 +00:00
..
2019-12-11 17:37:53 +00:00
2020-10-24 17:08:59 +00:00
2020-03-26 17:34:17 +00:00
2020-10-07 21:56:58 +00:00
2020-05-16 02:29:10 +00:00
2020-04-19 02:20:39 +00:00
2020-07-19 23:56:19 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-04-19 02:18:40 +00:00
2020-11-13 23:18:04 +00:00
2019-12-11 17:37:53 +00:00
2020-09-11 13:28:37 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-09-11 13:28:37 +00:00
2019-12-11 17:37:53 +00:00
2020-08-04 21:09:36 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-04-30 22:08:40 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-06-17 15:57:59 +00:00
2020-10-09 19:12:44 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-10-09 19:12:44 +00:00
2019-12-11 17:37:53 +00:00
2020-06-27 02:17:04 +00:00
2020-01-27 18:04:28 +00:00
2020-09-11 13:28:37 +00:00
2020-06-17 10:42:20 +00:00
2019-12-11 17:37:53 +00:00
2020-10-09 19:12:44 +00:00
2019-12-21 21:01:03 +00:00
2020-10-09 19:12:44 +00:00
2020-10-09 19:12:44 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-11-03 19:12:33 +00:00
2020-09-11 13:28:37 +00:00
2020-05-21 01:55:35 +00:00
2019-12-11 17:37:53 +00:00
2020-05-21 21:00:46 +00:00
2020-10-09 19:12:44 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2019-12-11 17:37:53 +00:00
2020-05-12 01:47:33 +00:00
2020-10-24 17:08:59 +00:00