Skip to content

Commit 6ccc5f1

Browse files
Ubuntuczfpga
authored andcommitted
Old dpdk with ubuntu
1 parent e44e2a5 commit 6ccc5f1

File tree

6 files changed

+254
-27
lines changed

6 files changed

+254
-27
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
From 50f08b12c1f207a223432bcf8249419c94a2c03d Mon Sep 17 00:00:00 2001
2+
From: root <root@ip-172-31-83-219.ec2.internal>
3+
Date: Mon, 30 Dec 2024 21:30:33 +0000
4+
Subject: [PATCH] Fixing Kernel Errors
5+
6+
---
7+
kernel/linux/igb_uio/igb_uio.c | 41 ++++++++++++++++++----------------
8+
kernel/linux/kni/kni_dev.h | 2 +-
9+
2 files changed, 23 insertions(+), 20 deletions(-)
10+
11+
diff --git a/kernel/linux/igb_uio/igb_uio.c b/kernel/linux/igb_uio/igb_uio.c
12+
index 039f5a5f63..01bc261555 100644
13+
--- a/kernel/linux/igb_uio/igb_uio.c
14+
+++ b/kernel/linux/igb_uio/igb_uio.c
15+
@@ -213,67 +213,70 @@ igbuio_pci_enable_interrupts(struct rte_uio_pci_dev *udev)
16+
#ifndef HAVE_ALLOC_IRQ_VECTORS
17+
struct msix_entry msix_entry;
18+
#endif
19+
-
20+
-switch (igbuio_intr_mode_preferred) {
21+
-case RTE_INTR_MODE_MSIX:
22+
-/* Only 1 msi-x vector needed */
23+
+int found_intr_mode = 0;
24+
+if (igbuio_intr_mode_preferred == RTE_INTR_MODE_MSIX) {
25+
+/* Only 1 msi-x vector needed */
26+
#ifndef HAVE_ALLOC_IRQ_VECTORS
27+
msix_entry.entry = 0;
28+
if (pci_enable_msix(udev->pdev, &msix_entry, 1) == 0) {
29+
+found_intr_mode = 1;
30+
dev_dbg(&udev->pdev->dev, "using MSI-X");
31+
udev->info.irq_flags = IRQF_NO_THREAD;
32+
udev->info.irq = msix_entry.vector;
33+
udev->mode = RTE_INTR_MODE_MSIX;
34+
-break;
35+
}
36+
#else
37+
if (pci_alloc_irq_vectors(udev->pdev, 1, 1, PCI_IRQ_MSIX) == 1) {
38+
+found_intr_mode = 1;
39+
dev_dbg(&udev->pdev->dev, "using MSI-X");
40+
udev->info.irq_flags = IRQF_NO_THREAD;
41+
udev->info.irq = pci_irq_vector(udev->pdev, 0);
42+
udev->mode = RTE_INTR_MODE_MSIX;
43+
-break;
44+
}
45+
#endif
46+
+}
47+
48+
-/* falls through - to MSI */
49+
-case RTE_INTR_MODE_MSI:
50+
+ if (found_intr_mode == 0 && (igbuio_intr_mode_preferred == RTE_INTR_MODE_MSIX || igbuio_intr_mode_preferred == RTE_INTR_MODE_MSI)) {
51+
#ifndef HAVE_ALLOC_IRQ_VECTORS
52+
if (pci_enable_msi(udev->pdev) == 0) {
53+
+found_intr_mode = 1;
54+
dev_dbg(&udev->pdev->dev, "using MSI");
55+
udev->info.irq_flags = IRQF_NO_THREAD;
56+
udev->info.irq = udev->pdev->irq;
57+
udev->mode = RTE_INTR_MODE_MSI;
58+
-break;
59+
}
60+
#else
61+
if (pci_alloc_irq_vectors(udev->pdev, 1, 1, PCI_IRQ_MSI) == 1) {
62+
+found_intr_mode = 1;
63+
dev_dbg(&udev->pdev->dev, "using MSI");
64+
udev->info.irq_flags = IRQF_NO_THREAD;
65+
udev->info.irq = pci_irq_vector(udev->pdev, 0);
66+
udev->mode = RTE_INTR_MODE_MSI;
67+
-break;
68+
}
69+
#endif
70+
-/* falls through - to INTX */
71+
-case RTE_INTR_MODE_LEGACY:
72+
+}
73+
+
74+
+if (found_intr_mode == 0 && (igbuio_intr_mode_preferred == RTE_INTR_MODE_MSIX || igbuio_intr_mode_preferred == RTE_INTR_MODE_MSI || igbuio_intr_mode_preferred == RTE_INTR_MODE_LEGACY)) {
75+
if (pci_intx_mask_supported(udev->pdev)) {
76+
+found_intr_mode = 1;
77+
dev_dbg(&udev->pdev->dev, "using INTX");
78+
udev->info.irq_flags = IRQF_SHARED | IRQF_NO_THREAD;
79+
udev->info.irq = udev->pdev->irq;
80+
udev->mode = RTE_INTR_MODE_LEGACY;
81+
-break;
82+
+} else {
83+
+dev_notice(&udev->pdev->dev, "PCI INTX mask not supported\n");
84+
}
85+
-dev_notice(&udev->pdev->dev, "PCI INTX mask not supported\n");
86+
-/* falls through - to no IRQ */
87+
-case RTE_INTR_MODE_NONE:
88+
+}
89+
+
90+
+if (found_intr_mode == 0 && (igbuio_intr_mode_preferred == RTE_INTR_MODE_MSIX || igbuio_intr_mode_preferred == RTE_INTR_MODE_MSI || igbuio_intr_mode_preferred == RTE_INTR_MODE_LEGACY || igbuio_intr_mode_preferred == RTE_INTR_MODE_NONE)) {
91+
+found_intr_mode = 1;
92+
udev->mode = RTE_INTR_MODE_NONE;
93+
udev->info.irq = UIO_IRQ_NONE;
94+
-break;
95+
+}
96+
97+
-default:
98+
+if (found_intr_mode == 0) {
99+
dev_err(&udev->pdev->dev, "invalid IRQ mode %u",
100+
-igbuio_intr_mode_preferred);
101+
+igbuio_intr_mode_preferred);
102+
udev->info.irq = UIO_IRQ_NONE;
103+
err = -EINVAL;
104+
}
105+
diff --git a/kernel/linux/kni/kni_dev.h b/kernel/linux/kni/kni_dev.h
106+
index ca5f92a47b..37d9c72d9f 100644
107+
--- a/kernel/linux/kni/kni_dev.h
108+
+++ b/kernel/linux/kni/kni_dev.h
109+
@@ -101,7 +101,7 @@ static inline phys_addr_t iova_to_phys(struct task_struct *tsk,
110+
offset = iova & (PAGE_SIZE - 1);
111+
112+
/* Read one page struct info */
113+
-ret = get_user_pages_remote(tsk, tsk->mm, iova, 1,
114+
+ret = get_user_pages_remote(tsk->mm, iova, 1,
115+
FOLL_TOUCH, &page, NULL, NULL);
116+
if (ret < 0)
117+
return 0;
118+
--
119+
2.25.1
120+
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
From 9f7c52afa7c948adea4fe931e735310dae248e53 Mon Sep 17 00:00:00 2001
2+
From: root <root@ip-172-31-83-219.ec2.internal>
3+
Date: Mon, 30 Dec 2024 17:55:54 +0000
4+
Subject: [PATCH] Fixing fallthroughs
5+
6+
---
7+
kernel/linux/igb_uio/igb_uio.c | 41 ++++++++++++++++++----------------
8+
1 file changed, 22 insertions(+), 19 deletions(-)
9+
10+
diff --git a/kernel/linux/igb_uio/igb_uio.c b/kernel/linux/igb_uio/igb_uio.c
11+
index 039f5a5f63..01bc261555 100644
12+
--- a/kernel/linux/igb_uio/igb_uio.c
13+
+++ b/kernel/linux/igb_uio/igb_uio.c
14+
@@ -213,67 +213,70 @@ igbuio_pci_enable_interrupts(struct rte_uio_pci_dev *udev)
15+
#ifndef HAVE_ALLOC_IRQ_VECTORS
16+
struct msix_entry msix_entry;
17+
#endif
18+
-
19+
-switch (igbuio_intr_mode_preferred) {
20+
-case RTE_INTR_MODE_MSIX:
21+
-/* Only 1 msi-x vector needed */
22+
+int found_intr_mode = 0;
23+
+if (igbuio_intr_mode_preferred == RTE_INTR_MODE_MSIX) {
24+
+/* Only 1 msi-x vector needed */
25+
#ifndef HAVE_ALLOC_IRQ_VECTORS
26+
msix_entry.entry = 0;
27+
if (pci_enable_msix(udev->pdev, &msix_entry, 1) == 0) {
28+
+found_intr_mode = 1;
29+
dev_dbg(&udev->pdev->dev, "using MSI-X");
30+
udev->info.irq_flags = IRQF_NO_THREAD;
31+
udev->info.irq = msix_entry.vector;
32+
udev->mode = RTE_INTR_MODE_MSIX;
33+
-break;
34+
}
35+
#else
36+
if (pci_alloc_irq_vectors(udev->pdev, 1, 1, PCI_IRQ_MSIX) == 1) {
37+
+found_intr_mode = 1;
38+
dev_dbg(&udev->pdev->dev, "using MSI-X");
39+
udev->info.irq_flags = IRQF_NO_THREAD;
40+
udev->info.irq = pci_irq_vector(udev->pdev, 0);
41+
udev->mode = RTE_INTR_MODE_MSIX;
42+
-break;
43+
}
44+
#endif
45+
+}
46+
47+
-/* falls through - to MSI */
48+
-case RTE_INTR_MODE_MSI:
49+
+ if (found_intr_mode == 0 && (igbuio_intr_mode_preferred == RTE_INTR_MODE_MSIX || igbuio_intr_mode_preferred == RTE_INTR_MODE_MSI)) {
50+
#ifndef HAVE_ALLOC_IRQ_VECTORS
51+
if (pci_enable_msi(udev->pdev) == 0) {
52+
+found_intr_mode = 1;
53+
dev_dbg(&udev->pdev->dev, "using MSI");
54+
udev->info.irq_flags = IRQF_NO_THREAD;
55+
udev->info.irq = udev->pdev->irq;
56+
udev->mode = RTE_INTR_MODE_MSI;
57+
-break;
58+
}
59+
#else
60+
if (pci_alloc_irq_vectors(udev->pdev, 1, 1, PCI_IRQ_MSI) == 1) {
61+
+found_intr_mode = 1;
62+
dev_dbg(&udev->pdev->dev, "using MSI");
63+
udev->info.irq_flags = IRQF_NO_THREAD;
64+
udev->info.irq = pci_irq_vector(udev->pdev, 0);
65+
udev->mode = RTE_INTR_MODE_MSI;
66+
-break;
67+
}
68+
#endif
69+
-/* falls through - to INTX */
70+
-case RTE_INTR_MODE_LEGACY:
71+
+}
72+
+
73+
+if (found_intr_mode == 0 && (igbuio_intr_mode_preferred == RTE_INTR_MODE_MSIX || igbuio_intr_mode_preferred == RTE_INTR_MODE_MSI || igbuio_intr_mode_preferred == RTE_INTR_MODE_LEGACY)) {
74+
if (pci_intx_mask_supported(udev->pdev)) {
75+
+found_intr_mode = 1;
76+
dev_dbg(&udev->pdev->dev, "using INTX");
77+
udev->info.irq_flags = IRQF_SHARED | IRQF_NO_THREAD;
78+
udev->info.irq = udev->pdev->irq;
79+
udev->mode = RTE_INTR_MODE_LEGACY;
80+
-break;
81+
+} else {
82+
+dev_notice(&udev->pdev->dev, "PCI INTX mask not supported\n");
83+
}
84+
-dev_notice(&udev->pdev->dev, "PCI INTX mask not supported\n");
85+
-/* falls through - to no IRQ */
86+
-case RTE_INTR_MODE_NONE:
87+
+}
88+
+
89+
+if (found_intr_mode == 0 && (igbuio_intr_mode_preferred == RTE_INTR_MODE_MSIX || igbuio_intr_mode_preferred == RTE_INTR_MODE_MSI || igbuio_intr_mode_preferred == RTE_INTR_MODE_LEGACY || igbuio_intr_mode_preferred == RTE_INTR_MODE_NONE)) {
90+
+found_intr_mode = 1;
91+
udev->mode = RTE_INTR_MODE_NONE;
92+
udev->info.irq = UIO_IRQ_NONE;
93+
-break;
94+
+}
95+
96+
-default:
97+
+if (found_intr_mode == 0) {
98+
dev_err(&udev->pdev->dev, "invalid IRQ mode %u",
99+
-igbuio_intr_mode_preferred);
100+
+igbuio_intr_mode_preferred);
101+
udev->info.irq = UIO_IRQ_NONE;
102+
err = -EINVAL;
103+
}
104+
--
105+
2.25.1
106+

sdk/apps/virtual-ethernet/scripts/virtual_ethernet_install.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env python
1+
#!/usr/bin/env python3
22

33
# Amazon FPGA Hardware Development Kit
44
#
@@ -18,7 +18,7 @@
1818
from __future__ import print_function
1919
import os
2020
import sys
21-
import platform
21+
import distro
2222
import glob
2323
import argparse
2424
import logging
@@ -54,8 +54,9 @@ def cmd_exec(cmd):
5454
sys.exit(1)
5555

5656
def install_dpdk_dep():
57-
distro = platform.linux_distribution()
58-
if (distro[0] == "Ubuntu"):
57+
installed_distro = distro.name()
58+
print("installed_distro = {installed_distro}")
59+
if (installed_distro == "Ubuntu"):
5960
cmd_exec("apt -y install libnuma-dev")
6061
cmd_exec("apt -y install libpcap-dev")
6162
else:
@@ -90,7 +91,7 @@ def install_dpdk(install_path):
9091
patchfiles = []
9192
for patchfile in sorted(glob.iglob("%s/000*.patch" % (patches_path))):
9293
logger.debug("found patchfile=%s" % patchfile)
93-
patchfiles.append(os.path.abspath(patchfile))
94+
patchfiles.append(os.path.abspath(patchfile))
9495

9596
# cd to the install_path directory
9697
os.chdir("%s" % (install_path))

sdk/apps/virtual-ethernet/scripts/virtual_ethernet_pktgen_install.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env python
1+
#!/usr/bin/env python3
22

33
# Amazon FPGA Hardware Development Kit
44
#
@@ -18,7 +18,7 @@
1818
from __future__ import print_function
1919
import os
2020
import sys
21-
import platform
21+
import distro
2222
import glob
2323
import argparse
2424
import logging
@@ -65,8 +65,8 @@ def cmd_exec(cmd):
6565
sys.exit(1)
6666

6767
def install_dpdk_dep():
68-
distro = platform.linux_distribution()
69-
if (distro[0] == "Ubuntu"):
68+
installed_distro = distro.name()
69+
if (installed_distro == "Ubuntu"):
7070
cmd_exec("sudo apt -y install libnuma-dev")
7171
cmd_exec("sudo apt -y install libpcap-dev")
7272
else:
@@ -100,12 +100,12 @@ def install_pktgen_dpdk(install_path):
100100
patchfiles = []
101101
for patchfile in sorted(glob.iglob("%s/000*.patch" % (patches_path))):
102102
logger.debug("found patchfile=%s for pktgen" % patchfile)
103-
patchfiles.append(os.path.abspath(patchfile))
103+
patchfiles.append(os.path.abspath(patchfile))
104104
# Read in the dpdk patch filenames
105105
dpdk_patchfiles = []
106106
for dpdk_patchfile in sorted(glob.iglob("%s/dpdk*.patch" % (patches_path))):
107107
logger.debug("found patchfile=%s for dpdk" % dpdk_patchfile)
108-
dpdk_patchfiles.append(os.path.abspath(dpdk_patchfile))
108+
dpdk_patchfiles.append(os.path.abspath(dpdk_patchfile))
109109
# cd to the install_path directory
110110
os.chdir("%s" % (install_path))
111111

sdk/apps/virtual-ethernet/scripts/virtual_ethernet_pktgen_setup.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env python
1+
#!/usr/bin/env python3
22

33
# Amazon FPGA Hardware Development Kit
44
#
@@ -18,7 +18,7 @@
1818
from __future__ import print_function
1919
import os
2020
import sys
21-
import platform
21+
import distro
2222
import glob
2323
import argparse
2424
import subprocess
@@ -58,8 +58,8 @@ def cmd_exec(cmd, check_return=True):
5858
sys.exit(1)
5959

6060
def load_uio():
61-
distro = platform.linux_distribution()
62-
if (distro[0] == "Ubuntu"):
61+
installed_distro = distro.name()
62+
if (installed_distro == "Ubuntu"):
6363
cmd_exec("modprobe uio")
6464
else:
6565
cmd_exec("modprobe uio_pci_generic")
@@ -111,8 +111,8 @@ def setup_dpdk(install_path, eni_dbdf, eni_ethdev):
111111
cmd_exec("insmod ./build/kernel/linux/igb_uio/igb_uio.ko")
112112

113113
# Bind the ENI device to to DPDK
114-
cmd_exec("ifdown %s" % (eni_ethdev))
115-
cmd_exec("%s --bind=igb_uio %s" % (dpdk_devbind, eni_dbdf))
114+
cmd_exec("ip link set %s down" % (eni_ethdev))
115+
cmd_exec("python3 %s --bind=igb_uio %s" % (dpdk_devbind, eni_dbdf))
116116

117117
# cd back to the original directory
118118
os.chdir("%s" % (cwd))

0 commit comments

Comments
 (0)