linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC] net: dsa: remove unnecessary phy.h include
@ 2017-01-18  0:14 Russell King - ARM Linux
  2017-01-18  1:11 ` Vivien Didelot
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Russell King - ARM Linux @ 2017-01-18  0:14 UTC (permalink / raw)
  To: Andrew Lunn, Vivien Didelot
  Cc: Florian Fainelli, David S. Miller, netdev, linux-kernel

Including phy.h and phy_fixed.h into net/dsa.h causes phy*.h to be an
unnecessary dependency for quite a large amount of the kernel.  There's
very little which actually requires definitions from phy.h in net/dsa.h
- the include itself only wants the declaration of a couple of
structures and IFNAMSIZ.

Add linux/if.h for IFNAMSIZ, declarations for the structures, phy.h to
mv88e6xxx.h as it needs it for phy_interface_t, and remove both phy.h
and phy_fixed.h from net/dsa.h.

This patch reduces from around 800 files rebuilt to around 40 - even
with ccache, the time difference is noticable.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
I noticed when I touched linux/phy.h that a lot of the kernel ended up
being unexpectedly rebuilt, as linux/netdevice.h includes net/dsa.h,
which then then includes linux/phy.h.  I've tested this change on both
ARM and ARM64, but I'd suggest letting the 0-day builder have a bite
at this, and then only taking it if everyone is confident that there's
a slim chance of any problems.  Also, it may need some rework to apply
to davem's tree.  All of the above makes this RFC only.

 drivers/net/dsa/mv88e6xxx/mv88e6xxx.h | 1 +
 include/net/dsa.h                     | 6 ++++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dsa/mv88e6xxx/mv88e6xxx.h b/drivers/net/dsa/mv88e6xxx/mv88e6xxx.h
index a319c06d82e3..d247b0639ed4 100644
--- a/drivers/net/dsa/mv88e6xxx/mv88e6xxx.h
+++ b/drivers/net/dsa/mv88e6xxx/mv88e6xxx.h
@@ -15,6 +15,7 @@
 #include <linux/if_vlan.h>
 #include <linux/irq.h>
 #include <linux/gpio/consumer.h>
+#include <linux/phy.h>
 
 #ifndef UINT64_MAX
 #define UINT64_MAX		(u64)(~((u64)0))
diff --git a/include/net/dsa.h b/include/net/dsa.h
index b122196d5a1f..887b2f98f9ea 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -11,15 +11,17 @@
 #ifndef __LINUX_NET_DSA_H
 #define __LINUX_NET_DSA_H
 
+#include <linux/if.h>
 #include <linux/if_ether.h>
 #include <linux/list.h>
 #include <linux/timer.h>
 #include <linux/workqueue.h>
 #include <linux/of.h>
-#include <linux/phy.h>
-#include <linux/phy_fixed.h>
 #include <linux/ethtool.h>
 
+struct phy_device;
+struct fixed_phy_status;
+
 enum dsa_tag_protocol {
 	DSA_TAG_PROTO_NONE = 0,
 	DSA_TAG_PROTO_DSA,

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH RFC] net: dsa: remove unnecessary phy.h include
  2017-01-18  0:14 [PATCH RFC] net: dsa: remove unnecessary phy.h include Russell King - ARM Linux
@ 2017-01-18  1:11 ` Vivien Didelot
  2017-01-18  1:13 ` Florian Fainelli
  2017-01-18 21:37 ` David Miller
  2 siblings, 0 replies; 7+ messages in thread
From: Vivien Didelot @ 2017-01-18  1:11 UTC (permalink / raw)
  To: Russell King - ARM Linux, Andrew Lunn
  Cc: Florian Fainelli, David S. Miller, netdev, linux-kernel

Hi Russell,

Russell King - ARM Linux <linux@armlinux.org.uk> writes:

> Including phy.h and phy_fixed.h into net/dsa.h causes phy*.h to be an
> unnecessary dependency for quite a large amount of the kernel.  There's
> very little which actually requires definitions from phy.h in net/dsa.h
> - the include itself only wants the declaration of a couple of
> structures and IFNAMSIZ.
>
> Add linux/if.h for IFNAMSIZ, declarations for the structures, phy.h to
> mv88e6xxx.h as it needs it for phy_interface_t, and remove both phy.h
> and phy_fixed.h from net/dsa.h.
>
> This patch reduces from around 800 files rebuilt to around 40 - even
> with ccache, the time difference is noticable.
>
> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>

