net/ice/base: fix build error for GCC 4.8.5
PATCH 1/1 net/ice/base: fix build error for GCC 4.8.5
Code changes done for build issue as reported in Bug 817
error: dereferencing type-punned pointer will break strict-aliasing rules. added union to avoid pointer dereferencing
--- drivers/net/ice/base/ice_parser_rt.c | 36 +++++++++++++++------------- 1 file changed, 20 insertions(+), 16 deletions(-)
drivers/net/ice/base/ice_parser_rt.c +20 -16
@@ -187,21 +187,23 @@ static u32 _bit_rev_u32(u32 v, int len)static u32 _hv_bit_sel (struct ice_parser_rt *rt,int start,int len) { -u64 d64, msk; -u8 b[8 ]; +u64 msk; +union { +u64 d64; +u8 b[8 ]; + } bit_sel;int i;int offset =GPR_HB_IDX + start /16 ; -ice_memcpy (b, &rt->gpr[offset],8 ,ICE_NONDMA_TO_NONDMA ); +ice_memcpy (bit_sel.b, &rt->gpr[offset],8 ,ICE_NONDMA_TO_NONDMA );for (i =0 ; i <8 ; i++) - b[i] =_bit_rev_u8 (b[i]); + bit_sel.b[i] =_bit_rev_u8 (bit_sel.b[i]); - d64 = *(u64 *)&b[0 ]; msk = (1ul << len) -1 ; -return _bit_rev_u32 ((u32)((d64 >> (start %16 )) & msk), len); +return _bit_rev_u32 ((u32)((bit_sel.d64 >> (start %16 )) & msk), len); }static u32 _pk_build (struct ice_parser_rt *rt,struct ice_np_keybuilder *kb)
@@ -444,21 +446,23 @@ static void _po_update(struct ice_parser_rt *rt, struct ice_alu *alu)static u16 _reg_bit_sel (struct ice_parser_rt *rt,int reg_idx,int start,int len) { -u32 d32, msk; -u8 b[4 ]; -u8 v[4 ]; +u32 msk; +union { +u32 d32; +u8 b[4 ]; + } bit_sel; -ice_memcpy (b, &rt->gpr[reg_idx + start /16 ],4 ,ICE_NONDMA_TO_NONDMA ); +ice_memcpy (bit_sel.b, &rt->gpr[reg_idx + start /16 ],4 , +ICE_NONDMA_TO_NONDMA ); - v[0 ] =_bit_rev_u8 (b[0 ]); - v[1 ] =_bit_rev_u8 (b[1 ]); - v[2 ] =_bit_rev_u8 (b[2 ]); - v[3 ] =_bit_rev_u8 (b[3 ]); + bit_sel.b[0 ] =_bit_rev_u8 (bit_sel.b[0 ]); + bit_sel.b[1 ] =_bit_rev_u8 (bit_sel.b[1 ]); + bit_sel.b[2 ] =_bit_rev_u8 (bit_sel.b[2 ]); + bit_sel.b[3 ] =_bit_rev_u8 (bit_sel.b[3 ]); - d32 = *(u32 *)&v[0 ]; msk = (1u << len) -1 ; -return _bit_rev_u16 ((u16)((d32 >> (start %16 )) & msk), len); +return _bit_rev_u16 ((u16)((bit_sel.d32 >> (start %16 )) & msk), len); }static void _err_add (struct ice_parser_rt *rt,int idx,bool val)
Signature · 1 line
2.17.1
Quoted 5 lines · Aman Singh
Code changes done for build issue as reported in Bug 817
error: dereferencing type-punned pointer will break strict-aliasing rules. added union to avoid pointer dereferencing
About the title, Ali reproduced the issue with other versions of gcc.
This patch touches base/ code, is Intel ok with this?
Else, we could consider disabling strict aliasing for the base driver, like
$ git grep alias '**/base/meson.build' drivers/net/fm10k/base/meson.build: '-Wno-strict-aliasing', '-Wno-format-extra-args', drivers/net/i40e/base/meson.build: '-Wno-strict-aliasing', '-Wno-unused-but-set-variable', drivers/net/qede/base/meson.build: '-Wno-strict-aliasing',
Bugzilla ID: 817
Quoted 1 line
Fixes 39925373a333 ("net/ice/base: add parser execution main loop")
No Cc: stable, this is a regression in main.
Quoted 1 line
Signed-off-by Aman Singh <[email protected]>
Signature · 1 line
David Marchand
Ferruh Yigit
Acked-byQuoted 9 lines · David Marchand
Quoted 5 lines · Aman Singh
Code changes done for build issue as reported in Bug 817
error: dereferencing type-punned pointer will break strict-aliasing rules. added union to avoid pointer dereferencingAbout the title, Ali reproduced the issue with other versions of gcc.
Quoted 9 lines
This patch touches base/ code, is Intel ok with this?
Else, we could consider disabling strict aliasing for the base driver, like$ git grep alias '**/base/meson.build' drivers/net/fm10k/base/meson.build: '-Wno-strict-aliasing', '-Wno-format-extra-args', drivers/net/i40e/base/meson.build: '-Wno-strict-aliasing', '-Wno-unused-but-set-variable', drivers/net/qede/base/meson.build: '-Wno-strict-aliasing',
It has some complications to update the shared code from the DPDK, but for this case the fix seems simple and valid, so I am for getting the fix and work on to propagate the fix to the shared code, instead of disable the warning directly.
Mainly Qi and Beilei will be managing the shared code part, if shared code comes with different solution, we can send an incremental patch to replace this fix.
Briefly I am for getting the patch, hence:
Quoted 12 lines
Bugzilla ID: 817
Quoted 1 line
Fixes 39925373a333 ("net/ice/base: add parser execution main loop")No Cc: stable, this is a regression in main.
Quoted 1 line
Signed-off-by Aman Singh <[email protected]>Tested-by David Marchand <[email protected]>
David Marchand
AppliedQuoted 7 lines · Ferruh Yigit
Quoted 6 lines · David Marchand
Quoted 4 lines · Aman Singh
Code changes done for build issue as reported in Bug 817
error: dereferencing type-punned pointer will break strict-aliasing rules. added union to avoid pointer dereferencing
Quoted 6 lines
Quoted 5 lines
Bugzilla ID: 817
Quoted 3 lines
Fixes 39925373a333 ("net/ice/base: add parser execution main loop")Signed-off-by Aman Singh <[email protected]>Tested-by David Marchand <[email protected]>Acked-by Ferruh Yigit <[email protected]>
Applied, thanks.
Signature · 1 line
David Marchand