From: Christopher Clark <[email protected]>

Apply two upstream patches to fix compiler warnings.

Signed-off-by: Christopher Clark <[email protected]>
---
 ...it-type-casts-for-nodnic_queue_pair_.patch | 43 +++++++++
 ...-spurious-compiler-warning-on-GCC-10.patch | 89 +++++++++++++++++++
 recipes-extended/ipxe/ipxe_git.bb             |  2 +
 3 files changed, 134 insertions(+)
 create mode 100644 
recipes-extended/ipxe/files/ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch
 create mode 100644 
recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch

diff --git 
a/recipes-extended/ipxe/files/ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch
 
b/recipes-extended/ipxe/files/ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch
new file mode 100644
index 0000000..62e8e9d
--- /dev/null
+++ 
b/recipes-extended/ipxe/files/ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch
@@ -0,0 +1,43 @@
+From 8a1d66c7aec020f3e90254ed2fa55ecd9494fcc3 Mon Sep 17 00:00:00 2001
+From: Michael Brown <[email protected]>
+Date: Sat, 27 Jun 2020 20:43:32 +0100
+Subject: [PATCH] [golan] Add explicit type casts for nodnic_queue_pair_type
+
+GCC 10 emits warnings for implicit conversions of enumerated types.
+
+The flexboot_nodnic code defines nodnic_queue_pair_type with values
+identical to those of ib_queue_pair_type, and implicitly casts between
+them.  Add an explicit cast to fix the warning.
+
+Signed-off-by: Michael Brown <[email protected]>
+---
+ src/drivers/infiniband/flexboot_nodnic.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/drivers/infiniband/flexboot_nodnic.c 
b/src/drivers/infiniband/flexboot_nodnic.c
+index 93bb0544..7d039fff 100644
+--- a/drivers/infiniband/flexboot_nodnic.c
++++ b/drivers/infiniband/flexboot_nodnic.c
+@@ -365,7 +365,8 @@ static int flexboot_nodnic_create_qp ( struct ib_device 
*ibdev,
+               goto qp_alloc_err;
+       }
+ 
+-      status = nodnic_port_create_qp(&port->port_priv, qp->type,
++      status = nodnic_port_create_qp(&port->port_priv,
++                      (nodnic_queue_pair_type) qp->type,
+                       qp->send.num_wqes * sizeof(struct nodnic_send_wqbb),
+                       qp->send.num_wqes,
+                       qp->recv.num_wqes * sizeof(struct nodnic_recv_wqe),
+@@ -406,7 +407,8 @@ static void flexboot_nodnic_destroy_qp ( struct ib_device 
*ibdev,
+       struct flexboot_nodnic_port *port = &flexboot_nodnic->port[ibdev->port 
- 1];
+       struct flexboot_nodnic_queue_pair *flexboot_nodnic_qp = 
ib_qp_get_drvdata ( qp );
+ 
+-      nodnic_port_destroy_qp(&port->port_priv, qp->type,
++      nodnic_port_destroy_qp(&port->port_priv,
++                      (nodnic_queue_pair_type) qp->type,
+                       flexboot_nodnic_qp->nodnic_queue_pair);
+ 
+       free(flexboot_nodnic_qp);
+-- 
+2.17.1
+
diff --git 
a/recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch
 
b/recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch
new file mode 100644
index 0000000..e424d22
--- /dev/null
+++ 
b/recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch
@@ -0,0 +1,89 @@
+From 28cf9806d1632d378485005babec295da0c77fcf Mon Sep 17 00:00:00 2001
+From: Michael Brown <[email protected]>
+Date: Sat, 27 Jun 2020 20:21:11 +0100
+Subject: [PATCH] [intel] Avoid spurious compiler warning on GCC 10
+
+GCC 10 produces a spurious warning about an out-of-bounds array access
+for the unsized raw dword array in union intelvf_msg.
+
+Avoid the warning by embedding the zero-length array within a struct.
+
+Signed-off-by: Michael Brown <[email protected]>
+---
+ src/drivers/net/intelvf.c | 18 ++++++++++--------
+ src/drivers/net/intelvf.h |  8 +++++++-
+ 2 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/src/drivers/net/intelvf.c b/src/drivers/net/intelvf.c
+index ac6fea74..0d48b417 100644
+--- a/drivers/net/intelvf.c
++++ b/drivers/net/intelvf.c
+@@ -52,14 +52,15 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+  */
+ static void intelvf_mbox_write ( struct intel_nic *intel,
+                                const union intelvf_msg *msg ) {
++      const struct intelvf_msg_raw *raw = &msg->raw;
+       unsigned int i;
+ 
+       /* Write message */
+       DBGC2 ( intel, "INTEL %p sending message", intel );
+-      for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( msg->dword[0] ) ) ; i++){
+-              DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), msg->dword[i] );
+-              writel ( msg->dword[i], ( intel->regs + intel->mbox.mem +
+-                                        ( i * sizeof ( msg->dword[0] ) ) ) );
++      for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( raw->dword[0] ) ) ; i++){
++              DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), raw->dword[i] );
++              writel ( raw->dword[i], ( intel->regs + intel->mbox.mem +
++                                        ( i * sizeof ( raw->dword[0] ) ) ) );
+       }
+       DBGC2 ( intel, "\n" );
+ }
+@@ -72,14 +73,15 @@ static void intelvf_mbox_write ( struct intel_nic *intel,
+  */
+ static void intelvf_mbox_read ( struct intel_nic *intel,
+                               union intelvf_msg *msg ) {
++      struct intelvf_msg_raw *raw = &msg->raw;
+       unsigned int i;
+ 
+       /* Read message */
+       DBGC2 ( intel, "INTEL %p received message", intel );
+-      for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( msg->dword[0] ) ) ; i++){
+-              msg->dword[i] = readl ( intel->regs + intel->mbox.mem +
+-                                      ( i * sizeof ( msg->dword[0] ) ) );
+-              DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), msg->dword[i] );
++      for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( raw->dword[0] ) ) ; i++){
++              raw->dword[i] = readl ( intel->regs + intel->mbox.mem +
++                                      ( i * sizeof ( raw->dword[0] ) ) );
++              DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), raw->dword[i] );
+       }
+       DBGC2 ( intel, "\n" );
+ }
+diff --git a/src/drivers/net/intelvf.h b/src/drivers/net/intelvf.h
+index ab404698..ffb18e04 100644
+--- a/drivers/net/intelvf.h
++++ b/drivers/net/intelvf.h
+@@ -119,6 +119,12 @@ struct intelvf_msg_queues {
+       uint32_t dflt;
+ } __attribute__ (( packed ));
+ 
++/** Raw mailbox message */
++struct intelvf_msg_raw {
++      /** Raw dwords */
++      uint32_t dword[0];
++} __attribute__ (( packed ));
++
+ /** Mailbox message */
+ union intelvf_msg {
+       /** Message header */
+@@ -132,7 +138,7 @@ union intelvf_msg {
+       /** Queue configuration message */
+       struct intelvf_msg_queues queues;
+       /** Raw dwords */
+-      uint32_t dword[0];
++      struct intelvf_msg_raw raw;
+ };
+ 
+ /** Maximum time to wait for mailbox message
+-- 
+2.17.1
+
diff --git a/recipes-extended/ipxe/ipxe_git.bb 
b/recipes-extended/ipxe/ipxe_git.bb
index 47c5b7a..fbaad30 100644
--- a/recipes-extended/ipxe/ipxe_git.bb
+++ b/recipes-extended/ipxe/ipxe_git.bb
@@ -13,6 +13,8 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
 SRC_URI = " \
     git://git.ipxe.org/ipxe.git;protocol=https \
     file://ipxe-fix-hostcc-nopie-cflags.patch \
+    file://ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch \
+    file://ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch \
     "
 
 FILES_${PN} = "/usr/share/firmware/*.rom"
-- 
2.17.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#5662): 
https://lists.yoctoproject.org/g/meta-virtualization/message/5662
Mute This Topic: https://lists.yoctoproject.org/mt/75890812/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-virtualization/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to