summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas F Herbert <therbert@redhat.com>2016-06-23 04:01:17 -0400
committerThomas F Herbert <therbert@redhat.com>2016-06-30 11:39:30 -0400
commit6f971f00a354bd68af0ca6b55ab00c5d1c1dfa0f (patch)
tree5560f802eaf423cd82c9ce54d4fc808f65859fa7
parent1fe93bf666765927d9ed15ead14db85caf51098c (diff)
RPM: Apex: Backport patch to dpdk to fix PCI walk to fix segfault to
ovs-vswitch. Rebased to latest. Change-Id: Ic7788c4a479378866eda95473bd0c0d398dc33fd Signed-off-by: Thomas F Herbert <therbert@redhat.com>
-rwxr-xr-xbuild/build_dpdk_rpm.sh8
-rw-r--r--build/patches/dpdk-16.04-virtio-devargs.patch22
-rw-r--r--build/patches/spec_file_add_virtio_patch.patch22
3 files changed, 52 insertions, 0 deletions
diff --git a/build/build_dpdk_rpm.sh b/build/build_dpdk_rpm.sh
index 91a7fdf..5da0e86 100755
--- a/build/build_dpdk_rpm.sh
+++ b/build/build_dpdk_rpm.sh
@@ -91,6 +91,14 @@ cd copr
git clone https://github.com/tfherbert/dpdk-snap.git
cd dpdk-snap
git checkout $COPR_DPDK_VERSION
+echo "---------------------"
+echo "Apply dpdk dpdk spec file patch"
+echo
+git apply $HOME/patches/spec_file_add_virtio_patch.patch
+echo "---------------------"
+echo "Copy in local dpdk patches"
+echo
+cp $HOME/patches/dpdk-16.04-virtio-devargs.patch $TMPDIR/copr/dpdk-snap
echo "---------------------"
echo "Build DPDK RPM version $DPDK_VERSION"
diff --git a/build/patches/dpdk-16.04-virtio-devargs.patch b/build/patches/dpdk-16.04-virtio-devargs.patch
new file mode 100644
index 0000000..f5a3bc4
--- /dev/null
+++ b/build/patches/dpdk-16.04-virtio-devargs.patch
@@ -0,0 +1,22 @@
+diff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c
+index c007959..3a25f82 100644
+--- a/drivers/net/virtio/virtio_pci.c
++++ b/drivers/net/virtio/virtio_pci.c
+@@ -626,6 +626,7 @@ next:
+ * Return -1:
+ * if there is error mapping with VFIO/UIO.
+ * if port map error when driver type is KDRV_NONE.
++ * if whitelisted but driver type is KDRV_UNKNOWN.
+ * Return 1 if kernel driver is managing the device.
+ * Return 0 on success.
+ */
+@@ -650,7 +651,8 @@ vtpci_init(struct rte_pci_device *dev, struct virtio_hw *hw)
+ PMD_INIT_LOG(INFO, "trying with legacy virtio pci.");
+ if (legacy_virtio_resource_init(dev, hw) < 0) {
+ if (dev->kdrv == RTE_KDRV_UNKNOWN &&
+- dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI) {
++ (!dev->devargs ||
++ dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI)) {
+ PMD_INIT_LOG(INFO,
+ "skip kernel managed virtio device.");
+ return 1;
diff --git a/build/patches/spec_file_add_virtio_patch.patch b/build/patches/spec_file_add_virtio_patch.patch
new file mode 100644
index 0000000..65465f1
--- /dev/null
+++ b/build/patches/spec_file_add_virtio_patch.patch
@@ -0,0 +1,22 @@
+diff --git a/dpdk.spec b/dpdk.spec
+index 2ee5bdd..af2dede 100644
+--- a/dpdk.spec
++++ b/dpdk.spec
+@@ -24,6 +24,9 @@ Source100: dpdk-snapshot.sh
+
+ # Some tweaking and tuning needed due to Fedora %%optflags
+ Patch2: dpdk-2.2-warningflags.patch
++# Before checking if the virtio device is whitelisted, check if devargs
++# is specified.
++Patch4: dpdk-16.04-virtio-devargs.patch
+
+ Summary: Set of libraries and drivers for fast packet processing
+
+@@ -106,6 +109,7 @@ as L2 and L3 forwarding.
+ %prep
+ %setup -q -n %{name}-%{srcver}
+ %patch2 -p1 -z .warningflags
++%patch4 -p1 -z .virtiofix
+
+ %build
+ function setconf()