This patch applies cleanly on net-next and builds correctly after
touching include/linux/phy.h. My boards work fine with it.

Tested-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>

Thanks,

        Vivien

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH RFC] net: dsa: remove unnecessary phy.h include
  2017-01-18  0:14 [PATCH RFC] net: dsa: remove unnecessary phy.h include Russell King - ARM Linux
  2017-01-18  1:11 ` Vivien Didelot
@ 2017-01-18  1:13 ` Florian Fainelli
  2017-01-18 21:37 ` David Miller
  2 siblings, 0 replies; 7+ messages in thread
From: Florian Fainelli @ 2017-01-18  1:13 UTC (permalink / raw)
  To: Russell King - ARM Linux, Andrew Lunn, Vivien Didelot
  Cc: David S. Miller, netdev, linux-kernel

On 01/17/2017 04:14 PM, Russell King - ARM Linux wrote:
> Including phy.h and phy_fixed.h into net/dsa.h causes phy*.h to be an
> unnecessary dependency for quite a large amount of the kernel.  There's
> very little which actually requires definitions from phy.h in net/dsa.h
> - the include itself only wants the declaration of a couple of
> structures and IFNAMSIZ.
> 
> Add linux/if.h for IFNAMSIZ, declarations for the structures, phy.h to
> mv88e6xxx.h as it needs it for phy_interface_t, and remove both phy.h
> and phy_fixed.h from net/dsa.h.
> 
> This patch reduces from around 800 files rebuilt to around 40 - even
> with ccache, the time difference is noticable.
> 
> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>

> ---
> I noticed when I touched linux/phy.h that a lot of the kernel ended up
> being unexpectedly rebuilt, as linux/netdevice.h includes net/dsa.h,
> which then then includes linux/phy.h.  I've tested this change on both
> ARM and ARM64, but I'd suggest letting the 0-day builder have a bite
> at this, and then only taking it if everyone is confident that there's
> a slim chance of any problems.  Also, it may need some rework to apply
> to davem's tree.  All of the above makes this RFC only.
> 
>  drivers/net/dsa/mv88e6xxx/mv88e6xxx.h | 1 +
>  include/net/dsa.h                     | 6 ++++--
>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/dsa/mv88e6xxx/mv88e6xxx.h b/drivers/net/dsa/mv88e6xxx/mv88e6xxx.h
> index a319c06d82e3..d247b0639ed4 100644
> --- a/drivers/net/dsa/mv88e6xxx/mv88e6xxx.h
> +++ b/drivers/net/dsa/mv88e6xxx/mv88e6xxx.h
> @@ -15,6 +15,7 @@
>  #include <linux/if_vlan.h>
>  #include <linux/irq.h>
>  #include <linux/gpio/consumer.h>
> +#include <linux/phy.h>
>  
>  #ifndef UINT64_MAX
>  #define UINT64_MAX		(u64)(~((u64)0))
> diff --git a/include/net/dsa.h b/include/net/dsa.h
> index b122196d5a1f..887b2f98f9ea 100644
> --- a/include/net/dsa.h
> +++ b/include/net/dsa.h
> @@ -11,15 +11,17 @@
>  #ifndef __LINUX_NET_DSA_H
>  #define __LINUX_NET_DSA_H
>  
> +#include <linux/if.h>
>  #include <linux/if_ether.h>
>  #include <linux/list.h>
>  #include <linux/timer.h>
>  #include <linux/workqueue.h>
>  #include <linux/of.h>
> -#include <linux/phy.h>
> -#include <linux/phy_fixed.h>
>  #include <linux/ethtool.h>
>  
> +struct phy_device;
> +struct fixed_phy_status;
> +
>  enum dsa_tag_protocol {
>  	DSA_TAG_PROTO_NONE = 0,
>  	DSA_TAG_PROTO_DSA,
> 


-- 
Florian

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH RFC] net: dsa: remove unnecessary phy.h include
  2017-01-18  0:14 [PATCH RFC] net: dsa: remove unnecessary phy.h include Russell King - ARM Linux
  2017-01-18  1:11 ` Vivien Didelot
  2017-01-18  1:13 ` Florian Fainelli
@ 2017-01-18 21:37 ` David Miller
  2017-01-18 21:46   ` Russell King - ARM Linux
  2017-01-18 21:47   ` David Miller
  2 siblings, 2 replies; 7+ messages in thread
From: David Miller @ 2017-01-18 21:37 UTC (permalink / raw)
  To: linux; +Cc: andrew, vivien.didelot, f.fainelli, netdev, linux-kernel

From: Russell King - ARM Linux <linux@armlinux.org.uk>
Date: Wed, 18 Jan 2017 00:14:03 +0000

> Including phy.h and phy_fixed.h into net/dsa.h causes phy*.h to be an
> unnecessary dependency for quite a large amount of the kernel.  There's
> very little which actually requires definitions from phy.h in net/dsa.h
> - the include itself only wants the declaration of a couple of
> structures and IFNAMSIZ.
> 
> Add linux/if.h for IFNAMSIZ, declarations for the structures, phy.h to
> mv88e6xxx.h as it needs it for phy_interface_t, and remove both phy.h
> and phy_fixed.h from net/dsa.h.
> 
> This patch reduces from around 800 files rebuilt to around 40 - even
> with ccache, the time difference is noticable.
> 
> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>

Applied, thanks.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH RFC] net: dsa: remove unnecessary phy.h include
  2017-01-18 21:37 ` David Miller
@ 2017-01-18 21:46   ` Russell King - ARM Linux
  2017-01-18 21:48     ` David Miller
  2017-01-18 21:47   ` David Miller
  1 sibling, 1 reply; 7+ messages in thread
From: Russell King - ARM Linux @ 2017-01-18 21:46 UTC (permalink / raw)
  To: David Miller; +Cc: andrew, vivien.didelot, f.fainelli, netdev, linux-kernel

On Wed, Jan 18, 2017 at 04:37:14PM -0500, David Miller wrote:
> From: Russell King - ARM Linux <linux@armlinux.org.uk>
> Date: Wed, 18 Jan 2017 00:14:03 +0000
> 
> > Including phy.h and phy_fixed.h into net/dsa.h causes phy*.h to be an
> > unnecessary dependency for quite a large amount of the kernel.  There's
> > very little which actually requires definitions from phy.h in net/dsa.h
> > - the include itself only wants the declaration of a couple of
> > structures and IFNAMSIZ.
> > 
> > Add linux/if.h for IFNAMSIZ, declarations for the structures, phy.h to
> > mv88e6xxx.h as it needs it for phy_interface_t, and remove both phy.h
> > and phy_fixed.h from net/dsa.h.
> > 
> > This patch reduces from around 800 files rebuilt to around 40 - even
> > with ccache, the time difference is noticable.
> > 
> > Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
> 
> Applied, thanks.

Hmm, now that's _really_ interesting.

I think you've said to others to send patches with RFC in them when they
aren't to be applied.  I sent this with RFC in, and it still got applied.

This is _really_ unfortunate, as the 0-day builder has been sending me a
stream of build errors over it, and I now have a branch with 9 patches
plus this one in fixing those errors...

And I did say in the comments below the --- that it should be left a few
days for the 0-day builder to run through it and find those errors.

Ho hum.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH RFC] net: dsa: remove unnecessary phy.h include
  2017-01-18 21:37 ` David Miller
  2017-01-18 21:46   ` Russell King - ARM Linux
