ksummit.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Geert Uytterhoeven <geert@linux-m68k.org>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: "ksummit-discuss@lists.linuxfoundation.org"
	<ksummit-discuss@lists.linuxfoundation.org>,
	Michal Hocko <mhocko@kernel.org>
Subject: Re: [Ksummit-discuss] [PATCH 2/2] kconfig: new command line kernel configuration tool
Date: Mon, 10 Jul 2017 11:44:22 +0200	[thread overview]
Message-ID: <CAMuHMdW4FFJkhA7oj0uA1an_WNt1wS-tM1KvnjYWwdfjRLjQ7A@mail.gmail.com> (raw)
In-Reply-To: <20170706144208.6hlgxwo37gntk6qm@mwanda>

Hi Dan,

On Thu, Jul 6, 2017 at 4:42 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:
> This tool barely works, it's just a rough draft.
>
> Sometimes I want to search for a config so I have to load menuconfig,
> then search for the config entry, then exit.  With this script I
> simply run:
>
>     ./scripts/kconfig/kconfig search COMEDI
>
> Quite often I find myself trying to enable a feature by doing this:
>
>     echo CONFIG_FEATURE=y >> .config
>
> But when I try to boot the new kernel, I find that the feature isn't
> there because the kernel runs `make oldconfig` and I didn't have all
> the depends selected so it silently removed it.  With this feature
> what you can do is:
>
>     ./scripts/kconfig/kconfig set FEATURE=y
>
> It helps you enable the dependencies or it at least prints an error
> if it can't enable the feature.
>
> But this code isn't all implemented.  1) It doesn't calculate the
> dependencies well.  See expr_parse() for more details.  2)  It
> doesn't work well for things like:
>
>         ./scripts/kconfig/kconfig set BT_INTEL=m
>
> because those aren't visible, they can only be using depend
> statements.  Or say you try to set FEATURE=m when something else
> depends on it be set =y then the error message is wrong.  The
> other problem is that I don't know how to print the help text.
> Again, this is just a rough draft.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Thanks! With the small fixes below, it worked fine for all cases I tried it
with.

> --- /dev/null
> +++ b/scripts/kconfig/lconf.c
> @@ -0,0 +1,332 @@
> +/*
> + * Copyright (C) 2015 Oracle
> + * Released under the terms of the GNU GPL v2.0.
> + *
> + */
> +#define _GNU_SOURCE

    scripts/kconfig/lconf.c:6:0: warning: "_GNU_SOURCE" redefined
     #define _GNU_SOURCE
     ^
    <command-line>:0:0: note: this is the location of the previous definition

You can do:

    #ifndef _GNU_SOURCE
    #define _GNU_SOURCE
    #endif

like scripts/kconfig/nconf.c does.


