Re: [U-Boot] [PATCH 1/1] net: remove superfluous __packed attribute

2019-11-04 Thread Tom Rini
On Mon, Nov 04, 2019 at 07:07:46PM +0100, Heinrich Schuchardt wrote:
> On 10/12/19 3:29 PM, Heinrich Schuchardt wrote:
> > On 10/3/19 8:01 PM, Heinrich Schuchardt wrote:
> > > On 10/3/19 7:09 PM, Tom Rini wrote:
> > > > On Thu, Oct 03, 2019 at 07:01:22PM +0200, Heinrich Schuchardt wrote:
> > > > 
> > > > > struct ip_udp_hdr is naturally packed. There is no point in adding a
> > > > > __packed attribute. With the attribute the network stack does not
> > > > > compile
> > > > > using GCC 9.2.1:
> > > > > 
> > > > > net/net.c: In function ‘net_process_received_packet’:
> > > > > net/net.c:1288:23: error: taking address of packed member of ‘struct
> > > > > ip_udp_hdr’ may result in an unaligned pointer value
> > > > > [-Werror=address-of-packed-member]
> > > > >   1288 |    sumptr = (ushort *)&(ip->udp_src);
> > > > >    |   ^~
> > > > > 
> > > > > So let's remove the attribute.
> > > > > 
> > > > > Signed-off-by: Heinrich Schuchardt 
> > > > > ---
> > > > >   include/net.h | 2 +-
> > > > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/include/net.h b/include/net.h
> > > > > index 75a16e4c8f..bd875b56f5 100644
> > > > > --- a/include/net.h
> > > > > +++ b/include/net.h
> > > > > @@ -390,7 +390,7 @@ struct ip_udp_hdr {
> > > > >   u16    udp_dst;    /* UDP destination port    */
> > > > >   u16    udp_len;    /* Length of UDP packet    */
> > > > >   u16    udp_xsum;    /* Checksum    */
> > > > > -} __attribute__((packed));
> > > > > +};
> > > > > 
> > > > >   #define IP_UDP_HDR_SIZE    (sizeof(struct ip_udp_hdr))
> > > > >   #define UDP_HDR_SIZE    (IP_UDP_HDR_SIZE - IP_HDR_SIZE)
> > > > 
> > > > This came from:
> > > > commit 704f3acfcf55343043bbed01c5fb0a0094a68e8a
> > > > Author: Denis Pynkin 
> > > > Date:   Fri Jul 21 19:28:42 2017 +0300
> > > > 
> > > >  net: Use packed structures for networking
> > > > 
> > > >  PXE boot is broken with GCC 7.1 due option '-fstore-merging'
> > > > enabled
> > > >  by default for '-O2':
> > > > 
> > > >  BOOTP broadcast 1
> > > >  data abort
> > > >  pc : [<8ff8bb30>]  lr : [<4f1f>]
> > > >  reloc pc : [<17832b30>]    lr : [<878abf1f>]
> > > >  sp : 8f558bc0  ip :  fp : 8ffef5a4
> > > >  r10: 8ffed248  r9 : 8f558ee0 r8 : 8ffef594
> > > >  r7 : 000e  r6 : 8ffed700 r5 :   r4 : 8ffed74e
> > > >  r3 : 00060101  r2 : 8ffed230 r1 : 8ffed706  r0 : 0ddd
> > > >  Flags: nzcv  IRQs off  FIQs off  Mode SVC_32
> > > >  Resetting CPU ...
> > > > 
> > > >  Core reason is usage of structures for network headers without
> > > > packed
> > > >  attribute.
> > > > 
> > > >  Reviewed-by: Yauheni Kaliuta 
> > > >  Signed-off-by: Denis Pynkin 
> > > >  Acked-by: Joe Hershberger 
> > > > 
> > > > ... so adding a few folks to the list and lets see if patchwork picks up
> > > > this tag:
> > > > Fixes: 704f3acfcf55 ("net: Use packed structures for networking")
> > > > 
> > > 
> > > Thanks for providing this background.
> > > 
> > > -fstore-merging is enabled for O2 and Os. But it should not change the
> > > program behavior.
> > > 
> > > The relevant code is in gcc/gimple-ssa-store-merging.c. It has been
> > > completely overhauled since GCC 7.1.
> > > 
> > > I have seen no problems with DHCP, ping and tFTP on arm and arm64 with
> > > GCC 9.2.1.
> > > 
> > > Best regards
> > > 
> > > Heinrich
> > > 
> > > Since GCC 7.1 some bugs have been fixed, e.g.
> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86492
> > > 
> > 
> > Hello Joe,
> > 
> > how will we carry on, to get the issue resolved?
> > 
> > Best regards
> > 
> > Heinrich
> > ___
> 
> Hello Tom, hello Joe,
> 
> I still cannot build sandbox_defconfig. How will we resolve this issue?

