Starting with DPDK 22.11, PCI API are no longer public. In order to implement out-of-tree driver like SPDK NVMe driver that is compatible with DPDK, a copy of PCI API headers are required in SPDK. check_dpdk_pci_api.sh script is intended simplify the maintanance of the compatibility between SPDK copies of the headers and multiple DPDK versions. Please see the included README Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ief028c13564441560425761e7802c6cf07460876 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15857 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
45 lines
1.7 KiB
Markdown
45 lines
1.7 KiB
Markdown
# Introduction
|
|
|
|
Starting with DPDK 22.11, PCI API are no longer public. In order to implement
|
|
out-of-tree driver like SPDK NVMe driver that is compatible with DPDK,
|
|
a copy of PCI API headers are required in SPDK.
|
|
|
|
`check_dpdk_pci_api.sh` script is intended simplify the maintenance of the
|
|
compatibility between SPDK copies of the headers and multiple DPDK versions.
|
|
|
|
## Arguments
|
|
|
|
The script has two optional positional arguments:
|
|
$1 - `check` or `fix` mode (default: check)
|
|
$2 - path to DPDK sources (default: DPDK submodule)
|
|
|
|
## Check mode
|
|
|
|
When calling the script, default is to check the diff of the in-tree headers with
|
|
DPDK and report any differences found. This is used for testing of current and
|
|
future DPDK versions.
|
|
|
|
## Fix mode
|
|
|
|
Similar to check mode, but additionally patches the differences to the
|
|
currently tested DPDK version. This should be done only for cosmetic changes,
|
|
not for changes that break compatibility.
|
|
|
|
## Workarounds for specific DPDK version
|
|
|
|
Any changes that should be applied to all copied headers have to be part of the
|
|
`check_dpdk_pci_api.sh`. For example referring to in-tree copied PCI headers
|
|
rather than system installed ones.
|
|
|
|
In rare cases there might be a need to apply a specific workaround for
|
|
particular DPDK PCI API version. Then a patch should be added in
|
|
`spdk_root/scripts/env_dpdk/<ver>` where ver is the matching DPDK version.
|
|
|
|
## Flow for adding support for new DPDK PCI API version
|
|
|
|
If API was changed, a new directory should be created `spdk_root/lib/env_dpdk/<ver>`
|
|
where ver is the appropriate DPDK version name. There the relevant headers should be copied.
|
|
|
|
Please note that the directories should match only the first DPDK version that modified the API.
|
|
Not every DPDK version requires new directory.
|