[yocto] [meta-dpdk][PATCH] dpdk: igb_uio: fix build on Linux 5.3 for fall through
He Zhe
zhe.he at windriver.com
Mon Aug 5 00:57:39 PDT 2019
Please ignore.
Zhe
On 8/5/19 3:51 PM, zhe.he at windriver.com wrote:
> From: He Zhe <zhe.he at windriver.com>
>
> Since kernel v5.3 "-Wimplicit-fallthrough=3" gcc flag is enabled by default by
> a035d552a93b ("Makefile: Globally enable fall-through warning") and would cause
> the following build failure.
>
> x86_64-native-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:248:
> 6: error: this statement may fall through [-Werror=implicit-fallthrough=]
>
> Backport a patch from upstream and adjust context respectively for v17 and v18.
> c96bbbd010f7abb88c2ca2ed9dfc5ecd37e9027d
>
> Signed-off-by: He Zhe <zhe.he at windriver.com>
> ---
> ...o-fix-build-on-Linux-5.3-for-fall-through.patch | 81 ++++++++++++++++++++++
> ...o-fix-build-on-Linux-5.3-for-fall-through.patch | 80 +++++++++++++++++++++
> recipes-extended/dpdk/dpdk_17.11.6.bb | 1 +
> recipes-extended/dpdk/dpdk_18.11.2.bb | 4 ++
> 4 files changed, 166 insertions(+)
> create mode 100644 recipes-extended/dpdk/dpdk/dpdk-17.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch
> create mode 100644 recipes-extended/dpdk/dpdk/dpdk-18.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch
>
> diff --git a/recipes-extended/dpdk/dpdk/dpdk-17.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch b/recipes-extended/dpdk/dpdk/dpdk-17.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch
> new file mode 100644
> index 0000000..90901eb
> --- /dev/null
> +++ b/recipes-extended/dpdk/dpdk/dpdk-17.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch
> @@ -0,0 +1,81 @@
> +From c0307019689d5f8b4d5ca7d92a5585c94088afeb Mon Sep 17 00:00:00 2001
> +From: Ferruh Yigit <ferruh.yigit at intel.com>
> +Date: Mon, 29 Jul 2019 13:32:16 +0100
> +Subject: [PATCH] igb_uio: fix build on Linux 5.3 for fall through
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +build error:
> +kernel/linux/igb_uio/igb_uio.c:
> + In function ‘igbuio_pci_enable_interrupts’:
> + kernel/linux/igb_uio/igb_uio.c:230:6:
> + error: this statement may fall through
> + [-Werror=implicit-fallthrough=]
> + 230 | if (pci_alloc_irq_vectors(udev->pdev, 1, 1, ....
> +kernel/linux/igb_uio/igb_uio.c:240:2: note: here
> + 240 | case RTE_INTR_MODE_MSI:
> + | ^~~~
> +
> +The build error is caused by Linux kernel commit in 5.3 that enables the
> +"-Wimplicit-fallthrough=3" gcc flag.
> +Commit a035d552a93b ("Makefile: Globally enable fall-through warning")
> +
> +To fix the error, either a gcc attribute can be provided [1] or a code
> +comment with some defined syntax need to be provided [2], since there is
> +already comments, updated them slightly to match the required syntax to
> +fix the build error.
> +
> +[1]
> +"__attribute__ ((fallthrough));"
> +
> +[2]
> +[ \t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?
> +fall(s | |-)?thr(ough|u)[ \t.!]*(-[^\n\r]*)?
> +
> +Cc: stable at dpdk.org
> +
> +Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
> +
> +commit c96bbbd010f7abb88c2ca2ed9dfc5ecd37e9027d upstream
> +Adjust code context
> +
> +Signed-off-by: He Zhe <zhe.he at windriver.com>
> +---
> + lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 6 +++---
> + 1 file changed, 3 insertions(+), 3 deletions(-)
> +
> +diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> +index 45d7027..3073bca 100644
> +--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> ++++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> +@@ -254,7 +254,7 @@ igbuio_pci_enable_interrupts(struct rte_uio_pci_dev *udev)
> + }
> + #endif
> +
> +- /* fall back to MSI */
> ++ /* falls through - to MSI */
> + case RTE_INTR_MODE_MSI:
> + #ifndef HAVE_ALLOC_IRQ_VECTORS
> + if (pci_enable_msi(udev->pdev) == 0) {
> +@@ -273,7 +273,7 @@ igbuio_pci_enable_interrupts(struct rte_uio_pci_dev *udev)
> + break;
> + }
> + #endif
> +- /* fall back to INTX */
> ++ /* falls through - to INTX */
> + case RTE_INTR_MODE_LEGACY:
> + if (pci_intx_mask_supported(udev->pdev)) {
> + dev_dbg(&udev->pdev->dev, "using INTX");
> +@@ -283,7 +283,7 @@ igbuio_pci_enable_interrupts(struct rte_uio_pci_dev *udev)
> + break;
> + }
> + dev_notice(&udev->pdev->dev, "PCI INTX mask not supported\n");
> +- /* fall back to no IRQ */
> ++ /* falls through - to no IRQ */
> + case RTE_INTR_MODE_NONE:
> + udev->mode = RTE_INTR_MODE_NONE;
> + udev->info.irq = UIO_IRQ_NONE;
> +--
> +2.7.4
> +
> diff --git a/recipes-extended/dpdk/dpdk/dpdk-18.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch b/recipes-extended/dpdk/dpdk/dpdk-18.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch
> new file mode 100644
> index 0000000..417d93b
> --- /dev/null
> +++ b/recipes-extended/dpdk/dpdk/dpdk-18.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch
> @@ -0,0 +1,80 @@
> +From af89b90b4e5e9d1533b6debd86ae38bbd82df8c8 Mon Sep 17 00:00:00 2001
> +From: Ferruh Yigit <ferruh.yigit at intel.com>
> +Date: Mon, 29 Jul 2019 13:32:16 +0100
> +Subject: [PATCH] igb_uio: fix build on Linux 5.3 for fall through
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +build error:
> +kernel/linux/igb_uio/igb_uio.c:
> + In function ‘igbuio_pci_enable_interrupts’:
> + kernel/linux/igb_uio/igb_uio.c:230:6:
> + error: this statement may fall through
> + [-Werror=implicit-fallthrough=]
> + 230 | if (pci_alloc_irq_vectors(udev->pdev, 1, 1, ....
> +kernel/linux/igb_uio/igb_uio.c:240:2: note: here
> + 240 | case RTE_INTR_MODE_MSI:
> + | ^~~~
> +
> +The build error is caused by Linux kernel commit in 5.3 that enables the
> +"-Wimplicit-fallthrough=3" gcc flag.
> +Commit a035d552a93b ("Makefile: Globally enable fall-through warning")
> +
> +To fix the error, either a gcc attribute can be provided [1] or a code
> +comment with some defined syntax need to be provided [2], since there is
> +already comments, updated them slightly to match the required syntax to
> +fix the build error.
> +
> +[1]
> +"__attribute__ ((fallthrough));"
> +
> +[2]
> +[ \t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?
> +fall(s | |-)?thr(ough|u)[ \t.!]*(-[^\n\r]*)?
> +
> +Cc: stable at dpdk.org
> +
> +Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
> +
> +commit c96bbbd010f7abb88c2ca2ed9dfc5ecd37e9027d upstream
> +
> +Signed-off-by: He Zhe <zhe.he at windriver.com>
> +---
> + kernel/linux/igb_uio/igb_uio.c | 6 +++---
> + 1 file changed, 3 insertions(+), 3 deletions(-)
> +
> +diff --git a/kernel/linux/igb_uio/igb_uio.c b/kernel/linux/igb_uio/igb_uio.c
> +index 3cf394b..039f5a5 100644
> +--- a/kernel/linux/igb_uio/igb_uio.c
> ++++ b/kernel/linux/igb_uio/igb_uio.c
> +@@ -236,7 +236,7 @@ igbuio_pci_enable_interrupts(struct rte_uio_pci_dev *udev)
> + }
> + #endif
> +
> +- /* fall back to MSI */
> ++ /* falls through - to MSI */
> + case RTE_INTR_MODE_MSI:
> + #ifndef HAVE_ALLOC_IRQ_VECTORS
> + if (pci_enable_msi(udev->pdev) == 0) {
> +@@ -255,7 +255,7 @@ igbuio_pci_enable_interrupts(struct rte_uio_pci_dev *udev)
> + break;
> + }
> + #endif
> +- /* fall back to INTX */
> ++ /* falls through - to INTX */
> + case RTE_INTR_MODE_LEGACY:
> + if (pci_intx_mask_supported(udev->pdev)) {
> + dev_dbg(&udev->pdev->dev, "using INTX");
> +@@ -265,7 +265,7 @@ igbuio_pci_enable_interrupts(struct rte_uio_pci_dev *udev)
> + break;
> + }
> + dev_notice(&udev->pdev->dev, "PCI INTX mask not supported\n");
> +- /* fall back to no IRQ */
> ++ /* falls through - to no IRQ */
> + case RTE_INTR_MODE_NONE:
> + udev->mode = RTE_INTR_MODE_NONE;
> + udev->info.irq = UIO_IRQ_NONE;
> +--
> +2.7.4
> +
> diff --git a/recipes-extended/dpdk/dpdk_17.11.6.bb b/recipes-extended/dpdk/dpdk_17.11.6.bb
> index 01bacd6..40edd8b 100644
> --- a/recipes-extended/dpdk/dpdk_17.11.6.bb
> +++ b/recipes-extended/dpdk/dpdk_17.11.6.bb
> @@ -11,6 +11,7 @@ LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=751419260aa954499f7abaabaa882bbe\
> SRC_URI += "\
> file://dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch \
> file://dpdk-17.11-mk-disable-warning-for-packed-member-pointer.patch \
> + file://dpdk-17.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch \
> "
>
> do_install_append () {
> diff --git a/recipes-extended/dpdk/dpdk_18.11.2.bb b/recipes-extended/dpdk/dpdk_18.11.2.bb
> index 7a3dcdb..5291bdc 100644
> --- a/recipes-extended/dpdk/dpdk_18.11.2.bb
> +++ b/recipes-extended/dpdk/dpdk_18.11.2.bb
> @@ -9,6 +9,10 @@ LIC_FILES_CHKSUM = "file://license/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4
> file://license/lgpl-2.1.txt;md5=4b54a1fd55a448865a0b32d41598759d \
> file://license/bsd-3-clause.txt;md5=0f00d99239d922ffd13cabef83b33444"
>
> +SRC_URI += "\
> + file://dpdk-18.11-igb_uio-fix-build-on-Linux-5.3-for-fall-through.patch \
> +"
> +
> do_install_append () {
> # Remove the unneeded dir
> rm -rf ${D}/${INSTALL_PATH}/${RTE_TARGET}/app
More information about the yocto
mailing list