public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Tom Rini <trini@konsulko.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC] Rearrange CONFIG_* macros
Date: Fri, 30 Sep 2016 22:24:26 -0400	[thread overview]
Message-ID: <20161001022426.GJ4884@bill-the-cat> (raw)
In-Reply-To: <AM4PR0401MB173259BBFF1B5E3D0BD61B9D9AC10@AM4PR0401MB1732.eurprd04.prod.outlook.com>

On Fri, Sep 30, 2016 at 04:20:10AM +0000, york sun wrote:
> On 09/29/2016 08:59 PM, Masahiro Yamada wrote:
> > 2016-09-30 0:47 GMT+09:00 york sun <york.sun@nxp.com>:
> >> On 09/28/2016 12:17 PM, Simon Glass wrote:
> >>> +Masahiro, who may know
> >>
> >> Masahiro,
> >>
> >> Need some advise on this. How do we deal with duplicated config?
> >>
> >> York
> >>
> >>>
> >>> On 28 September 2016 at 12:57, york sun <york.sun@nxp.com> wrote:
> >>>> On 09/27/2016 10:55 AM, Simon Glass wrote:
> >>>>> Hi York,
> >>>>>
> >>>>> On 27 September 2016 at 11:39, york sun <york.sun@nxp.com> wrote:
> >>>>>> Guys,
> >>>>>>
> >>>>>> I want to discuss to rearrange the current CONFIG_* macros used by
> >>>>>> Freescale Layerscape SoCs. We have been encouraged to use CONFIG_SYS_*
> >>>>>> macros to define hardware setting, and other CONFIG_* macros for user
> >>>>>> setting. Clearly this has changed. Kconfig options are used for most
> >>>>>> user settings from now on. I am OK with it. But for existing
> >>>>>> CONFIG_SYS_* macros, we need a plan to either move them out of CONFIG_*
> >>>>>> name space, or move some to Kconfig, if that makes sense. Since most our
> >>>>>> CONFIG_SYS_* macros are cross platforms (including armv7 and armv8), if
> >>>>>> using Kconfig option, do we add another mach-fsl folder to host the
> >>>>>> Kconfig, or somewhere else? We also have macros cross ARM and PowerPC.
> >>>>>> So we either move them out of arch/, or duplicate them for both arch.
> >>>>>>
> >>>>>> If we move them to another name space, for example SYS_FSL_*, do we want
> >>>>>> to move them out of config.h?
> >>>>>>
> >>>>>> Any suggestion/comment?
> >>>>>
> >>>>> I wonder if some of these (the ones that represent actual values
> >>>>> rather than enabling functions) can move to device tree, or tables?
> >>>>>
> >>>>
> >>>> While I try to move some options to Kconfig, I have an issue of
> >>>> duplicated names. For example, the MAX_CPUS is used in arch/x86/Kconfig.
> >>>> I know I can put another config with the same name, for example
> >>>> arch/arm/cpu/armv8/fsl-layerscape/Kconfig. The funny thing is when I
> >>>> search for this config option under menuconfig, it shows the location of
> >>>> x86, but showing defined in arch/arm/cpu/armv8/fsl-layerscape/Kconfig.
> >>>> Same thing happens when I try to move an option which is used by both
> >>>> PowerPC and ARM. This is not related to a common driver so I cannot put
> >>>> the option into a driver Kconfig (for example CONFIG_SYS_HAS_SERDES).
> >>>>
> >>>> Is there a solution for this?
> >>>>
> >
> > Right.
> > The "Help" in menuconfig is just to display the path
> > to the first Kconfig entry found.
> > The result looks funny if we have multiple entries for the same option name.
> >
> >
> > I am not pretty sure about this particular case,
> > but there should be general solutions.
> >
> >
> > (1)  Rename the option to avoid name space conflict, e.g.
> >
> >     MAX_CPUS   ->  FSL_MAX_CPUS      (for Freescale SoCs)
> >     MAX_CPUS   ->  X86_MAX_CPUS      (for x86)
> >
> 
> It is a solution, but I don't like it for the reason described below[1].
> 
> >
> > (2) Unify the Kconfig entry
> >
> >   As in Linux, we do not generally create multiple entries for the same option.
> >
> >   If the option is sensible only for some platforms, the general practice is
> >     to use   "depends on HAVE_..." to hide the option on unrelated platforms.
> >
> >
> >   If X86 and FSL are the only platforms that have interest in this option,
> >   we can save HAVE_... and put them directly in "depends on".
> >
> >     config MAX_CPUS
> >          int "Maximum number of CPUs permitted"
> >          depends on (SMP && X86) || VENDOR_FSL
> >
> >   I am not quite sure about "VENDOR_FSL",
> >    so please choose your favorite one like
> >   SOC_FSL, PLAT_FSL, ARCH_FSL, or whatever.
> 
> This sounds like a bandage. I can go with this if there is no better 
> solution.

If MAX_CPUS has the same meaning in both cases, this isn't imho a
bandage but one of the cleanups that was hoped for in moving to Kconfig.
We see that a problem is encountered in more than one area more easily
and instead of letting N solutions accumulate we get one.

> Checking Linux Kconfig, I noticed the NR_CPUS are used in all archs. The 
> difference is only one arch Kconfig is sourced by
> 
> source "arch/$SRCARCH/Kconfig"
> 
> I tried to do the same for U-Boot, but that will require we put ARCH at 
> the command line of environmental variable. I think we moved away from 
> this syntax. It also has some trouble to to use aarch64 because we put 
> the actual code under arch/arm.

Yeah, we don't want to move in this direction.

[snip]
> [1] We have macros shared between PowerPC and ARM for Freescale QorIQ 
> SoCs because they share similar designs at SoC level. Some options can 
> be moved to driver Kconfig to avoid duplication. But there are many 
> options are tied to hardware and they are not related to a common 
> driver. Using the same macro simplifies the code and is easier to 
> maintain. It is preferred to either PowerPC Kconfig, or ARM Kconfig to 
> avoid duplication if we can.

I think this is honestly going to be the hard part, deciding what
belongs in a Kconfig'd area and what belongs in a different namespace
but that in the end we'll have clearer code for PowerPC and ARM going
forward.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160930/eb5f2a42/attachment.sig>

  reply	other threads:[~2016-10-01  2:24 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-27 17:39 [U-Boot] [RFC] Rearrange CONFIG_* macros york sun
2016-09-27 17:51 ` Tom Rini
2016-09-27 18:24   ` york sun
2016-09-27 18:40     ` Tom Rini
2016-09-27 17:55 ` Simon Glass
2016-09-27 18:26   ` york sun
2016-09-28 18:57   ` york sun
2016-09-28 19:17     ` Simon Glass
2016-09-29 15:47       ` york sun
2016-09-30  3:59         ` Masahiro Yamada
2016-09-30  4:20           ` york sun
2016-10-01  2:24             ` Tom Rini [this message]
2016-10-03 16:35               ` Scott Wood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161001022426.GJ4884@bill-the-cat \
    --to=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox