linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Borislav Petkov <bp@suse.de>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: "Michal Marek" <mmarek@suse.cz>, "Måns Rullgård" <mans@mansr.com>,
	"Markus Trippelsdorf" <markus@trippelsdorf.de>,
	"Thomas Voegtle" <tv@lio96.de>,
	linux-kernel@vger.kernel.org, x86-ml <x86@kernel.org>,
	"Peter Zijlstra" <a.p.zijlstra@chello.nl>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	"Jiri Olsa" <jolsa@redhat.com>,
	"Arnaldo Carvalho de Melo" <acme@infradead.org>,
	"Frédéric Weisbecker" <fweisbec@gmail.com>
Subject: [RFC] CONFIG_FORCE_MINIMALLY_SANE_CONFIG=y (was: Re: [RFC PATCH] x86/kconfig: Sanity-check config file during oldconfig)
Date: Tue, 19 Jan 2016 09:20:22 +0100	[thread overview]
Message-ID: <20160119082022.GB18237@gmail.com> (raw)
In-Reply-To: <20160114184350.GB12109@pd.tnic>


( I've Cc:-ed Linus, Greg and Andrew, to see whether doing something like what I 
  suggest below in the x86 architecture would be acceptable. )

* Borislav Petkov <bp@suse.de> wrote:

> From: Borislav Petkov <bp@suse.de>
> 
> Thomas Voegtle reported that doing oldconfig with a .config which has
> CONFIG_MICROCODE enabled but BLK_DEV_INITRD disabled prevents the
> microcode loading mechanism from being built.
> 
> Add a short script which hooks into the "make oldconfig" handling and
> sanity-checks the config file for that discrepancy. It issues a message
> which should hopefully sensitize the user to that issue and point her
> into the right direction.

So it would be much better to just do such things automatically, and only allow 
'safe' combination of options - without the user having to do anything.

The guiding principle is: kernel configuration is (still...) our worst barrier of 
entry for new users/developers, and kernel configuration still sucks very much 
from a UI point of view.

In fact our kernel configuration UI and workflow is still so bad that it's an 
effort to stay current even with a standalone and working .config, even for 
experienced kernel developers...

Adding a (somewhat hacky) post processing script and forcing users to read 
something 99% of them does not have a clue about is a step in the wrong direction, 
IMHO.

So can we do something more intelligent instead, such as modifying the Kconfigs in 
a way that it's not possible to have CONFIG_MICROCODE enabled while BLK_DEV_INITRD 
is disabled?

I'd be fine with a 'select BLK_DEV_INITRD' for example. If people doing super 
specialized setups disagree because they really need that nonsensical combination 
of config options, they can complain and provide a better solution.

In fact on x86 I'd suggest we go farther than that and add a core set of selects 
that can be disabled only through a sufficiently scary "I really know I'm doing 
something utmost weird" (and default disabled) config option.

>From my own randconfig testing I can give a core list of must-have kernel options, 
without which most distros (Fedora, RHEL, Ubuntu, SuSE) won't boot properly:

+config FORCE_MINIMALLY_SANE_CONFIG
+	bool
+	default y
+
+	# so that capset() works (sudo, etc.):
+	select SECURITY
+	select SECURITY_CAPABILITIES
+	select BINFMT_ELF
+
+	select SYSFS
+	select SYSFS_DEPRECATED
+	select PROC_FS
+	select FUTEX
+
+	# newer systemd silently relies on the presence of the epoll system call:
+	select EPOLL
+	select ANON_INODES
+
+	# newer systemd silently hangs durig early init without these:
+	select PROC_SYSCTL
+	select SYSCTL
+	select POSIX_MQUEUE
+	select POSIX_MQUEUE_SYSCTL
+
+	# systemd needs this syscall:
+	select FHANDLE
+
+	# systemd needs devtmpfs: "systemd[1]: Failed to mount devtmpfs at /dev: No such device"
+	select DEVTMPFS
+
+	# systemd needs tmpfs: "systemd[1]: Failed to mount tmpfs at /sys/fs/cgroup: No such file or directory"
+	select SHMEM
+	select TMPFS
+
+	# systemd needs timerfd syscalls: "[    8.198625] systemd[1]: Failed to create timerfd: Function not implemented^"
+	select TIMERFD
+
+	# systemd needs signalfd support: "[   45.536725] systemd[1]: Failed to allocate manager object: Function not implemented"
+	select SIGNALFD
+
+	# systemd hangs during bootup without cgroup support:
+	select CGROUPS
+
+	# systemd fails during bootup without this option, with a nonsensical message: "[DEPEND] Dependency failed for File System Check on /dev/sda1."
+	select FILE_LOCKING
+
+	# systemd fails during bootup without this option:
+	select FSNOTIFY
+	select INOTIFY_USER
+
+	# won't boot otherwise:
+	select RD_GZIP
+	select BLK_DEV_INITRD
+
+	# old F6 userspace needs vsyscalls:
+	select X86_VSYSCALL_EMULATION if X86_64
+	select IA32_EMULATION if X86_64

And yes, many of these options are members of the 'SystemD debuggability Hall Of 
Shame'... It cost me many, many days of painful config-bisection to figure the 
often obscure dependencies out, so we might as well upstream this information.

Many braincells died to bring us this information!

Note that some of these have sub-dependencies (and super-dependencies) so the list 
isn't complete from a Kconfig language POV - but it lists most of the 'must have' 
leaf features and would form a good starting point.

The idea is that if you have this option enabled, the rest of kernel config should 
be 'fool proof' - or at least failures should be a lot more obvious (such as a 
missing hardware driver or a missing filesystem driver).

