2020-02-20 00:42:57

by Paul E. McKenney

[permalink] [raw]
Subject: drm_dp_mst_topology.c and old compilers

Hello!

A box with GCC 4.8.3 compiler didn't like drm_dp_mst_topology.c. The
following (lightly tested) patch makes it happy and seems OK for newer
compilers as well.

Is this of interest?

Thanx, Paul

-----------------------------------------------------------------------

diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
index 20cdaf3..232408a 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -5396,7 +5396,7 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
{
struct drm_dp_mst_port *immediate_upstream_port;
struct drm_dp_mst_port *fec_port;
- struct drm_dp_desc desc = { 0 };
+ struct drm_dp_desc desc = {{{ 0 }}};
u8 endpoint_fec;
u8 endpoint_dsc;


2020-02-20 02:54:11

by Alex Deucher

[permalink] [raw]
Subject: Re: drm_dp_mst_topology.c and old compilers

On Wed, Feb 19, 2020 at 7:42 PM Paul E. McKenney <[email protected]> wrote:
>
> Hello!
>
> A box with GCC 4.8.3 compiler didn't like drm_dp_mst_topology.c. The
> following (lightly tested) patch makes it happy and seems OK for newer
> compilers as well.
>
> Is this of interest?

How about a memset instead? That should be consistent across compilers.

Alex


>
> Thanx, Paul
>
> -----------------------------------------------------------------------
>
> diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
> index 20cdaf3..232408a 100644
> --- a/drivers/gpu/drm/drm_dp_mst_topology.c
> +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
> @@ -5396,7 +5396,7 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
> {
> struct drm_dp_mst_port *immediate_upstream_port;
> struct drm_dp_mst_port *fec_port;
> - struct drm_dp_desc desc = { 0 };
> + struct drm_dp_desc desc = {{{ 0 }}};
> u8 endpoint_fec;
> u8 endpoint_dsc;
>
> _______________________________________________
> dri-devel mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

2020-02-20 08:00:41

by Chris Wilson

[permalink] [raw]
Subject: Re: drm_dp_mst_topology.c and old compilers

Quoting Alex Deucher (2020-02-20 02:52:32)
> On Wed, Feb 19, 2020 at 7:42 PM Paul E. McKenney <[email protected]> wrote:
> >
> > Hello!
> >
> > A box with GCC 4.8.3 compiler didn't like drm_dp_mst_topology.c. The
> > following (lightly tested) patch makes it happy and seems OK for newer
> > compilers as well.
> >
> > Is this of interest?
>
> How about a memset instead? That should be consistent across compilers.

The kernel has adopted the gccism: struct drm_dp_desc desc = {};
git grep '= {}' | wc -l: 2046
git grep '= { }' | wc -l: 694
-Chris

2020-02-20 12:02:54

by Joe Perches

[permalink] [raw]
Subject: Re: drm_dp_mst_topology.c and old compilers

On Wed, 2020-02-19 at 16:42 -0800, Paul E. McKenney wrote:
> Hello!
>
> A box with GCC 4.8.3 compiler didn't like drm_dp_mst_topology.c. The
> following (lightly tested) patch makes it happy and seems OK for newer
> compilers as well.
>
> Is this of interest?
[]
> diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
[]
> @@ -5396,7 +5396,7 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
> {
> struct drm_dp_mst_port *immediate_upstream_port;
> struct drm_dp_mst_port *fec_port;
> - struct drm_dp_desc desc = { 0 };
> + struct drm_dp_desc desc = {{{ 0 }}};

Perhaps this is simpler as:

struct drm_dp_desc desc = {};


2020-02-20 15:08:18

by Christoph Hellwig

[permalink] [raw]
Subject: Re: drm_dp_mst_topology.c and old compilers

On Wed, Feb 19, 2020 at 04:42:33PM -0800, Paul E. McKenney wrote:
> - struct drm_dp_desc desc = { 0 };
> + struct drm_dp_desc desc = {{{ 0 }}};

Does:

struct drm_dp_desc desc = { };

work for your geriatric compiler?

2020-02-20 18:37:47

by Paul E. McKenney

[permalink] [raw]
Subject: Re: drm_dp_mst_topology.c and old compilers

On Thu, Feb 20, 2020 at 07:58:58AM +0000, Chris Wilson wrote:
> Quoting Alex Deucher (2020-02-20 02:52:32)
> > On Wed, Feb 19, 2020 at 7:42 PM Paul E. McKenney <[email protected]> wrote:
> > >
> > > Hello!
> > >
> > > A box with GCC 4.8.3 compiler didn't like drm_dp_mst_topology.c. The
> > > following (lightly tested) patch makes it happy and seems OK for newer
> > > compilers as well.
> > >
> > > Is this of interest?
> >
> > How about a memset instead? That should be consistent across compilers.
>
> The kernel has adopted the gccism: struct drm_dp_desc desc = {};
> git grep '= {}' | wc -l: 2046
> git grep '= { }' | wc -l: 694
> -Chris

And this works well, a big "thank you!" to all three of you!

Please see below for the updated patch.

Thanx, Paul

------------------------------------------------------------------------

commit 78c0e53a98a9772a99e46806f8fcbe1140d667a4
Author: Paul E. McKenney <[email protected]>
Date: Wed Feb 19 16:42:47 2020 -0800

EXP drm: Make drm_dp_mst_dsc_aux_for_port() safe for old compilers

Older compilers either want two extra pairs of curly braces around the
initializer for local variable desc, or they want a single pair of curly
braces with nothing inside. Current Linux-kernel practice favors the
latter, so this commit makes it so.

Suggested-by: Chris Wilson <[email protected]>
Suggested-by: Joe Perches <[email protected]>
Suggested-by: Christoph Hellwig <[email protected]>
Signed-off-by: Paul E. McKenney <[email protected]>

diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
index 20cdaf3..b123f60 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -5396,7 +5396,7 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
{
struct drm_dp_mst_port *immediate_upstream_port;
struct drm_dp_mst_port *fec_port;
- struct drm_dp_desc desc = { 0 };
+ struct drm_dp_desc desc = { };
u8 endpoint_fec;
u8 endpoint_dsc;