2012-10-03 02:23:56

by David Miller

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

From: Haicheng Li <[email protected]>
Date: Fri, 28 Sep 2012 14:57:38 +0800

> On 09/28/2012 02:46 PM, David Miller wrote:
>> From: Haicheng Li<[email protected]>
>> Date: Fri, 28 Sep 2012 14:41:43 +0800
>>
>>> 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:
>>>>
>>>>> - 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.


2012-10-03 21:45:32

by Ben Hutchings

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

On Tue, 2012-10-02 at 22:22 -0400, David Miller wrote:
> From: Haicheng Li <[email protected]>
> Date: Fri, 28 Sep 2012 14:57:38 +0800
>
> > On 09/28/2012 02:46 PM, David Miller wrote:
> >> From: Haicheng Li<[email protected]>
> >> Date: Fri, 28 Sep 2012 14:41:43 +0800
> >>
> >>> 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:
> >>>>
> >>>>> - 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.

2012-10-04 00:43:42

by David Miller

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

From: Ben Hutchings <[email protected]>
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.

2012-10-16 20:09:37

by Ben Hutchings

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

On Wed, 2012-10-03 at 20:43 -0400, David Miller wrote:
> From: Ben Hutchings <[email protected]>
> 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.

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.

2012-10-16 20:17:24

by David Miller

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

From: Ben Hutchings <[email protected]>
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).

2012-10-16 21:08:25

by Jacob Keller

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

> -----Original Message-----
> From: [email protected] [mailto:[email protected]]
> On Behalf Of David Miller
> Sent: Tuesday, October 16, 2012 1:17 PM
> To: [email protected]
> Cc: [email protected]; [email protected];
> [email protected]; [email protected]; linux-
> [email protected]; [email protected]
> Subject: Re: [PATCH 1/2] Fix build error caused by broken PCH_PTP module
> dependency.
>
> From: Ben Hutchings <[email protected]>
> 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).

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 [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html