[PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

STALE5069d

11 messages, 4 authors, 2012-10-16 · open the first message on its own page

[PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: Haicheng Li <hidden>
Date: 2012-09-25 00:23:31

 From 898e3214b3406c620571cedf704719784b0df049 Mon Sep 17 00:00:00 2001
From: Haicheng Li <redacted>
Date: Mon, 24 Sep 2012 15:52:30 +0800
Subject: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

The .config is:
         CONFIG_PCH_GBE=y
         CONFIG_PCH_PTP=y
         CONFIG_PTP_1588_CLOCK=m

The build error:

drivers/built-in.o: In function `pch_tx_timestamp':
.../pch_gbe_main.c:215: undefined reference to `pch_ch_event_read'
.../pch_gbe_main.c:225: undefined reference to `pch_tx_snap_read'
.../pch_gbe_main.c:231: undefined reference to `pch_ch_event_write'

.../pch_gbe_main.c:170: undefined reference to `pch_ch_event_read'
.../pch_gbe_main.c:175: undefined reference to `pch_src_uuid_lo_read'
.../pch_gbe_main.c:176: undefined reference to `pch_src_uuid_hi_read'
.../pch_gbe_main.c:190: undefined reference to `pch_ch_event_write'
.../pch_gbe_main.c:184: undefined reference to `pch_rx_snap_read'

.../pch_gbe_main.c:267: undefined reference to `pch_ch_control_write'
.../pch_gbe_main.c:271: undefined reference to `pch_ch_control_write'
.../pch_gbe_main.c:275: undefined reference to `pch_ch_control_write'
.../pch_gbe_main.c:281: undefined reference to `pch_ch_control_write'
.../pch_gbe_main.c:283: undefined reference to `pch_set_station_address'
.../pch_gbe_main.c:290: undefined reference to `pch_ch_event_write'

Signed-off-by: Haicheng Li <redacted>
---
  drivers/net/ethernet/oki-semi/pch_gbe/Kconfig |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig 
b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
index bce0164..6c8aed4 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
@@ -26,7 +26,7 @@ if PCH_GBE
  config PCH_PTP
  	bool "PCH PTP clock support"
  	default n
-	depends on PTP_1588_CLOCK_PCH
+	depends on PTP_1588_CLOCK_PCH = PCH_GBE
  	---help---
  	  Say Y here if you want to use Precision Time Protocol (PTP) in the
  	  driver. PTP is a method to precisely synchronize distributed clocks
-- 
1.7.1

Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: David Miller <davem@davemloft.net>
Date: 2012-09-27 22:09:45

From: Haicheng Li <redacted>
Date: Tue, 25 Sep 2012 08:23:27 +0800
From 898e3214b3406c620571cedf704719784b0df049 Mon Sep 17 00:00:00 2001
From: Haicheng Li <redacted>
Date: Mon, 24 Sep 2012 15:52:30 +0800
Subject: [PATCH 1/2] Fix build error caused by broken PCH_PTP module
dependency.

The .config is:
        CONFIG_PCH_GBE=y
        CONFIG_PCH_PTP=y
        CONFIG_PTP_1588_CLOCK=m

The build error:
Your patch submissions are of a very low quality.

And the main reason is that you microscopically look at problems and
do not investigate how the same thing might be handled elsewhere.

Therefore you will never become accustomed to the proper way problems
are fixed, and the proper way to submit patches.

Look at how other people submit patches, do any other patch submissions
look like your's having all of this metadata in the message body:
From 898e3214b3406c620571cedf704719784b0df049 Mon Sep 17 00:00:00 2001
From: Haicheng Li <redacted>
Date: Mon, 24 Sep 2012 15:52:30 +0800
Subject: [PATCH 1/2] Fix build error caused by broken PCH_PTP module
dependency.
No, nobody else does this.

As for this specific patch:
-	depends on PTP_1588_CLOCK_PCH
+	depends on PTP_1588_CLOCK_PCH = PCH_GBE
This is not the correct way to ensure that the module'ness of one
config option meets the module'ness requirements of another.

The correct way is to say something like "&& (PCH_GBE || PCH_GBE=n)"

Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: Haicheng Li <hidden>
Date: 2012-09-28 06:41:46

On 09/28/2012 06:09 AM, David Miller wrote:
Look at how other people submit patches, do any other patch submissions
look like your's having all of this metadata in the message body:
I'm sorry for it.
As for this specific patch:
quoted
-	depends on PTP_1588_CLOCK_PCH
+	depends on PTP_1588_CLOCK_PCH = PCH_GBE
This is not the correct way to ensure that the module'ness of one
config option meets the module'ness requirements of another.
The correct way is to say something like "&&  (PCH_GBE || PCH_GBE=n)"
This case is a little bit tricky than usual, with PCH_PTP selected, the valid 
config would be either "PTP_1588_CLOCK_PCH=PCH_GBE=m" or 
"PTP_1588_CLOCK_PCH=PCH_GBE=y", and PTP_1588_CLOCK_PCH depends on PCH_GBE.

So are you ok with this:
+	depends on PTP_1588_CLOCK_PCH && (PCH_GBE=m || PTP_1588_CLOCK_PCH=y)

or simply like:
---
From: Haicheng Li <redacted>

Fix build error caused by broken PCH_PTP module dependency.
The .config is:
         CONFIG_PCH_GBE=y
         CONFIG_PCH_PTP=y
         CONFIG_PTP_1588_CLOCK=m

The build error:

drivers/built-in.o: In function `pch_tx_timestamp':
.../pch_gbe_main.c:215: undefined reference to `pch_ch_event_read'
.../pch_gbe_main.c:225: undefined reference to `pch_tx_snap_read'
.../pch_gbe_main.c:231: undefined reference to `pch_ch_event_write'

.../pch_gbe_main.c:170: undefined reference to `pch_ch_event_read'
.../pch_gbe_main.c:175: undefined reference to `pch_src_uuid_lo_read'
.../pch_gbe_main.c:176: undefined reference to `pch_src_uuid_hi_read'
.../pch_gbe_main.c:190: undefined reference to `pch_ch_event_write'
.../pch_gbe_main.c:184: undefined reference to `pch_rx_snap_read'

.../pch_gbe_main.c:267: undefined reference to `pch_ch_control_write'
.../pch_gbe_main.c:271: undefined reference to `pch_ch_control_write'
.../pch_gbe_main.c:275: undefined reference to `pch_ch_control_write'
.../pch_gbe_main.c:281: undefined reference to `pch_ch_control_write'
.../pch_gbe_main.c:283: undefined reference to `pch_set_station_address'
.../pch_gbe_main.c:290: undefined reference to `pch_ch_event_write'

Signed-off-by: Haicheng Li <redacted>
---
  drivers/net/ethernet/oki-semi/pch_gbe/Kconfig |    4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig 
b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
index bce0164..df1e649 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
@@ -21,12 +21,12 @@ config PCH_GBE
  	  ML7223/ML7831 is companion chip for Intel Atom E6xx series.
  	  ML7223/ML7831 is completely compatible for Intel EG20T PCH.

-if PCH_GBE
+if PTP_1588_CLOCK_PCH

  config PCH_PTP
  	bool "PCH PTP clock support"
  	default n
-	depends on PTP_1588_CLOCK_PCH
+	depends on PTP_1588_CLOCK_PCH=y || PCH_GBE=m
  	---help---
  	  Say Y here if you want to use Precision Time Protocol (PTP) in the
  	  driver. PTP is a method to precisely synchronize distributed clocks
-- 
1.7.1



-haicheng

Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: David Miller <davem@davemloft.net>
Date: 2012-09-28 06:46:24

From: Haicheng Li <redacted>
Date: Fri, 28 Sep 2012 14:41:43 +0800
On 09/28/2012 06:09 AM, David Miller wrote:
quoted
Look at how other people submit patches, do any other patch
submissions
look like your's having all of this metadata in the message body:
I'm sorry for it.
quoted
As for this specific patch:
quoted
-	depends on PTP_1588_CLOCK_PCH
+	depends on PTP_1588_CLOCK_PCH = PCH_GBE
This is not the correct way to ensure that the module'ness of one
config option meets the module'ness requirements of another.
The correct way is to say something like "&&  (PCH_GBE || PCH_GBE=n)"
This case is a little bit tricky than usual, with PCH_PTP selected,
the valid config would be either "PTP_1588_CLOCK_PCH=PCH_GBE=m" or
"PTP_1588_CLOCK_PCH=PCH_GBE=y", and PTP_1588_CLOCK_PCH depends on
PCH_GBE.
And a simple "&& PCH_GBE" should accomplish this, no?

Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: Haicheng Li <hidden>
Date: 2012-09-28 06:57:51

On 09/28/2012 02:46 PM, David Miller wrote:
From: Haicheng Li<redacted>
Date: Fri, 28 Sep 2012 14:41:43 +0800
quoted
On 09/28/2012 06:09 AM, David Miller wrote:
quoted
Look at how other people submit patches, do any other patch
submissions
look like your's having all of this metadata in the message body:
I'm sorry for it.
quoted
As for this specific patch:
quoted
-	depends on PTP_1588_CLOCK_PCH
+	depends on PTP_1588_CLOCK_PCH = PCH_GBE
This is not the correct way to ensure that the module'ness of one
config option meets the module'ness requirements of another.
The correct way is to say something like "&&   (PCH_GBE || PCH_GBE=n)"
This case is a little bit tricky than usual, with PCH_PTP selected,
the valid config would be either "PTP_1588_CLOCK_PCH=PCH_GBE=m" or
"PTP_1588_CLOCK_PCH=PCH_GBE=y", and PTP_1588_CLOCK_PCH depends on
PCH_GBE.
And a simple "&&  PCH_GBE" should accomplish this, no?
No sir. it's actually same with the original Kconfig (by a if PCH_GBE"), it 
just failed with this config:

         CONFIG_PCH_GBE=y
         CONFIG_PCH_PTP=y
         CONFIG_PTP_1588_CLOCK=m

-haicheng

Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: David Miller <davem@davemloft.net>
Date: 2012-10-03 02:23:56

From: Haicheng Li <redacted>
Date: Fri, 28 Sep 2012 14:57:38 +0800
On 09/28/2012 02:46 PM, David Miller wrote:
quoted
From: Haicheng Li<redacted>
Date: Fri, 28 Sep 2012 14:41:43 +0800
quoted
On 09/28/2012 06:09 AM, David Miller wrote:
quoted
Look at how other people submit patches, do any other patch
submissions
look like your's having all of this metadata in the message body:
I'm sorry for it.
quoted
As for this specific patch:
quoted
-	depends on PTP_1588_CLOCK_PCH
+	depends on PTP_1588_CLOCK_PCH = PCH_GBE
This is not the correct way to ensure that the module'ness of one
config option meets the module'ness requirements of another.
The correct way is to say something like "&&   (PCH_GBE || PCH_GBE=n)"
This case is a little bit tricky than usual, with PCH_PTP selected,
the valid config would be either "PTP_1588_CLOCK_PCH=PCH_GBE=m" or
"PTP_1588_CLOCK_PCH=PCH_GBE=y", and PTP_1588_CLOCK_PCH depends on
PCH_GBE.
And a simple "&&  PCH_GBE" should accomplish this, no?
No sir. it's actually same with the original Kconfig (by a if
PCH_GBE"), it just failed with this config:

        CONFIG_PCH_GBE=y
        CONFIG_PCH_PTP=y
        CONFIG_PTP_1588_CLOCK=m
The correct fix is to make the Kconfig entry for PCH_PTP use
a "select PTP_1588_CLOCK" instead of "depends PTP_1588_CLOCK"

I'll apply this fix.

The is another, extremely convoluted, way to do this, which is
what the SFC driver does which is:

depends on SFC && PTP_1588_CLOCK && !(SFC=y && PTP_1588_CLOCK=m)

but that looks horrible to me.

Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: Ben Hutchings <hidden>
Date: 2012-10-03 21:45:32

On Tue, 2012-10-02 at 22:22 -0400, David Miller wrote:
From: Haicheng Li <redacted>
Date: Fri, 28 Sep 2012 14:57:38 +0800
quoted
On 09/28/2012 02:46 PM, David Miller wrote:
quoted
From: Haicheng Li<redacted>
Date: Fri, 28 Sep 2012 14:41:43 +0800
quoted
On 09/28/2012 06:09 AM, David Miller wrote:
quoted
Look at how other people submit patches, do any other patch
submissions
look like your's having all of this metadata in the message body:
I'm sorry for it.
quoted
As for this specific patch:
quoted
-	depends on PTP_1588_CLOCK_PCH
+	depends on PTP_1588_CLOCK_PCH = PCH_GBE
This is not the correct way to ensure that the module'ness of one
config option meets the module'ness requirements of another.
The correct way is to say something like "&&   (PCH_GBE || PCH_GBE=n)"
This case is a little bit tricky than usual, with PCH_PTP selected,
the valid config would be either "PTP_1588_CLOCK_PCH=PCH_GBE=m" or
"PTP_1588_CLOCK_PCH=PCH_GBE=y", and PTP_1588_CLOCK_PCH depends on
PCH_GBE.
And a simple "&&  PCH_GBE" should accomplish this, no?
No sir. it's actually same with the original Kconfig (by a if
PCH_GBE"), it just failed with this config:

        CONFIG_PCH_GBE=y
        CONFIG_PCH_PTP=y
        CONFIG_PTP_1588_CLOCK=m
The correct fix is to make the Kconfig entry for PCH_PTP use
a "select PTP_1588_CLOCK" instead of "depends PTP_1588_CLOCK"

I'll apply this fix.

The is another, extremely convoluted, way to do this, which is
what the SFC driver does which is:

depends on SFC && PTP_1588_CLOCK && !(SFC=y && PTP_1588_CLOCK=m)

but that looks horrible to me.
I thought of it as being a peripheral feature (which most Solarflare
hardware doesn't implement) so it made sense for SFC_PTP to be optional
like SFC_MTD and so on.  But I'm quite happy to use a select instead, if
you want that to be the convention for all drivers implementing PHC.

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: David Miller <davem@davemloft.net>
Date: 2012-10-04 00:43:42

From: Ben Hutchings <redacted>
Date: Wed, 3 Oct 2012 22:45:10 +0100
I thought of it as being a peripheral feature (which most Solarflare
hardware doesn't implement) so it made sense for SFC_PTP to be optional
like SFC_MTD and so on.  But I'm quite happy to use a select instead, if
you want that to be the convention for all drivers implementing PHC.
I think that consistency might trump those conerns you mentioned, at
least in this case.

Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: Ben Hutchings <hidden>
Date: 2012-10-16 20:09:37

On Wed, 2012-10-03 at 20:43 -0400, David Miller wrote:
From: Ben Hutchings <redacted>
Date: Wed, 3 Oct 2012 22:45:10 +0100
quoted
I thought of it as being a peripheral feature (which most Solarflare
hardware doesn't implement) so it made sense for SFC_PTP to be optional
like SFC_MTD and so on.  But I'm quite happy to use a select instead, if
you want that to be the convention for all drivers implementing PHC.
I think that consistency might trump those conerns you mentioned, at
least in this case.
Currently such kconfig options look like, for example:

config IGB_PTP
        bool "PTP Hardware Clock (PHC)"
        default n
        depends on IGB && EXPERIMENTAL
        select PPS
        select PTP_1588_CLOCK
        ---help---
          Say Y here if you want to use PTP Hardware Clock (PHC) in the
          driver.  Only the basic clock operations have been implemented.

          Every timestamp and clock read operations must consult the
          overflow counter to form a correct time value.

There are a number of problems with this:

1. PTP_1588_CLOCK depends on PPS, so this has to select it as well.
2. PPS and PTP_1588_CLOCK depend on EXPERIMENTAL, so this has to as
   well.
3. It's a boolean, so whatever it selects is built-in, even though the
   driver it relates to may be a module.

I think the various kconfig options should be changed as follows:

1. Only PTP_1588_CLOCK selects PPS.
2. Nothing depends on EXPERIMENTAL.  (This stuff has been in for 18
   months and it's even being backported to RHEL 6 now.)
3. Either:
   (a) The per-driver PHC options select nothing, and the driver options
       do e.g.:
	select PTP_1588_CLOCK if IGB_PTP
   (b) The per-driver PHC options are removed and the driver options do:
	select PTP_1588_CLOCK
       (i.e. PHC support is unconditional)

Any objections to this, or preference for (a) vs (b)?

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: David Miller <davem@davemloft.net>
Date: 2012-10-16 20:17:24

From: Ben Hutchings <redacted>
Date: Tue, 16 Oct 2012 21:09:27 +0100
I think the various kconfig options should be changed as follows:

1. Only PTP_1588_CLOCK selects PPS.
2. Nothing depends on EXPERIMENTAL.  (This stuff has been in for 18
   months and it's even being backported to RHEL 6 now.)
3. Either:
   (a) The per-driver PHC options select nothing, and the driver options
       do e.g.:
	select PTP_1588_CLOCK if IGB_PTP
   (b) The per-driver PHC options are removed and the driver options do:
	select PTP_1588_CLOCK
       (i.e. PHC support is unconditional)

Any objections to this, or preference for (a) vs (b)?
No objections, prefer (b).

RE: [PATCH 1/2] Fix build error caused by broken PCH_PTP module dependency.

From: "Keller, Jacob E" <jacob.e.keller@intel.com>
Date: 2012-10-16 21:08:25

-----Original Message-----
From: netdev-owner@vger.kernel.org [mailto:netdev-owner@vger.kernel.org]
On Behalf Of David Miller
Sent: Tuesday, October 16, 2012 1:17 PM
To: bhutchings@solarflare.com
Cc: richardcochran@gmail.com; haicheng.li@linux.intel.com;
netdev@vger.kernel.org; tshimizu818@gmail.com; linux-
kernel@vger.kernel.org; haicheng.lee@gmail.com
Subject: Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module
dependency.

From: Ben Hutchings <redacted>
Date: Tue, 16 Oct 2012 21:09:27 +0100
quoted
I think the various kconfig options should be changed as follows:

1. Only PTP_1588_CLOCK selects PPS.
2. Nothing depends on EXPERIMENTAL.  (This stuff has been in for 18
   months and it's even being backported to RHEL 6 now.)
3. Either:
   (a) The per-driver PHC options select nothing, and the driver options
       do e.g.:
	select PTP_1588_CLOCK if IGB_PTP
   (b) The per-driver PHC options are removed and the driver options do:
	select PTP_1588_CLOCK
       (i.e. PHC support is unconditional)

Any objections to this, or preference for (a) vs (b)?
No objections, prefer (b).
No objections here, I also prefer (b). The feature shouldn't have much impact unless enabled via hwtstamp_ioctl, and it drastically reduces requirement on end-user needing to enable PHC support.

- Jake
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help