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
librte_bitratestats bitrate: add sanity check on parameters 2018-07-26 20:07:57 +02:00
librte_bpf
librte_cfgfile
librte_cmdline
librte_compat buildtools: change license to SPDX 2018-07-26 22:45:17 +02:00
librte_compressdev
librte_cryptodev
librte_distributor
librte_eal vfio: allow mapping MSI-X BARs if kernel allows it 2018-10-04 00:45:50 +02:00
librte_efd
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
librte_gro
librte_gso
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
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
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
librte_pdump pdump: remove dependency on libpthread 2018-09-18 11:48:32 +02:00
librte_pipeline
librte_port
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
librte_ring ring: clarify preemptible nature of algorithm 2018-08-05 20:06:10 +02:00
librte_sched
librte_security
librte_table
librte_timer
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