numam-dpdk/lib
Anatoly Burakov 03ba15ca65 vfio: allow mapping MSI-X BARs if kernel allows it
Currently, DPDK will skip mapping some areas (or even an entire BAR)
if MSI-X table happens to be in them but is smaller than page size.

Kernels 4.16+ will allow mapping MSI-X BARs [1], and will report this
as a capability flag. Capability flags themselves are also only
supported since kernel 4.6 [2].

This commit will introduce support for checking VFIO capabilities,
and will use it to check if we are allowed to map BARs with MSI-X
tables in them, along with backwards compatibility for older
kernels, including a workaround for a variable rename in VFIO
region info structure [3].

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?id=a32295c612c57990d17fb0f41e7134394b2f35f6

[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?id=c84982adb23bcf3b99b79ca33527cd2625fbe279

[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?id=ff63eb638d63b95e489f976428f1df01391e15e4

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
2018-10-04 00:45:50 +02:00
..
librte_acl acl: forbid rule with priority zero 2018-09-16 11:53:25 +02:00
librte_bbdev remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_bitratestats bitrate: add sanity check on parameters 2018-07-26 20:07:57 +02:00
librte_bpf bpf: fix 32-bit build support with meson 2018-07-12 12:24:25 +02:00
librte_cfgfile build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_cmdline cmdline: remove useless intermediate buffer 2018-06-27 18:25:30 +02:00
librte_compat buildtools: change license to SPDX 2018-07-26 22:45:17 +02:00
librte_compressdev remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_cryptodev remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_distributor build: set compat lib as universal dependency 2018-01-30 21:59:00 +01:00
librte_eal vfio: allow mapping MSI-X BARs if kernel allows it 2018-10-04 00:45:50 +02:00
librte_efd build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_ethdev ethdev: register as a class 2018-10-03 14:23:02 +02:00
librte_eventdev eventdev: fix port id argument in Rx adapter caps 2018-10-01 16:53:13 +02:00
librte_flow_classify remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_gro build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_gso gso: support UDP/IPv4 fragmentation 2018-07-11 23:45:20 +02:00
librte_hash hash: add more accurate thread-safety comments 2018-08-09 21:56:29 +02:00
librte_ip_frag ip_frag: add function to delete expired entries 2018-09-19 19:45:38 +02:00
librte_jobstats build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_kni kni: allocate memory dynamically for each device 2018-10-02 17:57:00 +02:00
librte_kvargs kvargs: fix building with meson outside source tree 2018-07-26 10:14:06 +02:00
librte_latencystats latency: free up the memzone 2018-08-01 18:25:08 +02:00
librte_lpm lpm6: add incremental update on delete 2018-09-19 17:11:37 +02:00
librte_mbuf eventdev: add eth Tx adapter APIs 2018-10-01 16:49:41 +02:00
librte_member remove useless constructor headers 2018-07-12 00:00:35 +02:00
librte_mempool mempool: fold memory size calculation helper 2018-08-05 23:41:57 +02:00
librte_meter meter: remove experimental tag from profile API 2018-08-06 01:15:11 +02:00
librte_metrics metrics: disallow null as metric name 2018-07-26 20:30:18 +02:00
librte_net net: fix Intel prepare function for IP checksum offload 2018-09-28 01:41:02 +02:00
librte_pci use SPDX tag for 6WIND copyrighted files 2018-05-25 10:47:06 +02:00
librte_pdump pdump: remove dependency on libpthread 2018-09-18 11:48:32 +02:00
librte_pipeline lib: clear experimental version tag in linker scripts 2018-05-14 03:37:28 +02:00
librte_port build: remove checks for non-optional libraries 2018-04-17 16:09:43 +02:00
librte_power examples/vm_power: add branch ratio policy type 2018-07-20 23:59:42 +02:00
librte_rawdev rawdev: fix missing queue count API 2018-08-01 18:25:10 +02:00
librte_reorder build: replace license text with SPDX tag 2018-01-30 21:58:59 +01:00
librte_ring ring: clarify preemptible nature of algorithm 2018-08-05 20:06:10 +02:00
librte_sched lib: clear experimental version tag in linker scripts 2018-05-14 03:37:28 +02:00
librte_security security: fix crash on destroy null session 2018-07-11 00:57:51 +02:00
librte_table table: add dedicated params struct for cuckoo hash 2018-05-08 16:19:58 +02:00
librte_timer eal: make semantics of lcore role function more intuitive 2018-04-26 16:58:18 +02:00
librte_vhost vhost: fix corner case for enqueue operation 2018-09-28 01:41:03 +02:00
Makefile lpm6: store rules in hash table 2018-09-19 17:11:17 +02:00
meson.build build: add configuration summary at end of config 2018-09-17 13:58:40 +02:00