> +static int conf_sym(struct symbol *sym)
> +{

> +               if (sym_set_tristate_value(sym, newval)) {
> +                       /* FIXME: if I don't write it doesn't save */
> +                       conf_write(NULL, 1);

    scripts/kconfig/lconf.c: In function ‘conf_sym’:
    scripts/kconfig/lconf.c:159:4: error: too many arguments to
function ‘conf_write’
        conf_write(NULL, 1);
        ^
    In file included from scripts/kconfig/lkc.h:24:0,
                     from scripts/kconfig/lconf.c:10:
    scripts/kconfig/lkc_proto.h:8:5: note: declared here

It seems it never took 2 parameters in upstream?
Dropping the "1" works.


> +static void kconfig_set(void)
> +{

> +       res = conf_write(NULL, 1);

Likewise


For search, it doesn't work with the CONFIG_ prefix:

$ path-to-source-tree/scripts/kconfig/kconfig search CONFIG_IPMMU_VMSA
  GEN     ./Makefile
No matches found.
$ path-to-source-tree/scripts/kconfig/kconfig search IPMMU_VMSA
  GEN     ./Makefile
Symbol: IPMMU_VMSA [=n]
Type  : boolean
Prompt: Renesas VMSA-compatible IPMMU
  Location:
    -> Device Drivers
      -> IOMMU Hardware Support (IOMMU_SUPPORT [=n])
  Defined at drivers/iommu/Kconfig:275
  Depends on: IOMMU_SUPPORT [=n] && (ARM [=y] || IOMMU_DMA [=n]) &&
(ARCH_RENESAS [=y] || COMPILE_TEST [=n])
  Selects: IOMMU_API [=n] && IOMMU_IO_PGTABLE_LPAE [=n] &&
ARM_DMA_USE_IOMMU [=n]


For set, it works with or without the CONFIG_ prefix:

$ path-to-source-tree/scripts/kconfig/kconfig set CONFIG_IPMMU_VMSA=y
  GEN     ./Makefile

IPMMU_VMSA: has missing dependencies
IOMMU_SUPPORT [=n] && (ARM [=y] || IOMMU_DMA [=n]) && (ARCH_RENESAS
[=y] || COMPILE_TEST [=n])

IOMMU_SUPPORT:  IOMMU Hardware Support [N/y] y
y
#
# configuration written to .config
#
HELP.  Lot of unimplemented code.  1
HELP.  Lot of unimplemented code.  1
#
# configuration written to .config
#
set: IPMMU_VMSA=y
$ diff .config{.orig,}
--- .config.orig        2017-07-10 11:34:13.181395059 +0200
+++ .config     2017-07-10 11:34:23.297370970 +0200
@@ -4,6 +4,9 @@
 #
 CONFIG_ARM=y
 CONFIG_ARM_HAS_SG_CHAIN=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_ARM_DMA_USE_IOMMU=y
+CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
 CONFIG_MIGHT_HAVE_PCI=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
 CONFIG_HAVE_PROC_CPU=y
@@ -3452,6 +3455,7 @@ CONFIG_SYNC_FILE=y
 # CONFIG_SW_SYNC is not set
 # CONFIG_AUXDISPLAY is not set
 # CONFIG_UIO is not set
+# CONFIG_VFIO is not set
 # CONFIG_VIRT_DRIVERS is not set

 #
@@ -3634,7 +3638,19 @@ CONFIG_RENESAS_OSTM=y
 CONFIG_SH_TIMER_TMU=y
 CONFIG_EM_TIMER_STI=y
 # CONFIG_MAILBOX is not set
-# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IO_PGTABLE=y
+CONFIG_IOMMU_IO_PGTABLE_LPAE=y
+# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
+# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
+CONFIG_OF_IOMMU=y
+CONFIG_IPMMU_VMSA=y
+# CONFIG_ARM_SMMU is not set

 #
 # Remoteproc drivers

Nice!

BTW, forgetting the =y causes a crash:

$ path-to-source-tree/scripts/kconfig/kconfig set IPMMU_VMSA
  GEN     ./Makefile
path-to-source-tree/scripts/kconfig/Makefile:37: recipe for target
'lconfig' failed
make[4]: *** [lconfig] Segmentation fault
path-to-source-tree/Makefile:548: recipe for target 'lconfig' failed
make[3]: *** [lconfig] Error 2
Makefile:152: recipe for target 'sub-make' failed
make[2]: *** [sub-make] Error 2
Makefile:24: recipe for target '__sub-make' failed
make[1]: *** [__sub-make] Error 2
GNUmakefile:10: recipe for target 'all' failed
make: *** [all] Error 2

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

  parent reply	other threads:[~2017-07-10  9:44 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-27 13:58 [Ksummit-discuss] [TECH TOPIC] is Kconfig a bit hard sometimes? Sergey Senozhatsky
2017-06-27 17:18 ` Linus Torvalds
2017-06-27 18:44   ` Luis R. Rodriguez
2017-06-27 19:27     ` Linus Torvalds
2017-06-27 20:53       ` Kees Cook
2017-06-27 21:16       ` Olof Johansson
2017-06-27 21:36         ` Linus Torvalds
2017-06-27 23:10           ` Serge E. Hallyn
2017-06-28  0:09             ` Luis R. Rodriguez
2017-06-28  0:14               ` Linus Torvalds
2017-06-28  0:26                 ` Luis R. Rodriguez
2017-06-28  3:54                   ` Stephen Hemminger
     [not found]                 ` <CAFhKne-o0S8fMo_XD_aUk2Rf7VbDhgO+PT_bjnM-9WpKfnWBvw@mail.gmail.com>
     [not found]                   ` <CAFhKne8FE=17wNdp=Svf2Z2tADok6htfYqTABEiZUrCOyeMaYg@mail.gmail.com>
2017-06-28 13:35                     ` Matthew Wilcox
2017-06-28 17:56                 ` Geert Uytterhoeven
2017-06-29 10:02                   ` Mauro Carvalho Chehab
2017-06-28  0:11             ` Linus Torvalds
2017-06-29 10:23           ` Mauro Carvalho Chehab
2017-06-28 12:58     ` Dan Carpenter
2017-06-30 17:11   ` Steven Rostedt
2017-06-30 17:52   ` Darren Hart
2017-06-30 17:58     ` Darren Hart
2017-07-01 17:24     ` Hannes Reinecke
2017-06-27 20:41 ` Kees Cook
2017-07-06 14:40 ` Dan Carpenter
2017-07-06 14:41   ` [Ksummit-discuss] [PATCH 1/2] kconfig: add a silent option to conf_write() Dan Carpenter
2017-07-06 15:08     ` Steven Rostedt
2017-07-06 14:42   ` [Ksummit-discuss] [PATCH 2/2] kconfig: new command line kernel configuration tool Dan Carpenter
2017-07-07  5:55     ` Krzysztof Kozlowski
2017-07-07  9:02       ` Dan Carpenter
2017-07-09  3:56         ` Linus Walleij
2017-07-09  8:31           ` Geert Uytterhoeven
2017-07-09 17:03             ` Randy Dunlap
2017-07-09 19:43               ` Geert Uytterhoeven
2017-07-09 17:32             ` Frank Rowand
2017-07-10  9:44     ` Geert Uytterhoeven [this message]
2017-07-10 11:15       ` Dan Carpenter
2017-07-06 16:41   ` [Ksummit-discuss] [TECH TOPIC] is Kconfig a bit hard sometimes? Linus Torvalds
2017-07-06 17:11     ` Randy Dunlap
2017-07-07 11:36     ` Dan Carpenter
2017-07-10 17:15       ` Luck, Tony
2017-07-10 17:33         ` Alexandre Belloni
2017-07-10 18:28           ` Linus Torvalds
2017-07-10 19:44             ` Randy Dunlap
2017-07-11  6:21             ` Valentin Rothberg
2017-07-06 21:19   ` Laurent Pinchart

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=CAMuHMdW4FFJkhA7oj0uA1an_WNt1wS-tM1KvnjYWwdfjRLjQ7A@mail.gmail.com \
    --to=geert@linux-m68k.org \
    --cc=dan.carpenter@oracle.com \
    --cc=ksummit-discuss@lists.linuxfoundation.org \
    --cc=mhocko@kernel.org \
    /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