I'd keep this option x86-only at least initially, because that's still the space 
where most of our newbie testers come from, and because I'd like to see how this 
evolves before trying to generalize it to 44 architectures...

Also, I'd not try to be per distro, I'd use a single superset of such config 
options: from a usability POV it's _much_ better to have a few more options 
enabled in a .config of thousands of entries, than to accidentally have the one 
option not enabled that your user-space somehow critically depends on ...

Thoughs?

Thanks,

	Ingo

  parent reply	other threads:[~2016-01-19  8:20 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-19 21:43 x86/microcode update on systems without INITRD Markus Trippelsdorf
2015-11-19 21:55 ` Borislav Petkov
2015-11-19 22:58   ` Borislav Petkov
2015-11-20  7:19     ` Markus Trippelsdorf
2015-11-20  8:27       ` Borislav Petkov
2015-11-20  8:33         ` Markus Trippelsdorf
2015-11-20  8:48           ` Borislav Petkov
2015-11-20 11:24             ` [PATCH] x86/microcode: Initialize the driver late when facilities are up Borislav Petkov
2015-11-23 16:28               ` [tip:x86/urgent] " tip-bot for Borislav Petkov
2016-01-07 12:12         ` x86/microcode update on systems without INITRD Thomas Voegtle
2016-01-07 12:18           ` Borislav Petkov
2016-01-07 12:36             ` Thomas Voegtle
2016-01-07 12:41               ` Markus Trippelsdorf
2016-01-08  9:33                 ` Thomas Voegtle
2016-01-08 12:18                 ` Mike Keehan
2016-01-08 12:20                   ` Markus Trippelsdorf
2016-01-08 10:59               ` Borislav Petkov
2016-01-08 11:18                 ` Måns Rullgård
2016-01-08 11:36                   ` Borislav Petkov
2016-01-08 11:46                     ` Måns Rullgård
2016-01-08 12:08                       ` Borislav Petkov
2016-01-08 12:16                         ` Markus Trippelsdorf
2016-01-08 12:27                           ` Borislav Petkov
2016-01-08 12:28                             ` Måns Rullgård
2016-01-08 12:48                             ` Michal Marek
2016-01-08 13:37                               ` Borislav Petkov
2016-01-08 14:48                                 ` Michal Marek
2016-01-11 19:43                                   ` Borislav Petkov
2016-01-11 20:29                                     ` Måns Rullgård
2016-01-11 20:59                                       ` Borislav Petkov
2016-01-11 21:04                                         ` Måns Rullgård
2016-01-11 21:17                                           ` Borislav Petkov
2016-01-14 18:43                                             ` [RFC PATCH] x86/kconfig: Sanity-check config file during oldconfig Borislav Petkov
2016-01-18 13:36                                               ` Thomas Voegtle
2016-01-18 14:06                                                 ` Borislav Petkov
2016-01-18 14:11                                                   ` Måns Rullgård
2016-01-18 14:28                                                     ` Borislav Petkov
2016-01-18 14:41                                                     ` Borislav Petkov
2016-01-18 14:51                                                       ` Måns Rullgård
2016-01-18 15:39                                                         ` Borislav Petkov
2016-01-18 15:42                                                           ` Måns Rullgård
2016-01-19  8:20                                               ` Ingo Molnar [this message]
2016-01-19  8:40                                                 ` [RFC] CONFIG_FORCE_MINIMALLY_SANE_CONFIG=y (was: Re: [RFC PATCH] x86/kconfig: Sanity-check config file during oldconfig) Markus Trippelsdorf
2016-01-19  8:54                                                   ` Ingo Molnar
2016-01-19  9:45                                                     ` Borislav Petkov
2016-01-19  9:01                                                 ` Peter Zijlstra
2016-01-19  9:14                                                   ` Ingo Molnar
2016-01-19  9:43                                                 ` Borislav Petkov
2016-01-19  9:57                                                 ` [RFC] CONFIG_FORCE_MINIMALLY_SANE_CONFIG=y Michal Marek
2016-01-19 10:30                                                   ` [RFC] CONFIG_GENERIC_BOOTABLE_CONFIG=y Ingo Molnar
2016-01-19 17:22                                                     ` Linus Torvalds
2016-01-19 17:52                                                       ` Austin S. Hemmelgarn
2016-01-19 12:29                                                 ` [RFC] CONFIG_FORCE_MINIMALLY_SANE_CONFIG=y Måns Rullgård
2016-01-19 12:43                                                   ` Michal Marek
2016-01-19 12:57                                                     ` Måns Rullgård
2016-01-21 22:06                                                 ` [RFC] CONFIG_FORCE_MINIMALLY_SANE_CONFIG=y (was: Re: [RFC PATCH] x86/kconfig: Sanity-check config file during oldconfig) Kirill A. Shutemov
2016-03-09 13:08                                                   ` Ingo Molnar
2016-01-08 12:18                         ` x86/microcode update on systems without INITRD Måns Rullgård
2016-01-19 17:43           ` Borislav Petkov
2016-01-20  9:14             ` Thomas Voegtle
2016-01-20 11:15               ` Borislav Petkov

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=20160119082022.GB18237@gmail.com \
    --to=mingo@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=bp@suse.de \
    --cc=fweisbec@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mans@mansr.com \
    --cc=markus@trippelsdorf.de \
    --cc=mmarek@suse.cz \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=tv@lio96.de \
    --cc=x86@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;
as well as URLs for NNTP newsgroup(s).