We can't drop gcc-7.1 support at this point.  Perhaps use an accessor
function of some sort?

-- 
Tom


signature.asc
Description: PGP signature
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH 1/1] net: remove superfluous __packed attribute

2019-11-04 Thread Heinrich Schuchardt

On 10/12/19 3:29 PM, Heinrich Schuchardt wrote:

On 10/3/19 8:01 PM, Heinrich Schuchardt wrote:

On 10/3/19 7:09 PM, Tom Rini wrote:

On Thu, Oct 03, 2019 at 07:01:22PM +0200, Heinrich Schuchardt wrote:


struct ip_udp_hdr is naturally packed. There is no point in adding a
__packed attribute. With the attribute the network stack does not
compile
using GCC 9.2.1:

net/net.c: In function ‘net_process_received_packet’:
net/net.c:1288:23: error: taking address of packed member of ‘struct
ip_udp_hdr’ may result in an unaligned pointer value
[-Werror=address-of-packed-member]
  1288 |    sumptr = (ushort *)&(ip->udp_src);
   |   ^~

So let's remove the attribute.

Signed-off-by: Heinrich Schuchardt 
---
  include/net.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/net.h b/include/net.h
index 75a16e4c8f..bd875b56f5 100644
--- a/include/net.h
+++ b/include/net.h
@@ -390,7 +390,7 @@ struct ip_udp_hdr {
  u16    udp_dst;    /* UDP destination port    */
  u16    udp_len;    /* Length of UDP packet    */
  u16    udp_xsum;    /* Checksum    */
-} __attribute__((packed));
+};

  #define IP_UDP_HDR_SIZE    (sizeof(struct ip_udp_hdr))
  #define UDP_HDR_SIZE    (IP_UDP_HDR_SIZE - IP_HDR_SIZE)


This came from:
commit 704f3acfcf55343043bbed01c5fb0a0094a68e8a
Author: Denis Pynkin 
Date:   Fri Jul 21 19:28:42 2017 +0300

 net: Use packed structures for networking

 PXE boot is broken with GCC 7.1 due option '-fstore-merging'
enabled
 by default for '-O2':

 BOOTP broadcast 1
 data abort
 pc : [<8ff8bb30>]  lr : [<4f1f>]
 reloc pc : [<17832b30>]    lr : [<878abf1f>]
 sp : 8f558bc0  ip :  fp : 8ffef5a4
 r10: 8ffed248  r9 : 8f558ee0 r8 : 8ffef594
 r7 : 000e  r6 : 8ffed700 r5 :   r4 : 8ffed74e
 r3 : 00060101  r2 : 8ffed230 r1 : 8ffed706  r0 : 0ddd
 Flags: nzcv  IRQs off  FIQs off  Mode SVC_32
 Resetting CPU ...

 Core reason is usage of structures for network headers without
packed
 attribute.

 Reviewed-by: Yauheni Kaliuta 
 Signed-off-by: Denis Pynkin 
 Acked-by: Joe Hershberger 

... so adding a few folks to the list and lets see if patchwork picks up
this tag:
Fixes: 704f3acfcf55 ("net: Use packed structures for networking")



Thanks for providing this background.

-fstore-merging is enabled for O2 and Os. But it should not change the
program behavior.

The relevant code is in gcc/gimple-ssa-store-merging.c. It has been
completely overhauled since GCC 7.1.

I have seen no problems with DHCP, ping and tFTP on arm and arm64 with
GCC 9.2.1.

Best regards

Heinrich

Since GCC 7.1 some bugs have been fixed, e.g.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86492



Hello Joe,

how will we carry on, to get the issue resolved?

Best regards

Heinrich
___


Hello Tom, hello Joe,

I still cannot build sandbox_defconfig. How will we resolve this issue?

Best regards

Heinrich
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH 1/1] net: remove superfluous __packed attribute

2019-10-12 Thread Heinrich Schuchardt

On 10/3/19 8:01 PM, Heinrich Schuchardt wrote:

On 10/3/19 7:09 PM, Tom Rini wrote:

On Thu, Oct 03, 2019 at 07:01:22PM +0200, Heinrich Schuchardt wrote:


