diff options
Diffstat (limited to 'recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch')
| -rw-r--r-- | recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch | 91 |
1 files changed, 0 insertions, 91 deletions
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 deleted file mode 100644 index c76fe1ce..00000000 --- a/recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch +++ /dev/null | |||
| @@ -1,91 +0,0 @@ | |||
| 1 | From 28cf9806d1632d378485005babec295da0c77fcf Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Brown <mcb30@ipxe.org> | ||
| 3 | Date: Sat, 27 Jun 2020 20:21:11 +0100 | ||
| 4 | Subject: [PATCH] [intel] Avoid spurious compiler warning on GCC 10 | ||
| 5 | |||
| 6 | GCC 10 produces a spurious warning about an out-of-bounds array access | ||
| 7 | for the unsized raw dword array in union intelvf_msg. | ||
| 8 | |||
| 9 | Avoid the warning by embedding the zero-length array within a struct. | ||
| 10 | |||
| 11 | Upstream-Status: Inappropriate [embedded specific] | ||
| 12 | |||
| 13 | Signed-off-by: Michael Brown <mcb30@ipxe.org> | ||
| 14 | --- | ||
| 15 | src/drivers/net/intelvf.c | 18 ++++++++++-------- | ||
| 16 | src/drivers/net/intelvf.h | 8 +++++++- | ||
| 17 | 2 files changed, 17 insertions(+), 9 deletions(-) | ||
| 18 | |||
| 19 | diff --git a/src/drivers/net/intelvf.c b/src/drivers/net/intelvf.c | ||
| 20 | index ac6fea74..0d48b417 100644 | ||
| 21 | --- a/drivers/net/intelvf.c | ||
| 22 | +++ b/drivers/net/intelvf.c | ||
| 23 | @@ -52,14 +52,15 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); | ||
| 24 | */ | ||
| 25 | static void intelvf_mbox_write ( struct intel_nic *intel, | ||
| 26 | const union intelvf_msg *msg ) { | ||
| 27 | + const struct intelvf_msg_raw *raw = &msg->raw; | ||
| 28 | unsigned int i; | ||
| 29 | |||
| 30 | /* Write message */ | ||
| 31 | DBGC2 ( intel, "INTEL %p sending message", intel ); | ||
| 32 | - for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( msg->dword[0] ) ) ; i++){ | ||
| 33 | - DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), msg->dword[i] ); | ||
| 34 | - writel ( msg->dword[i], ( intel->regs + intel->mbox.mem + | ||
| 35 | - ( i * sizeof ( msg->dword[0] ) ) ) ); | ||
| 36 | + for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( raw->dword[0] ) ) ; i++){ | ||
| 37 | + DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), raw->dword[i] ); | ||
| 38 | + writel ( raw->dword[i], ( intel->regs + intel->mbox.mem + | ||
| 39 | + ( i * sizeof ( raw->dword[0] ) ) ) ); | ||
| 40 | } | ||
| 41 | DBGC2 ( intel, "\n" ); | ||
| 42 | } | ||
| 43 | @@ -72,14 +73,15 @@ static void intelvf_mbox_write ( struct intel_nic *intel, | ||
| 44 | */ | ||
| 45 | static void intelvf_mbox_read ( struct intel_nic *intel, | ||
| 46 | union intelvf_msg *msg ) { | ||
| 47 | + struct intelvf_msg_raw *raw = &msg->raw; | ||
| 48 | unsigned int i; | ||
| 49 | |||
| 50 | /* Read message */ | ||
| 51 | DBGC2 ( intel, "INTEL %p received message", intel ); | ||
| 52 | - for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( msg->dword[0] ) ) ; i++){ | ||
| 53 | - msg->dword[i] = readl ( intel->regs + intel->mbox.mem + | ||
| 54 | - ( i * sizeof ( msg->dword[0] ) ) ); | ||
| 55 | - DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), msg->dword[i] ); | ||
| 56 | + for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( raw->dword[0] ) ) ; i++){ | ||
| 57 | + raw->dword[i] = readl ( intel->regs + intel->mbox.mem + | ||
| 58 | + ( i * sizeof ( raw->dword[0] ) ) ); | ||
| 59 | + DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), raw->dword[i] ); | ||
| 60 | } | ||
| 61 | DBGC2 ( intel, "\n" ); | ||
| 62 | } | ||
| 63 | diff --git a/src/drivers/net/intelvf.h b/src/drivers/net/intelvf.h | ||
| 64 | index ab404698..ffb18e04 100644 | ||
| 65 | --- a/drivers/net/intelvf.h | ||
| 66 | +++ b/drivers/net/intelvf.h | ||
| 67 | @@ -119,6 +119,12 @@ struct intelvf_msg_queues { | ||
| 68 | uint32_t dflt; | ||
| 69 | } __attribute__ (( packed )); | ||
| 70 | |||
| 71 | +/** Raw mailbox message */ | ||
| 72 | +struct intelvf_msg_raw { | ||
| 73 | + /** Raw dwords */ | ||
| 74 | + uint32_t dword[0]; | ||
| 75 | +} __attribute__ (( packed )); | ||
| 76 | + | ||
| 77 | /** Mailbox message */ | ||
| 78 | union intelvf_msg { | ||
| 79 | /** Message header */ | ||
| 80 | @@ -132,7 +138,7 @@ union intelvf_msg { | ||
| 81 | /** Queue configuration message */ | ||
| 82 | struct intelvf_msg_queues queues; | ||
| 83 | /** Raw dwords */ | ||
| 84 | - uint32_t dword[0]; | ||
| 85 | + struct intelvf_msg_raw raw; | ||
| 86 | }; | ||
| 87 | |||
| 88 | /** Maximum time to wait for mailbox message | ||
| 89 | -- | ||
| 90 | 2.17.1 | ||
| 91 | |||
