From 27759eff63089f539ab9fac366498377ef6dd666 Mon Sep 17 00:00:00 2001 From: Christopher Clark Date: Thu, 30 Jul 2020 10:20:40 -0700 Subject: ipxe: fix build with gcc 10.1.0 Apply two upstream patches to fix compiler warnings. Signed-off-by: Christopher Clark Signed-off-by: Bruce Ashfield --- ...xplicit-type-casts-for-nodnic_queue_pair_.patch | 43 +++++++++++ ...Avoid-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 (limited to 'recipes-extended/ipxe') 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 00000000..62e8e9df --- /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 +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 +--- + 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 00000000..e424d220 --- /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 +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 +--- + 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 47c5b7ad..fbaad309 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" -- cgit v1.2.3-54-g00ecf