struct ip_udp_hdr is naturally packed. There is no point in adding a
__packed attribute. With the attribute the network stack does not
compile
using GCC 9.2.1:

net/net.c: In function ‘net_process_received_packet’:
net/net.c:1288:23: error: taking address of packed member of ‘struct
ip_udp_hdr’ may result in an unaligned pointer value
[-Werror=address-of-packed-member]
  1288 |    sumptr = (ushort *)&(ip->udp_src);
   |   ^~

So let's remove the attribute.

Signed-off-by: Heinrich Schuchardt 
---
  include/net.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/net.h b/include/net.h
index 75a16e4c8f..bd875b56f5 100644
--- a/include/net.h
+++ b/include/net.h
@@ -390,7 +390,7 @@ struct ip_udp_hdr {
  u16    udp_dst;    /* UDP destination port    */
  u16    udp_len;    /* Length of UDP packet    */
  u16    udp_xsum;    /* Checksum    */
-} __attribute__((packed));
+};

  #define IP_UDP_HDR_SIZE    (sizeof(struct ip_udp_hdr))
  #define UDP_HDR_SIZE    (IP_UDP_HDR_SIZE - IP_HDR_SIZE)


This came from:
commit 704f3acfcf55343043bbed01c5fb0a0094a68e8a
Author: Denis Pynkin 
Date:   Fri Jul 21 19:28:42 2017 +0300

 net: Use packed structures for networking

 PXE boot is broken with GCC 7.1 due option '-fstore-merging' enabled
 by default for '-O2':

 BOOTP broadcast 1
 data abort
 pc : [<8ff8bb30>]  lr : [<4f1f>]
 reloc pc : [<17832b30>]    lr : [<878abf1f>]
 sp : 8f558bc0  ip :  fp : 8ffef5a4
 r10: 8ffed248  r9 : 8f558ee0 r8 : 8ffef594
 r7 : 000e  r6 : 8ffed700 r5 :   r4 : 8ffed74e
 r3 : 00060101  r2 : 8ffed230 r1 : 8ffed706  r0 : 0ddd
 Flags: nzcv  IRQs off  FIQs off  Mode SVC_32
 Resetting CPU ...

 Core reason is usage of structures for network headers without
packed
 attribute.

 Reviewed-by: Yauheni Kaliuta 
 Signed-off-by: Denis Pynkin 
 Acked-by: Joe Hershberger 

... so adding a few folks to the list and lets see if patchwork picks up
this tag:
Fixes: 704f3acfcf55 ("net: Use packed structures for networking")



Thanks for providing this background.

-fstore-merging is enabled for O2 and Os. But it should not change the
program behavior.

The relevant code is in gcc/gimple-ssa-store-merging.c. It has been
completely overhauled since GCC 7.1.

I have seen no problems with DHCP, ping and tFTP on arm and arm64 with
GCC 9.2.1.

Best regards

Heinrich

Since GCC 7.1 some bugs have been fixed, e.g.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86492



Hello Joe,

how will we carry on, to get the issue resolved?

Best regards

Heinrich
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH 1/1] net: remove superfluous __packed attribute

2019-10-03 Thread Heinrich Schuchardt

On 10/3/19 7:09 PM, Tom Rini wrote:

On Thu, Oct 03, 2019 at 07:01:22PM +0200, Heinrich Schuchardt wrote:


struct ip_udp_hdr is naturally packed. There is no point in adding a
__packed attribute. With the attribute the network stack does not compile
using GCC 9.2.1:

net/net.c: In function ‘net_process_received_packet’:
net/net.c:1288:23: error: taking address of packed member of ‘struct
ip_udp_hdr’ may result in an unaligned pointer value
[-Werror=address-of-packed-member]
  1288 |sumptr = (ushort *)&(ip->udp_src);
   |   ^~

So let's remove the attribute.

Signed-off-by: Heinrich Schuchardt 
---
  include/net.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/net.h b/include/net.h
index 75a16e4c8f..bd875b56f5 100644
--- a/include/net.h
+++ b/include/net.h
@@ -390,7 +390,7 @@ struct ip_udp_hdr {
u16 udp_dst;/* UDP destination port */
u16 udp_len;/* Length of UDP packet */
u16 udp_xsum;   /* Checksum */
-} __attribute__((packed));
+};

  #define IP_UDP_HDR_SIZE   (sizeof(struct ip_udp_hdr))
  #define UDP_HDR_SIZE  (IP_UDP_HDR_SIZE - IP_HDR_SIZE)