@ 2017-01-18 21:47   ` David Miller
  1 sibling, 0 replies; 7+ messages in thread
From: David Miller @ 2017-01-18 21:47 UTC (permalink / raw)
  To: linux; +Cc: andrew, vivien.didelot, f.fainelli, netdev, linux-kernel

From: David Miller <davem@davemloft.net>
Date: Wed, 18 Jan 2017 16:37:14 -0500 (EST)

> From: Russell King - ARM Linux <linux@armlinux.org.uk>
> Date: Wed, 18 Jan 2017 00:14:03 +0000
> 
>> Including phy.h and phy_fixed.h into net/dsa.h causes phy*.h to be an
>> unnecessary dependency for quite a large amount of the kernel.  There's
>> very little which actually requires definitions from phy.h in net/dsa.h
>> - the include itself only wants the declaration of a couple of
>> structures and IFNAMSIZ.
>> 
>> Add linux/if.h for IFNAMSIZ, declarations for the structures, phy.h to
>> mv88e6xxx.h as it needs it for phy_interface_t, and remove both phy.h
>> and phy_fixed.h from net/dsa.h.
>> 
>> This patch reduces from around 800 files rebuilt to around 40 - even
>> with ccache, the time difference is noticable.
>> 
>> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
> 
> Applied, thanks.

Acutallly, I'm reverting this, it breaks the build all over the place.

The problem is that it seems that somehow we are getting an implicit
module.h include via phy.h and this propagates all over the tree.  So
I get failures like:

net/core/netprio_cgroup.c:303:16: error: expected declaration specifiers or ‘...’ before string constant
 MODULE_LICENSE("GPL v2");
 ...
net/sunrpc/xprtrdma/svc_rdma_backchannel.c: In function ‘xprt_rdma_bc_put’:
net/sunrpc/xprtrdma/svc_rdma_backchannel.c:277:2: error: implicit declaration of function ‘module_put’ [-Werror=implicit-function-declaration]
  module_put(THIS_MODULE);
  ^
net/sunrpc/xprtrdma/svc_rdma_backchannel.c: In function ‘xprt_setup_rdma_bc’:
net/sunrpc/xprtrdma/svc_rdma_backchannel.c:348:7: error: implicit declaration of function ‘try_module_get’ [-Werror=implicit-function-declaration]
  if (!try_module_get(THIS_MODULE))

Please resubmit this after you can successfully complete an allmodconfig build.

Thanks.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH RFC] net: dsa: remove unnecessary phy.h include
  2017-01-18 21:46   ` Russell King - ARM Linux
@ 2017-01-18 21:48     ` David Miller
  0 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2017-01-18 21:48 UTC (permalink / raw)
  To: linux; +Cc: andrew, vivien.didelot, f.fainelli, netdev, linux-kernel

From: Russell King - ARM Linux <linux@armlinux.org.uk>
Date: Wed, 18 Jan 2017 21:46:28 +0000

> On Wed, Jan 18, 2017 at 04:37:14PM -0500, David Miller wrote:
>> From: Russell King - ARM Linux <linux@armlinux.org.uk>
>> Date: Wed, 18 Jan 2017 00:14:03 +0000
>> 
>> > Including phy.h and phy_fixed.h into net/dsa.h causes phy*.h to be an
>> > unnecessary dependency for quite a large amount of the kernel.  There's
>> > very little which actually requires definitions from phy.h in net/dsa.h
>> > - the include itself only wants the declaration of a couple of
>> > structures and IFNAMSIZ.
>> > 
>> > Add linux/if.h for IFNAMSIZ, declarations for the structures, phy.h to
>> > mv88e6xxx.h as it needs it for phy_interface_t, and remove both phy.h
>> > and phy_fixed.h from net/dsa.h.
>> > 
>> > This patch reduces from around 800 files rebuilt to around 40 - even
>> > with ccache, the time difference is noticable.
>> > 
>> > Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
>> 
>> Applied, thanks.
> 
> Hmm, now that's _really_ interesting.

It got reviewed-by and seemed reasonable.

I am always allowed to use my judgment to turn an RFC into a patch
I actually apply, especially when other developers review the change.

If you read your email now you'll see that I reverted it before
pushing it out, because of the fallout you mention.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-01-18 22:40 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-18  0:14 [PATCH RFC] net: dsa: remove unnecessary phy.h include Russell King - ARM Linux
2017-01-18  1:11 ` Vivien Didelot
2017-01-18  1:13 ` Florian Fainelli
2017-01-18 21:37 ` David Miller
2017-01-18 21:46   ` Russell King - ARM Linux
2017-01-18 21:48     ` David Miller
2017-01-18 21:47   ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).