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
next prev 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