This came from:
commit 704f3acfcf55343043bbed01c5fb0a0094a68e8a
Author: Denis Pynkin 
Date:   Fri Jul 21 19:28:42 2017 +0300

 net: Use packed structures for networking

 PXE boot is broken with GCC 7.1 due option '-fstore-merging' enabled
 by default for '-O2':

 BOOTP broadcast 1
 data abort
 pc : [<8ff8bb30>]  lr : [<4f1f>]
 reloc pc : [<17832b30>]lr : [<878abf1f>]
 sp : 8f558bc0  ip :  fp : 8ffef5a4
 r10: 8ffed248  r9 : 8f558ee0 r8 : 8ffef594
 r7 : 000e  r6 : 8ffed700 r5 :   r4 : 8ffed74e
 r3 : 00060101  r2 : 8ffed230 r1 : 8ffed706  r0 : 0ddd
 Flags: nzcv  IRQs off  FIQs off  Mode SVC_32
 Resetting CPU ...

 Core reason is usage of structures for network headers without packed
 attribute.

 Reviewed-by: Yauheni Kaliuta 
 Signed-off-by: Denis Pynkin 
 Acked-by: Joe Hershberger 

... so adding a few folks to the list and lets see if patchwork picks up
this tag:
Fixes: 704f3acfcf55 ("net: Use packed structures for networking")



Thanks for providing this background.

-fstore-merging is enabled for O2 and Os. But it should not change the
program behavior.

The relevant code is in gcc/gimple-ssa-store-merging.c. It has been
completely overhauled since GCC 7.1.

I have seen no problems with DHCP, ping and tFTP on arm and arm64 with
GCC 9.2.1.

Best regards

Heinrich

Since GCC 7.1 some bugs have been fixed, e.g.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86492
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH 1/1] net: remove superfluous __packed attribute

2019-10-03 Thread Tom Rini
On Thu, Oct 03, 2019 at 07:01:22PM +0200, Heinrich Schuchardt wrote:

> struct ip_udp_hdr is naturally packed. There is no point in adding a
> __packed attribute. With the attribute the network stack does not compile
> using GCC 9.2.1:
> 
> net/net.c: In function ‘net_process_received_packet’:
> net/net.c:1288:23: error: taking address of packed member of ‘struct
> ip_udp_hdr’ may result in an unaligned pointer value
> [-Werror=address-of-packed-member]
>  1288 |sumptr = (ushort *)&(ip->udp_src);
>   |   ^~
> 
> So let's remove the attribute.
> 
> Signed-off-by: Heinrich Schuchardt 
> ---
>  include/net.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/net.h b/include/net.h
> index 75a16e4c8f..bd875b56f5 100644
> --- a/include/net.h
> +++ b/include/net.h
> @@ -390,7 +390,7 @@ struct ip_udp_hdr {
>   u16 udp_dst;/* UDP destination port */
>   u16 udp_len;/* Length of UDP packet */
>   u16 udp_xsum;   /* Checksum */
> -} __attribute__((packed));
> +};
> 
>  #define IP_UDP_HDR_SIZE  (sizeof(struct ip_udp_hdr))
>  #define UDP_HDR_SIZE (IP_UDP_HDR_SIZE - IP_HDR_SIZE)

This came from:
commit 704f3acfcf55343043bbed01c5fb0a0094a68e8a
Author: Denis Pynkin 
Date:   Fri Jul 21 19:28:42 2017 +0300

net: Use packed structures for networking

PXE boot is broken with GCC 7.1 due option '-fstore-merging' enabled
by default for '-O2':

BOOTP broadcast 1
data abort
pc : [<8ff8bb30>]  lr : [<4f1f>]
reloc pc : [<17832b30>]lr : [<878abf1f>]
sp : 8f558bc0  ip :  fp : 8ffef5a4
r10: 8ffed248  r9 : 8f558ee0 r8 : 8ffef594
r7 : 000e  r6 : 8ffed700 r5 :   r4 : 8ffed74e
r3 : 00060101  r2 : 8ffed230 r1 : 8ffed706  r0 : 0ddd
Flags: nzcv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

Core reason is usage of structures for network headers without packed
attribute.

Reviewed-by: Yauheni Kaliuta 
Signed-off-by: Denis Pynkin 
Acked-by: Joe Hershberger 

... so adding a few folks to the list and lets see if patchwork picks up
this tag:
Fixes: 704f3acfcf55 ("net: Use packed structures for networking")

-- 
Tom


signature.asc
Description: PGP signature
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot