312 Commits
v0.3 ... v0.5

Author SHA1 Message Date
Rolf Neugebauer
811ba12cb0 Merge pull request #3104 from rn/rel_v0.5
Preparation for v0.5 release
2018-07-10 23:58:09 +01:00
Rolf Neugebauer
3181a8f182 Update Authors
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-10 18:46:57 +01:00
Rolf Neugebauer
3ab5e19b2f Update CHANGELOG
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-10 18:44:37 +01:00
Rolf Neugebauer
88afbcae15 build: Bump version to v0.5
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-10 18:32:57 +01:00
Rolf Neugebauer
ea9b29bd19 Update package tags to v0.5
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 18:16:02 +01:00
Rolf Neugebauer
b4c3f9db1f pkg/tss: Switch SF repository to our mirror hosted on github
sourceforge git access is not very reliable...

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 18:00:00 +01:00
Rolf Neugebauer
5b4059fcfd docs: Update release documentation
Add notes to update various external packages.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 16:53:49 +01:00
Rolf Neugebauer
4debffafa4 examples/docker: Update to 18.05.0-ce-dind
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 16:53:49 +01:00
Rolf Neugebauer
3672843dc9 pkg/node_exporter: Update to 0.16.0
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 16:53:49 +01:00
Rolf Neugebauer
1a6b6b2db9 pkg/firmware,firmware-all: Update to latest version
Update the the firmware packages to the latest commit
of the upstream linux-firmware repository.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 16:53:49 +01:00
Rolf Neugebauer
46184e258b pkg/cadvisor: Update to 0.30.2
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 16:53:49 +01:00
Rolf Neugebauer
c1e10002b0 pkgs: Update packages to latest alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 15:49:20 +01:00
Rolf Neugebauer
1b22e1e2be Update use of test packages to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 15:37:09 +01:00
Rolf Neugebauer
ccc6e48f38 tests: Update packages to latest alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 15:14:12 +01:00
Rolf Neugebauer
a0a4ec5449 Update use of tools to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 15:13:58 +01:00
Rolf Neugebauer
cd4d50920a tools: Update to latest alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 14:59:45 +01:00
Rolf Neugebauer
4eddd90ae2 Merge pull request #3103 from rn/kup
Update kernel to 4.17.5/4.14.54
2018-07-10 14:21:06 +01:00
Rolf Neugebauer
4ee42d63b9 Merge pull request #3102 from ijc/containerd-v1.1.1
Containerd v1.1.1
2018-07-10 13:05:11 +01:00
Rolf Neugebauer
a90d4a92d5 Update YAMLs to the latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 13:03:09 +01:00
Rolf Neugebauer
6a7b336ade kernel: Update to 4.17.5/4.14.54
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-10 10:58:18 +01:00
Ian Campbell
ec2dfa6625 Revert "tests: Temporarily disable containerd test"
This reverts commit 177008fe0c. The underlying
issue was fixed in containerd v1.1.1.

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-07-10 10:46:42 +01:00
Ian Campbell
93496067ea Bump yml to pickup containerd v1.1.1
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-07-10 10:19:14 +01:00
Ian Campbell
18f11b2834 Bump packages to new alpine w/ containerd v1.1.1
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-07-10 09:53:11 +01:00
Ian Campbell
8ad9f65ec8 alpine: Bump to containerd v1.1.1
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-07-10 04:52:57 -04:00
Rolf Neugebauer
20bd54c6b0 Merge pull request #3095 from djs55/more-logging
Support log rotation and logging of /dev/kmsg
2018-07-09 22:34:43 +01:00
David Scott
facadbf548 examples/logging: add kmsg to read /dev/kmsg
Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-09 20:36:58 +01:00
David Scott
9344473ba5 pkg/kmsg: add simple test case
Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-09 20:36:58 +01:00
David Scott
e7fc5b59a3 pkg/kmsg: re-run vndr
Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-09 20:36:58 +01:00
David Scott
793dd1b257 Add pkg/kmsg
This very simple program reads from `/dev/kmsg` and logs the output.

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-09 20:36:58 +01:00
David Scott
565f787bb3 Add pkg/logwrite which writes and rotates log files
This process connects to memlogd and streams logs to individual files,
one per log. It keeps track of how many bytes have been written to each
file and rotates when the file size exceeds a defined threshold.

By default the maximum size of each file before rotation is 1MiB and
we keep up to 10 files per log.

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-09 20:36:51 +01:00
Rolf Neugebauer
4b4d56913d Merge pull request #3100 from zx2c4-forks/wireguard-bump
wireguard: upgrade to 0.0.20180708
2018-07-09 08:39:50 +01:00
Jason A. Donenfeld
05753e7341 wireguard: upgrade to 0.0.20180708
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-08 19:43:03 +02:00
Rolf Neugebauer
b305db0ae5 Merge pull request #3098 from rn/alpine3.8
Update to Alpine 3.8
2018-07-07 23:54:07 +01:00
Rolf Neugebauer
177008fe0c tests: Temporarily disable containerd test
Looks like brtfs-prog v4.17 as shipped with alpine:3.8 requires
a loopback device of 109MB while the containerd tests only
create a 100MB device. This causes the test to fail.

Disable it until https://github.com/containerd/containerd/issues/2447
is fixed.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 21:59:40 +01:00
Rolf Neugebauer
8301540809 Update remaining uses of alpine:3.7 to alpine:3.8
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 19:26:58 +01:00
Rolf Neugebauer
63ae346152 Update YAMLs to latest pkg versions
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 19:25:21 +01:00
Rolf Neugebauer
6045ddaf51 pkg: Use alpine 3.8 version of go (no need for go1.10)
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 18:24:56 +01:00
Rolf Neugebauer
a9acdd827e pkg: Update packages to latest alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 18:05:29 +01:00
Rolf Neugebauer
d7d995cab5 kernel: Update build to use updated alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 17:51:08 +01:00
Rolf Neugebauer
21f65528d2 Update use of test packages to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 17:50:34 +01:00
Rolf Neugebauer
38636e80d9 tests: Use go (not go1.10) for containerd test
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 14:05:42 +01:00
Rolf Neugebauer
c6c502c631 tests: Update packages to latest alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 14:03:01 +01:00
Rolf Neugebauer
5c8df3837d Update use of tools to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 14:00:07 +01:00
Rolf Neugebauer
48ca3f1302 tools: Update to latest alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 13:27:48 +01:00
Rolf Neugebauer
20e71cf09e tools/alpine: Update alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 08:21:54 -04:00
Rolf Neugebauer
1b23313bb3 tools/alpine: Remove gummiboot for arm64
The package does not exist any more in 3.8 and I can't
see any uses for it.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 11:43:06 +01:00
Rolf Neugebauer
53af0ce80c tools/alpine: Remove go1.10
alpine:3.8 comes with go 1.10 as default

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 09:30:51 +01:00
Rolf Neugebauer
3c492fe40a tools/alpine: Update to alpine:3.8
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-07-07 09:29:59 +01:00
Rolf Neugebauer
29c3ef0aa0 Merge pull request #3085 from djs55/update-logging
Support pluggable logging systems
2018-07-07 09:21:13 +01:00
David Scott
5d614468a0 Update linuxkit/init and linuxkit/memlogd yamls
Signed-off-by: David Scott <dave@recoil.org>
2018-07-06 21:51:04 +01:00
David Scott
9bbc0ecbee projects/logging: delete the remaining unused bits
Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:49:26 +01:00
David Scott
92a9a64a1b examples: add the example from projects/logging
This simplifies the example by adding a service which writes to the
log every 1s and a getty for introspection.

To see the logs:

  /proc/1/root/usr/bin/logread -F

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:49:26 +01:00
David Scott
a07ecf60d5 memlogd: use kmsg format for reading the logs
Switch to a more formally-specified `kmsg`-style format for reading
the logs.

- update the spec in docs/logging.md
- check for bad names in pkg/memlogd with unit test

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:49:26 +01:00
David Scott
fe64f33430 memlogd: add test cases
- check writing to the log does not block
- check the log doesn't expand -- it should be finite
- check that client connections don't buffer arbitrary amounts of
  data if the client is slow

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:49:26 +01:00
David Scott
6aca715ad8 memlogd: replace an unbounded buffer with bounded channel
Previously we had a per-connection

  bytes.Buffer // to be written to the connection
  sync.Cond    // to allow us to Wait for more data

This had the major disadvantage that the buffer was unbounded and so
a slow client could cause memory exhaustion in the server. This patch
replaces these with a single

  chan *logEntry

which is naturally bounded and supports blocking read. We make write
non-blocking using select i.e. we drop messages rather than allocate
more space.

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:49:26 +01:00
David Scott
3e742018d6 memlogd: use net.Conn rather than *net.UnixConn
There's no need to be so specific about the connection implementation.

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:49:25 +01:00
David Scott
c92af038fb projects/logging: promote pkg/memlogd to a toplevel package
This is an example external logging service which can be enabled by
adding it to the `init` section of the .yml, for example:

    ...
    init:
      - linuxkit/init:35866bb276c264a5f664bfac7456f4b9eeb87a4d
      - linuxkit/runc:v0.4
      - linuxkit/containerd:f2bc1bda1ab18146967fa1a149800aaf14bee81b
      - linuxkit/ca-certificates:v0.4
      - linuxkit/memlogd:cc035e5c9e4011ec1ba97a181a6689fc90965ce9
    onboot:
    ...

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:49:25 +01:00
David Scott
638c455dd2 docs: document how to use an external logging service
This is an updated version of projects/logging/README.md

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:49:25 +01:00
David Scott
f4bbce7a6c service: use the logging system with runc
If external logging is enabled, this patch sets the stdout and stderr
of the `runc` invocations to one end of a socketpair and the other end is
sent to the logging service. Otherwise we log to files as before.

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:49:21 +01:00
David Scott
4dc75bc67b service: use the logging system with containerd
An external logging system exists if the socket

  /var/run/linuxkit-external-logging.sock

exists.

If an external logging system is enabled then create FIFOs for
containerd and send the other end of the FIFOs to the logging service.
Otherwise use /var/log files as before.

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:48:57 +01:00
David Scott
1795c15276 projects/logging: start memlogd from init.d
Previously memlogd would always run in the foreground. This patch
adds a `-daemonize` option which binds the /var/run sockets, forks
and execs itself and immediately returns. Therefore the program won't
block (important for an init.d script) but guarantees the sockets will
be available for any program started afterwards.

This also removes the alpine base from the memlogd image as `init`
"containers" are treated as simple file overlays.

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:47:50 +01:00
David Scott
6dfd40a639 projects/linuxkit: bind /var/run in the memlogd container
We will place the control sockets in the root /var/run and then share
with all services who need access.

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:47:50 +01:00
David Scott
d09fbe04fb projects/logging: use /var/run for sockets by default
Previously we used /tmp, but /var/run is a better place for these.

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:47:49 +01:00
David Scott
8727bcb4f3 projects/logging: fix govet composite literal error
This fixes the error

net.UnixAddr composite literal uses unkeyed fields

Signed-off-by: David Scott <dave.scott@docker.com>
2018-07-06 21:47:49 +01:00
David Scott
6eabfdcb96 projects/logging: add modern build.yml and Dockerfile
Signed-off-by: David Scott <dave@recoil.org>
2018-07-06 21:47:49 +01:00
Rolf Neugebauer
2c8438f64b Merge pull request #3093 from TiejunChina/master-dev
update -rt to 4.14.53-rt34
2018-07-06 11:11:03 +01:00
Tiejun Chen
a1d47ff766 update -rt to 4.14.53-rt34
Signed-off-by: Tiejun Chen <tiejun.china@gmail.com>
2018-07-06 14:02:07 +08:00
Rolf Neugebauer
9088e3f843 Merge pull request #3088 from rn/kernel-up
Update kernel to 4.17.4/4.14.53/4.9.11/4.4.139
2018-07-05 10:15:07 +01:00
Justin Cormack
e1cff3614a Merge pull request #3090 from rn/june-report
June 2018 LinuxKit report
2018-07-05 10:00:06 +01:00
Rolf Neugebauer
91bed426f1 Merge pull request #3089 from masterzen/fix/3087-faq-and-motd
Some FAQ and motd update
2018-07-04 15:05:54 +01:00
Brice Figureau
9a1d9fb1eb Add FAQ entries to help troubleshoot running containers
Since I struggled to understand and find information about how to
troubleshoot a running linuxkit instance, I propose to add these two
FAQ entries.
The first one explains why it is possible to not see the `containerd` or
`init` outputs at boot in the console.
The second one gives a few `ctr` example to list containers, running
containers or how to open a shell in a given container.

Signed-off-by: Brice Figureau <brice@daysofwonder.com>
2018-07-04 13:51:19 +02:00
Rolf Neugebauer
b859e7ab4d June 2018 LinuxKit report
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-04 11:24:25 +01:00
Rolf Neugebauer
498d4f1a91 Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-04 10:38:55 +01:00
Brice Figureau
f7ff31382b Make sure motd contains the correct ctr command
The listed namespace wasn't correct, and thus the given `ctr` command
wasn't working.

Signed-off-by: Brice Figureau <brice@daysofwonder.com>
2018-07-04 11:32:36 +02:00
Rolf Neugebauer
909a9fac68 Merge pull request #3086 from mat007/fix-windows-build
Fix windows build
2018-07-03 18:19:46 +01:00
Rolf Neugebauer
dcc4a5e799 kernel: Update to 4.17.4/4.14.53/4.9.111/4.4.139
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-07-03 11:49:36 +01:00
Mathieu Champlon
d3e3df3d73 Append .exe to binaries on Windows
Signed-off-by: Mathieu Champlon <mathieu.champlon@docker.com>
2018-07-03 12:03:43 +02:00
Mathieu Champlon
82867aa114 Set proper GOOS for Windows
Signed-off-by: Mathieu Champlon <mathieu.champlon@docker.com>
2018-07-03 12:02:35 +02:00
Rolf Neugebauer
9dac66b831 Merge pull request #3078 from justincormack/dhcp-hook-fix
Fix dhcpcd hooks config
2018-06-29 19:02:24 +01:00
Justin Cormack
f6af74b6bf Update hashes
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-06-29 16:40:52 +01:00
Justin Cormack
157c73cfed Fix dhcpcd hooks config
These were being added to the incorrect directory.

Also move config file to /etc to be more standard.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-06-29 16:31:44 +01:00
Ian Campbell
380e24391d Merge pull request #3084 from ijc/containerd-v1.1.0-rc.2
Containerd v1.1.0-rc.2
2018-06-29 13:30:04 +01:00
Ian Campbell
ad85828d87 Bump yml to pickup containerd v1.1.0-rc.2
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-06-29 10:48:10 +01:00
Ian Campbell
34666cd87d Bump packages to new alpine w/ containerd v1.1.0-rc.2
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-06-28 17:35:04 +01:00
Ian Campbell
779a611d6b alpine: Bump to containerd v1.1.0-rc.2
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-06-28 12:34:50 -04:00
Rolf Neugebauer
b37527c23d Merge pull request #3082 from rn/kup
Update kernels to 4.17.3/4.16.18/4.14.52/4.9.110 and then remove 4.16.x (EOLed)
2018-06-27 16:25:57 +01:00
Rolf Neugebauer
0ee4ab7b7f Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-27 14:52:26 +01:00
Rolf Neugebauer
f7cf178ead kernel: Remove 4.16.x as it is EOLed
The previous commit updated to 4.16.18, which is the last
4.16.x kernel. The 4.16.18 kernel was compiled and pushed
but we may as well now remove it as it has been EOLed.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-27 14:49:08 +01:00
Rolf Neugebauer
e7a7fe9339 kernels: Update to 4.17.3/4.16.18/4.14.52/4.9.110
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-27 13:10:44 +01:00
Rolf Neugebauer
e5a3b36d38 Merge pull request #3080 from alanraison/3079-apk-architecture
Use apk --print-arch to discover architecture
2018-06-27 13:03:26 +01:00
Alan Raison
412857be96 Use apk --print-arch to discover architecture
When dealing with apk, `uname -m` doesn't always match the architecture
name that apk uses. Instead `apk --print-arch` is used.

Signed-off-by: Alan Raison <alanraison@users.noreply.github.com>
2018-06-26 23:16:20 +01:00
Rolf Neugebauer
ef47cd9c98 Merge pull request #3077 from zx2c4-forks/wireguard-bump
wireguard: upgrade to 0.0.20180625
2018-06-25 23:28:57 +01:00
Jason A. Donenfeld
bfd0ba0983 wireguard: upgrade to 0.0.20180625
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-06-25 19:58:49 +02:00
Rolf Neugebauer
8f962b9e4a Merge pull request #3076 from rn/kernel-up
kernel update to 4.16.17/4.14.51/4.4.137/4.4.138
2018-06-22 17:55:07 +01:00
Rolf Neugebauer
e36eae4820 Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-22 16:12:34 +01:00
Justin Cormack
561e9375e8 Merge pull request #3075 from justincormack/binfmt_mount
Binfmt fixes
2018-06-22 16:09:34 +01:00
Justin Cormack
8ac642e4e0 Update yaml files for new package
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-06-22 14:18:31 +01:00
Justin Barrick
14ba30f418 Workaround DNS issue with qemu-user-static on alpine by using Debian in the first stage #2710
DNS lookups fail in qemu-user when it is built on Alpine: https://bugs.alpinelinux.org/issues/8131

Until this is resolved, we fetch the binaries from Debian and use those instead. The final stage
of the Dockerfile is still based on scratch.

We can revert this once the Alpine issue is fixed.

Signed-off-by: Justin Barrick <jbarrick@cloudflare.com>
2018-06-22 14:10:50 +01:00
Justin Cormack
a6dbe8ceba Rather than bind mounting binfmt_misc filesystem, mount a copy.
For some reason, bind mounting does not always seem to work,
sometimes the filesystem is empty. Mounting a fresh copy seems
a better solution, and simplifies things. The container does
need `CAP_SYS_ADMIN` but only on boot.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-06-22 14:10:43 +01:00
Rolf Neugebauer
2eec092862 kernel: Adjust kernel configs
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-22 10:01:18 +01:00
Rolf Neugebauer
9f1f99026d kernel: Update to 4.16.17/4.14.51/4.4.138
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-22 10:01:18 +01:00
Rolf Neugebauer
ef5c128a8c kernel: Update to 4.4.137
Somehow I missed this kernel update when it happened...

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-21 16:17:29 +01:00
Rolf Neugebauer
f347ba9412 Merge pull request #3074 from rn/kup
Kernel update to 4.17.2/4.16.16/4.14.50/4.9.109
2018-06-21 08:10:58 +01:00
Rolf Neugebauer
aed5328d2b Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-20 15:36:12 +01:00
Rolf Neugebauer
2ff0491ac1 kernel: Update to 4.17.2/4.16.16/4.14.50/4.9.109
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-20 13:50:23 +01:00
Rolf Neugebauer
268b5269f9 kernel: Update to 4.9.108
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-20 13:19:24 +01:00
Rolf Neugebauer
9817d7eb3c Merge pull request #3073 from ijc/containerd-v1.1.1-rc.1
Containerd v1.1.1-rc.1
2018-06-20 08:17:18 +01:00
Ian Campbell
bb307079b0 Bump yml to pickup containerd v1.1.1-rc.1
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-06-19 16:50:56 +01:00
Ian Campbell
90f7d1bed9 Bump packages to new alpine w/ containerd v1.1.1-rc.1
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-06-19 16:01:20 +01:00
Ian Campbell
a5ed0cf40a alpine: Bump to containerd v1.1.1-rc.1
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-06-19 11:00:45 -04:00
Rolf Neugebauer
fe4c7cdb75 Merge pull request #3070 from zx2c4-forks/wireguard-bump
wireguard: upgrade to 0.0.20180613
2018-06-15 00:12:54 +01:00
Jason A. Donenfeld
8ce01c5736 wireguard: upgrade to 0.0.20180613
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-06-14 18:26:41 +02:00
Rolf Neugebauer
ccfdc71a2f Merge pull request #3068 from rn/kernel-up
Update kernel to 4.17.1/4.16.15/4.14.49
2018-06-14 16:45:05 +01:00
Rolf Neugebauer
b698d26c87 Merge pull request #3018 from Sh4d1/scaleway_provider
Add Scaleway provider to linuxkit
2018-06-14 13:18:49 +01:00
Patrik Cyvoct
f088b05e9a Update examples yaml to use new metadata package
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2018-06-14 12:27:41 +02:00
Patrik Cyvoct
8d5ced3a1d Add documentation for scaleway provider
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2018-06-14 11:51:06 +02:00
Patrik Cyvoct
3c6434e022 Add scaleway yaml examples
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2018-06-14 11:51:05 +02:00
Patrik Cyvoct
a6783261f3 Add Scaleway support for linuxkit command line tool
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2018-06-14 11:51:04 +02:00
Patrik Cyvoct
f8d399490e Add new dependencies
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2018-06-14 11:51:04 +02:00
Patrik Cyvoct
5ab6b88029 Add Scaleway provider in metadata package
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2018-06-14 11:51:03 +02:00
Rolf Neugebauer
3a3b487907 Merge pull request #3069 from justincormack/aws-meta
Add support for aws metadata and security groups in linuxkit run
2018-06-14 08:17:11 +01:00
Justin Cormack
068df79031 Add support for aws metadata and security groups in linuxkit run
- set userdata for AWS
- set security group

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-06-13 19:07:12 -07:00
Rolf Neugebauer
1ff88a957c Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-13 13:31:27 +01:00
Avi Deitcher
15b5057a8b Merge pull request #3063 from justinbarrick/master
Add a restart and stop command to service.
2018-06-12 16:54:13 -07:00
justinbarrick
338b1bb017 Update init image hashes.
Signed-off-by: justinbarrick <jbarrick@cloudflare.com>
2018-06-12 15:10:54 -07:00
Justin Barrick
9821180548 Add a restart and stop command to service.
Signed-off-by: justinbarrick <jbarrick@cloudflare.com>
2018-06-12 15:04:16 -07:00
Rolf Neugebauer
45f563fc66 kernel: Update to 4.17.1/4.16.15/4.14.49
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-12 17:18:11 +01:00
Rolf Neugebauer
a6f50ff565 Merge pull request #3066 from rn/auth
Update authors
2018-06-11 22:19:38 +01:00
Rolf Neugebauer
e0c411f5ef Update authors
Also add another alias for @ijc

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-06-11 20:14:30 +01:00
Rolf Neugebauer
a4420a789d Merge pull request #3030 from kmjohansen/kmj-reboot
Reboot should reboot instead of powering off.
2018-06-11 19:54:41 +01:00
Krister Johansen
45222dfaaf Move init image to fbcbbe3ace0b3e9455300017dd07625293a0d4d4.
This attempts to work around a CI issue where we're running out of disk
space when rebuilding the init package.

Signed-off-by: Krister Johansen <krister.johansen@oracle.com>
2018-06-11 08:29:20 -07:00
Krister Johansen
16604bc039 Reboot should reboot instead of powering off.
When busybox's reboot processing occurs in init, it runs all SHUTDOWN
actions that are defined in inittab.  Once those are complete, it will
trigger either a halt, poweroff, or reboot, depending upon what signal
is received.  The mechanism that's used to shell out through inittab
does not allow us to pass through exactly which invocation was
requested.

Due to the way that rc.shutdown works, it invokes the poweroff action
for any and all SHUTDOWN callbacks, whether they're a reboot, poweroff,
or halt.  Instead of handling the reboot(2) syscall in rc.shutdown,
return after killing and unmounting and let busybox's init process
decide which reboot(2) action to use.

Signed-off-by: Krister Johansen <krister.johansen@oracle.com>
2018-06-11 08:29:08 -07:00
Justin Cormack
154a5b3ea6 Merge pull request #3065 from rn/wireguard
tests: Fix wireguard test shutdown
2018-06-09 10:27:50 -07:00
Rolf Neugebauer
00c21a652a tests: Fix wireguard test shutdown
With PR #3030 the behaviour of poweroff/halt is changed. This
test relies on on-shutdown containers to be executed to display
the test result (service containers have their stdout redirected).
Use 'poweroff' (note, no '-f') to ensure that:
- the machine actually powers off
- the on-shutdown container is executed

Note, there are subtle differences between 'poweroff' and 'halt'
between hypervisors. With HyperKit, 'halt' actually works, but with
qemu/kvm, with 'halt' the process does not exit.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-06-09 12:47:46 +01:00
Rolf Neugebauer
3195451ec4 Merge pull request #3062 from rn/kern-up
Update kernels to 4.16.14/4.14.48/4.9.10[67]/4.4.136
2018-06-08 21:55:50 +01:00
Rolf Neugebauer
7dbd1a52cd Update YAML files to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-07 15:43:10 +01:00
Rolf Neugebauer
6b629fa30b kernel: Tweak 4.4.x kernel config file
Add new (disabled) option CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-07 13:54:53 +01:00
Rolf Neugebauer
4e830a35a1 kernel: Update to 4.16.14/4.14.48/4.9.107/4.4.136
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-07 12:10:22 +01:00
Rolf Neugebauer
17d9870dd7 kernel: Update to 4.9.106
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-07 11:42:54 +01:00
Rolf Neugebauer
6ad3055401 Merge pull request #3060 from rn/kern-src
Stash kernel source and WireGuard source in the package
2018-06-07 11:29:40 +01:00
Rolf Neugebauer
8a7ba7197e Merge pull request #3061 from justincormack/gcp-userdata
Add support for userdata on GCP plus custom name
2018-06-07 11:29:08 +01:00
Justin Cormack
42397f7f1d Add support for setting different name on GCP
Previously name and image were always the same so running two hosts
from one image was not possible!

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-06-06 16:22:20 -07:00
Justin Cormack
c9db3f0625 Add support for userdata on GCP
This was missing in the linuxkit CLI, even though we support it in the
metadata package.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-06-06 16:05:51 -07:00
Rolf Neugebauer
18ec668c91 kernel: Consistently use curl -f
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-06 18:32:23 +01:00
Rolf Neugebauer
5176ce7dd3 kernel: Stash kernel source and WireGuard source in the package
While we can re-create the kernel source code we don't have it
handily available in one place. This commit stashes the kernel
and the WireGuard source as /src/linux.tar.xz and
/src/wireguard.tar.xz in the kernel package.

This increases the size of the hub image by around 100MB.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-06 18:32:23 +01:00
Avi Deitcher
414b4c5275 Merge pull request #3059 from deitch/motd-namespace-warning
Add services.linuxkit warning to motd for sshd and getty
2018-06-06 17:16:23 +03:00
Rolf Neugebauer
a0e7417968 Merge pull request #3058 from rn/kup
kernel: Add 4.17, update 4.14.47/4.9.106/4.4.135, remove 4.16.x for arm64/s390x
2018-06-06 14:56:55 +01:00
Avi Deitcher
d85ce30e0e Change image sha tags to match latest
Signed-off-by: Avi Deitcher <avi@deitcher.net>
2018-06-06 15:52:49 +03:00
Avi Deitcher
643414f6f4 Add services.linuxkit warning to motd for sshd and getty
Signed-off-by: Avi Deitcher <avi@deitcher.net>
2018-06-06 14:32:12 +03:00
Rolf Neugebauer
193c4fa4da Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-06-06 08:26:54 +01:00
Rolf Neugebauer
3792a61ccb test: Add 4.17.x kernel tests
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-06 08:26:54 +01:00
Rolf Neugebauer
fc6bcde1fd kernel: Remove 4.16 for arm64 and s390x
Trying to keep the number of kernels we compile for these
platforms small and 4.16 is likely to be EOLed soon anyway.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-06 08:26:54 +01:00
Rolf Neugebauer
25738c0768 kernel: Add support for 4.17.x kernels
The kernel configs are the 4.16.x configs run through
a 'make defconfig && make oldconfig' cycle.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-06 08:26:54 +01:00
Rolf Neugebauer
ba5e75a24e kernel: Update to 4.14.47/4.9.105/4.4.135
These releases are a single patch only, fixing  a bug.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-06 08:26:54 +01:00
Rolf Neugebauer
25c74cbfe8 Merge pull request #3056 from rn/sntpc
tools/alpine: Add sntpc to alpine base
2018-06-05 15:11:35 +01:00
Rolf Neugebauer
910d453769 tools/alpine: Add sntpc to alpine base
sntpc is a very simple ntpc client, which may be useful
for some setups.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-06-05 08:10:18 -04:00
Rolf Neugebauer
197f438d1e Merge pull request #3055 from rn/may-report
LinuxKit report May 2018
2018-06-03 15:56:01 +01:00
Rolf Neugebauer
b5a00f17ec LinuxKit report May 2018
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-06-03 14:26:17 +01:00
Ian Campbell
a6925908a6 Merge pull request #3054 from ijc/containerd-v1.1.1-rc.0
Bump to containerd v1.1.1-rc.0
2018-06-01 16:12:00 +01:00
Ian Campbell
56f7a8c9f3 Bump yml to pickup containerd v1.1.1-rc.0
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-06-01 14:24:06 +01:00
Ian Campbell
525ff1c1a8 Bump packages to new alpine w/ containerd v1.1.1-rc.0
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-06-01 14:09:05 +01:00
Ian Campbell
55d66b434f alpine: Bump to containerd v1.1.1-rc.0
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-06-01 08:49:28 -04:00
Rolf Neugebauer
dae753cf0a Merge pull request #3053 from ndauten/memorizer-remove-poison
Memorizer: remove kasan poison on boot
2018-06-01 08:14:52 +01:00
Nathan Dautenhahn
3ddca63774 Memorizer: remove kasan poison on boot
Originally, Memorizer kernel fed inputs to add boot printouts from a debug tool, however, it creates unnecessary output. Remove the kernel boot option parameter.

Signed-off-by: Nathan Dautenhahn <ndd@cis.upenn.edu>
2018-05-31 16:49:27 -04:00
Rolf Neugebauer
81c9e9c58f Merge pull request #3051 from rn/test-wg
tests: Use poweroff instead of halt for wireguard test
2018-05-31 15:55:33 +01:00
Rolf Neugebauer
0676bc7592 tests: Use poweroff instead of halt for wireguard test
The proposed change in https://github.com/linuxkit/linuxkit/pull/3030
seems to timeout on the wireguard test. Try 'poweroff -f' instead
of 'halt' to stop the test VM.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-31 14:04:43 +01:00
Rolf Neugebauer
bd59dbf793 Merge pull request #3050 from zx2c4-forks/wireguard-bump
wireguard: upgrade to 0.0.20180531
2018-05-31 07:56:05 +01:00
Jason A. Donenfeld
5e10631fe2 wireguard: upgrade to 0.0.20180531
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-31 02:21:28 +02:00
Rolf Neugebauer
946712460b Merge pull request #3049 from rn/kern-up
Update kernels to 4.16.12/4.16.13/4.14.44/4.14.46/4.9.103/4.9.104/4.4.133/4.4.134
2018-05-30 20:09:15 +01:00
Rolf Neugebauer
932ed11e06 Update YAMLs to latest kernels.
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-30 18:34:10 +01:00
Rolf Neugebauer
9e8f458780 kernel: Adjust kernel config for arm64/x86 for 4.14.x and 4.16.x
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-30 16:14:53 +01:00
Rolf Neugebauer
acc059e6c8 kernel: Updatr to 4.16.13/4.14.46/4.9.104/4.4.134
Note, we skip 4.14.45 because 4.14.46 only has 3 patches
in it which unbreak 'perf' compilation.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-30 15:59:03 +01:00
Rolf Neugebauer
8acb257012 kernel: Fix s390x config for 4.16.x
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-30 14:51:45 +01:00
Rolf Neugebauer
d9a1ea45ce kernel: Update to 4.16.12/4.14.44/4.9.103/4.4.133
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-30 14:36:14 +01:00
Rolf Neugebauer
679edce979 Merge pull request #3047 from zx2c4-forks/wireguard-bump
wireguard: upgrade to 0.0.20180524
2018-05-24 15:39:44 +01:00
Rolf Neugebauer
78e974e04f Merge pull request #3048 from rn/kup
Update kernels to 4.16.10/4.16.11/4.14.42/4.14.43/4.9.101/4.9.102
2018-05-24 15:39:29 +01:00
Rolf Neugebauer
697b904803 Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-24 14:00:34 +01:00
Jason A. Donenfeld
e945773f63 wireguard: upgrade to 0.0.20180524
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-24 14:45:29 +02:00
Rolf Neugebauer
00ce115df9 kernel: Update to 4.16.11/4.14.43/4.9.102
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-24 13:11:31 +01:00
Rolf Neugebauer
454d2142f3 kernel: Update to 4.16.10/4.14.42/4.9.101
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-24 10:54:45 +01:00
Rolf Neugebauer
8687c79482 Merge pull request #3045 from zx2c4-forks/wireguard-bump
wireguard: upgrade to 0.0.20180519
2018-05-23 16:28:28 +01:00
Avi Deitcher
250604a680 Merge pull request #3046 from mingrammer/readme
Add a missing right parenthesis in README.md
2018-05-22 18:26:50 +03:00
mingrammer
30795173b9 Add a missing right parenthesis
Signed-off-by: mingrammer <mingrammer@gmail.com>
2018-05-22 23:02:03 +09:00
Jason A. Donenfeld
6e04261450 wireguard: upgrade to 0.0.20180519
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-19 03:19:21 +02:00
Justin Cormack
653d9805a9 Merge pull request #3043 from rn/kernup
Kernel update to 4.16.9/4.14.41/4.9.100/4.4.132
2018-05-16 21:08:53 +01:00
Rolf Neugebauer
ec82c4989c Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-16 19:44:07 +01:00
Rolf Neugebauer
bc7103d1a3 kernel: Fixup arm64 kernel config for 4.14.41
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-16 18:04:29 +01:00
Rolf Neugebauer
c4a265c77f kernel: Update to 4.16.9/4.14.41/4.9.100/4.4.132
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-16 17:55:10 +01:00
Rolf Neugebauer
a326f9e084 Merge pull request #3042 from TiejunChina/master-dev
update -rt to 4.14.40-rt30
2018-05-16 10:36:54 +01:00
Tiejun Chen
ccd9998461 update -rt to 4.14.40-rt30
Signed-off-by: Tiejun Chen <tiejun.china@gmail.com>
2018-05-15 13:46:26 +08:00
Rolf Neugebauer
90fb6316c2 Merge pull request #3041 from zx2c4-forks/wireguard-bump
wireguard: upgrade to 0.0.20180513
2018-05-14 08:11:58 +01:00
Jason A. Donenfeld
49c1f0007c wireguard: upgrade to 0.0.20180513
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-13 21:38:28 +02:00
Rolf Neugebauer
ce9c5eb6fb Merge pull request #3040 from TiejunChina/master-dev
update -rt to 4.14.39-rt29
2018-05-12 21:00:17 +01:00
Rolf Neugebauer
21cb73257b Merge pull request #3039 from rn/docs
docs: Add document on how to do releases
2018-05-12 18:53:16 +01:00
Justin Cormack
2d034db7f8 Merge pull request #3038 from rn/post_relv0.4
Bump version to v0.4+
2018-05-12 18:19:13 +01:00
Rolf Neugebauer
9af0179d1b docs: Add document on how to do releases
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 17:14:47 +01:00
Rolf Neugebauer
e920eea1c4 Bump version to v0.4+
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 16:55:27 +01:00
Tiejun Chen
ac2e5c53ec update -rt to 4.14.39-rt29
Signed-off-by: Tiejun Chen <tiejun.china@gmail.com>
2018-05-12 23:43:14 +08:00
Rolf Neugebauer
8d17887e11 Merge pull request #3037 from rn/rel_v0.4
Preparation for the v0.4 release
2018-05-12 16:39:03 +01:00
Justin Cormack
0297a035e1 Merge pull request #3035 from justincormack/containerd-conf-remove
Remove the containerd config from the example
2018-05-12 16:18:26 +01:00
Rolf Neugebauer
f84c13a5de Add entry in CHANGELOG.md for v0.4
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 14:51:54 +01:00
Rolf Neugebauer
d6d5a66a1c build: Bump version to v0.4
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 14:34:40 +01:00
Rolf Neugebauer
440ec4a4c4 Update package tags to v0.4
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 14:32:14 +01:00
Rolf Neugebauer
1de059188b pkgs: Update packages to latest alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 13:18:03 +01:00
Rolf Neugebauer
693b642761 Update use of test packages to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 13:15:41 +01:00
Rolf Neugebauer
ea1e10297f tests: Update packages to latest alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 12:43:17 +01:00
Rolf Neugebauer
5de0a86293 Update use of tools to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 12:38:05 +01:00
Rolf Neugebauer
d9c3e3fce2 tools: Update to latest alpine base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 12:10:32 +01:00
Rolf Neugebauer
46b90f0dae tools/alpine: Update to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-12 06:58:57 -04:00
Justin Cormack
abccb478bb Remove the containerd config from the example
It is very out of date and misleading. It was mainly there to
show Prometheus metrics.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-05-10 17:12:13 +01:00
Rolf Neugebauer
3bca52dc46 Merge pull request #3034 from justincormack/sock-rename
Update to allow the new locations for Docker for Mac socket paths
2018-05-10 14:52:10 +01:00
Rolf Neugebauer
e34fc3d582 Merge pull request #3033 from rn/kup
Update Intel ucode and kernel update to 4.16.8/4.14.40/4.9.99
2018-05-10 14:35:25 +01:00
Justin Cormack
415d0d3c32 Update to allow the new locations for Docker for Mac socket paths
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-05-10 13:32:38 +01:00
Rolf Neugebauer
aae1e864db Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-10 13:06:28 +01:00
Rolf Neugebauer
a0b27bb442 kernel: Fix kernel config for arm64
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-10 13:06:28 +01:00
Rolf Neugebauer
2e2de63133 kernel: Update to 4.16.8/4.14.40/4.9.99
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-10 13:06:28 +01:00
Rolf Neugebauer
01a17392f8 kernel: Update Intel microcode to 20180425
This microcode bundle comes with a file called "list"
which seems to confuse the 'iucode_tool', so we just
remove it.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-10 13:06:28 +01:00
Justin Cormack
11ea1ed080 Merge pull request #3026 from rn/report
Add April 2018 report
2018-05-08 12:28:54 +02:00
Rolf Neugebauer
cbc7bfdb0e Merge pull request #3027 from rn/kern-up
Kernel update to 4.16.7/4.14.39/4.9.98/4.4.131 + SCTP fixes and alpine base update
2018-05-03 21:41:44 +01:00
Rolf Neugebauer
9356c0aee2 Update YAMLs to the latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-03 19:34:03 +01:00
Rolf Neugebauer
be8929da30 kernel: Fix SCTP kernel config
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-03 18:48:02 +01:00
Rolf Neugebauer
655bb391ca kernel: Update to 4.16.7/4.14.39/4.9.98/4.4.131
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-03 17:22:26 +01:00
Rolf Neugebauer
d87820124e kernel: Fix comment on when the perf compile failed
The version in the comment was accidentally bumped during
the past kernel updates.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-03 17:19:14 +01:00
Rolf Neugebauer
52874a18f7 kernel: Update alpine base to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-05-03 17:18:49 +01:00
Rolf Neugebauer
842c061536 Add April 2018 report
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-05-01 19:14:27 +01:00
Rolf Neugebauer
de1aff5399 Merge pull request #3025 from acetcom/master
Enable SCTP protocol as a default kernel config
2018-05-01 16:55:25 +01:00
Sukchan Lee
aa7d5fc942 kernel: SCTP support
Enable SCTP protocol as a kernel module

Signed-off-by: Sukchan Lee <acetcom@gmail.com>
2018-05-01 23:04:29 +09:00
Rolf Neugebauer
0ae9985225 Merge pull request #3023 from rn/kernel-cfg
Update to 4.16.6/4.14.38/4.9.97/4.4.130 and enable USB_STORAGE
2018-04-30 16:27:02 +01:00
Rolf Neugebauer
2ad80b5b22 Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-30 14:17:20 +01:00
Rolf Neugebauer
b22d4000a3 kernel: Adjust s390x kernel config
the 4.14.38 kernel backported the Spectre mitigation requiring
a change of the kernel config.

Might as well enabled the mitigations by default.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-30 13:34:11 +01:00
Rolf Neugebauer
d3da261158 docs: Add a note on how to enable USB storage on a RPi3b
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-30 10:35:33 +01:00
Rolf Neugebauer
7a4233dec5 kernel: Add USB storage support for x86_64 and arm64
This is useful for some baremetal configs, such as using
USB sticks on a RPi3. I enabled it for x86_64 as well
to keep the differences smaller.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-30 10:35:33 +01:00
Rolf Neugebauer
551e00630c kernel: Enable SERIAL_DEV_BUS on arm64
Note, the depeding SERIAL_DEV_CTRL_TTYPORT defaults to
'N' with the 4.14.x kernel and 'Y' for the 4.16.x kernel.
I chose to stick with the defaults.

This may fix the serial console issue, I've seen on the RPi3
with 4.14.x kernels.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-30 10:35:33 +01:00
Rolf Neugebauer
262b25f874 kernel: Update to 4.16.6/4.14.38/4.9.97/4.4.130
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-30 10:35:33 +01:00
Justin Cormack
e6b396c448 Merge pull request #3021 from rn/kup
Kernel update to 4.16.4/4.16.5/4.14.36/4.14.37/4.9.96/4.4.129 + EOL 4.15.x
2018-04-29 11:33:32 +01:00
Rolf Neugebauer
521c875a96 Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-27 20:10:43 +01:00
Rolf Neugebauer
f1046b9a29 kernel: Adjust 4.4.x kernel config
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-27 18:52:12 +01:00
Rolf Neugebauer
54ed15ccce kernel: Update to 4.16.5/4.14.37/4.9.96/4.4.129
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-27 16:45:36 +01:00
Rolf Neugebauer
865c6691b1 kernel: Update to 4.16.4/4.14.36
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-27 15:01:42 +01:00
Rolf Neugebauer
c255821674 kernel: EOL 4.15.x
See http://lkml.iu.edu/hypermail/linux/kernel/1804.2/03399.html

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-27 14:58:23 +01:00
Rolf Neugebauer
7b0b7dff84 Merge pull request #3017 from ijc/update-sha-handle-releases
update-component-sha.sh cleanups and fixes.
2018-04-25 15:23:14 +01:00
Ian Campbell
a9c33ca533 Merge pull request #3016 from ijc/containerd-v1.1.0
Containerd v1.1.0
2018-04-25 11:36:01 +01:00
Ian Campbell
6c1ba442b4 update-component-sha.sh: ignore changes in directories named "vendor"
src/cmd/linuxkit/vendor/github.com/moby/tool/src/moby/linuxkit.go embeds a yaml
fragement with some hashes in it, so avoid updating that since that would make
the vendoring unclean.

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-25 10:52:09 +01:00
Ian Campbell
4320c3928f update-component-sha.sh: support update of image with tagged release.
This updates to support updating things like `linuxkit/runc:v0.3` to a new hash
(or tag).

Running:

    ./scripts/update-component-sha.sh --image linuxkit/runc 100d0d046c

Still DTRT and updates runc to that (bogus) sha.

Furthermore, running:

    ./scripts/update-component-sha.sh --image linuxkit/runc v0.4

Updates runc to that (bogus) release (this worked before) but now running:

    ./scripts/update-component-sha.sh --image linuxkit/runc acba8886e4

Inverts things and puts them back.

(this is not quote a nop because
src/cmd/linuxkit/vendor/github.com/moby/tool/src/moby/linuxkit.go has a
different sha in it which is not put back)

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-25 10:50:26 +01:00
Ian Campbell
3ebd1769e2 update-component-sha.sh: use extended/modern regex for a complex case.
Right now the difference is rather minor, but I'm about to make this case more
complicated.

Running:

    ./scripts/update-component-sha.sh --image linuxkit/runc 100d0d046c

Still DTRT and updates runc to that (bogus) sha.

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-25 10:41:39 +01:00
Ian Campbell
411698c16e update-component-sha.sh: simplify the quoting on sed expression
I think the intention was to use "" for bits with substititions and '' for bits
without, but that makes it hard to read and the bits in '' are safe in the ""
context anyway.

Running:

    ./scripts/update-component-sha.sh --image linuxkit/runc 100d0d046c

Still DTRT and updates runc to that (bogus) sha.

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-25 10:40:00 +01:00
Ian Campbell
4281cbf87c Bump yml to pickup containerd v1.1.0
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-25 10:14:52 +01:00
Ian Campbell
d563d78ac1 Bump packages to new alpine w/ containerd v1.1.0
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-25 09:58:31 +01:00
Ian Campbell
56a93fb81a alpine: Bump to containerd v1.1.0
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-25 04:58:17 -04:00
Rolf Neugebauer
74fc1db331 Merge pull request #3013 from w9n/cleanup
move pkg config from Dockerfile to build.yml
2018-04-24 23:55:45 +01:00
Robin Winkelewski
5e9b5878aa bump hashes 2018-04-24 22:35:39 +02:00
Robin Winkelewski
ffe9ac2319 move pkg config from Dockerfile to build.yml
Signed-off-by: Robin Winkelewski <w9ncontact@gmail.com>
2018-04-24 00:59:09 +02:00
Rolf Neugebauer
9d2c57564b Merge pull request #3012 from rn/kernel-up
Update kernel to 4.9.95
2018-04-23 15:11:47 +01:00
Rolf Neugebauer
fe9d2ce280 Update YAMLs to 4.9.95 kernel
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-23 13:12:51 +01:00
Rolf Neugebauer
d56d66a7aa kernel: Update to 4.9.95
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-23 11:52:12 +01:00
Rolf Neugebauer
c08fe57306 Merge pull request #3010 from TiejunChina/master-dev
update -rt to 4.14.34-rt27
2018-04-22 21:38:13 +01:00
Rolf Neugebauer
3cc75ffa32 Merge pull request #3011 from zx2c4-forks/wireguard-bump
wireguard: upgrade to 0.0.20180420
2018-04-22 21:35:46 +01:00
Jason A. Donenfeld
bfad9ad0e9 wireguard: upgrade to 0.0.20180420
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-04-20 20:39:14 +02:00
Tiejun Chen
ff23b35c5f update -rt to 4.14.34-rt27
Signed-off-by: Tiejun Chen <tiejun.china@gmail.com>
2018-04-20 22:30:03 +08:00
Rolf Neugebauer
0647441628 Merge pull request #3009 from rn/kup
Update kernels to 4.16.3/4.15.18/4.14.35
2018-04-20 08:04:17 +01:00
Rolf Neugebauer
e4f8b28fe3 Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-19 17:11:37 +01:00
Rolf Neugebauer
deaa4b855c kernel: Fix perf compile
This was broken with commit ae6a739ac0 ("kernel: Skip
compiling perf for 4.9.x") [by me]

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-19 15:41:43 +01:00
Rolf Neugebauer
e09023d723 kernel: Update build to latest linuxkit/alpine
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-19 13:52:26 +01:00
Rolf Neugebauer
24050c5817 kernel: Drop 4.15.x for s390x
The s390x build VM we have access to is quite slow. Dropping
the 4.15.x kernel, which soon will be EOLed anyway, to
save some time.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-19 13:48:30 +01:00
Rolf Neugebauer
2a9d21bee7 kernel: Update to 4.16.3/4.15.18/4.14.35
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-19 13:46:35 +01:00
Ian Campbell
b58248edaf Merge pull request #3007 from ijc/containerd-v1.1.0-rc.2
containerd v1.1.0-rc.2
2018-04-18 15:29:48 +01:00
Ian Campbell
bb6f1c0f7c Bump yml to pickup containerd v1.1.0-rc.2
Also pick a newer version of runc.

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-18 14:12:49 +01:00
Ian Campbell
c9e382ade0 Use go1.10 for containerd test package too
Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-18 14:10:10 +01:00
Ian Campbell
2aea82683e containerd: disable cri plugin by default
It complains/fails if CNI is not available.

Also drop two obsolete keys.

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-18 13:20:51 +01:00
Rolf Neugebauer
a5b78948f2 Merge pull request #3006 from justincormack/keyctl
Add keyutils to packages
2018-04-18 11:27:17 +01:00
Ian Campbell
e8e28c27e9 Bump packages to new alpine w/ containerd v1.1.0-rc.2
Since we are building containerd v1.1.0 with go 1.10 (as it requires) to the
same for init and runc too for consistency. In the case of init it is actually
required since we use the containerd client library there.

The subreaper interfaces have been removed from containerd and replaced with a
similar interface in runc/libcontainer, update init to use that now.

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-18 11:27:03 +01:00
Ian Campbell
6a4d0df63c alpine: Bump to containerd v1.1.0-rc.2
Requires libseccomp-dev and the go1.10 package

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-18 06:25:55 -04:00
Justin Cormack
17fbdbb920 Add keyutils to packages
I am doing some upstream `runc` work with kernel keys and have
various other uses. No urgency so not updating the package
builds yet.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-04-18 09:56:25 +01:00
Rolf Neugebauer
34e6bc3632 Merge pull request #3005 from rn/crosvm
contrib: Notes and build support for crosvm
2018-04-17 16:21:28 +01:00
Justin Cormack
5e9b5718aa Merge pull request #3004 from justincormack/ima-prelim
Some kernel builds need openssl binary for key generation
2018-04-17 15:47:36 +01:00
Rolf Neugebauer
d2fab1f7cb contrib: Notes and build support for crosvm
crosvm is a VMM written on Rust which can run the device
backends in secomp isolated processes.

This adds build support for crosvm for x86 and arm64 as well
as some instructions on how to run LinuxKit built images on crosvm.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-17 14:51:20 +01:00
Justin Cormack
ccd9d711c0 Some kernel builds need openssl binary for key generation
For example kernel module signatures if you do not provide a key. So add
to the dependencies for kernel builds.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2018-04-17 14:16:13 +01:00
Rolf Neugebauer
0b5303cc66 Merge pull request #3003 from zx2c4-forks/wireguard-bump
wireguard: upgrade to 0.0.20180413
2018-04-17 08:17:29 +01:00
Jason A. Donenfeld
60fd3c062e wireguard: upgrade to 0.0.20180413
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-04-17 00:18:42 +02:00
Rolf Neugebauer
5778903cf1 Merge pull request #3002 from rn/squashfssupport
Support building and running with SquashFS root filesystem
2018-04-16 21:01:09 +01:00
Rolf Neugebauer
c1447193b3 tests: Add build/qemu/hyperkit tests for kernel+squashfs
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-16 18:39:32 +01:00
Rolf Neugebauer
59df6426e4 docs: Update qemu documentation
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-16 18:39:32 +01:00
Rolf Neugebauer
67a0664e50 docs: Update hyperkit documentation
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-16 18:39:32 +01:00
Rolf Neugebauer
0b5ea3fcc3 cmd: Add support for kernel+squashfs to the qemu runner
Unlike the hyperkit runner, the qemu runner already had better
support for auto-detecting the boot method so the changes
are less invasive (and backward compatible).

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-16 18:39:32 +01:00
Rolf Neugebauer
0e3c88d47c cmd: Add support for squashfs root filesystem to hyperkit runnner
Previous commits added support for building 'kernel+squashfs'.
This commit adds support for booting this build format on hyperkit.

The changes are a little bigger because some restructuring of the
code was required to support a third (after kernel+initrd and EFI
ISO) boot method.

To keep the code simpler this commit also removes some auto-detection
code for ISO booting. Users now have to specify '-iso -uefi' on the
command line to boot an EFI ISO. Previously, only '-uefi' was
required.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-16 18:39:31 +01:00
Rolf Neugebauer
c26a83011d vendor: Update hyperkit go bindings
This contains a small fix to the disk binadings and allows
booting with a kernel alone (no initrd).

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-16 18:39:31 +01:00
Rolf Neugebauer
ccb0007947 cmd: Register local mkimage- images with the vendored moby tool
This allows us to update tags for these locally without having
to re-vendor.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-16 18:39:31 +01:00
Rolf Neugebauer
69679d1db7 vendor: Update moby/tool vendoring
This includes two improvements:
- being able to specify the packages used for building images
- support for building squashfs images.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-16 18:39:31 +01:00
Rolf Neugebauer
c0377bf343 tools: Add mkimage-squashfs
This utility image takes a tarball as input and places the
contents into a read-only, compressed squashfs filesystem
which is produced on stdout.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-16 18:39:31 +01:00
Rolf Neugebauer
11db895b65 Merge pull request #3001 from rn/kup
Update to kernels to 4.9.94 and 4.4.128
2018-04-14 17:38:17 +01:00
Rolf Neugebauer
c675f1d214 Update YAMLs to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-14 12:21:53 +01:00
Rolf Neugebauer
ae6a739ac0 kernel: Skip compiling perf for 4.9.x
4.9.93 broke the compile:

  tests/code-reading.c: In function 'read_object_code':
  tests/code-reading.c:228:19: error: 'KMOD_DECOMP_LEN' undeclared (first use in this function)
    char decomp_name[KMOD_DECOMP_LEN];
                     ^~~~~~~~~~~~~~~
  tests/code-reading.c:228:19: note: each undeclared identifier is reported only once for each function it appears in
  tests/code-reading.c:291:7: error: implicit declaration of function 'dso__decompress_kmodule_path' [-Werror=implicit-function-declaration]
    if (dso__decompress_kmodule_path(al.map->dso, objdump_name,
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  tests/code-reading.c:291:3: error: nested extern declaration of 'dso__decompress_kmodule_path' [-Werror=nested-externs]
    if (dso__decompress_kmodule_path(al.map->dso, objdump_name,
    ^~
  tests/code-reading.c:228:7: error: unused variable 'decomp_name' [-Werror=unused-variable]
    char decomp_name[KMOD_DECOMP_LEN];
         ^~~~~~~~~~~
  cc1: all warnings being treated as errors
  mv: can't rename '/build/perf/tests/.code-reading.o.tmp': No such file or directory
  make[3]: *** [/linux/tools/build/Makefile.build:101: /build/perf/tests/code-reading.o] Error 1
  make[3]: *** Waiting for unfinished jobs....
  make[2]: *** [/linux/tools/build/Makefile.build:144: tests] Error 2
  make[2]: *** Waiting for unfinished jobs....
  make[2]: *** [/linux/tools/build/Makefile.build:144: util] Error 2
  make[1]: *** [Makefile.perf:559: /build/perf/libperf-in.o] Error 2
  make[1]: *** Waiting for unfinished jobs....
  make[1]: *** [Makefile.perf:396: /build/perf/perf-in.o] Error 2
  make: *** [Makefile:69: all] Error 2
  make: Leaving directory '/linux/tools/perf'

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-14 12:21:53 +01:00
Rolf Neugebauer
054b9bb924 kernel: Update to 4.9.94/4.4.128
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-14 11:18:33 +01:00
Justin Cormack
8a11bf255d Merge pull request #3000 from rn/kernel-up
Kenrel update to 4.16.2/4.15.17/4.14.34 plus MPLS_ROUTING/IPTUNNEL
2018-04-14 10:16:35 +01:00
Rolf Neugebauer
ed48e5adad Update YAML files to latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-13 17:13:08 +01:00
Rolf Neugebauer
4454c7b854 kernel: Enable MPLS_ROUTING and MPLS_IPTUNNEL as modules
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-13 15:21:57 +01:00
Rolf Neugebauer
d1b73f7cf3 kernel: Update to 4.16.2/4.15.17/4.14.34
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-13 14:53:19 +01:00
Rolf Neugebauer
78e0305666 Merge pull request #2996 from ijc/init-no-spurious-tty-files
Avoid writing to tty devices which don't actually exist.
2018-04-09 15:28:19 +01:00
Rolf Neugebauer
6576bd7355 Merge pull request #2995 from rn/kern-up
Update kernels to 4.15.16/4.14.33/4.9.93/4.4.127 and add 4.16.1
2018-04-09 15:27:50 +01:00
Ian Campbell
3301af529c Avoid writing to tty devices which don't actually exist.
$ git diff linuxkit.yml
    diff --git a/linuxkit.yml b/linuxkit.yml
    index e2ec829db..21b84e4ad 100644
    --- a/linuxkit.yml
    +++ b/linuxkit.yml
    @@ -1,6 +1,6 @@
     kernel:
       image: linuxkit/kernel:4.14.32
    -  cmdline: "console=tty0 console=ttyS0 console=ttyAMA0"
    +  cmdline: "console=ttyS0 console=foobar"
     init:
       - linuxkit/init:v0.3
       - linuxkit/runc:v0.3
    $ linuxkit  build linuxkit.yml
    [...]
    $ linuxkit run linuxkit
    [...]
    getty: cmdline has console=foobar but /dev/foobar is not a character device; not starting getty for foobar

    linuxkit-2ae2c420a11c login: root (automatic login)

    Welcome to LinuxKit!

    NOTE: This system is namespaced.
    The namespace you are currently in may not be the root.
    (ns: getty) linuxkit-2ae2c420a11c:~# ls -l /proc/1/root/dev/foobar
    -rw-r--r--    1 root     root           311 Apr  9 13:19 /proc/1/root/dev/foobar
    (ns: getty) linuxkit-2ae2c420a11c:~# cat /proc/1/root/dev/foobar

    Welcome to LinuxKit

                            ##         .
                      ## ## ##        ==
                   ## ## ## ## ##    ===
               /"""""""""""""""""\___/ ===
              {                       /  ===-
               \______ O           __/
                 \    \         __/
                  \____\_______/

Also added quotes around $tty for good measure.

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-09 14:26:49 +01:00
Rolf Neugebauer
c45e747c81 Update YAMLs to the latest kernels
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 14:09:11 +01:00
Rolf Neugebauer
05e52f4269 tests: Add kernel module test for 4.16.x
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 14:07:37 +01:00
Rolf Neugebauer
141262f7f8 tests: Add kernel config test for 4.16.x
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 14:07:37 +01:00
Rolf Neugebauer
8b403d618a tests: Update kernel-config package
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 14:07:05 +01:00
Rolf Neugebauer
dfeaf8b5f6 tests: Adjust check for CONFIG_CC_STACKPROTECTOR
This option was removed in 4.16.x in favour of
CONFIG_CC_STACKPROTECTOR_AUTO. We do not check for
this option as we also force CONFIG_CC_STACKPROTECTOR_STRONG.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 13:59:57 +01:00
Rolf Neugebauer
a5c039f7ad kernel: Add bison/flex to kconfig Dockerfile
These are required for the 4.16.x kernel configuration.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 11:21:13 +01:00
Rolf Neugebauer
b69fc45955 kernel: Add the 4.16.1 kernel
The kernel config is based on the 4.15.x kernel config
run through 'make defconfig && make oldconfig' and then
tweaked a little by hand.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 11:20:19 +01:00
Rolf Neugebauer
fa9452af09 kernel: Update to 4.15.16/4.14.33/4.9.93/4.4.127
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2018-04-09 10:35:34 +01:00
Ian Campbell
12c8195064 Merge pull request #2993 from ijc/pkg-build-no-release
pkg: build: do not infer a release if not pushing
2018-04-06 16:28:06 +01:00
Ian Campbell
3be156da13 pkg: build: do not infer a release if not pushing
If you happen to be exactly on a tag then:

    $ linuxkit pkg build --dev pkg/init
    Building "ijc/init:dev"
    Cannot release "v0.3" if not pushing

Do not try and infer a release if not pushing so this is possible again.

The subsequent check for `bo.release != "" && !bo.push` remains since the
caller could have used `WithRelease` but not `WithPush`. Our CLI never does
this, but a hypothetical other user of the library might.

Signed-off-by: Ian Campbell <ijc@docker.com>
2018-04-06 14:13:08 +01:00
Rolf Neugebauer
695a10489b Merge pull request #2992 from rn/post-release
build: Bump version to v0.3+
2018-04-05 22:23:49 +01:00
Rolf Neugebauer
649598cf94 build: Bump version to v0.3+
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@gmail.com>
2018-04-05 21:19:31 +01:00
900 changed files with 26367 additions and 6307 deletions

View File

@@ -24,6 +24,7 @@ David Sheets <david.sheets@docker.com> <sheets@alum.mit.edu>
Ian Campbell <ian.campbell@docker.com> <ijc25@users.noreply.github.com>
Ian Campbell <ian.campbell@docker.com> <ijc@docker.com>
Ian Campbell <ian.campbell@docker.com> <ijc@users.noreply.github.com>
Ian Campbell <ian.campbell@docker.com> <ijc@lxdeb01.marist.edu>
Isaac Rodman <isaac@eyz.us> <isaac.rodman@healthtrio.com>
Isaac Rodman <isaac@eyz.us>
Istvan Szukacs <l1x@users.noreply.github.com>
@@ -31,10 +32,12 @@ Jeff Wu <jeff.wu.junfei@gmail.com> <JeffWuBJ@users.noreply.github.com>
Jeremy Yallop <yallop@docker.com> <yallop@gmail.com>
Justin Cormack <justin.cormack@docker.com> <justin.cormack@unikernel.com>
Justin Cormack <justin.cormack@docker.com> <justin@specialbusservice.com>
Justin Barrick <jbarrick@cloudflare.com>
Ken Cochrane <ken.cochrane@docker.com> <KenCochrane@gmail.com>
Magnus Skjegstad <magnus.skjegstad@docker.com> <magnus@skjegstad.com>
Marten Cassel <marten.cassel@gmail.com> <mcpop28@hotmail.com>
Mindy Preston <mindy.preston@docker.com> <meetup@yomimono.org>
MinJae Kwon <mingrammer@gmail.com>
Nathan Dautenhahn <ndd@seas.upenn.edu> <ndd@cis.upenn.edu>
Nathan LeClaire <nathan.leclaire@docker.com> <nathan.leclaire@gmail.com>
Nathan LeClaire <nathan.leclaire@docker.com> <nathanleclaire@gmail.com>

View File

@@ -3,12 +3,14 @@
Ajeet Singh Raina, Docker Captain, {Code} Catalysts, Dell EMC R&D <ajeetraina@gmail.com>
Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
Alan Raison <alanraison@users.noreply.github.com>
Alex Johnson <hello@alex-johnson.net>
Alice Frosi <alice@linux.vnet.ibm.com>
Amir Chaudhry <amir.chaudhry@docker.com>
Anil Madhavapeddy <anil.madhavapeddy@docker.com>
Avi Deitcher <avi@deitcher.net>
Bill Kerr <bill@generalbill.com>
Brice Figureau <brice-puppet@daysofwonder.com>
Carlton-Semple <carlton.semple@ibm.com>
Craig Ingram <cingram@heroku.com>
Damiano Donati <damiano.donati@gmail.com>
@@ -47,9 +49,11 @@ Jes Ferrier <jes.ferrier@gmail.com>
Jesse Adametz <jesseadametz@gmail.com>
John Albietz <inthecloud247@gmail.com>
Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Justin Barrick <jbarrick@cloudflare.com>
Justin Cormack <justin.cormack@docker.com>
Justin Ko <justin.ko@oracle.com>
Ken Cochrane <ken.cochrane@docker.com>
Krister Johansen <krister.johansen@oracle.com>
Kunal Kushwaha <kushwaha_kunal_v7@lab.ntt.co.jp>
Liqdfire <liqdfire@gmail.com>
Lorenzo Fontana <lo@linux.com>
@@ -59,6 +63,7 @@ Magnus Skjegstad <magnus.skjegstad@docker.com>
Marco Mariani <marco.mariani@alterway.fr>
Marcus van Dam <marcus@marcusvandam.nl>
marten <marten.cassel@gmail.com>
Mathieu Champlon <mathieu.champlon@docker.com>
Mathieu Pasquet <mathieu.pasquet@alterway.fr>
Matt Bajor <matt.bajor@workday.com>
Matt Bentley <matt.bentley@docker.com>
@@ -66,6 +71,7 @@ Matt Johnson <matjohn2@cisco.com>
Michel Courtine <michel.courtine@docker.com>
Mickaël Salaün <mic@digikod.net>
Mindy Preston <mindy.preston@docker.com>
MinJae Kwon <mingrammer@gmail.com>
Natanael Copa <natanael.copa@docker.com>
Nathan Dautenhahn <ndd@seas.upenn.edu>
Nathan LeClaire <nathan.leclaire@docker.com>
@@ -74,6 +80,7 @@ Niclas Mietz <niclas@mietz.io>
Nico Di Rocco <dirocco.nico@gmail.com>
Olaf Bergner <olaf.bergner@gmx.de>
Olaf Flebbe <of@oflebbe.de>
Patrik Cyvoct <patrik@ptrk.io>
Phil Estes <estesp@linux.vnet.ibm.com>
Pierre Gayvallet <pierre.gayvallet@docker.com>
Pratik Mallya <mallya@us.ibm.com>
@@ -93,6 +100,7 @@ Sotiris Salloumis <sotiris.salloumis@gmail.com>
Stefan Bourlon <stefan.bourlon@ca.com>
Stephen J Day <stephen.day@docker.com>
Steve Hiehn <shiehn@pivotal.io>
Sukchan Lee <acetcom@gmail.com>
Theo Koulouris <theo.koulouris@hpe.com>
Thomas Conte <thomas@conte.com>
Thomas Gazagnaire <thomas.gazagnaire@docker.com>

View File

@@ -3,6 +3,48 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
## [v0.5] - 2018-07-10
### Added
- New logging support with log rotation.
- Scaleway provider.
- Support for v4.17.x kernels.
- Kernel source are not included in the kernel packages.
- Improved documentation about debugging LinuxKit.
### Changed
- Switched to Alpine Linux 3.8 as the base.
- `containerd` updated to v1.1.1.
- `pkg/cadvisor` updated to v0.30.2
- `pkg/node_exporter` updated to 0.16.0
- WireGuard updated to 0.0.20180708.
- Linux firmware binaries update to latest.
- Improved support for building on Windows.
- Improved support for AWS/GCP metadata.
- Better handling of reboot/poweroff.
### Removed
- Support for v4.16.x. kernels as they have been EOLed.
## [v0.4] - 2018-05-12
### Added
- Support for v4.16.x kernels.
- Support for MPLS, USB_STORAGE, and SCTP support in the kernel config.
- Support for creating and booting from squashfs root filesystems.
- Super experimental support for crosvm.
- Support for compiling with go 1.10.
- Adjusted hyperkit support to be compatible with soon to be released Docker for Mac changes.
### Changed
- `containerd` updated to v1.1.0.
- WireGuard updated to 0.0.20180420.
- Intel CPU microcode update to 20180425.
### Removed
- Support for v4.15.x. kernels as they have been EOLed.
- `perf` support for 4.9.x kernels (the compile broke).
## [v0.3] - 2018-04-05
### Added
- Initial `s390x` support.

View File

@@ -1,16 +1,17 @@
.DELETE_ON_ERROR:
.PHONY: default all
default: bin/linuxkit bin/rtf
all: default
VERSION="v0.3"
VERSION="v0.5"
GIT_COMMIT=$(shell git rev-list -1 HEAD)
GO_COMPILE=linuxkit/go-compile:2940a8141d907c2976be15f201f6e9b7c4c1f931
GO_COMPILE=linuxkit/go-compile:49a2e8f8672ca95ad0159eebcc631773503465c1
ifeq ($(OS),Windows_NT)
LINUXKIT?=bin/linuxkit.exe
RTF?=bin/rtf.exe
GOOS?=windows
else
LINUXKIT?=bin/linuxkit
RTF?=bin/rtf
GOOS?=$(shell uname -s | tr '[:upper:]' '[:lower:]')
endif
GOARCH?=amd64
ifneq ($(GOOS),linux)
CROSS+=-e GOOS=$(GOOS)
@@ -21,16 +22,22 @@ endif
PREFIX?=/usr/local/
.DELETE_ON_ERROR:
.PHONY: default all
default: $(LINUXKIT) $(RTF)
all: default
RTF_COMMIT=171155c375706f2616f0b9c96afe2240e15d1de1
RTF_CMD=github.com/linuxkit/rtf/cmd
RTF_VERSION=0.0
bin/rtf: tmp_rtf_bin.tar | bin
$(RTF): tmp_rtf_bin.tar | bin
tar xf $<
rm $<
touch $@
tmp_rtf_bin.tar: Makefile
docker run --rm --log-driver=none -e http_proxy=$(http_proxy) -e https_proxy=$(https_proxy) $(CROSS) $(GO_COMPILE) --clone-path github.com/linuxkit/rtf --clone https://github.com/linuxkit/rtf.git --commit $(RTF_COMMIT) --package github.com/linuxkit/rtf --ldflags "-X $(RTF_CMD).GitCommit=$(RTF_COMMIT) -X $(RTF_CMD).Version=$(RTF_VERSION)" -o bin/rtf > $@
docker run --rm --log-driver=none -e http_proxy=$(http_proxy) -e https_proxy=$(https_proxy) $(CROSS) $(GO_COMPILE) --clone-path github.com/linuxkit/rtf --clone https://github.com/linuxkit/rtf.git --commit $(RTF_COMMIT) --package github.com/linuxkit/rtf --ldflags "-X $(RTF_CMD).GitCommit=$(RTF_COMMIT) -X $(RTF_CMD).Version=$(RTF_VERSION)" -o $(RTF) > $@
# Manifest tool for multi-arch images
MT_COMMIT=bfbd11963b8e0eb5f6e400afaebeaf39820b4e90
@@ -44,13 +51,13 @@ tmp_mt_bin.tar: Makefile
docker run --rm --log-driver=none -e http_proxy=$(http_proxy) -e https_proxy=$(https_proxy) $(CROSS) $(GO_COMPILE) --clone-path github.com/estesp/manifest-tool --clone $(MT_REPO) --commit $(MT_COMMIT) --package github.com/estesp/manifest-tool --ldflags "-X main.gitCommit=$(MT_COMMIT)" -o bin/manifest-tool > $@
LINUXKIT_DEPS=$(wildcard src/cmd/linuxkit/*.go) $(wildcard src/cmd/linuxkit/*/*.go) Makefile src/cmd/linuxkit/vendor.conf
bin/linuxkit: tmp_linuxkit_bin.tar
$(LINUXKIT): tmp_linuxkit_bin.tar
tar xf $<
rm $<
touch $@
tmp_linuxkit_bin.tar: $(LINUXKIT_DEPS)
tar cf - -C src/cmd/linuxkit . | docker run --rm --net=none --log-driver=none -i $(CROSS) $(GO_COMPILE) --package github.com/linuxkit/linuxkit/src/cmd/linuxkit --ldflags "-X github.com/linuxkit/linuxkit/src/cmd/linuxkit/version.GitCommit=$(GIT_COMMIT) -X github.com/linuxkit/linuxkit/src/cmd/linuxkit/version.Version=$(VERSION)" -o bin/linuxkit > $@
tar cf - -C src/cmd/linuxkit . | docker run --rm --net=none --log-driver=none -i $(CROSS) $(GO_COMPILE) --package github.com/linuxkit/linuxkit/src/cmd/linuxkit --ldflags "-X github.com/linuxkit/linuxkit/src/cmd/linuxkit/version.GitCommit=$(GIT_COMMIT) -X github.com/linuxkit/linuxkit/src/cmd/linuxkit/version.Version=$(VERSION)" -o $(LINUXKIT) > $@
.PHONY: test-cross
test-cross:
@@ -63,7 +70,7 @@ test-cross:
$(MAKE) clean
LOCAL_LDFLAGS += -X github.com/linuxkit/linuxkit/src/cmd/linuxkit/version.GitCommit=$(GIT_COMMIT) -X github.com/linuxkit/linuxkit/src/cmd/linuxkit/version.Version=$(VERSION)
LOCAL_TARGET ?= bin/linuxkit
LOCAL_TARGET ?= $(LINUXKIT)
.PHONY: local-check local-build local-test local-static-pie local-static local-dynamic local
local-check: $(LINUXKIT_DEPS)

View File

@@ -15,7 +15,7 @@ LinuxKit, a toolkit for building custom minimal, immutable Linux distributions.
- Designed to be managed by external tooling, such as [Infrakit](https://github.com/docker/infrakit) or similar tools
- Includes a set of longer-term collaborative projects in various stages of development to innovate on kernel and userspace changes, particularly around security
LinuxKit currently supports the `x86_64`, `arm64`, and `s390x` architectures on a variety of platforms, both as virtual machines and baremetal (see [below](#booting-and-testing) for details.
LinuxKit currently supports the `x86_64`, `arm64`, and `s390x` architectures on a variety of platforms, both as virtual machines and baremetal (see [below](#booting-and-testing) for details).
## Subprojects

2
contrib/crosvm/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/build
iid

36
contrib/crosvm/Dockerfile Normal file
View File

@@ -0,0 +1,36 @@
FROM rust:1.25.0-stretch
ENV CROSVM_REPO=https://chromium.googlesource.com/chromiumos/platform/crosvm
ENV CROSVM_COMMIT=7a7268faf0a43c79b6a4520f5c2f35c3e0233932
ENV MINIJAIL_REPO=https://android.googlesource.com/platform/external/minijail
ENV MINIJAIL_COMMIT=d45fc420bb8fd9d1fc9297174f3c344db8c20bbd
# Install deps
RUN apt-get update && apt-get install -y libcap-dev libfdt-dev
# Get source code
RUN git clone ${MINIJAIL_REPO} && \
cd /minijail && \
git checkout ${MINIJAIL_COMMIT} && \
cd / && \
git clone ${CROSVM_REPO} && \
cd crosvm && \
git checkout ${CROSVM_COMMIT}
# Compile and install minijail
WORKDIR /minijail
RUN make && \
cp libminijail.so /usr/lib/ && \
cp libminijail.h /usr/include/
# Compile crosvm
WORKDIR /crosvm
RUN cargo build --release
RUN mkdir /out && \
cp /minijail/libminijail.so /out && \
cp /crosvm/target/release/crosvm /out && \
cp -r /crosvm/seccomp /out
WORKDIR /out
ENTRYPOINT ["tar", "cf", "-", "libminijail.so", "crosvm", "seccomp"]

9
contrib/crosvm/Makefile Normal file
View File

@@ -0,0 +1,9 @@
.PHONY: extract
extract: iid
rm -rf ./build
mkdir -p ./build
docker run --rm $(shell cat iid) | tar xf - -C ./build
rm iid
iid: Makefile Dockerfile
docker build --no-cache --iidfile iid .

85
contrib/crosvm/README.md Normal file
View File

@@ -0,0 +1,85 @@
The Chrome OS Virtual Machine Monitor
[`crosvm`](https://chromium.googlesource.com/chromiumos/platform/crosvm/)
is a lightweight VMM written in Rust. It runs on top of KVM and
optionally runs the device models in separate processes isolated with
seccomp profiles.
## Build/Install
The `Makefile` and `Dockerfile` compile `crosvm` and a suitable
version of `libminijail`. To build:
```sh
make
```
You should end up with a `crosvm` and `libminijail.so` binaries as
well as the seccomp profiles in `./build`. Copy `libminijail.so` to
`/usr/lib` or wherever `ldd` picks it up. You may also need `libcap`
(on Ubuntu or Debian `apt-get install -y libcap-dev`).
You may also have to create an empty directory `/var/empty`.
## Use with LinuxKit images
You can build a LinuxKit image suitable for `crosvm` with the
`kernel+squashfs` build format. For example, using this LinuxKit
YAML file (`minimal.yml`):
```
kernel:
image: linuxkit/kernel:4.9.91
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0"
init:
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
services:
- name: getty
image: linuxkit/getty:v0.5
env:
- INSECURE=true
trust:
org:
- linuxkit
```
run:
```sh
linuxkit build -output kernel+squashfs minimal.yml
```
The kernel this produces (`minimal-kernel`) needs to be converted as
`crosvm` does not grok `bzImage`s. You can convert the LinuxKit kernel
image with
[extract-vmlinux](https://raw.githubusercontent.com/torvalds/linux/master/scripts/extract-vmlinux):
```sh
extract-vmlinux minimal-kernel > minimal-vmlinux
```
Then you can run `crosvm`:
```sh
./crosvm run --seccomp-policy-dir=./seccomp/x86_64 \
--root ./minimal-squashfs.img \
--mem 2048 \
--multiprocess \
--socket ./linuxkit-socket \
minimal-vmlinux
```
## Known issues
- With 4.14.x, a `BUG_ON()` is hit in `drivers/base/driver.c`. 4.9.x
kernels seem to work.
- Networking does not yet work, so don't include a `onboot` `dhcpd` service.
- `poweroff` from the command line does not work (crosvm does not seem
to support ACPI). So to stop a VM you can use the control socket
and: `./crosvm stop ./linuxkit-socket`
- `crosvm` and its dependencies compile on `arm64` but `crosvm` seems
to lack support for setting op the IRQ chip on the system I
tested. I got: `failed to create in-kernel IRQ chip:
CreateGICFailure(Error(19))`.

View File

@@ -1,4 +1,4 @@
FROM alpine:3.7 AS extract
FROM alpine:3.8 AS extract
ARG DEB_URLS

View File

@@ -1,4 +1,4 @@
FROM alpine:3.7 AS extract
FROM alpine:3.8 AS extract
ARG RPM_URLS

View File

@@ -30,3 +30,49 @@ of dependencies and functionality that we do not need. At present we are using t
`init` process, and a small set of minimal scripts, but we expect to replace that with a small
standalone `init` process and a small piece of code to bring up the system containers where the
real work takes place.
## Console not displaying init or containerd output at boot
If you're not seeing `containerd` logs in the console during boot, make sure that your kernel `cmdline` configuration doesn't list multiple consoles.
`init` and other processes like `containerd` will use the last defined console in the kernel `cmdline`. When using `qemu`, to see the console you need to list `ttyS0` as the last console to properly see the output.
## Troubleshooting containers
Linuxkit runs all services in a specific `containerd` namespace called `services.linuxkit`. To list all the defined containers:
```sh
(ns: getty) linuxkit-befde23bc535:~# ctr -n services.linuxkit container ls
CONTAINER IMAGE RUNTIME
getty - io.containerd.runtime.v1.linux
```
To list all running containers and their status:
```sh
(ns: getty) linuxkit-befde23bc535:~# ctr -n services.linuxkit task ls
TASK PID STATUS
getty 661 RUNNING
```
To list all processes running in a container:
```sh
(ns: getty) linuxkit-befde23bc535:/containers/services/getty# ctr -n services.linuxkit task ps getty
PID INFO
661 &ProcessDetails{ExecID:getty,}
677 -
685 -
686 -
687 -
1237 -
```
To attach a shell to a running container:
```sh
(ns: getty) linuxkit-befde23bc535:/containers/services/getty# ctr -n services.linuxkit tasks exec --tty --exec-id sh sshd /bin/ash -l
(ns: sshd) linuxkit-befde23bc535:/#
```
Containers are defined as OCI bundles in `/containers`.

94
docs/logging.md Normal file
View File

@@ -0,0 +1,94 @@
# Logging
By default LinuxKit will write onboot and service logs directly to files in
`/var/log` and `/var/log/onboot`.
It is tricky to write the logs to a disk or a network service as no disks
or networks are available until the `onboot` containers run. We work around
this by splitting the logging into 2 pieces:
1. `memlogd`: an in-memory circular buffer which receives logs (including
all the early `onboot` logs)
2. a log writing `service` that starts later and can download and process
the logs from `memlogd`
To use this new logging system, you should add the `memlogd` container to
the `init` block in the LinuxKit yml. On boot `memlogd` will be started
from `init.d` and it will listen on a Unix domain socket:
```
/var/run/linuxkit-external-logging.sock
```
The `init`/`service` process will look for this socket and redirect the
`stdout` and `stderr` of both `onboot` and `services` to `memlogd`.
## memlogd: an in-memory circular buffer
The `memlogd` daemon reads the logs from the `onboot` and `services` containers
and stores them together with a timestamp and the name of the originating
container in a circular buffer in memory.
The contents of the circular buffer can be read over the Unix domain socket
```
/var/run/memlogq.sock
```
The circular buffer has a fixed size (overridden by the command-line argument
`-max-lines`) and when it fills up, the oldest messages will be overwritten.
To store the logs somewhere more permanent, for example a disk or a remote
network service, a service should be added to the yaml which connects to
`memlogd` and streams the logs. The `logwrite` service described below shows
how to do this.
### Message format
The format used to read logs is similar to [kmsg](https://www.kernel.org/doc/Documentation/ABI/testing/dev-kmsg):
```
<timestamp>,<log>;<body>
```
where `<timestamp>` is an RFC3339-formatted timestamp, `<log>` is the name of
the log (e.g. `docker-ce.out`) and `<body>` is the output. The `<log>` must
not contain the character `;`.
## logwrite: writing logs to disk
The service `pkg/logwrite` connects to `memlogd` and streams the logs to files
in `/var/log`. The logs are automatically rotated; by default each file has
a maximum size of 1 MiB and up to 10 files are kept per log. The arguments
`-max-log-files` and `-max-log-size` can be used to override these defaults.
Here is an example log file:
```
# cat /var/log/onboot.001-dhcpcd.out
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: waiting for carrier
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: carrier acquired
2018-07-08T09:16:53Z onboot.001-dhcpcd.out DUID 00:01:00:01:22:d4:93:05:02:50:00
:00:00:06
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: IAID 00:00:00:06
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: adding address fe80::f346:56a6:590d:5ea4
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: soliciting an IPv6 router
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: soliciting a DHCP lease
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: offered 192.168.65.8 from 192.168.65.1 `vpnkit'
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: leased 192.168.65.8 for 7200 se
conds
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: adding route to 192.168.65.0/24
2018-07-08T09:16:53Z onboot.001-dhcpcd.out eth0: adding default route via 192.16
8.65.1
2018-07-08T09:16:53Z onboot.001-dhcpcd.out exiting due to oneshot
2018-07-08T09:16:53Z onboot.001-dhcpcd.out dhcpcd exited
```
## Current issues and limitations:
- No docker logger plugin support yet - it could be nice to add support to
memlogd, so the docker container logs would also be gathered in one place
- No syslog compatibility at the moment and `/dev/log` doesnt exist. This
socket could be created to keep syslog compatibility, e.g. by using
https://github.com/mcuadros/go-syslog. Processes that require syslog should
then be able to log directly to memlogd.
- Currently no direct external hooks exposed - but options available that
could be added. Should also be possible to pipe output to e.g. `oklog`
from `logread` (https://github.com/oklog/oklog)

View File

@@ -12,9 +12,19 @@ Alternatively, you can install HyperKit and VPNKit standalone and use it without
## Boot
The HyperKit backend currently supports booting the
`kernel+initrd` output from `moby`, and EFI ISOs using the EFI firmware.
The HyperKit backend currently supports booting:
- `kernel+initrd` output from `linuxkit build`.
- `kernel+squashfs` output from `linuxkit build`.
- EFI ISOs using the EFI firmware.
You need to select the boot method manually using the command line
options. The default is `kernel+initrd`. `kernel+squashfs` can be
selected using `-squashfs` and to boot a ISO with EFI you have to
specify `-iso -uefi`.
The `kernel+initrd` uses a RAM disk for the root filesystem. If you
have RAM constraints or large images we recommend using either the
`kernel+squashfs` or the EFI ISO boot.
## Console

View File

@@ -24,6 +24,7 @@ specified with `-arch` and currently accepts `x86_64`, `aarch64`, and
`linuxkit run qemu` can boot in different types of images:
- `kernel+initrd`: This is the default mode of `linuxkit run qemu` [`x86_64`, `arm64`, `s390x`]
- `kernel+squashfs`: `linuxkit run qemu -squashfs <path to directory>`. This expects a kernel and a squashfs image. [`x86_64`, `arm64`, `s390x`]
- `iso-bios`: `linuxkit run qemu -iso <path to iso>` [`x86_64`]
- `iso-efi`: `linuxkit run qemu -iso -uefi <path to iso>`. This looks in `/usr/share/ovmf/bios.bin` for the EFI firmware by default. Can be overwritten with `-fw`. [`x86_64`, `arm64`]
- `qcow-bios`: `linuxkit run qemu disk.qcow2` [`x86_64`]
@@ -32,6 +33,10 @@ specified with `-arch` and currently accepts `x86_64`, `aarch64`, and
The formats `qcow-efi` and `raw-efi` may also work, but are currently not tested.
The default `kernel+initrd` boot uses a RAM disk for the root
filesystem. If you have RAM constraints or large images we recommend
using one of the other methods, such as `kernel+squashfs` or booting
via a ISO image.
## Console

View File

@@ -46,6 +46,14 @@ partition as `ext4` (or similar), and use it for persistent storage.
**TODO:** Experiment with and document this set up.
To enable and external USB stick as disk, add the following to the
onboot section in your YAML:
```
- name: usb-storage
image: linuxkit/modprobe:<hash>
command: ["modprobe", "usb_storage"]
```
## Networking

62
docs/platform-scaleway.md Normal file
View File

@@ -0,0 +1,62 @@
# Using LinuxKit on Scaleway
This is a quick guide to run LinuxKit on Scaleway (only VPS x86_64 for now)
## Setup
Before you proceed it's recommanded that you set up the [Scaleway CLI](https://github.com/scaleway/scaleway-cli/)
and perform an `scw login`. This will create a `$HOME/.scwrc` file containing the required API token.
You can also use the `SCW_TOKEN` environment variable to set a Scaleway token.
The `-token` flag of the `linuxkit push scaleway` and `linuxkit run scaleway` can also be used.
The environment variable `SCW_TARGET_REGION` is used to set the region (there is also the `-region` flag)
## Build an image
Scaleway requires a `iso-efi` image. To create one:
```
$ linuxkit build -format iso-efi examples/scaleway.yml
```
### Changes needed in the yaml
* You have to set `root=/dev/vda` in the `cmdline` to have the right device set on boot
* The metadata package is not only used to set the metadata, but also to signal Scaleway that the instance has booted. So it is encouraged to use it (dhcpcd must be set before)
## Push image
You have to do `linuxkit push scaleway scaleway.iso` to upload it to your Scaleway images.
By default the image name is the name of the ISO file without the extension.
It can be overidden with the `-img-name` flag or the `SCW_IMAGE_NAME` environment variable.
**Note 1:** If an image (and snapshot) of the same name exists, it will be replaced.
**Note 2:** The image is region specific: if you create an image in `par1` you can't use is in `ams1`.
### Push process
Building a Scaleway image have a special process. Basically:
* Create an `image-builder` instance with an additional volume, based on Ubuntu Xenial (only x86_64 for now)
* Copy the ISO image on this instance
* Use `dd` to write the image on the additional volume (`/dev/vdb` by default)
* Terminate the instance, create a snapshot, and create an image from the snapshot
**Note 1:** An image is linked to a snapshot, so you can't delete a snapshot before the image.
**Note 2:** You can specify an already running instance to act as the image builder with the `-instance-id` flag. But if you don't specify the `-no-clean` flag it will be destroyed upon completion.
## Create an instance and connect to it
With the image created, we can now create an instance.
```
linuxkit run scaleway scaleway
```
By default, the instance name is `linuxkit`. It can be overidden with the `-instance-name` flag.
If you don't set the `-no-attach` flag, you will be connected to the serial port.
You can edit the Scaleway example to allow you to SSH to your instance in order to use it.

269
docs/releasing.md Normal file
View File

@@ -0,0 +1,269 @@
# Making a LinuxKit release
This document describes the steps to make a LinuxKit release. A
LinuxKit release consists of:
- A git tag of the form vX.Y on a specific commit.
- Packages on Docker hub, tagged with the release tag.
- All sample `YAML` files updated to use the release packages
- `linuxkit` binaries for all supported architectures.
- Changelog entry
Note, we explicitly do not tag kernel images with LinuxKit release
tags as we encourage users to stay current with the kernel
releases. We also do not tag test and `mkimage` packages as these are
not end-user facing.
## Pre-requisites
Releases can be done by any maintainer. Maintainers need to have
access to build machines for all architectures support by LinuxKit and
signing keys set up to sign Docker hub images.
## Release preparation
The release preparation is by far the most time consuming task as it
involves updating all packages and YAML files.
The release preparation is performed on a branch of your up-to-date
LinuxKit clone. This document assumes that your clone of the LinuxKit
repository is available as the `origin` remote in your local `git`
clone (in my setup the official LinuxKit repository is available as
`upstream` remote). If your setup is different, you may have to adjust
some of the commands below.
As a starting point you have to be on the update to date master branch
and be in the root directory of your local git clone. You should also
have the same setup on all build machines used.
To make the release steps below cut-and-pastable, define the following
environment variables:
```sh
LK_RELEASE=v0.4
LK_ROOT=$(pwd)
LK_REMOTE=origin
```
On one of the build machines (preferably the `x86_64` machine), create
the release branch:
```sh
git checkout -b rel_$LK_RELEASE
```
Also make sure that you have a recent version of the `linuxkit`
utility in the path. Either a previous release or compiled from
master.
### Update `linuxkit/alpine`
This step is not necessarily required if the alpine base image has
recently been updated, but it is good to pick up any recent bug
fixes. Updating the alpine base image is different to other packages
and it must be performed on `x86_64` first:
```sh
cd $LK_ROOT/tools/alpine
make push
```
This will update `linuxkit/alpine` and change the `versions.x86_64`
file. Check it in and push to GitHub:
```sh
git commit -a -s -m "tools/alpine: Update to latest"
git push $LK_REMOTE rel_$LK_RELEASE
```
Now, on each build machine for the other supported architectures, in turn:
```sh
git fetch
git checkout rel_$LK_RELEASE
cd $LK_ROOT/tools/alpine
make push
git commit -a --amend
git push --force $LK_REMOTE rel_$LK_RELEASE
```
With all supported architectures updated, head back to the `x86_64`
machine and update the release branch:
```sh
git fetch && git reset --hard $LK_REMOTE/rel_$LK_RELEASE
```
Stash the tag of the alpine base image in an environment variable:
```sh
LK_ALPINE=$(head -1 alpine/versions.x86_64 | sed 's,[#| ]*,,' | sed 's,\-.*$,,' | cut -d':' -f2)
```
### Update tools packages
On the `x86_64` machine, get the `linuxkit/alpine` tag and update the
other packages:
```sh
cd $LK_ROOT/tools
../scripts/update-component-sha.sh --image linuxkit/alpine:$LK_ALPINE
git checkout alpine/versions.aarch64 alpine/versions.s390x
git commit -a -s -m "tools: Update to latest alpine base"
git push $LK_REMOTE rel_$LK_RELEASE
make forcepush
```
Note, the `git checkout` reverts the changes made by
`update-component-sha.sh` to files which are accidentally updated and
the `make forcepush` will skip building the alpine base.
Then, on the other build machines in turn:
```sh
cd $LK_ROOT/tools
git fetch && git reset --hard $LK_REMOTE/rel_$LK_RELEASE
make forcepush
```
Back on the `x86_64` machine:
```sh
cd $LK_ROOT
for img in $(cd tools; make show-tag); do
./scripts/update-component-sha.sh --image $img
done
git commit -a -s -m "Update use of tools to latest"
```
### Update test packages
Next, we update the test packages to the updated alpine base on the `x86_64` system:
```sh
cd $LK_ROOT/test/pkg
../../scripts/update-component-sha.sh --image linuxkit/alpine:$LK_ALPINE
git commit -a -s -m "tests: Update packages to latest alpine base"
git push $LK_REMOTE rel_$LK_RELEASE
make push
```
Then, on the other build machines in turn:
```sh
cd $LK_ROOT/test/pkg
git fetch && git reset --hard $LK_REMOTE/rel_$LK_RELEASE
make push
```
Back on the `x86_64` machine:
```sh
cd $LK_ROOT
for img in $(cd test/pkg; make show-tag); do
./scripts/update-component-sha.sh --image $img
done
git commit -a -s -m "Update use of test packages to latest"
```
### Update packages
Next, we update the LinuxKit packages. This is really the core of the
release. The other steps above are just there to ensure consistency
across packages.
```sh
cd $LK_ROOT/pkg
../scripts/update-component-sha.sh --image linuxkit/alpine:$LK_ALPINE
git commit -a -s -m "pkgs: Update packages to latest alpine base"
git push $LK_REMOTE rel_$LK_RELEASE
```
Most of the packages are build from `linuxkit/alpine` and source code
in the `linuxkit` repository, but some packages wrap external
tools. The time of a release is a good opportunity to check if there
have been updates. Specifically:
- `pkg/cadvisor`: Check for [new releases](https://github.com/google/cadvisor/releases).
- `pkg/firmware` and `pkg/firmware-all`: Use latest commit from [here](https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git).
- `pkg/node_exporter`: Check for [new releases](https://github.com/prometheus/node_exporter/releases).
- `example/docker.yml`: Check [docker hub](https://hub.docker.com/r/library/docker/tags/) for the latest `dind` tags.
The build/push the packages:
```sh
cd $LK_ROOT/pkg
make OPTIONS="-release $LK_RELEASE" push
```
Note, the `OPTIONS` argument. This adds the release tag to the
packages.
Then, on the other build machines in turn:
```sh
cd $LK_ROOT/pkg
git fetch && git reset --hard $LK_REMOTE/rel_$LK_RELEASE
make OPTIONS="-release $LK_RELEASE" push
```
Update the package tags in the YAML files:
```sh
cd $LK_ROOT
for img in $(cd pkg; make show-tag | cut -d ':' -f1); do
./scripts/update-component-sha.sh --image $img:$LK_RELEASE
done
git commit -a -s -m "Update package tags to $LK_RELEASE"
```
### Final preparation steps
- Update the `VERSION` variable in the top-level `Makefile`
- Create an entry in `CHANGELOG.md`. Take a look at `git log v0.3..HEAD` and pick interesting updates (of course adjust `v0.3` to the previous version).
- Create a PR with your changes.
## Releasing
Once the PR is merged we can do the actual release.
- Update your local git clone to the lastest
- Identify the merge commit for your PR and tag it and push it to the main LinuxKit repository (remote `upstream` in my case):
```
git tag $LK_RELEASE master
git push upstream $LK_RELEASE
```
Then head over to GitHub and look at the `Releases` tab. You should see the new tag. Edit it:
- Add the changelog message
- Head over to the Circle CI page of the master build (try the Circle CI badge in the top level `README.md`)
- Download the artefacts and SHA256 sums file.
- Add the downloaded binaries to the release page (drag-and-drop below the editor window)
- Add the `sha256` sums to the release notes on the release page
Hit the `Publish release` button.
This completes the release, but you are not done, one more step is required.
## Post release
Create a PR which bumps the version number in the top-level `Makefile`
to `$LK_RELEASE+` to make sure that the version reported by `linuxkit
version` gets updated.

View File

@@ -28,7 +28,7 @@ docker run -it --rm \
-v $(pwd):/go/src/github.com/linuxkit/linuxkit \
-w /go/src/github.com/linuxkit/linuxkit/src/cmd/linuxkit \
--entrypoint /go/bin/vndr \
linuxkit/go-compile:2940a8141d907c2976be15f201f6e9b7c4c1f931
linuxkit/go-compile:49a2e8f8672ca95ad0159eebcc631773503465c1
```
To update a single dependency:
@@ -38,7 +38,7 @@ docker run -it --rm \
-v $(pwd):/go/src/github.com/linuxkit/linuxkit \
-w /go/src/github.com/linuxkit/linuxkit/src/cmd/linuxkit \
--entrypoint /go/bin/vndr \
linuxkit/go-compile:2940a8141d907c2976be15f201f6e9b7c4c1f931
linuxkit/go-compile:49a2e8f8672ca95ad0159eebcc631773503465c1
github.com/docker/docker
```

View File

@@ -1,24 +1,24 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=ttyS0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: metadata
image: linuxkit/metadata:v0.3
image: linuxkit/metadata:v0.5
services:
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: sshd
image: linuxkit/sshd:v0.3
image: linuxkit/sshd:v0.5
binds:
- /run/config/ssh/authorized_keys:/root/.ssh/authorized_keys
- name: nginx

View File

@@ -1,21 +1,21 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=ttyS0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
services:
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
- name: sshd
image: linuxkit/sshd:v0.3
image: linuxkit/sshd:v0.5
files:
- path: root/.ssh/authorized_keys
source: ~/.ssh/id_rsa.pub

View File

@@ -1,34 +1,34 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: sysfs
image: linuxkit/sysfs:v0.3
image: linuxkit/sysfs:v0.5
- name: format
image: linuxkit/format:v0.3
image: linuxkit/format:v0.5
- name: mount
image: linuxkit/mount:v0.3
image: linuxkit/mount:v0.5
command: ["/usr/bin/mountie", "/var/lib/docker"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: ntpd
image: linuxkit/openntpd:v0.3
image: linuxkit/openntpd:v0.5
- name: docker
image: docker:17.10.0-ce-dind
@@ -46,7 +46,7 @@ services:
- /etc/docker/daemon.json:/etc/docker/daemon.json
command: ["/usr/local/bin/docker-init", "/usr/local/bin/dockerd"]
- name: cadvisor
image: linuxkit/cadvisor:v0.3
image: linuxkit/cadvisor:v0.5
files:
- path: var/lib/docker
directory: true

View File

@@ -1,36 +1,36 @@
# This is an example for building the open source components of Docker for Mac
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=ttyS0 page_poison=1"
init:
- linuxkit/vpnkit-expose-port:v0.3 # install vpnkit-expose-port and vpnkit-iptables-wrapper on host
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/vpnkit-expose-port:v0.5 # install vpnkit-expose-port and vpnkit-iptables-wrapper on host
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
# support metadata for optional config in /run/config
- name: metadata
image: linuxkit/metadata:v0.3
image: linuxkit/metadata:v0.5
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: sysfs
image: linuxkit/sysfs:v0.3
image: linuxkit/sysfs:v0.5
- name: binfmt
image: linuxkit/binfmt:v0.3
image: linuxkit/binfmt:v0.5
# Format and mount the disk image in /var/lib/docker
- name: format
image: linuxkit/format:v0.3
image: linuxkit/format:v0.5
- name: mount
image: linuxkit/mount:v0.3
image: linuxkit/mount:v0.5
command: ["/usr/bin/mountie", "/var/lib"]
# make a swap file on the mounted disk
- name: swap
image: linuxkit/swap:v0.3
image: linuxkit/swap:v0.5
command: ["/swap.sh", "--path", "/var/lib/swap", "--size", "1024M"]
# mount-vpnkit mounts the 9p share used by vpnkit to coordinate port forwarding
- name: mount-vpnkit
image: alpine:3.7
image: alpine:3.8
binds:
- /var/:/host_var:rbind,rshared
capabilities:
@@ -39,46 +39,46 @@ onboot:
command: ["sh", "-c", "mkdir -p /host_var/vpnkit/port && mount -v -t 9p -o trans=virtio,dfltuid=1001,dfltgid=50,version=9p2000 port /host_var/vpnkit"]
# move logs to the mounted disk (this is a temporary fix until we can limit the log sizes)
- name: move-logs
image: alpine:3.7
image: alpine:3.8
binds:
- /var:/host_var
command: ["sh", "-c", "mv -v /host_var/log /host_var/lib && ln -vs /var/lib/log /host_var/log"]
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
services:
# Enable acpi to shutdown on power events
- name: acpid
image: linuxkit/acpid:v0.3
image: linuxkit/acpid:v0.5
# Enable getty for easier debugging
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
# Run ntpd to keep time synchronised in the VM
- name: ntpd
image: linuxkit/openntpd:v0.3
image: linuxkit/openntpd:v0.5
# VSOCK to unix domain socket forwarding. Forwards guest /var/run/docker.sock
# to a socket on the host.
- name: vsudd
image: linuxkit/vsudd:v0.3
image: linuxkit/vsudd:v0.5
binds:
- /var/run:/var/run
command: ["/vsudd", "-inport", "2376:unix:/var/run/docker.sock"]
# vpnkit-forwarder forwards network traffic to/from the host via VSOCK port 62373.
# It needs access to the vpnkit 9P coordination share
- name: vpnkit-forwarder
image: linuxkit/vpnkit-forwarder:v0.3
image: linuxkit/vpnkit-forwarder:v0.5
binds:
- /var/vpnkit:/port
net: host
command: ["/vpnkit-forwarder", "-vsockPort", "62373"]
# Monitor for image deletes and invoke a TRIM on the container filesystem
- name: trim-after-delete
image: linuxkit/trim-after-delete:v0.3
image: linuxkit/trim-after-delete:v0.5
# When the host resumes from sleep, force a clock resync
- name: host-timesync-daemon
image: linuxkit/host-timesync-daemon:v0.3
image: linuxkit/host-timesync-daemon:v0.5
# Run dockerd with the vpnkit userland proxy from the vpnkit-forwarder container.
# Bind mounts /var/run to allow vsudd to connect to docker.sock, /var/vpnkit
# for vpnkit coordination and /run/config/docker for the configuration file.

View File

@@ -1,34 +1,34 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: sysfs
image: linuxkit/sysfs:v0.3
image: linuxkit/sysfs:v0.5
- name: format
image: linuxkit/format:v0.3
image: linuxkit/format:v0.5
- name: mount
image: linuxkit/mount:v0.3
image: linuxkit/mount:v0.5
command: ["/usr/bin/mountie", "/var/lib/docker"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
- name: ntpd
image: linuxkit/openntpd:v0.3
image: linuxkit/openntpd:v0.5
- name: docker
image: docker:17.09.0-ce-dind
image: docker:18.05.0-ce-dind
capabilities:
- all
net: host

View File

@@ -1,28 +1,28 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=ttyS0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: metadata
image: linuxkit/metadata:v0.3
image: linuxkit/metadata:v0.5
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: sshd
image: linuxkit/sshd:v0.3
image: linuxkit/sshd:v0.5
binds:
- /run/config/ssh/authorized_keys:/root/.ssh/authorized_keys
- name: nginx

View File

@@ -1,25 +1,25 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
# to make insecure with passwordless root login, uncomment following lines
#env:
# - INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
files:
- path: etc/getty.shadow
# sample sets password for root to "abcdefgh" (without quotes)

View File

@@ -1,16 +1,16 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
onshutdown:
- name: shutdown
@@ -18,7 +18,7 @@ onshutdown:
command: ["/bin/echo", "so long and thanks for all the fish"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
runtime:
@@ -30,7 +30,7 @@ services:
destination: writeable-host-etc
options: ["rw", "lowerdir=/etc", "upperdir=/run/hostetc/upper", "workdir=/run/hostetc/work"]
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: nginx
image: nginx:1.13.8-alpine
capabilities:

View File

@@ -1,18 +1,18 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: influxdb

34
examples/logging.yml Normal file
View File

@@ -0,0 +1,34 @@
# Simple example of using an external logging service
kernel:
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0"
init:
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
- linuxkit/memlogd:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
services:
# Inside the getty type `/proc/1/root/usr/bin/logread -F` to follow the log
- name: getty
image: linuxkit/getty:v0.5
env:
- INSECURE=true
# A service which generates log messages for testing
- name: write-to-the-logs
image: alpine
command: ["/bin/sh", "-c", "while /bin/true; do echo hello $(date); sleep 1; done" ]
- name: write-and-rotate-logs
image: linuxkit/logwrite:v0.5
- name: kmsg
image: linuxkit/kmsg:v0.5
trust:
org:
- linuxkit
- library

View File

@@ -1,17 +1,17 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
onboot:
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
trust:

View File

@@ -1,21 +1,21 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
- name: node_exporter
image: linuxkit/node_exporter:v0.3
image: linuxkit/node_exporter:v0.5
trust:
org:
- linuxkit

View File

@@ -1,25 +1,25 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=ttyS0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: metadata
image: linuxkit/metadata:v0.3
image: linuxkit/metadata:v0.5
command: ["/usr/bin/metadata", "openstack"]
services:
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: sshd
image: linuxkit/sshd:v0.3
image: linuxkit/sshd:v0.5
binds:
- /run/config/ssh/authorized_keys:/root/.ssh/authorized_keys
- name: nginx

View File

@@ -5,10 +5,10 @@
# for arm64 then the 'ucode' line in the kernel section can be left
# out.
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=ttyAMA0"
ucode: ""
onboot:
- name: modprobe
image: linuxkit/modprobe:v0.3
image: linuxkit/modprobe:v0.5
command: ["modprobe", "nicvf"]

View File

@@ -1,34 +1,34 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: console=ttyS1
ucode: intel-ucode.cpio
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/firmware:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
- linuxkit/firmware:v0.5
onboot:
- name: rngd1
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
command: ["/sbin/rngd", "-1"]
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: metadata
image: linuxkit/metadata:v0.3
image: linuxkit/metadata:v0.5
command: ["/usr/bin/metadata", "packet"]
services:
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: sshd
image: linuxkit/sshd:v0.3
image: linuxkit/sshd:v0.5
files:
- path: root/.ssh/authorized_keys
source: ~/.ssh/id_rsa.pub

View File

@@ -1,19 +1,19 @@
# Minimal YAML to run a redis server (used at DockerCon'17)
# connect: nc localhost 6379
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
onboot:
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
# Currently redis:4.0.6-alpine has trust issue with multi-arch

View File

@@ -1,25 +1,25 @@
kernel:
image: linuxkit/kernel:4.14.29-rt
image: linuxkit/kernel:4.14.54-rt
cmdline: "console=tty0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
- name: open-vm-tools
image: linuxkit/open-vm-tools:v0.3
image: linuxkit/open-vm-tools:v0.5
- name: nginx
image: nginx:1.13.8-alpine
capabilities:

29
examples/scaleway.yml Normal file
View File

@@ -0,0 +1,29 @@
kernel:
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0 root=/dev/vda"
init:
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.5
- name: rngd1
image: linuxkit/rngd:v0.5
command: ["/sbin/rngd", "-1"]
- name: dhcpcd
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: metadata
image: linuxkit/metadata:v0.5
services:
- name: getty
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.5
trust:
org:
- linuxkit

View File

@@ -1,28 +1,28 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: rngd1
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
command: ["/sbin/rngd", "-1"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
- name: sshd
image: linuxkit/sshd:v0.3
image: linuxkit/sshd:v0.5
files:
- path: root/.ssh/authorized_keys
source: ~/.ssh/id_rsa.pub

View File

@@ -1,34 +1,34 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0 console=ttysclp0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: format
image: linuxkit/format:v0.3
image: linuxkit/format:v0.5
- name: mount
image: linuxkit/mount:v0.3
image: linuxkit/mount:v0.5
command: ["/usr/bin/mountie", "/var/external"]
- name: swap
image: linuxkit/swap:v0.3
image: linuxkit/swap:v0.5
# to use unencrypted swap, use:
# command: ["/swap.sh", "--path", "/var/external/swap", "--size", "1G"]
command: ["/swap.sh", "--path", "/var/external/swap", "--size", "1G", "--encrypt"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
trust:
org:
- linuxkit

View File

@@ -2,25 +2,25 @@ kernel:
image: linuxkit/kernel:4.9.38
cmdline: "console=tty0 console=ttyS0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: tss
image: linuxkit/tss:v0.3
image: linuxkit/tss:v0.5
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
files:
- path: etc/getty.shadow
# sample sets password for root to "abcdefgh" (without quotes)

View File

@@ -1,23 +1,23 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
- name: nginx
image: nginx:1.13.8-alpine
capabilities:

View File

@@ -1,16 +1,16 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=ttyS0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
onboot:
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: mount-vpnkit
image: alpine:3.7
image: alpine:3.8
binds:
- /var/:/host_var:rbind,rshared
capabilities:
@@ -19,9 +19,9 @@ onboot:
command: ["sh", "-c", "mkdir /host_var/vpnkit && mount -v -t 9p -o trans=virtio,dfltuid=1001,dfltgid=50,version=9p2000 port /host_var/vpnkit"]
services:
- name: sshd
image: linuxkit/sshd:v0.3
image: linuxkit/sshd:v0.5
- name: vpnkit-forwarder
image: linuxkit/vpnkit-forwarder:v0.3
image: linuxkit/vpnkit-forwarder:v0.5
binds:
- /var/vpnkit:/port
net: host

View File

@@ -1,17 +1,17 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=ttyS0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
onboot:
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
services:
- name: vsudd
image: linuxkit/vsudd:v0.3
image: linuxkit/vsudd:v0.5
binds:
- /run/containerd/containerd.sock:/run/containerd/containerd.sock
command: ["/vsudd",

View File

@@ -1,28 +1,28 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=ttyS0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: metadata
image: linuxkit/metadata:v0.3
image: linuxkit/metadata:v0.5
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: sshd
image: linuxkit/sshd:v0.3
image: linuxkit/sshd:v0.5
binds:
- /run/config/ssh/authorized_keys:/root/.ssh/authorized_keys
- name: nginx

View File

@@ -1,19 +1,19 @@
kernel:
image: linuxkit/kernel:4.14.32
image: linuxkit/kernel:4.14.54
cmdline: "console=tty0 console=ttyS0 console=ttyAMA0"
init:
- linuxkit/init:v0.3
- linuxkit/runc:v0.3
- linuxkit/containerd:v0.3
- linuxkit/ca-certificates:v0.3
- linuxkit/init:v0.5
- linuxkit/runc:v0.5
- linuxkit/containerd:v0.5
- linuxkit/ca-certificates:v0.5
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.3
image: linuxkit/sysctl:v0.5
- name: dhcpcd
image: linuxkit/dhcpcd:v0.3
image: linuxkit/dhcpcd:v0.5
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf", "-1"]
- name: wg0
image: linuxkit/ip:v0.3
image: linuxkit/ip:v0.5
net: new
binds:
- /etc/wireguard:/etc/wireguard
@@ -26,7 +26,7 @@ onboot:
bindNS:
net: /run/netns/wg0
- name: wg1
image: linuxkit/ip:v0.3
image: linuxkit/ip:v0.5
net: new
binds:
- /etc/wireguard:/etc/wireguard
@@ -40,12 +40,12 @@ onboot:
net: /run/netns/wg1
services:
- name: getty
image: linuxkit/getty:v0.3
image: linuxkit/getty:v0.5
env:
- INSECURE=true
net: /run/netns/wg1
- name: rngd
image: linuxkit/rngd:v0.3
image: linuxkit/rngd:v0.5
- name: nginx
image: nginx:1.13.8-alpine
net: /run/netns/wg0

View File

@@ -1,4 +1,4 @@
FROM linuxkit/alpine:96ad1eb5ec262b4cd0eef574cdc0b225b502d9ee AS kernel-build
FROM linuxkit/alpine:6264e5b39af8eb1da7ffa4c05a7ccc597da01197 AS kernel-build
RUN apk add \
argp-standalone \
automake \
@@ -16,6 +16,7 @@ RUN apk add \
installkernel \
kmod \
libelf-dev \
libressl \
libressl-dev \
linux-headers \
mpc1-dev \
@@ -41,8 +42,8 @@ ENV KERNEL_SOURCE=https://www.kernel.org/pub/linux/kernel/v4.x/linux-${KERNEL_VE
ENV KERNEL_SHA256_SUMS=https://www.kernel.org/pub/linux/kernel/v4.x/sha256sums.asc
ENV KERNEL_PGP2_SIGN=https://www.kernel.org/pub/linux/kernel/v4.x/linux-${KERNEL_VERSION}.tar.sign
ENV WIREGUARD_VERSION=0.0.20180304
ENV WIREGUARD_SHA256=efb1652f0da67fb2731040439b6abb820a5e2f1bc177aa15c5dce68ea3327787
ENV WIREGUARD_VERSION=0.0.20180708
ENV WIREGUARD_SHA256="5e38d554f7d1e3a64e3a5319ca1a3b790c84ed89c896586c490a93ac1f953a91"
ENV WIREGUARD_URL=https://git.zx2c4.com/WireGuard/snapshot/WireGuard-${WIREGUARD_VERSION}.tar.xz
# We copy the entire directory. This copies some unneeded files, but
@@ -83,6 +84,11 @@ RUN set -e && \
done; \
fi
RUN mkdir -p /out/src
# Save kernel source
RUN tar cJf /out/src/linux.tar.xz /linux
# Kernel config
RUN case $(uname -m) in \
x86_64) \
@@ -108,7 +114,6 @@ RUN case $(uname -m) in \
make oldconfig && \
if [ -z "${EXTRA}" ] && [ -z "${DEBUG}" ]; then diff .config ${KERNEL_DEF_CONF}; fi
RUN mkdir /out
# Kernel
RUN make -j "$(getconf _NPROCESSORS_ONLN)" KCFLAGS="-fno-pie" && \
@@ -127,8 +132,9 @@ RUN make -j "$(getconf _NPROCESSORS_ONLN)" KCFLAGS="-fno-pie" && \
([ -n "${DEBUG}" ] && cp vmlinux /out || true)
# WireGuard
RUN curl -sSL -o /wireguard.tar.xz "${WIREGUARD_URL}" && \
RUN curl -fsSL -o /wireguard.tar.xz "${WIREGUARD_URL}" && \
echo "${WIREGUARD_SHA256} /wireguard.tar.xz" | sha256sum -c - && \
cp /wireguard.tar.xz /out/src/ && \
tar -C / --one-top-level=wireguard --strip-components=2 -xJf /wireguard.tar.xz "WireGuard-${WIREGUARD_VERSION}/src" && \
make -j "$(getconf _NPROCESSORS_ONLN)" M="/wireguard" modules
@@ -168,8 +174,10 @@ RUN DVER=$(basename $(find /tmp/kernel-modules/lib/modules/ -mindepth 1 -maxdept
RUN printf "KERNEL_SOURCE=${KERNEL_SOURCE}\n" > /out/kernel-source-info
# perf (Don't compile for 4.4.x, it's broken and tedious to fix)
RUN if [ "${KERNEL_SERIES}" != "4.4.x" ]; then \
# perf
# Skip for 4.4.x (the compile is broken and tedious to fix) and 4.9.x (the
# compile broke with 4.9.93)
RUN if [ "${KERNEL_SERIES}" != "4.4.x" ] && [ "${KERNEL_SERIES}" != "4.9.x" ]; then \
mkdir -p /build/perf && \
make -C tools/perf LDFLAGS=-static O=/build/perf && \
strip /build/perf/perf && \
@@ -177,13 +185,14 @@ RUN if [ "${KERNEL_SERIES}" != "4.4.x" ]; then \
fi
# Download Intel ucode and create a CPIO archive for it
ENV UCODE_URL=https://downloadmirror.intel.com/27591/eng/microcode-20180312.tgz
ENV UCODE_URL=https://downloadmirror.intel.com/27776/eng/microcode-20180425.tgz
RUN set -e && \
if [ $(uname -m) == x86_64 ]; then \
cd /ucode && \
curl -sSL -o microcode.tar.gz ${UCODE_URL} && \
curl -fsSL -o microcode.tar.gz ${UCODE_URL} && \
md5sum -c intel-ucode-md5sums && \
tar xf microcode.tar.gz && \
rm -f intel-ucode/list && \
iucode_tool --normal-earlyfw --write-earlyfw=/out/intel-ucode.cpio ./intel-ucode && \
cp intel-ucode-license.txt /out; \
fi

View File

@@ -1,9 +1,11 @@
FROM linuxkit/alpine:96ad1eb5ec262b4cd0eef574cdc0b225b502d9ee AS kernel-build
FROM linuxkit/alpine:6264e5b39af8eb1da7ffa4c05a7ccc597da01197 AS kernel-build
RUN apk add \
argp-standalone \
bison \
build-base \
curl \
diffutils \
flex \
libarchive-tools \
ncurses-dev \
patch \

View File

@@ -1,6 +1,6 @@
ARG IMAGE
FROM ${IMAGE} AS ksrc
FROM linuxkit/alpine:96ad1eb5ec262b4cd0eef574cdc0b225b502d9ee AS build
FROM linuxkit/alpine:6264e5b39af8eb1da7ffa4c05a7ccc597da01197 AS build
RUN apk add \
attr-dev \
autoconf \

View File

@@ -156,8 +156,8 @@ fetch: sources/linux-$(1).tar.xz
# with DCT as part of the dependency on build_$(2)$(3)$(4) and then build
# with DOCKER_CONTENT_TRUST explicitly set to 0
ifneq ($(2), 4.4.x)
# perf does not build out of the box for 4.4.x and 4.4.x is not that relevant anymore to work on a fix
ifneq ($(2), $(filter $(2),4.4.x 4.9.x))
# perf does not build out of the box for 4.4.x and 4.9.x
build_perf_$(2)$(3)$(4): build_$(2)$(3)$(4)
docker pull $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG)$(SUFFIX) || \
DOCKER_CONTENT_TRUST=0 docker build -f Dockerfile.perf \
@@ -218,21 +218,21 @@ endef
# Debug targets only for latest stable and LTS stable
#
ifeq ($(ARCH),x86_64)
$(eval $(call kernel,4.15.15,4.15.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.32,4.14.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.32,4.14.x,,-dbg))
$(eval $(call kernel,4.14.29,4.14.x,-rt,))
$(eval $(call kernel,4.9.92,4.9.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.4.126,4.4.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.17.5,4.17.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.54,4.14.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.54,4.14.x,,-dbg))
$(eval $(call kernel,4.14.53,4.14.x,-rt,))
$(eval $(call kernel,4.9.111,4.9.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.4.139,4.4.x,$(EXTRA),$(DEBUG)))
else ifeq ($(ARCH),aarch64)
$(eval $(call kernel,4.15.15,4.15.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.32,4.14.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.29,4.14.x,-rt,))
$(eval $(call kernel,4.17.5,4.17.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.54,4.14.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.53,4.14.x,-rt,))
else ifeq ($(ARCH),s390x)
$(eval $(call kernel,4.15.15,4.15.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.32,4.14.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.17.5,4.17.x,$(EXTRA),$(DEBUG)))
$(eval $(call kernel,4.14.54,4.14.x,$(EXTRA),$(DEBUG)))
endif
# Target for kernel config

View File

@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 4.14.32 Kernel Configuration
# Linux/arm64 4.14.54 Kernel Configuration
#
CONFIG_ARM64=y
CONFIG_64BIT=y
@@ -488,6 +488,7 @@ CONFIG_ARM64_ERRATUM_819472=y
CONFIG_ARM64_ERRATUM_832075=y
CONFIG_ARM64_ERRATUM_834220=y
CONFIG_ARM64_ERRATUM_843419=y
CONFIG_ARM64_ERRATUM_1024718=y
CONFIG_CAVIUM_ERRATUM_22375=y
CONFIG_CAVIUM_ERRATUM_23154=y
CONFIG_CAVIUM_ERRATUM_27456=y
@@ -1059,6 +1060,9 @@ CONFIG_NF_CONNTRACK_IPV6=y
# CONFIG_NF_SOCKET_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_CHAIN_ROUTE_IPV6=y
CONFIG_NFT_CHAIN_NAT_IPV6=y
CONFIG_NFT_MASQ_IPV6=y
CONFIG_NFT_REDIR_IPV6=y
CONFIG_NFT_REJECT_IPV6=y
CONFIG_NFT_DUP_IPV6=y
# CONFIG_NFT_FIB_IPV6 is not set
@@ -1066,10 +1070,7 @@ CONFIG_NF_DUP_IPV6=y
CONFIG_NF_REJECT_IPV6=y
CONFIG_NF_LOG_IPV6=y
CONFIG_NF_NAT_IPV6=y
CONFIG_NFT_CHAIN_NAT_IPV6=y
CONFIG_NF_NAT_MASQUERADE_IPV6=y
CONFIG_NFT_MASQ_IPV6=y
CONFIG_NFT_REDIR_IPV6=y
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_AH=y
CONFIG_IP6_NF_MATCH_EUI64=y
@@ -1116,7 +1117,15 @@ CONFIG_BRIDGE_EBT_SNAT=y
CONFIG_BRIDGE_EBT_LOG=y
CONFIG_BRIDGE_EBT_NFLOG=y
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
CONFIG_IP_SCTP=m
# CONFIG_NET_SCTPPROBE is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_COOKIE_HMAC_SHA1 is not set
CONFIG_INET_SCTP_DIAG=m
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
@@ -1232,7 +1241,8 @@ CONFIG_VIRTIO_VSOCKETS_COMMON=y
CONFIG_NETLINK_DIAG=y
CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
# CONFIG_MPLS_ROUTING is not set
CONFIG_MPLS_ROUTING=m
CONFIG_MPLS_IPTUNNEL=m
# CONFIG_NET_NSH is not set
# CONFIG_HSR is not set
CONFIG_NET_SWITCHDEV=y
@@ -2133,7 +2143,8 @@ CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_RP2 is not set
# CONFIG_SERIAL_FSL_LPUART is not set
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
# CONFIG_SERIAL_DEV_BUS is not set
CONFIG_SERIAL_DEV_BUS=y
# CONFIG_SERIAL_DEV_CTRL_TTYPORT is not set
# CONFIG_TTY_PRINTK is not set
CONFIG_HVC_DRIVER=y
CONFIG_HVC_IRQ=y
@@ -2167,7 +2178,7 @@ CONFIG_TCG_TIS_I2C_NUVOTON=m
CONFIG_TCG_ATMEL=m
CONFIG_TCG_INFINEON=m
CONFIG_TCG_XEN=m
CONFIG_TCG_CRB=m
CONFIG_TCG_CRB=y
CONFIG_TCG_VTPM_PROXY=m
CONFIG_TCG_TIS_ST33ZP24=m
CONFIG_TCG_TIS_ST33ZP24_I2C=m
@@ -2942,7 +2953,22 @@ CONFIG_USB_UHCI_HCD=m
#
# also be needed; see USB_STORAGE Help for more info
#
# CONFIG_USB_STORAGE is not set
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_UAS is not set
#
# USB Imaging devices

View File

@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/s390 4.14.32 Kernel Configuration
# Linux/s390 4.14.54 Kernel Configuration
#
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
@@ -466,6 +466,11 @@ CONFIG_HZ_250=y
CONFIG_HZ=250
CONFIG_SCHED_HRTICK=y
CONFIG_ARCH_RANDOM=y
CONFIG_KERNEL_NOBP=y
CONFIG_EXPOLINE=y
# CONFIG_EXPOLINE_OFF is not set
# CONFIG_EXPOLINE_AUTO is not set
CONFIG_EXPOLINE_FULL=y
#
# Memory setup
@@ -994,6 +999,9 @@ CONFIG_NF_CONNTRACK_IPV6=y
# CONFIG_NF_SOCKET_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_CHAIN_ROUTE_IPV6=y
CONFIG_NFT_CHAIN_NAT_IPV6=y
CONFIG_NFT_MASQ_IPV6=y
CONFIG_NFT_REDIR_IPV6=y
CONFIG_NFT_REJECT_IPV6=y
CONFIG_NFT_DUP_IPV6=y
# CONFIG_NFT_FIB_IPV6 is not set
@@ -1001,10 +1009,7 @@ CONFIG_NF_DUP_IPV6=y
CONFIG_NF_REJECT_IPV6=y
CONFIG_NF_LOG_IPV6=y
CONFIG_NF_NAT_IPV6=y
CONFIG_NFT_CHAIN_NAT_IPV6=y
CONFIG_NF_NAT_MASQUERADE_IPV6=y
CONFIG_NFT_MASQ_IPV6=y
CONFIG_NFT_REDIR_IPV6=y
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_AH=y
CONFIG_IP6_NF_MATCH_EUI64=y
@@ -1051,7 +1056,15 @@ CONFIG_BRIDGE_EBT_SNAT=y
CONFIG_BRIDGE_EBT_LOG=y
CONFIG_BRIDGE_EBT_NFLOG=y
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
CONFIG_IP_SCTP=m
# CONFIG_NET_SCTPPROBE is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_COOKIE_HMAC_SHA1 is not set
CONFIG_INET_SCTP_DIAG=m
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
@@ -1165,7 +1178,8 @@ CONFIG_VIRTIO_VSOCKETS_COMMON=y
CONFIG_NETLINK_DIAG=y
CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
# CONFIG_MPLS_ROUTING is not set
CONFIG_MPLS_ROUTING=m
CONFIG_MPLS_IPTUNNEL=m
# CONFIG_NET_NSH is not set
# CONFIG_HSR is not set
CONFIG_NET_SWITCHDEV=y
@@ -1240,6 +1254,7 @@ CONFIG_ALLOW_DEV_COREDUMP=y
CONFIG_SYS_HYPERVISOR=y
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_GENERIC_CPU_VULNERABILITIES=y
# CONFIG_DMA_SHARED_BUFFER is not set
# CONFIG_DMA_CMA is not set

View File

@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 4.14.32 Kernel Configuration
# Linux/x86 4.14.54 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
@@ -1219,6 +1219,9 @@ CONFIG_NF_CONNTRACK_IPV6=y
# CONFIG_NF_SOCKET_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_CHAIN_ROUTE_IPV6=y
CONFIG_NFT_CHAIN_NAT_IPV6=y
CONFIG_NFT_MASQ_IPV6=y
CONFIG_NFT_REDIR_IPV6=y
CONFIG_NFT_REJECT_IPV6=y
CONFIG_NFT_DUP_IPV6=y
# CONFIG_NFT_FIB_IPV6 is not set
@@ -1226,10 +1229,7 @@ CONFIG_NF_DUP_IPV6=y
CONFIG_NF_REJECT_IPV6=y
CONFIG_NF_LOG_IPV6=y
CONFIG_NF_NAT_IPV6=y
CONFIG_NFT_CHAIN_NAT_IPV6=y
CONFIG_NF_NAT_MASQUERADE_IPV6=y
CONFIG_NFT_MASQ_IPV6=y
CONFIG_NFT_REDIR_IPV6=y
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_AH=y
CONFIG_IP6_NF_MATCH_EUI64=y
@@ -1276,7 +1276,15 @@ CONFIG_BRIDGE_EBT_SNAT=y
CONFIG_BRIDGE_EBT_LOG=y
CONFIG_BRIDGE_EBT_NFLOG=y
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
CONFIG_IP_SCTP=m
# CONFIG_NET_SCTPPROBE is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_COOKIE_HMAC_SHA1 is not set
CONFIG_INET_SCTP_DIAG=m
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
@@ -1393,7 +1401,8 @@ CONFIG_HYPERV_VSOCKETS=y
CONFIG_NETLINK_DIAG=y
CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
# CONFIG_MPLS_ROUTING is not set
CONFIG_MPLS_ROUTING=m
CONFIG_MPLS_IPTUNNEL=m
# CONFIG_NET_NSH is not set
# CONFIG_HSR is not set
CONFIG_NET_SWITCHDEV=y
@@ -2232,7 +2241,7 @@ CONFIG_TCG_NSC=m
CONFIG_TCG_ATMEL=m
CONFIG_TCG_INFINEON=m
CONFIG_TCG_XEN=m
CONFIG_TCG_CRB=m
CONFIG_TCG_CRB=y
CONFIG_TCG_VTPM_PROXY=m
CONFIG_TCG_TIS_ST33ZP24=m
CONFIG_TCG_TIS_ST33ZP24_I2C=m
@@ -2884,7 +2893,22 @@ CONFIG_USB_UHCI_HCD=m
#
# also be needed; see USB_STORAGE Help for more info
#
# CONFIG_USB_STORAGE is not set
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_UAS is not set
#
# USB Imaging devices

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/s390 4.15.15 Kernel Configuration
# Linux/s390 4.17.5 Kernel Configuration
#
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
@@ -8,15 +8,12 @@ CONFIG_CPU_BIG_ENDIAN=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_PGSTE=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_KEXEC=y
CONFIG_AUDIT_ARCH=y
CONFIG_NO_IOPORT_MAP=y
CONFIG_PCI_QUIRKS=y
@@ -24,7 +21,6 @@ CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_S390=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_PGTABLE_LEVELS=5
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y
@@ -68,7 +64,6 @@ CONFIG_AUDIT_TREE=y
#
CONFIG_IRQ_DOMAIN=y
CONFIG_GENERIC_MSI_IRQ=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_SPARSE_IRQ=y
# CONFIG_GENERIC_IRQ_DEBUGFS is not set
CONFIG_GENERIC_TIME_VSYSCALL=y
@@ -104,7 +99,6 @@ CONFIG_TREE_RCU=y
# CONFIG_RCU_EXPERT is not set
CONFIG_SRCU=y
CONFIG_TREE_SRCU=y
# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
CONFIG_RCU_NEED_SEGCBLIST=y
CONFIG_BUILD_BIN2C=y
@@ -187,7 +181,6 @@ CONFIG_MEMBARRIER=y
CONFIG_CHECKPOINT_RESTORE=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT_ALWAYS_ON=y
@@ -208,7 +201,6 @@ CONFIG_SLAB=y
# CONFIG_SLOB is not set
CONFIG_SLAB_MERGE_DEFAULT=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SYSTEM_DATA_VERIFICATION is not set
CONFIG_PROFILING=y
CONFIG_TRACEPOINTS=y
CONFIG_CRASH_CORE=y
@@ -219,7 +211,6 @@ CONFIG_KPROBES=y
CONFIG_JUMP_LABEL=y
# CONFIG_STATIC_KEYS_SELFTEST is not set
CONFIG_UPROBES=y
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_KRETPROBES=y
@@ -254,8 +245,6 @@ CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=y
# CONFIG_GCC_PLUGIN_STRUCTLEAK_VERBOSE is not set
CONFIG_GCC_PLUGIN_RANDSTRUCT=y
CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE=y
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_THIN_ARCHIVES=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING=y
CONFIG_ARCH_HAS_SCALED_CPUTIME=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
@@ -265,16 +254,10 @@ CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_HAVE_COPY_THREAD_TLS=y
# CONFIG_HAVE_ARCH_HASH is not set
# CONFIG_ISA_BUS_API is not set
CONFIG_CLONE_BACKWARDS2=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OLD_SIGACTION=y
CONFIG_COMPAT_OLD_SIGACTION=y
# CONFIG_CPU_NO_EFFICIENT_FFS is not set
# CONFIG_HAVE_ARCH_VMAP_STACK is not set
# CONFIG_ARCH_OPTIONAL_KERNEL_RWX is not set
# CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
@@ -286,7 +269,6 @@ CONFIG_REFCOUNT_FULL=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -426,9 +408,6 @@ CONFIG_HAVE_MARCH_Z990_FEATURES=y
CONFIG_HAVE_MARCH_Z9_109_FEATURES=y
CONFIG_HAVE_MARCH_Z10_FEATURES=y
CONFIG_HAVE_MARCH_Z196_FEATURES=y
# CONFIG_HAVE_MARCH_ZEC12_FEATURES is not set
# CONFIG_HAVE_MARCH_Z13_FEATURES is not set
# CONFIG_HAVE_MARCH_Z14_FEATURES is not set
# CONFIG_MARCH_Z900 is not set
# CONFIG_MARCH_Z990 is not set
# CONFIG_MARCH_Z9_109 is not set
@@ -437,14 +416,7 @@ CONFIG_MARCH_Z196=y
# CONFIG_MARCH_ZEC12 is not set
# CONFIG_MARCH_Z13 is not set
# CONFIG_MARCH_Z14 is not set
# CONFIG_MARCH_Z900_TUNE is not set
# CONFIG_MARCH_Z990_TUNE is not set
# CONFIG_MARCH_Z9_109_TUNE is not set
# CONFIG_MARCH_Z10_TUNE is not set
CONFIG_MARCH_Z196_TUNE=y
# CONFIG_MARCH_ZEC12_TUNE is not set
# CONFIG_MARCH_Z13_TUNE is not set
# CONFIG_MARCH_Z14_TUNE is not set
CONFIG_TUNE_DEFAULT=y
# CONFIG_TUNE_Z900 is not set
# CONFIG_TUNE_Z990 is not set
@@ -460,7 +432,6 @@ CONFIG_SYSVIPC_COMPAT=y
CONFIG_SMP=y
CONFIG_NR_CPUS=64
CONFIG_HOTPLUG_CPU=y
# CONFIG_NODES_SPAN_OTHER_NODES is not set
# CONFIG_NUMA is not set
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
@@ -476,7 +447,13 @@ CONFIG_HZ_250=y
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_SCHED_HRTICK=y
CONFIG_KEXEC=y
CONFIG_ARCH_RANDOM=y
CONFIG_KERNEL_NOBP=y
CONFIG_EXPOLINE=y
# CONFIG_EXPOLINE_OFF is not set
# CONFIG_EXPOLINE_AUTO is not set
CONFIG_EXPOLINE_FULL=y
#
# Memory setup
@@ -500,7 +477,6 @@ CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
CONFIG_HAVE_MEMBLOCK_PHYS_MAP=y
CONFIG_NO_BOOTMEM=y
CONFIG_MEMORY_ISOLATION=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
# CONFIG_MEMORY_HOTPLUG is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_MEMORY_BALLOON=y
@@ -515,7 +491,6 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
# CONFIG_ARCH_WANTS_THP_SWAP is not set
CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
# CONFIG_CLEANCACHE is not set
# CONFIG_FRONTSWAP is not set
@@ -527,7 +502,7 @@ CONFIG_CMA_AREAS=7
# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set
CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
# CONFIG_IDLE_PAGE_TRACKING is not set
# CONFIG_PERCPU_STATS is not set
# CONFIG_GUP_BENCHMARK is not set
@@ -553,11 +528,9 @@ CONFIG_PCIEASPM_DEFAULT=y
# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
# CONFIG_PCIEASPM_PERFORMANCE is not set
CONFIG_PCIE_PME=y
# CONFIG_PCIE_DPC is not set
# CONFIG_PCIE_PTM is not set
CONFIG_PCI_BUS_ADDR_T_64BIT=y
CONFIG_PCI_MSI=y
# CONFIG_PCI_MSI_IRQ_DOMAIN is not set
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -570,6 +543,10 @@ CONFIG_HOTPLUG_PCI=y
# CONFIG_HOTPLUG_PCI_SHPC is not set
# CONFIG_HOTPLUG_PCI_S390 is not set
#
# Cadence PCIe controllers support
#
#
# DesignWare PCI Core Support
#
@@ -610,7 +587,6 @@ CONFIG_ARCH_BINFMT_ELF_STATE=y
CONFIG_ELFCORE=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_BINFMT_SCRIPT=y
# CONFIG_HAVE_AOUT is not set
CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y
CONFIG_SECCOMP=y
@@ -663,6 +639,7 @@ CONFIG_NET_IPGRE_DEMUX=y
CONFIG_NET_IP_TUNNEL=y
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE_COMMON=y
CONFIG_IP_MROUTE=y
CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
CONFIG_IP_PIMSM_V1=y
@@ -732,12 +709,15 @@ CONFIG_BRIDGE_NETFILTER=y
#
CONFIG_NETFILTER_INGRESS=y
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_FAMILY_BRIDGE=y
CONFIG_NETFILTER_FAMILY_ARP=y
CONFIG_NETFILTER_NETLINK_ACCT=y
CONFIG_NETFILTER_NETLINK_QUEUE=y
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_LOG_COMMON=y
# CONFIG_NF_LOG_NETDEV is not set
CONFIG_NETFILTER_CONNCOUNT=y
CONFIG_NF_CONNTRACK_MARK=y
# CONFIG_NF_CONNTRACK_SECMARK is not set
CONFIG_NF_CONNTRACK_ZONES=y
@@ -804,6 +784,7 @@ CONFIG_NFT_HASH=y
CONFIG_NF_DUP_NETDEV=y
CONFIG_NFT_DUP_NETDEV=y
CONFIG_NFT_FWD_NETDEV=y
# CONFIG_NF_FLOW_TABLE is not set
CONFIG_NETFILTER_XTABLES=y
#
@@ -1005,6 +986,9 @@ CONFIG_NF_CONNTRACK_IPV6=y
# CONFIG_NF_SOCKET_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_CHAIN_ROUTE_IPV6=y
CONFIG_NFT_CHAIN_NAT_IPV6=y
CONFIG_NFT_MASQ_IPV6=y
CONFIG_NFT_REDIR_IPV6=y
CONFIG_NFT_REJECT_IPV6=y
CONFIG_NFT_DUP_IPV6=y
# CONFIG_NFT_FIB_IPV6 is not set
@@ -1012,10 +996,7 @@ CONFIG_NF_DUP_IPV6=y
CONFIG_NF_REJECT_IPV6=y
CONFIG_NF_LOG_IPV6=y
CONFIG_NF_NAT_IPV6=y
CONFIG_NFT_CHAIN_NAT_IPV6=y
CONFIG_NF_NAT_MASQUERADE_IPV6=y
CONFIG_NFT_MASQ_IPV6=y
CONFIG_NFT_REDIR_IPV6=y
CONFIG_IP6_NF_IPTABLES=y
CONFIG_IP6_NF_MATCH_AH=y
CONFIG_IP6_NF_MATCH_EUI64=y
@@ -1026,6 +1007,7 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=y
CONFIG_IP6_NF_MATCH_MH=y
CONFIG_IP6_NF_MATCH_RPFILTER=y
CONFIG_IP6_NF_MATCH_RT=y
# CONFIG_IP6_NF_MATCH_SRH is not set
CONFIG_IP6_NF_TARGET_HL=y
CONFIG_IP6_NF_FILTER=y
CONFIG_IP6_NF_TARGET_REJECT=y
@@ -1062,7 +1044,14 @@ CONFIG_BRIDGE_EBT_SNAT=y
CONFIG_BRIDGE_EBT_LOG=y
CONFIG_BRIDGE_EBT_NFLOG=y
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DBG_OBJCNT is not set
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_COOKIE_HMAC_SHA1 is not set
CONFIG_INET_SCTP_DIAG=m
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
@@ -1079,7 +1068,6 @@ CONFIG_VLAN_8021Q=y
# CONFIG_DECNET is not set
CONFIG_LLC=y
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
@@ -1144,6 +1132,7 @@ CONFIG_NET_EMATCH_U32=y
CONFIG_NET_EMATCH_META=y
CONFIG_NET_EMATCH_TEXT=y
CONFIG_NET_EMATCH_IPSET=y
# CONFIG_NET_EMATCH_IPT is not set
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
CONFIG_NET_ACT_GACT=y
@@ -1178,7 +1167,8 @@ CONFIG_VIRTIO_VSOCKETS_COMMON=y
CONFIG_NETLINK_DIAG=y
CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
# CONFIG_MPLS_ROUTING is not set
CONFIG_MPLS_ROUTING=m
CONFIG_MPLS_IPTUNNEL=m
CONFIG_NET_NSH=m
# CONFIG_HSR is not set
CONFIG_NET_SWITCHDEV=y
@@ -1199,12 +1189,10 @@ CONFIG_NET_FLOW_LIMIT=y
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NET_TCPPROBE is not set
# CONFIG_NET_DROP_MONITOR is not set
# CONFIG_CAN is not set
# CONFIG_AF_RXRPC is not set
# CONFIG_AF_KCM is not set
# CONFIG_STREAM_PARSER is not set
CONFIG_FIB_RULES=y
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
@@ -1225,7 +1213,6 @@ CONFIG_GRO_CELLS=y
# CONFIG_NET_DEVLINK is not set
CONFIG_MAY_USE_DEVLINK=y
CONFIG_HAVE_EBPF_JIT=y
# CONFIG_PCMCIA is not set
CONFIG_CCW=y
#
@@ -1242,7 +1229,6 @@ CONFIG_DEVTMPFS=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
CONFIG_ALLOW_DEV_COREDUMP=y
@@ -1251,9 +1237,8 @@ CONFIG_ALLOW_DEV_COREDUMP=y
# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
CONFIG_SYS_HYPERVISOR=y
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
# CONFIG_DMA_SHARED_BUFFER is not set
CONFIG_GENERIC_CPU_VULNERABILITIES=y
# CONFIG_DMA_CMA is not set
#
@@ -1269,7 +1254,6 @@ CONFIG_CDROM=y
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=y
@@ -1308,7 +1292,6 @@ CONFIG_BLK_DEV_RBD=m
#
# Misc devices
#
# CONFIG_SENSORS_LIS3LV02D is not set
# CONFIG_AD525X_DPOT is not set
# CONFIG_DUMMY_IRQ is not set
# CONFIG_PHANTOM is not set
@@ -1383,9 +1366,7 @@ CONFIG_BLK_DEV_RBD=m
#
# CONFIG_GENWQE is not set
# CONFIG_ECHO is not set
# CONFIG_CXL_BASE is not set
# CONFIG_CXL_AFU_DRIVER_OPS is not set
# CONFIG_CXL_LIB is not set
# CONFIG_MISC_RTSX_PCI is not set
#
# SCSI device support
@@ -1394,7 +1375,6 @@ CONFIG_SCSI_MOD=y
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_MQ_DEFAULT is not set
# CONFIG_SCSI_PROC_FS is not set
@@ -1452,7 +1432,6 @@ CONFIG_SCSI_HPSA=m
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_SNIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
@@ -1471,7 +1450,6 @@ CONFIG_SCSI_VIRTIO=y
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
# CONFIG_ATA_VERBOSE_ERROR is not set
# CONFIG_SATA_PMP is not set
@@ -1479,6 +1457,7 @@ CONFIG_ATA=y
# Controllers with non-SFF native interface
#
CONFIG_SATA_AHCI=y
CONFIG_SATA_MOBILE_LPM_POLICY=0
# CONFIG_SATA_AHCI_PLATFORM is not set
# CONFIG_SATA_INIC162X is not set
# CONFIG_SATA_ACARD_AHCI is not set
@@ -1570,6 +1549,7 @@ CONFIG_DM_BUFIO=y
# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set
CONFIG_DM_BIO_PRISON=y
CONFIG_DM_PERSISTENT_DATA=y
# CONFIG_DM_UNSTRIPED is not set
CONFIG_DM_CRYPT=y
CONFIG_DM_SNAPSHOT=y
CONFIG_DM_THIN_PROVISIONING=y
@@ -1618,8 +1598,6 @@ CONFIG_GENEVE=m
# CONFIG_GTP is not set
# CONFIG_MACSEC is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
CONFIG_TUN=y
CONFIG_TAP=y
# CONFIG_TUN_VNET_CROSS_LE is not set
@@ -1652,6 +1630,7 @@ CONFIG_ETHERNET=y
# CONFIG_NET_VENDOR_CAVIUM is not set
# CONFIG_NET_VENDOR_CHELSIO is not set
# CONFIG_NET_VENDOR_CISCO is not set
# CONFIG_NET_VENDOR_CORTINA is not set
# CONFIG_DNET is not set
# CONFIG_NET_VENDOR_DEC is not set
# CONFIG_NET_VENDOR_DLINK is not set
@@ -1681,6 +1660,7 @@ CONFIG_MLX5_ESWITCH=y
# CONFIG_FEALNX is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_NETRONOME is not set
CONFIG_NET_VENDOR_NI=y
# CONFIG_NET_VENDOR_NVIDIA is not set
# CONFIG_NET_VENDOR_OKI is not set
# CONFIG_ETHOC is not set
@@ -1697,6 +1677,7 @@ CONFIG_MLX5_ESWITCH=y
# CONFIG_NET_VENDOR_SIS is not set
# CONFIG_NET_VENDOR_SOLARFLARE is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_SOCIONEXT is not set
# CONFIG_NET_VENDOR_STMICRO is not set
# CONFIG_NET_VENDOR_SUN is not set
# CONFIG_NET_VENDOR_TEHUTI is not set
@@ -1772,7 +1753,6 @@ CONFIG_SMSGIUCV_EVENT=m
CONFIG_QETH=y
CONFIG_QETH_L2=y
CONFIG_QETH_L3=y
CONFIG_QETH_IPV6=y
CONFIG_CCWGROUP=y
#
@@ -1784,6 +1764,7 @@ CONFIG_CCWGROUP=y
#
# CONFIG_WAN is not set
# CONFIG_VMXNET3 is not set
# CONFIG_NETDEVSIM is not set
# CONFIG_NVM is not set
#
@@ -1864,6 +1845,11 @@ CONFIG_SERIO_LIBPS2=y
# Character devices
#
CONFIG_TTY=y
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_SERIAL_NONSTANDARD is not set
@@ -1898,13 +1884,13 @@ CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_HW_RANDOM_TPM=y
CONFIG_HW_RANDOM_S390=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HANGCHECK_TIMER is not set
CONFIG_TCG_TPM=y
CONFIG_HW_RANDOM_TPM=y
# CONFIG_TCG_TIS_I2C_ATMEL is not set
# CONFIG_TCG_TIS_I2C_INFINEON is not set
# CONFIG_TCG_TIS_I2C_NUVOTON is not set
@@ -1992,7 +1978,6 @@ CONFIG_I2C_HELPER_AUTO=y
# CONFIG_I2C_DESIGNWARE_PCI is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_PXA_PCI is not set
# CONFIG_I2C_SIMTEC is not set
# CONFIG_I2C_XILINX is not set
@@ -2057,7 +2042,6 @@ CONFIG_POWER_SUPPLY=y
# CONFIG_CHARGER_SMB347 is not set
# CONFIG_BATTERY_GAUGE_LTC2941 is not set
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
#
@@ -2149,7 +2133,6 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SCH56XX_COMMON is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SMM665 is not set
# CONFIG_SENSORS_ADC128D818 is not set
@@ -2169,6 +2152,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT1211 is not set
# CONFIG_SENSORS_VT8231 is not set
# CONFIG_SENSORS_W83773G is not set
# CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83791D is not set
# CONFIG_SENSORS_W83792D is not set
@@ -2179,6 +2163,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
CONFIG_THERMAL=y
# CONFIG_THERMAL_STATISTICS is not set
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
CONFIG_THERMAL_HWMON=y
# CONFIG_THERMAL_WRITABLE_TRIPS is not set
@@ -2199,10 +2184,6 @@ CONFIG_THERMAL_GOV_STEP_WISE=y
#
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
CONFIG_BCMA_POSSIBLE=y
# CONFIG_BCMA is not set
@@ -2210,7 +2191,6 @@ CONFIG_BCMA_POSSIBLE=y
#
# Multifunction device drivers
#
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_AS3711 is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_BCM590XX is not set
@@ -2243,7 +2223,6 @@ CONFIG_BCMA_POSSIBLE=y
# CONFIG_MFD_RETU is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_MFD_RDC321X is not set
# CONFIG_MFD_RTSX_PCI is not set
# CONFIG_MFD_RT5033 is not set
# CONFIG_MFD_RC5T583 is not set
# CONFIG_MFD_SEC_CORE is not set
@@ -2270,7 +2249,6 @@ CONFIG_BCMA_POSSIBLE=y
# CONFIG_TWL6040_CORE is not set
# CONFIG_MFD_WL1273_CORE is not set
# CONFIG_MFD_LM3533 is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_MFD_VX855 is not set
# CONFIG_MFD_ARIZONA_I2C is not set
# CONFIG_MFD_WM8400 is not set
@@ -2293,8 +2271,6 @@ CONFIG_BCMA_POSSIBLE=y
#
# AMD Library routines
#
# CONFIG_CHASH is not set
# CONFIG_DRM_LIB_RANDOM is not set
#
# Frame buffer Devices
@@ -2303,21 +2279,7 @@ CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_CMDLINE=y
CONFIG_FB_NOTIFY=y
# CONFIG_FB_DDC is not set
# CONFIG_FB_BOOT_VESA_SUPPORT is not set
# CONFIG_FB_CFB_FILLRECT is not set
# CONFIG_FB_CFB_COPYAREA is not set
# CONFIG_FB_CFB_IMAGEBLIT is not set
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA is not set
# CONFIG_FB_FOREIGN_ENDIAN is not set
# CONFIG_FB_SYS_FOPS is not set
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
@@ -2359,7 +2321,14 @@ CONFIG_FB_NOTIFY=y
# CONFIG_FB_SIMPLE is not set
# CONFIG_FB_SM712 is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
# CONFIG_VGASTATE is not set
#
# Console display driver support
#
CONFIG_DUMMY_CONSOLE=y
CONFIG_DUMMY_CONSOLE_COLUMNS=80
CONFIG_DUMMY_CONSOLE_ROWS=25
# CONFIG_FRAMEBUFFER_CONSOLE is not set
# CONFIG_LOGO is not set
# CONFIG_SOUND is not set
@@ -2396,6 +2365,7 @@ CONFIG_HID_GENERIC=y
# CONFIG_HID_GYRATION is not set
# CONFIG_HID_ICADE is not set
# CONFIG_HID_ITE is not set
# CONFIG_HID_JABRA is not set
# CONFIG_HID_TWINHAN is not set
# CONFIG_HID_KENSINGTON is not set
# CONFIG_HID_LCPOWER is not set
@@ -2463,10 +2433,7 @@ CONFIG_UIO=m
# CONFIG_VFIO is not set
# CONFIG_VIRT_DRIVERS is not set
CONFIG_VIRTIO=y
#
# Virtio drivers
#
CONFIG_VIRTIO_MENU=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=y
@@ -2477,18 +2444,12 @@ CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
#
# Microsoft Hyper-V guest support
#
# CONFIG_HYPERV_TSCPAGE is not set
# CONFIG_STAGING is not set
# CONFIG_HWSPINLOCK is not set
#
# Clock Source drivers
#
# CONFIG_ATMEL_PIT is not set
# CONFIG_SH_TIMER_CMT is not set
# CONFIG_SH_TIMER_MTU2 is not set
# CONFIG_SH_TIMER_TMU is not set
# CONFIG_EM_TIMER_STI is not set
CONFIG_MAILBOX=y
# CONFIG_ALTERA_MBOX is not set
CONFIG_IOMMU_API=y
@@ -2510,6 +2471,7 @@ CONFIG_S390_IOMMU=y
#
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_SOUNDWIRE is not set
#
# SOC (System On Chip) specific Drivers
@@ -2530,8 +2492,12 @@ CONFIG_S390_IOMMU=y
#
# Qualcomm SoC drivers
#
# CONFIG_SUNXI_SRAM is not set
# CONFIG_SOC_TI is not set
#
# Xilinx SoC drivers
#
# CONFIG_XILINX_VCU is not set
CONFIG_PM_DEVFREQ=y
#
@@ -2558,22 +2524,9 @@ CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
# IRQ chip support
#
CONFIG_ARM_GIC_MAX_NR=1
# CONFIG_ARM_GIC_V3_ITS is not set
# CONFIG_IPACK_BUS is not set
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_ATH79 is not set
# CONFIG_RESET_AXS10X is not set
# CONFIG_RESET_BERLIN is not set
# CONFIG_RESET_IMX7 is not set
# CONFIG_RESET_LANTIQ is not set
# CONFIG_RESET_LPC18XX is not set
# CONFIG_RESET_MESON is not set
# CONFIG_RESET_PISTACHIO is not set
# CONFIG_RESET_SIMPLE is not set
# CONFIG_RESET_SUNXI is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RESET_ZYNQ is not set
# CONFIG_RESET_TEGRA_BPMP is not set
# CONFIG_FMC is not set
#
@@ -2596,18 +2549,20 @@ CONFIG_GENERIC_PHY=y
#
# CONFIG_ANDROID is not set
# CONFIG_LIBNVDIMM is not set
CONFIG_DAX_DRIVER=y
CONFIG_DAX=y
# CONFIG_DEV_DAX is not set
# CONFIG_NVMEM is not set
#
# HW tracing support
#
# CONFIG_STM is not set
# CONFIG_INTEL_TH is not set
# CONFIG_FPGA is not set
#
# FSI support
#
# CONFIG_FSI is not set
CONFIG_PM_OPP=y
# CONFIG_SIOX is not set
# CONFIG_SLIMBUS is not set
#
# File systems
@@ -2644,6 +2599,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
# CONFIG_NILFS2_FS is not set
# CONFIG_F2FS_FS is not set
# CONFIG_FS_DAX is not set
CONFIG_FS_DAX_LIMITED=y
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
# CONFIG_EXPORTFS_BLOCK_OPS is not set
@@ -2669,6 +2625,7 @@ CONFIG_OVERLAY_FS=y
# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
# CONFIG_OVERLAY_FS_INDEX is not set
# CONFIG_OVERLAY_FS_XINO_AUTO is not set
#
# Caches
@@ -2749,16 +2706,20 @@ CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_MINIX_FS_NATIVE_ENDIAN is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX6FS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_PSTORE=y
CONFIG_PSTORE_ZLIB_COMPRESS=y
CONFIG_PSTORE_DEFLATE_COMPRESS=y
# CONFIG_PSTORE_LZO_COMPRESS is not set
# CONFIG_PSTORE_LZ4_COMPRESS is not set
# CONFIG_PSTORE_LZ4HC_COMPRESS is not set
# CONFIG_PSTORE_842_COMPRESS is not set
CONFIG_PSTORE_COMPRESS=y
CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y
CONFIG_PSTORE_COMPRESS_DEFAULT="deflate"
# CONFIG_PSTORE_CONSOLE is not set
# CONFIG_PSTORE_PMSG is not set
# CONFIG_PSTORE_FTRACE is not set
@@ -2817,7 +2778,6 @@ CONFIG_CIFS_DEBUG=y
CONFIG_CIFS_DFS_UPCALL=y
# CONFIG_CIFS_SMB311 is not set
CONFIG_CIFS_FSCACHE=y
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
CONFIG_9P_FS=y
@@ -2956,13 +2916,15 @@ CONFIG_SCHED_INFO=y
#
# Lock Debugging (spinlocks, mutexes, etc...)
#
CONFIG_LOCK_DEBUGGING_SUPPORT=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
# CONFIG_DEBUG_RWSEMS is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_LOCK_TORTURE_TEST is not set
@@ -2980,8 +2942,6 @@ CONFIG_DEBUG_CREDENTIALS=y
#
# RCU Debugging
#
# CONFIG_PROVE_RCU is not set
# CONFIG_TORTURE_TEST is not set
# CONFIG_RCU_PERF_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=60
@@ -3035,10 +2995,7 @@ CONFIG_FTRACE_MCOUNT_RECORD=y
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
# CONFIG_TRACE_EVAL_MAP_FILE is not set
# CONFIG_DMA_API_DEBUG is not set
#
# Runtime Testing
#
CONFIG_RUNTIME_TESTING_MENU=y
# CONFIG_LKDTM is not set
# CONFIG_TEST_LIST_SORT is not set
# CONFIG_TEST_SORT is not set
@@ -3059,7 +3016,7 @@ CONFIG_FTRACE_MCOUNT_RECORD=y
# CONFIG_TEST_LKM is not set
# CONFIG_TEST_USER_COPY is not set
# CONFIG_TEST_BPF is not set
# CONFIG_TEST_FIND_BIT is not set
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_TEST_FIRMWARE is not set
# CONFIG_TEST_SYSCTL is not set
# CONFIG_TEST_UDELAY is not set
@@ -3074,6 +3031,7 @@ CONFIG_UBSAN=y
# CONFIG_UBSAN_SANITIZE_ALL is not set
# CONFIG_UBSAN_ALIGNMENT is not set
# CONFIG_UBSAN_NULL is not set
# CONFIG_TEST_UBSAN is not set
CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
CONFIG_STRICT_DEVMEM=y
# CONFIG_IO_STRICT_DEVMEM is not set
@@ -3092,13 +3050,13 @@ CONFIG_ENCRYPTED_KEYS=y
CONFIG_KEY_DH_OPERATIONS=y
CONFIG_SECURITY_DMESG_RESTRICT=y
CONFIG_SECURITY=y
# CONFIG_SECURITY_WRITABLE_HOOKS is not set
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_PATH=y
CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
CONFIG_HARDENED_USERCOPY=y
CONFIG_HARDENED_USERCOPY_FALLBACK=y
# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set
CONFIG_FORTIFY_SOURCE=y
CONFIG_STATIC_USERMODEHELPER=y
@@ -3185,6 +3143,7 @@ CONFIG_CRYPTO_ECHAINIV=y
# Block modes
#
CONFIG_CRYPTO_CBC=y
# CONFIG_CRYPTO_CFB is not set
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_ECB=y
@@ -3244,6 +3203,8 @@ CONFIG_CRYPTO_SALSA20=y
CONFIG_CRYPTO_CHACHA20=y
CONFIG_CRYPTO_SEED=y
CONFIG_CRYPTO_SERPENT=y
# CONFIG_CRYPTO_SM4 is not set
# CONFIG_CRYPTO_SPECK is not set
CONFIG_CRYPTO_TEA=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_TWOFISH_COMMON=y
@@ -3283,7 +3244,6 @@ CONFIG_CRYPTO_HW=y
CONFIG_S390_PRNG=m
# CONFIG_CRYPTO_GHASH_S390 is not set
# CONFIG_CRYPTO_CRC32_S390 is not set
# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set
# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_ASYMMETRIC_KEY_TYPE=y
@@ -3303,7 +3263,6 @@ CONFIG_BINARY_PRINTF=y
#
CONFIG_RAID6_PQ=m
CONFIG_BITREVERSE=y
# CONFIG_HAVE_ARCH_BITREVERSE is not set
CONFIG_GENERIC_NET_UTILS=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
@@ -3322,7 +3281,6 @@ CONFIG_CRC32_SLICEBY8=y
CONFIG_LIBCRC32C=y
# CONFIG_CRC8 is not set
CONFIG_XXHASH=m
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_842_COMPRESS=y
CONFIG_842_DECOMPRESS=y
@@ -3352,8 +3310,8 @@ CONFIG_TEXTSEARCH_FSM=y
CONFIG_RADIX_TREE_MULTIORDER=y
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_HAS_DMA=y
CONFIG_DMA_NOOP_OPS=y
# CONFIG_DMA_VIRT_OPS is not set
CONFIG_SGL_ALLOC=y
CONFIG_DMA_DIRECT_OPS=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_CPU_RMAP=y
CONFIG_DQL=y
@@ -3368,7 +3326,6 @@ CONFIG_CLZ_TAB=y
CONFIG_MPILIB=y
CONFIG_SIGNATURE=y
CONFIG_OID_REGISTRY=y
# CONFIG_SG_SPLIT is not set
CONFIG_SG_POOL=y
CONFIG_ARCH_HAS_SG_CHAIN=y
CONFIG_SBITMAP=y
@@ -3391,6 +3348,7 @@ CONFIG_KVM_ASYNC_PF_SYNC=y
CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
CONFIG_KVM_VFIO=y
CONFIG_HAVE_KVM_INVALID_WAKEUPS=y
CONFIG_HAVE_KVM_VCPU_ASYNC_IOCTL=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=y
# CONFIG_KVM_S390_UCONTROL is not set

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 4.4.126 Kernel Configuration
# Linux/x86 4.4.139 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
@@ -36,7 +36,6 @@ CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_X86_64_SMP=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_PGTABLE_LEVELS=4
@@ -184,6 +183,7 @@ CONFIG_RD_GZIP=y
# CONFIG_RD_XZ is not set
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
@@ -1124,7 +1124,14 @@ CONFIG_BRIDGE_EBT_SNAT=y
CONFIG_BRIDGE_EBT_LOG=y
CONFIG_BRIDGE_EBT_NFLOG=y
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
CONFIG_IP_SCTP=m
# CONFIG_NET_SCTPPROBE is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_COOKIE_HMAC_SHA1 is not set
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
@@ -1232,7 +1239,8 @@ CONFIG_VSOCKETS=y
CONFIG_NETLINK_DIAG=y
CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
# CONFIG_MPLS_ROUTING is not set
CONFIG_MPLS_ROUTING=m
CONFIG_MPLS_IPTUNNEL=m
# CONFIG_HSR is not set
CONFIG_NET_SWITCHDEV=y
CONFIG_NET_L3_MASTER_DEV=y
@@ -2619,7 +2627,22 @@ CONFIG_USB_UHCI_HCD=m
#
# also be needed; see USB_STORAGE Help for more info
#
# CONFIG_USB_STORAGE is not set
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_UAS is not set
#
# USB Imaging devices

View File

@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 4.9.92 Kernel Configuration
# Linux/x86 4.9.111 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
@@ -1189,7 +1189,15 @@ CONFIG_BRIDGE_EBT_SNAT=y
CONFIG_BRIDGE_EBT_LOG=y
CONFIG_BRIDGE_EBT_NFLOG=y
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
CONFIG_IP_SCTP=m
# CONFIG_NET_SCTPPROBE is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_COOKIE_HMAC_SHA1 is not set
CONFIG_INET_SCTP_DIAG=m
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
@@ -1304,7 +1312,8 @@ CONFIG_HYPERV_SOCK=y
CONFIG_NETLINK_DIAG=y
CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
# CONFIG_MPLS_ROUTING is not set
CONFIG_MPLS_ROUTING=m
CONFIG_MPLS_IPTUNNEL=m
# CONFIG_HSR is not set
CONFIG_NET_SWITCHDEV=y
CONFIG_NET_L3_MASTER_DEV=y
@@ -2743,7 +2752,22 @@ CONFIG_USB_UHCI_HCD=m
#
# also be needed; see USB_STORAGE Help for more info
#
# CONFIG_USB_STORAGE is not set
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_UAS is not set
#
# USB Imaging devices

View File

@@ -0,0 +1,59 @@
From 1f9863a3348be088896f745bca5cf5a31d1d2c96 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Wed, 11 Apr 2018 11:27:44 +0200
Subject: [PATCH 001/418] Revert mm/vmstat.c: fix vmstat_update() preemption
BUG
commit 97731753d44d5efcb95b994dc952c0e8195b3e96 upstream
This patch reverts commit c7f26ccfb2c3 ("mm/vmstat.c: fix
vmstat_update() preemption BUG").
Steven saw a "using smp_processor_id() in preemptible" message and
added a preempt_disable() section around it to keep it quiet. This is
not the right thing to do it does not fix the real problem.
vmstat_update() is invoked by a kworker on a specific CPU. This worker
it bound to this CPU. The name of the worker was "kworker/1:1" so it
should have been a worker which was bound to CPU1. A worker which can
run on any CPU would have a `u' before the first digit.
smp_processor_id() can be used in a preempt-enabled region as long as
the task is bound to a single CPU which is the case here. If it could
run on an arbitrary CPU then this is the problem we have an should seek
to resolve.
Not only this smp_processor_id() must not be migrated to another CPU but
also refresh_cpu_vm_stats() which might access wrong per-CPU variables.
Not to mention that other code relies on the fact that such a worker
runs on one specific CPU only.
Therefore I revert that commit and we should look instead what broke the
affinity mask of the kworker.
Cc: Steven J. Hill <steven.hill@cavium.com>
Cc: Tejun Heo <htejun@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
mm/vmstat.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/mm/vmstat.c b/mm/vmstat.c
index e085b13c572e..4bb13e72ac97 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1770,11 +1770,9 @@ static void vmstat_update(struct work_struct *w)
* to occur in the future. Keep on running the
* update worker thread.
*/
- preempt_disable();
queue_delayed_work_on(smp_processor_id(), mm_percpu_wq,
this_cpu_ptr(&vmstat_work),
round_jiffies_relative(sysctl_stat_interval));
- preempt_enable();
}
}
--
2.17.1

View File

@@ -1,7 +1,8 @@
From 0ff9e891f4b361a8909d6f062f5137f041d6adaa Mon Sep 17 00:00:00 2001
From: Boqun Feng <boqun.feng@gmail.com>
Date: Fri, 9 Mar 2018 14:56:28 +0800
Subject: [PATCH] rtmutex: Make rt_mutex_futex_unlock() safe for irq-off
callsites
Subject: [PATCH 002/418] rtmutex: Make rt_mutex_futex_unlock() safe for
irq-off callsites
Upstream commit 6b0ef92fee2a3189eba6d6b827b247cb4f6da7e9
@@ -99,12 +100,14 @@ Cc: "Paul E . McKenney" <paulmck@linux.vnet.ibm.com>
Link: https://lkml.kernel.org/r/20180309065630.8283-1-boqun.feng@gmail.com
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/locking/rtmutex.c | 5 +++--
kernel/locking/rtmutex.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index 65cc0cb984e6..940633c63254 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -1616,11 +1616,12 @@ bool __sched __rt_mutex_futex_unlock(str
@@ -1616,11 +1616,12 @@ bool __sched __rt_mutex_futex_unlock(struct rt_mutex *lock,
void __sched rt_mutex_futex_unlock(struct rt_mutex *lock)
{
DEFINE_WAKE_Q(wake_q);
@@ -119,3 +122,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (postunlock)
rt_mutex_postunlock(&wake_q);
--
2.17.1

View File

@@ -1,6 +1,8 @@
From 7b28fe258efc9f3d9dbac60f39826d57845ff991 Mon Sep 17 00:00:00 2001
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date: Tue, 19 Sep 2017 15:36:42 -0700
Subject: [PATCH] rcu: Suppress lockdep false-positive ->boost_mtx complaints
Subject: [PATCH 003/418] rcu: Suppress lockdep false-positive ->boost_mtx
complaints
Upstream commit bcda31a2659497df39d6bedfbdf17498b4f4ac89
@@ -20,9 +22,11 @@ Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/rcu/tree_plugin.h | 5 ++---
kernel/rcu/tree_plugin.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index 8b3102d22823..181e2487c8b8 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -31,11 +31,10 @@
@@ -38,7 +42,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Control variables for per-CPU and per-rcu_node kthreads. These
* handle all flavors of RCU.
@@ -530,7 +529,7 @@ void rcu_read_unlock_special(struct task
@@ -530,7 +529,7 @@ void rcu_read_unlock_special(struct task_struct *t)
/* Unboost if we were boosted. */
if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex)
@@ -47,3 +51,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* If this was the last task on the expedited lists,
--
2.17.1

View File

@@ -1,6 +1,7 @@
From e90c5da25d3a76acf44c248eb76fe0b6794174dd Mon Sep 17 00:00:00 2001
From: Mikulas Patocka <mpatocka@redhat.com>
Date: Fri, 10 Nov 2017 12:29:34 -0500
Subject: [PATCH] brd: remove unused brd_mutex
Subject: [PATCH 004/418] brd: remove unused brd_mutex
Upstream commit 15f7b41f70ddcca3b555bd0fdc7c8da7466b517e
@@ -11,9 +12,11 @@ Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
drivers/block/brd.c | 1 -
drivers/block/brd.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/block/brd.c b/drivers/block/brd.c
index 2d7178f7754e..c1cf87718c2e 100644
--- a/drivers/block/brd.c
+++ b/drivers/block/brd.c
@@ -60,7 +60,6 @@ struct brd_device {
@@ -24,3 +27,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static struct page *brd_lookup_page(struct brd_device *brd, sector_t sector)
{
pgoff_t idx;
--
2.17.1

View File

@@ -0,0 +1,44 @@
From 36d6a35ae79ce5699704c987d3b4d3eb2de6e7db Mon Sep 17 00:00:00 2001
From: Christoffer Dall <christoffer.dall@linaro.org>
Date: Fri, 8 Sep 2017 07:07:13 -0700
Subject: [PATCH 005/418] KVM: arm/arm64: Remove redundant preemptible checks
Upstream commit 5a24575032971c5a9a4580417a791c427ebdb8e5
The __this_cpu_read() and __this_cpu_write() functions already implement
checks for the required preemption levels when using
CONFIG_DEBUG_PREEMPT which gives you nice error messages and such.
Therefore there is no need to explicitly check this using a BUG_ON() in
the code (which we don't do for other uses of per cpu variables either).
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
virt/kvm/arm/arm.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
index 9bee849db682..0c5d846ba809 100644
--- a/virt/kvm/arm/arm.c
+++ b/virt/kvm/arm/arm.c
@@ -69,7 +69,6 @@ static DEFINE_PER_CPU(unsigned char, kvm_arm_hardware_enabled);
static void kvm_arm_set_running_vcpu(struct kvm_vcpu *vcpu)
{
- BUG_ON(preemptible());
__this_cpu_write(kvm_arm_running_vcpu, vcpu);
}
@@ -79,7 +78,6 @@ static void kvm_arm_set_running_vcpu(struct kvm_vcpu *vcpu)
*/
struct kvm_vcpu *kvm_arm_get_running_vcpu(void)
{
- BUG_ON(preemptible());
return __this_cpu_read(kvm_arm_running_vcpu);
}
--
2.17.1

View File

@@ -0,0 +1,68 @@
From c9e312daee80f74ba3e2b50da2ea33336f6846e8 Mon Sep 17 00:00:00 2001
From: Tejun Heo <tj@kernel.org>
Date: Tue, 9 Jan 2018 07:21:15 -0800
Subject: [PATCH 006/418] string: drop __must_check from strscpy() and restore
strscpy() usages in cgroup
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Upstream commit 08a77676f9c5fc69a681ccd2cd8140e65dcb26c7
e7fd37ba1217 ("cgroup: avoid copying strings longer than the buffers")
converted possibly unsafe strncpy() usages in cgroup to strscpy().
However, although the callsites are completely fine with truncated
copied, because strscpy() is marked __must_check, it led to the
following warnings.
kernel/cgroup/cgroup.c: In function cgroup_file_name:
kernel/cgroup/cgroup.c:1400:10: warning: ignoring return value of strscpy, declared with attribute warn_unused_result [-Wunused-result]
strscpy(buf, cft->name, CGROUP_FILE_NAME_MAX);
^
To avoid the warnings, 50034ed49645 ("cgroup: use strlcpy() instead of
strscpy() to avoid spurious warning") switched them to strlcpy().
strlcpy() is worse than strlcpy() because it unconditionally runs
strlen() on the source string, and the only reason we switched to
strlcpy() here was because it was lacking __must_check, which doesn't
reflect any material differences between the two function. It's just
that someone added __must_check to strscpy() and not to strlcpy().
These basic string copy operations are used in variety of ways, and
one of not-so-uncommon use cases is safely handling truncated copies,
where the caller naturally doesn't care about the return value. The
__must_check doesn't match the actual use cases and forces users to
opt for inferior variants which lack __must_check by happenstance or
spread ugly (void) casts.
Remove __must_check from strscpy() and restore strscpy() usages in
cgroup.
Signed-off-by: Tejun Heo <tj@kernel.org>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ma Shimiao <mashimiao.fnst@cn.fujitsu.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Chris Metcalf <cmetcalf@ezchip.com>
[bigeasy: drop the cgroup.c hunk]
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/string.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/string.h b/include/linux/string.h
index cfd83eb2f926..96115bf561b4 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -28,7 +28,7 @@ extern char * strncpy(char *,const char *, __kernel_size_t);
size_t strlcpy(char *, const char *, size_t);
#endif
#ifndef __HAVE_ARCH_STRSCPY
-ssize_t __must_check strscpy(char *, const char *, size_t);
+ssize_t strscpy(char *, const char *, size_t);
#endif
#ifndef __HAVE_ARCH_STRCAT
extern char * strcat(char *, const char *);
--
2.17.1

View File

@@ -0,0 +1,180 @@
From 5217a4b31298b5ff1082bd88e6ac8054780b6aaf Mon Sep 17 00:00:00 2001
From: Scott Wood <swood@redhat.com>
Date: Sun, 21 Jan 2018 03:28:54 -0600
Subject: [PATCH 007/418] iommu/amd: Use raw locks on atomic context paths
Upstream commit 27790398c2aed917828dc3c6f81240d57f1584c9
Several functions in this driver are called from atomic context,
and thus raw locks must be used in order to be safe on PREEMPT_RT.
This includes paths that must wait for command completion, which is
a potential PREEMPT_RT latency concern but not easily avoidable.
Signed-off-by: Scott Wood <swood@redhat.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 30 +++++++++++++++---------------
drivers/iommu/amd_iommu_init.c | 2 +-
drivers/iommu/amd_iommu_types.h | 4 ++--
3 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 10190e361a13..ff50337fe3ba 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -1056,9 +1056,9 @@ static int iommu_queue_command_sync(struct amd_iommu *iommu,
unsigned long flags;
int ret;
- spin_lock_irqsave(&iommu->lock, flags);
+ raw_spin_lock_irqsave(&iommu->lock, flags);
ret = __iommu_queue_command_sync(iommu, cmd, sync);
- spin_unlock_irqrestore(&iommu->lock, flags);
+ raw_spin_unlock_irqrestore(&iommu->lock, flags);
return ret;
}
@@ -1084,7 +1084,7 @@ static int iommu_completion_wait(struct amd_iommu *iommu)
build_completion_wait(&cmd, (u64)&iommu->cmd_sem);
- spin_lock_irqsave(&iommu->lock, flags);
+ raw_spin_lock_irqsave(&iommu->lock, flags);
iommu->cmd_sem = 0;
@@ -1095,7 +1095,7 @@ static int iommu_completion_wait(struct amd_iommu *iommu)
ret = wait_on_sem(&iommu->cmd_sem);
out_unlock:
- spin_unlock_irqrestore(&iommu->lock, flags);
+ raw_spin_unlock_irqrestore(&iommu->lock, flags);
return ret;
}
@@ -3620,7 +3620,7 @@ static struct irq_remap_table *get_irq_table(u16 devid, bool ioapic)
goto out_unlock;
/* Initialize table spin-lock */
- spin_lock_init(&table->lock);
+ raw_spin_lock_init(&table->lock);
if (ioapic)
/* Keep the first 32 indexes free for IOAPIC interrupts */
@@ -3679,7 +3679,7 @@ static int alloc_irq_index(u16 devid, int count)
if (!table)
return -ENODEV;
- spin_lock_irqsave(&table->lock, flags);
+ raw_spin_lock_irqsave(&table->lock, flags);
/* Scan table for free entries */
for (c = 0, index = table->min_index;
@@ -3702,7 +3702,7 @@ static int alloc_irq_index(u16 devid, int count)
index = -ENOSPC;
out:
- spin_unlock_irqrestore(&table->lock, flags);
+ raw_spin_unlock_irqrestore(&table->lock, flags);
return index;
}
@@ -3723,7 +3723,7 @@ static int modify_irte_ga(u16 devid, int index, struct irte_ga *irte,
if (!table)
return -ENOMEM;
- spin_lock_irqsave(&table->lock, flags);
+ raw_spin_lock_irqsave(&table->lock, flags);
entry = (struct irte_ga *)table->table;
entry = &entry[index];
@@ -3734,7 +3734,7 @@ static int modify_irte_ga(u16 devid, int index, struct irte_ga *irte,
if (data)
data->ref = entry;
- spin_unlock_irqrestore(&table->lock, flags);
+ raw_spin_unlock_irqrestore(&table->lock, flags);
iommu_flush_irt(iommu, devid);
iommu_completion_wait(iommu);
@@ -3756,9 +3756,9 @@ static int modify_irte(u16 devid, int index, union irte *irte)
if (!table)
return -ENOMEM;
- spin_lock_irqsave(&table->lock, flags);
+ raw_spin_lock_irqsave(&table->lock, flags);
table->table[index] = irte->val;
- spin_unlock_irqrestore(&table->lock, flags);
+ raw_spin_unlock_irqrestore(&table->lock, flags);
iommu_flush_irt(iommu, devid);
iommu_completion_wait(iommu);
@@ -3780,9 +3780,9 @@ static void free_irte(u16 devid, int index)
if (!table)
return;
- spin_lock_irqsave(&table->lock, flags);
+ raw_spin_lock_irqsave(&table->lock, flags);
iommu->irte_ops->clear_allocated(table, index);
- spin_unlock_irqrestore(&table->lock, flags);
+ raw_spin_unlock_irqrestore(&table->lock, flags);
iommu_flush_irt(iommu, devid);
iommu_completion_wait(iommu);
@@ -4361,7 +4361,7 @@ int amd_iommu_update_ga(int cpu, bool is_run, void *data)
if (!irt)
return -ENODEV;
- spin_lock_irqsave(&irt->lock, flags);
+ raw_spin_lock_irqsave(&irt->lock, flags);
if (ref->lo.fields_vapic.guest_mode) {
if (cpu >= 0)
@@ -4370,7 +4370,7 @@ int amd_iommu_update_ga(int cpu, bool is_run, void *data)
barrier();
}
- spin_unlock_irqrestore(&irt->lock, flags);
+ raw_spin_unlock_irqrestore(&irt->lock, flags);
iommu_flush_irt(iommu, devid);
iommu_completion_wait(iommu);
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 6fe2d0346073..e3cd81b32a33 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -1474,7 +1474,7 @@ static int __init init_iommu_one(struct amd_iommu *iommu, struct ivhd_header *h)
{
int ret;
- spin_lock_init(&iommu->lock);
+ raw_spin_lock_init(&iommu->lock);
/* Add IOMMU to internal data structures */
list_add_tail(&iommu->list, &amd_iommu_list);
diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h
index f6b24c7d8b70..7521745dc2a5 100644
--- a/drivers/iommu/amd_iommu_types.h
+++ b/drivers/iommu/amd_iommu_types.h
@@ -406,7 +406,7 @@ extern bool amd_iommu_iotlb_sup;
#define IRQ_TABLE_ALIGNMENT 128
struct irq_remap_table {
- spinlock_t lock;
+ raw_spinlock_t lock;
unsigned min_index;
u32 *table;
};
@@ -488,7 +488,7 @@ struct amd_iommu {
int index;
/* locks the accesses to the hardware */
- spinlock_t lock;
+ raw_spinlock_t lock;
/* Pointer to PCI device of this IOMMU */
struct pci_dev *dev;
--
2.17.1

View File

@@ -0,0 +1,38 @@
From f139b736cc22cafcb207795386fe46e0a8fea151 Mon Sep 17 00:00:00 2001
From: Scott Wood <swood@redhat.com>
Date: Sun, 28 Jan 2018 14:22:19 -0600
Subject: [PATCH 008/418] iommu/amd: Don't use dev_data in
irte_ga_set_affinity()
Upstream commit 01ee04badefd296eb7a4430497373be9b7b16783
search_dev_data() acquires a non-raw lock, which can't be done
from atomic context on PREEMPT_RT. There is no need to look at
dev_data because guest_mode should never be set if use_vapic is
not set.
Signed-off-by: Scott Wood <swood@redhat.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index ff50337fe3ba..388ec5e98ef5 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -3863,10 +3863,8 @@ static void irte_ga_set_affinity(void *entry, u16 devid, u16 index,
u8 vector, u32 dest_apicid)
{
struct irte_ga *irte = (struct irte_ga *) entry;
- struct iommu_dev_data *dev_data = search_dev_data(devid);
- if (!dev_data || !dev_data->use_vapic ||
- !irte->lo.fields_remap.guest_mode) {
+ if (!irte->lo.fields_remap.guest_mode) {
irte->hi.fields.vector = vector;
irte->lo.fields_remap.destination = dest_apicid;
modify_irte_ga(devid, index, irte, NULL);
--
2.17.1

View File

@@ -0,0 +1,122 @@
From eec0129e06a60a46f1f09a329f850a248af0e4ea Mon Sep 17 00:00:00 2001
From: Scott Wood <swood@redhat.com>
Date: Wed, 14 Feb 2018 17:36:28 -0600
Subject: [PATCH 009/418] iommu/amd: Avoid locking get_irq_table() from atomic
context
Upstream commit df42a04b15f19a842393dc98a84cbc52b1f8ed49
get_irq_table() previously acquired amd_iommu_devtable_lock which is not
a raw lock, and thus cannot be acquired from atomic context on
PREEMPT_RT. Many calls to modify_irte*() come from atomic context due to
the IRQ desc->lock, as does amd_iommu_update_ga() due to the preemption
disabling in vcpu_load/put().
The only difference between calling get_irq_table() and reading from
irq_lookup_table[] directly, other than the lock acquisition and
amd_iommu_rlookup_table[] check, is if the table entry is unpopulated,
which should never happen when looking up a devid that came from an
irq_2_irte struct, as get_irq_table() would have already been called on
that devid during irq_remapping_alloc().
The lock acquisition is not needed in these cases because entries in
irq_lookup_table[] never change once non-NULL -- nor would the
amd_iommu_devtable_lock usage in get_irq_table() provide meaningful
protection if they did, since it's released before using the looked up
table in the get_irq_table() caller.
Rename the old get_irq_table() to alloc_irq_table(), and create a new
lockless get_irq_table() to be used in non-allocating contexts that WARNs
if it doesn't find what it's looking for.
Signed-off-by: Scott Wood <swood@redhat.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 29 ++++++++++++++++++++++-------
1 file changed, 22 insertions(+), 7 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 388ec5e98ef5..e42992fcebca 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -3588,7 +3588,22 @@ static void set_dte_irq_entry(u16 devid, struct irq_remap_table *table)
amd_iommu_dev_table[devid].data[2] = dte;
}
-static struct irq_remap_table *get_irq_table(u16 devid, bool ioapic)
+static struct irq_remap_table *get_irq_table(u16 devid)
+{
+ struct irq_remap_table *table;
+
+ if (WARN_ONCE(!amd_iommu_rlookup_table[devid],
+ "%s: no iommu for devid %x\n", __func__, devid))
+ return NULL;
+
+ table = irq_lookup_table[devid];
+ if (WARN_ONCE(!table, "%s: no table for devid %x\n", __func__, devid))
+ return NULL;
+
+ return table;
+}
+
+static struct irq_remap_table *alloc_irq_table(u16 devid, bool ioapic)
{
struct irq_remap_table *table = NULL;
struct amd_iommu *iommu;
@@ -3675,7 +3690,7 @@ static int alloc_irq_index(u16 devid, int count)
if (!iommu)
return -ENODEV;
- table = get_irq_table(devid, false);
+ table = alloc_irq_table(devid, false);
if (!table)
return -ENODEV;
@@ -3719,7 +3734,7 @@ static int modify_irte_ga(u16 devid, int index, struct irte_ga *irte,
if (iommu == NULL)
return -EINVAL;
- table = get_irq_table(devid, false);
+ table = get_irq_table(devid);
if (!table)
return -ENOMEM;
@@ -3752,7 +3767,7 @@ static int modify_irte(u16 devid, int index, union irte *irte)
if (iommu == NULL)
return -EINVAL;
- table = get_irq_table(devid, false);
+ table = get_irq_table(devid);
if (!table)
return -ENOMEM;
@@ -3776,7 +3791,7 @@ static void free_irte(u16 devid, int index)
if (iommu == NULL)
return;
- table = get_irq_table(devid, false);
+ table = get_irq_table(devid);
if (!table)
return;
@@ -4094,7 +4109,7 @@ static int irq_remapping_alloc(struct irq_domain *domain, unsigned int virq,
return ret;
if (info->type == X86_IRQ_ALLOC_TYPE_IOAPIC) {
- if (get_irq_table(devid, true))
+ if (alloc_irq_table(devid, true))
index = info->ioapic_pin;
else
ret = -ENOMEM;
@@ -4355,7 +4370,7 @@ int amd_iommu_update_ga(int cpu, bool is_run, void *data)
if (!iommu)
return -ENODEV;
- irt = get_irq_table(devid, false);
+ irt = get_irq_table(devid);
if (!irt)
return -ENODEV;
--
2.17.1

View File

@@ -1,55 +0,0 @@
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:12:57 +0100
Subject: [PATCH 08/29] tracing/hrtimer: Take all clock bases and modes into
account
So far only CLOCK_MONOTONIC and CLOCK_REALTIME were taken into account as
well as HRTIMER_MODE_ABS/REL in hrtimer_init tracepoint. The query for
detecting timer mode ABS or REL is not valid, since the introduction of
HRTIMER_MODE_PINNED.
HRTIMER_MODE_PINNED is not evaluated in hrtimer_init() call. But for the
sake of completeness print all given modes.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/trace/events/timer.h | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
--- a/include/trace/events/timer.h
+++ b/include/trace/events/timer.h
@@ -136,6 +136,20 @@ DEFINE_EVENT(timer_class, timer_cancel,
TP_ARGS(timer)
);
+#define decode_clockid(type) \
+ __print_symbolic(type, \
+ { CLOCK_REALTIME, "CLOCK_REALTIME" }, \
+ { CLOCK_MONOTONIC, "CLOCK_MONOTONIC" }, \
+ { CLOCK_BOOTTIME, "CLOCK_BOOTTIME" }, \
+ { CLOCK_TAI, "CLOCK_TAI" })
+
+#define decode_hrtimer_mode(mode) \
+ __print_symbolic(mode, \
+ { HRTIMER_MODE_ABS, "ABS" }, \
+ { HRTIMER_MODE_REL, "REL" }, \
+ { HRTIMER_MODE_ABS_PINNED, "ABS|PINNED" }, \
+ { HRTIMER_MODE_REL_PINNED, "REL|PINNED" })
+
/**
* hrtimer_init - called when the hrtimer is initialized
* @hrtimer: pointer to struct hrtimer
@@ -162,10 +176,8 @@ TRACE_EVENT(hrtimer_init,
),
TP_printk("hrtimer=%p clockid=%s mode=%s", __entry->hrtimer,
- __entry->clockid == CLOCK_REALTIME ?
- "CLOCK_REALTIME" : "CLOCK_MONOTONIC",
- __entry->mode == HRTIMER_MODE_ABS ?
- "HRTIMER_MODE_ABS" : "HRTIMER_MODE_REL")
+ decode_clockid(__entry->clockid),
+ decode_hrtimer_mode(__entry->mode))
);
/**

View File

@@ -0,0 +1,105 @@
From 53ff4b0f4c2a4ae8eea46b71b11b9fc5a7d79a11 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 22 Mar 2018 16:22:34 +0100
Subject: [PATCH 010/418] iommu/amd: Turn dev_data_list into a lock less list
Upstream commit 779da73273fc4c4c6f41579a95e4fb7880a1720e
alloc_dev_data() adds new items to dev_data_list and search_dev_data()
is searching for items in this list. Both protect the access to the list
with a spinlock.
There is no need to navigate forth and back within the list and there is
also no deleting of a specific item. This qualifies the list to become a
lock less list and as part of this, the spinlock can be removed.
With this change the ordering of those items within the list is changed:
before the change new items were added to the end of the list, now they
are added to the front. I don't think it matters but wanted to mention
it.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 28 ++++++++++------------------
drivers/iommu/amd_iommu_types.h | 2 +-
2 files changed, 11 insertions(+), 19 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index e42992fcebca..1babecd37819 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -84,8 +84,7 @@
static DEFINE_RWLOCK(amd_iommu_devtable_lock);
/* List of all available dev_data structures */
-static LIST_HEAD(dev_data_list);
-static DEFINE_SPINLOCK(dev_data_list_lock);
+static LLIST_HEAD(dev_data_list);
LIST_HEAD(ioapic_map);
LIST_HEAD(hpet_map);
@@ -204,40 +203,33 @@ static struct dma_ops_domain* to_dma_ops_domain(struct protection_domain *domain
static struct iommu_dev_data *alloc_dev_data(u16 devid)
{
struct iommu_dev_data *dev_data;
- unsigned long flags;
dev_data = kzalloc(sizeof(*dev_data), GFP_KERNEL);
if (!dev_data)
return NULL;
dev_data->devid = devid;
-
- spin_lock_irqsave(&dev_data_list_lock, flags);
- list_add_tail(&dev_data->dev_data_list, &dev_data_list);
- spin_unlock_irqrestore(&dev_data_list_lock, flags);
-
ratelimit_default_init(&dev_data->rs);
+ llist_add(&dev_data->dev_data_list, &dev_data_list);
return dev_data;
}
static struct iommu_dev_data *search_dev_data(u16 devid)
{
struct iommu_dev_data *dev_data;
- unsigned long flags;
+ struct llist_node *node;
+
+ if (llist_empty(&dev_data_list))
+ return NULL;
- spin_lock_irqsave(&dev_data_list_lock, flags);
- list_for_each_entry(dev_data, &dev_data_list, dev_data_list) {
+ node = dev_data_list.first;
+ llist_for_each_entry(dev_data, node, dev_data_list) {
if (dev_data->devid == devid)
- goto out_unlock;
+ return dev_data;
}
- dev_data = NULL;
-
-out_unlock:
- spin_unlock_irqrestore(&dev_data_list_lock, flags);
-
- return dev_data;
+ return NULL;
}
static int __last_alias(struct pci_dev *pdev, u16 alias, void *data)
diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h
index 7521745dc2a5..16b1404da58c 100644
--- a/drivers/iommu/amd_iommu_types.h
+++ b/drivers/iommu/amd_iommu_types.h
@@ -625,7 +625,7 @@ struct devid_map {
*/
struct iommu_dev_data {
struct list_head list; /* For domain->dev_list */
- struct list_head dev_data_list; /* For global dev_data_list */
+ struct llist_node dev_data_list; /* For global dev_data_list */
struct protection_domain *domain; /* Domain the device is bound to */
u16 devid; /* PCI Device ID */
u16 alias; /* Alias Device ID */
--
2.17.1

View File

@@ -0,0 +1,68 @@
From 1645ac08eb6be3c6b2900de419f578ed5f91ecf4 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 22 Mar 2018 16:22:35 +0100
Subject: [PATCH 011/418] iommu/amd: Split domain id out of
amd_iommu_devtable_lock
Upstream commit 2bc00180890427dcc092b2f2b0d03c904bcade29
domain_id_alloc() and domain_id_free() is used for id management. Those
two function share a bitmap (amd_iommu_pd_alloc_bitmap) and set/clear
bits based on id allocation. There is no need to share this with
amd_iommu_devtable_lock, it can use its own lock for this operation.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 1babecd37819..250b6354fae5 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -82,6 +82,7 @@
#define AMD_IOMMU_PGSIZES ((~0xFFFUL) & ~(2ULL << 38))
static DEFINE_RWLOCK(amd_iommu_devtable_lock);
+static DEFINE_SPINLOCK(pd_bitmap_lock);
/* List of all available dev_data structures */
static LLIST_HEAD(dev_data_list);
@@ -1596,29 +1597,26 @@ static void del_domain_from_list(struct protection_domain *domain)
static u16 domain_id_alloc(void)
{
- unsigned long flags;
int id;
- write_lock_irqsave(&amd_iommu_devtable_lock, flags);
+ spin_lock(&pd_bitmap_lock);
id = find_first_zero_bit(amd_iommu_pd_alloc_bitmap, MAX_DOMAIN_ID);
BUG_ON(id == 0);
if (id > 0 && id < MAX_DOMAIN_ID)
__set_bit(id, amd_iommu_pd_alloc_bitmap);
else
id = 0;
- write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
+ spin_unlock(&pd_bitmap_lock);
return id;
}
static void domain_id_free(int id)
{
- unsigned long flags;
-
- write_lock_irqsave(&amd_iommu_devtable_lock, flags);
+ spin_lock(&pd_bitmap_lock);
if (id > 0 && id < MAX_DOMAIN_ID)
__clear_bit(id, amd_iommu_pd_alloc_bitmap);
- write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
+ spin_unlock(&pd_bitmap_lock);
}
#define DEFINE_FREE_PT_FN(LVL, FN) \
--
2.17.1

View File

@@ -0,0 +1,56 @@
From 37ded533c97f8424a00e051c4351ab2515717457 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 22 Mar 2018 16:22:36 +0100
Subject: [PATCH 012/418] iommu/amd: Split irq_lookup_table out of the
amd_iommu_devtable_lock
Upstream commit ea6166f4b83e9cfba1c18f46a764d50045682fe5
The function get_irq_table() reads/writes irq_lookup_table while holding
the amd_iommu_devtable_lock. It also modifies
amd_iommu_dev_table[].data[2].
set_dte_entry() is using amd_iommu_dev_table[].data[0|1] (under the
domain->lock) so it should be okay. The access to the iommu is
serialized with its own (iommu's) lock.
So split out get_irq_table() out of amd_iommu_devtable_lock's lock.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 250b6354fae5..2cedb0caec73 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -83,6 +83,7 @@
static DEFINE_RWLOCK(amd_iommu_devtable_lock);
static DEFINE_SPINLOCK(pd_bitmap_lock);
+static DEFINE_SPINLOCK(iommu_table_lock);
/* List of all available dev_data structures */
static LLIST_HEAD(dev_data_list);
@@ -3600,7 +3601,7 @@ static struct irq_remap_table *alloc_irq_table(u16 devid, bool ioapic)
unsigned long flags;
u16 alias;
- write_lock_irqsave(&amd_iommu_devtable_lock, flags);
+ spin_lock_irqsave(&iommu_table_lock, flags);
iommu = amd_iommu_rlookup_table[devid];
if (!iommu)
@@ -3665,7 +3666,7 @@ static struct irq_remap_table *alloc_irq_table(u16 devid, bool ioapic)
iommu_completion_wait(iommu);
out_unlock:
- write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
+ spin_unlock_irqrestore(&iommu_table_lock, flags);
return table;
}
--
2.17.1

View File

@@ -0,0 +1,100 @@
From 7faa3de9da88db7a577fbc9d11c095425c7de802 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 22 Mar 2018 16:22:37 +0100
Subject: [PATCH 013/418] iommu/amd: Remove the special case from
alloc_irq_table()
Upstream commit fde65dd3d3096e8f6ecc7bbe544eb91f4220772c
alloc_irq_table() has a special ioapic argument. If set then it will
pre-allocate / reserve the first 32 indexes. The argument is only once
true and it would make alloc_irq_table() a little simpler if we would
extract the special bits to the caller.
The caller of irq_remapping_alloc() is holding irq_domain_mutex so the
initialization of iommu->irte_ops->set_allocated() should not race
against other user.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 2cedb0caec73..fc23b89d2372 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -3594,7 +3594,7 @@ static struct irq_remap_table *get_irq_table(u16 devid)
return table;
}
-static struct irq_remap_table *alloc_irq_table(u16 devid, bool ioapic)
+static struct irq_remap_table *alloc_irq_table(u16 devid)
{
struct irq_remap_table *table = NULL;
struct amd_iommu *iommu;
@@ -3628,10 +3628,6 @@ static struct irq_remap_table *alloc_irq_table(u16 devid, bool ioapic)
/* Initialize table spin-lock */
raw_spin_lock_init(&table->lock);
- if (ioapic)
- /* Keep the first 32 indexes free for IOAPIC interrupts */
- table->min_index = 32;
-
table->table = kmem_cache_alloc(amd_iommu_irq_cache, GFP_ATOMIC);
if (!table->table) {
kfree(table);
@@ -3646,12 +3642,6 @@ static struct irq_remap_table *alloc_irq_table(u16 devid, bool ioapic)
memset(table->table, 0,
(MAX_IRQS_PER_TABLE * (sizeof(u64) * 2)));
- if (ioapic) {
- int i;
-
- for (i = 0; i < 32; ++i)
- iommu->irte_ops->set_allocated(table, i);
- }
irq_lookup_table[devid] = table;
set_dte_irq_entry(devid, table);
@@ -3681,7 +3671,7 @@ static int alloc_irq_index(u16 devid, int count)
if (!iommu)
return -ENODEV;
- table = alloc_irq_table(devid, false);
+ table = alloc_irq_table(devid);
if (!table)
return -ENODEV;
@@ -4100,10 +4090,26 @@ static int irq_remapping_alloc(struct irq_domain *domain, unsigned int virq,
return ret;
if (info->type == X86_IRQ_ALLOC_TYPE_IOAPIC) {
- if (alloc_irq_table(devid, true))
+ struct irq_remap_table *table;
+ struct amd_iommu *iommu;
+
+ table = alloc_irq_table(devid);
+ if (table) {
+ if (!table->min_index) {
+ /*
+ * Keep the first 32 indexes free for IOAPIC
+ * interrupts.
+ */
+ table->min_index = 32;
+ iommu = amd_iommu_rlookup_table[devid];
+ for (i = 0; i < 32; ++i)
+ iommu->irte_ops->set_allocated(table, i);
+ }
+ WARN_ON(table->min_index != 32);
index = info->ioapic_pin;
- else
+ } else {
ret = -ENOMEM;
+ }
} else {
index = alloc_irq_index(devid, nr_irqs);
}
--
2.17.1

View File

@@ -0,0 +1,58 @@
From c148dfef5e405f1d7f74ac4e667b19007bc31fd1 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 22 Mar 2018 16:22:38 +0100
Subject: [PATCH 014/418] iommu/amd: Use `table' instead `irt' as variable name
in amd_iommu_update_ga()
Upstream commit 4fde541c9dc114c5b448ad34b0286fe8b7c550f1
The variable of type struct irq_remap_table is always named `table'
except in amd_iommu_update_ga() where it is called `irt'. Make it
consistent and name it also `table'.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index fc23b89d2372..bfda5f26ea50 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -4353,7 +4353,7 @@ int amd_iommu_update_ga(int cpu, bool is_run, void *data)
{
unsigned long flags;
struct amd_iommu *iommu;
- struct irq_remap_table *irt;
+ struct irq_remap_table *table;
struct amd_ir_data *ir_data = (struct amd_ir_data *)data;
int devid = ir_data->irq_2_irte.devid;
struct irte_ga *entry = (struct irte_ga *) ir_data->entry;
@@ -4367,11 +4367,11 @@ int amd_iommu_update_ga(int cpu, bool is_run, void *data)
if (!iommu)
return -ENODEV;
- irt = get_irq_table(devid);
- if (!irt)
+ table = get_irq_table(devid);
+ if (!table)
return -ENODEV;
- raw_spin_lock_irqsave(&irt->lock, flags);
+ raw_spin_lock_irqsave(&table->lock, flags);
if (ref->lo.fields_vapic.guest_mode) {
if (cpu >= 0)
@@ -4380,7 +4380,7 @@ int amd_iommu_update_ga(int cpu, bool is_run, void *data)
barrier();
}
- raw_spin_unlock_irqrestore(&irt->lock, flags);
+ raw_spin_unlock_irqrestore(&table->lock, flags);
iommu_flush_irt(iommu, devid);
iommu_completion_wait(iommu);
--
2.17.1

View File

@@ -0,0 +1,72 @@
From ef80165d12b76356146a32c6b43e45e98f052ae9 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 22 Mar 2018 16:22:39 +0100
Subject: [PATCH 015/418] iommu/amd: Factor out setting the remap table for a
devid
Upstream commit 2fcc1e8ac4a8514c64f946178fc36c2e30e56a41
Setting the IRQ remap table for a specific devid (or its alias devid)
includes three steps. Those three steps are always repeated each time
this is done.
Introduce a new helper function, move those steps there and use that
function instead. The compiler can still decide if it is worth to
inline.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index bfda5f26ea50..d4eeb91afa36 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -3594,6 +3594,14 @@ static struct irq_remap_table *get_irq_table(u16 devid)
return table;
}
+static void set_remap_table_entry(struct amd_iommu *iommu, u16 devid,
+ struct irq_remap_table *table)
+{
+ irq_lookup_table[devid] = table;
+ set_dte_irq_entry(devid, table);
+ iommu_flush_dte(iommu, devid);
+}
+
static struct irq_remap_table *alloc_irq_table(u16 devid)
{
struct irq_remap_table *table = NULL;
@@ -3614,9 +3622,7 @@ static struct irq_remap_table *alloc_irq_table(u16 devid)
alias = amd_iommu_alias_table[devid];
table = irq_lookup_table[alias];
if (table) {
- irq_lookup_table[devid] = table;
- set_dte_irq_entry(devid, table);
- iommu_flush_dte(iommu, devid);
+ set_remap_table_entry(iommu, devid, table);
goto out;
}
@@ -3643,14 +3649,9 @@ static struct irq_remap_table *alloc_irq_table(u16 devid)
(MAX_IRQS_PER_TABLE * (sizeof(u64) * 2)));
- irq_lookup_table[devid] = table;
- set_dte_irq_entry(devid, table);
- iommu_flush_dte(iommu, devid);
- if (devid != alias) {
- irq_lookup_table[alias] = table;
- set_dte_irq_entry(alias, table);
- iommu_flush_dte(iommu, alias);
- }
+ set_remap_table_entry(iommu, devid, table);
+ if (devid != alias)
+ set_remap_table_entry(iommu, alias, table);
out:
iommu_completion_wait(iommu);
--
2.17.1

View File

@@ -0,0 +1,137 @@
From 6224ad75694b7e9aa332a504f1da722c416a4cf3 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 22 Mar 2018 16:22:40 +0100
Subject: [PATCH 016/418] iommu/amd: Drop the lock while allocating new irq
remap table
Upstream commit 993ca6e063a69a0c65ca42ed449b6bc1b3844151
The irq_remap_table is allocated while the iommu_table_lock is held with
interrupts disabled.
>From looking at the call sites, all callers are in the early device
initialisation (apic_bsp_setup(), pci_enable_device(),
pci_enable_msi()) so make sense to drop the lock which also enables
interrupts and try to allocate that memory with GFP_KERNEL instead
GFP_ATOMIC.
Since during the allocation the iommu_table_lock is dropped, we need to
recheck if table exists after the lock has been reacquired. I *think*
that it is impossible that the "devid" entry appears in irq_lookup_table
while the lock is dropped since the same device can only be probed once.
However I check for both cases, just to be sure.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 63 ++++++++++++++++++++++++++++-----------
1 file changed, 45 insertions(+), 18 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index d4eeb91afa36..8b6e515b395e 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -3594,6 +3594,30 @@ static struct irq_remap_table *get_irq_table(u16 devid)
return table;
}
+static struct irq_remap_table *__alloc_irq_table(void)
+{
+ struct irq_remap_table *table;
+
+ table = kzalloc(sizeof(*table), GFP_KERNEL);
+ if (!table)
+ return NULL;
+
+ table->table = kmem_cache_alloc(amd_iommu_irq_cache, GFP_KERNEL);
+ if (!table->table) {
+ kfree(table);
+ return NULL;
+ }
+ raw_spin_lock_init(&table->lock);
+
+ if (!AMD_IOMMU_GUEST_IR_GA(amd_iommu_guest_ir))
+ memset(table->table, 0,
+ MAX_IRQS_PER_TABLE * sizeof(u32));
+ else
+ memset(table->table, 0,
+ (MAX_IRQS_PER_TABLE * (sizeof(u64) * 2)));
+ return table;
+}
+
static void set_remap_table_entry(struct amd_iommu *iommu, u16 devid,
struct irq_remap_table *table)
{
@@ -3605,6 +3629,7 @@ static void set_remap_table_entry(struct amd_iommu *iommu, u16 devid,
static struct irq_remap_table *alloc_irq_table(u16 devid)
{
struct irq_remap_table *table = NULL;
+ struct irq_remap_table *new_table = NULL;
struct amd_iommu *iommu;
unsigned long flags;
u16 alias;
@@ -3623,42 +3648,44 @@ static struct irq_remap_table *alloc_irq_table(u16 devid)
table = irq_lookup_table[alias];
if (table) {
set_remap_table_entry(iommu, devid, table);
- goto out;
+ goto out_wait;
}
+ spin_unlock_irqrestore(&iommu_table_lock, flags);
/* Nothing there yet, allocate new irq remapping table */
- table = kzalloc(sizeof(*table), GFP_ATOMIC);
- if (!table)
- goto out_unlock;
+ new_table = __alloc_irq_table();
+ if (!new_table)
+ return NULL;
- /* Initialize table spin-lock */
- raw_spin_lock_init(&table->lock);
+ spin_lock_irqsave(&iommu_table_lock, flags);
- table->table = kmem_cache_alloc(amd_iommu_irq_cache, GFP_ATOMIC);
- if (!table->table) {
- kfree(table);
- table = NULL;
+ table = irq_lookup_table[devid];
+ if (table)
goto out_unlock;
- }
- if (!AMD_IOMMU_GUEST_IR_GA(amd_iommu_guest_ir))
- memset(table->table, 0,
- MAX_IRQS_PER_TABLE * sizeof(u32));
- else
- memset(table->table, 0,
- (MAX_IRQS_PER_TABLE * (sizeof(u64) * 2)));
+ table = irq_lookup_table[alias];
+ if (table) {
+ set_remap_table_entry(iommu, devid, table);
+ goto out_wait;
+ }
+ table = new_table;
+ new_table = NULL;
set_remap_table_entry(iommu, devid, table);
if (devid != alias)
set_remap_table_entry(iommu, alias, table);
-out:
+out_wait:
iommu_completion_wait(iommu);
out_unlock:
spin_unlock_irqrestore(&iommu_table_lock, flags);
+ if (new_table) {
+ kmem_cache_free(amd_iommu_irq_cache, new_table->table);
+ kfree(new_table);
+ }
return table;
}
--
2.17.1

View File

@@ -0,0 +1,79 @@
From 9d350d7dff14fe5881062bb1dd588fe1bf19719d Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 22 Mar 2018 16:22:41 +0100
Subject: [PATCH 017/418] iommu/amd: Make amd_iommu_devtable_lock a spin_lock
Upstream commit 2cd1083d79a0a8c223af430ca97884c28a1e2fc0
Before commit 0bb6e243d7fb ("iommu/amd: Support IOMMU_DOMAIN_DMA type
allocation") amd_iommu_devtable_lock had a read_lock() user but now
there are none. In fact, after the mentioned commit we had only
write_lock() user of the lock. Since there is no reason to keep it as
writer lock, change its type to a spin_lock.
I *think* that we might even be able to remove the lock because all its
current user seem to have their own protection.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 8b6e515b395e..f685026e6d9e 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -81,7 +81,7 @@
*/
#define AMD_IOMMU_PGSIZES ((~0xFFFUL) & ~(2ULL << 38))
-static DEFINE_RWLOCK(amd_iommu_devtable_lock);
+static DEFINE_SPINLOCK(amd_iommu_devtable_lock);
static DEFINE_SPINLOCK(pd_bitmap_lock);
static DEFINE_SPINLOCK(iommu_table_lock);
@@ -2086,9 +2086,9 @@ static int attach_device(struct device *dev,
}
skip_ats_check:
- write_lock_irqsave(&amd_iommu_devtable_lock, flags);
+ spin_lock_irqsave(&amd_iommu_devtable_lock, flags);
ret = __attach_device(dev_data, domain);
- write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
+ spin_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
/*
* We might boot into a crash-kernel here. The crashed kernel
@@ -2138,9 +2138,9 @@ static void detach_device(struct device *dev)
domain = dev_data->domain;
/* lock device table */
- write_lock_irqsave(&amd_iommu_devtable_lock, flags);
+ spin_lock_irqsave(&amd_iommu_devtable_lock, flags);
__detach_device(dev_data);
- write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
+ spin_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
if (!dev_is_pci(dev))
return;
@@ -2804,7 +2804,7 @@ static void cleanup_domain(struct protection_domain *domain)
struct iommu_dev_data *entry;
unsigned long flags;
- write_lock_irqsave(&amd_iommu_devtable_lock, flags);
+ spin_lock_irqsave(&amd_iommu_devtable_lock, flags);
while (!list_empty(&domain->dev_list)) {
entry = list_first_entry(&domain->dev_list,
@@ -2812,7 +2812,7 @@ static void cleanup_domain(struct protection_domain *domain)
__detach_device(entry);
}
- write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
+ spin_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
}
static void protection_domain_free(struct protection_domain *domain)
--
2.17.1

View File

@@ -0,0 +1,46 @@
From cf3885d685d1115031da5d5963a9152b11cf9f36 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 22 Mar 2018 16:22:42 +0100
Subject: [PATCH 018/418] iommu/amd: Return proper error code in
irq_remapping_alloc()
Upstream commit 29d049be9438278c47253a74cf8d0ddf36bd5d68
In the unlikely case when alloc_irq_table() is not able to return a
remap table then "ret" will be assigned with an error code. Later, the
code checks `index' and if it is negative (which it is because it is
initialized with `-1') and then then function properly aborts but
returns `-1' instead `-ENOMEM' what was intended.
In order to correct this, I assign -ENOMEM to index.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/amd_iommu.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index f685026e6d9e..f61c2dab5490 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -4094,7 +4094,7 @@ static int irq_remapping_alloc(struct irq_domain *domain, unsigned int virq,
struct amd_ir_data *data = NULL;
struct irq_cfg *cfg;
int i, ret, devid;
- int index = -1;
+ int index;
if (!info)
return -EINVAL;
@@ -4136,7 +4136,7 @@ static int irq_remapping_alloc(struct irq_domain *domain, unsigned int virq,
WARN_ON(table->min_index != 32);
index = info->ioapic_pin;
} else {
- ret = -ENOMEM;
+ index = -ENOMEM;
}
} else {
index = alloc_irq_index(devid, nr_irqs);
--
2.17.1

View File

@@ -1,6 +1,8 @@
From d2540f23d6110bdea14e3b9b8af69ee71909096f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 20 Dec 2017 17:12:50 +0100
Subject: [PATCH 01/29] timers: Use static keys for migrate_enable/nohz_active
Subject: [PATCH 019/418] timers: Use static keys for
migrate_enable/nohz_active
The members migrate_enable and nohz_active in the timer/hrtimer per CPU
bases have been introduced to avoid accessing global variables for these
@@ -17,13 +19,15 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 4 --
kernel/time/hrtimer.c | 17 ++-------
kernel/time/tick-internal.h | 19 ++++++----
kernel/time/tick-sched.c | 2 -
kernel/time/timer.c | 83 ++++++++++++++++++++++----------------------
include/linux/hrtimer.h | 4 --
kernel/time/hrtimer.c | 17 +++-----
kernel/time/tick-internal.h | 19 +++++----
kernel/time/tick-sched.c | 2 +-
kernel/time/timer.c | 83 +++++++++++++++++++------------------
5 files changed, 61 insertions(+), 64 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 012c37fdb688..79b2a8d29d8c 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -153,8 +153,6 @@ enum hrtimer_base_type {
@@ -44,9 +48,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#ifdef CONFIG_HIGH_RES_TIMERS
unsigned int in_hrtirq : 1,
hres_active : 1,
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index d00e85ac10d6..883fef2926e9 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -178,23 +178,16 @@ hrtimer_check_target(struct hrtimer *tim
@@ -178,23 +178,16 @@ hrtimer_check_target(struct hrtimer *timer, struct hrtimer_clock_base *new_base)
#endif
}
@@ -74,7 +80,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* We switch the timer base to a power-optimized selected CPU target,
@@ -973,7 +966,7 @@ void hrtimer_start_range_ns(struct hrtim
@@ -973,7 +966,7 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
* Kick to reschedule the next tick to handle the new timer
* on dynticks target.
*/
@@ -83,9 +89,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
wake_up_nohz_cpu(new_base->cpu_base->cpu);
} else {
hrtimer_reprogram(timer, new_base);
diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
index f8e1845aa464..4ac74dff59f0 100644
--- a/kernel/time/tick-internal.h
+++ b/kernel/time/tick-internal.h
@@ -150,14 +150,19 @@ static inline void tick_nohz_init(void)
@@ -150,14 +150,19 @@ static inline void tick_nohz_init(void) { }
#ifdef CONFIG_NO_HZ_COMMON
extern unsigned long tick_nohz_active;
@@ -112,9 +120,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#endif
DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases);
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index bb2af74e6b62..9a372e16791c 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -1131,7 +1131,7 @@ static inline void tick_nohz_activate(st
@@ -1132,7 +1132,7 @@ static inline void tick_nohz_activate(struct tick_sched *ts, int mode)
ts->nohz_mode = mode;
/* One update is enough */
if (!test_and_set_bit(0, &tick_nohz_active))
@@ -123,6 +133,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/**
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 9fe525f410bf..b24232985960 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -200,8 +200,6 @@ struct timer_base {
@@ -215,7 +227,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static unsigned long round_jiffies_common(unsigned long j, int cpu,
bool force_up)
@@ -534,7 +546,7 @@ static void
@@ -534,7 +546,7 @@ __internal_add_timer(struct timer_base *base, struct timer_list *timer)
static void
trigger_dyntick_cpu(struct timer_base *base, struct timer_list *timer)
{
@@ -224,7 +236,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return;
/*
@@ -840,21 +852,20 @@ static inline struct timer_base *get_tim
@@ -840,21 +852,20 @@ static inline struct timer_base *get_timer_base(u32 tflags)
return get_timer_cpu_base(tflags, tflags & TIMER_CPUMASK);
}
@@ -252,7 +264,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
unsigned long jnow;
/*
@@ -878,16 +889,8 @@ static inline void forward_timer_base(st
@@ -878,16 +889,8 @@ static inline void forward_timer_base(struct timer_base *base)
base->clk = jnow;
else
base->clk = base->next_expiry;
@@ -270,3 +282,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 437a57e7664994a510190bfaff01026cd7e75422 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 20 Dec 2017 17:12:51 +0100
Subject: [PATCH 02/29] hrtimer: Correct blantanly wrong comment
Subject: [PATCH 020/418] hrtimer: Correct blantanly wrong comment
The protection of a hrtimer which runs its callback against migration to a
different CPU has nothing to do with hard interrupt context.
@@ -16,12 +17,14 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 6 +++---
kernel/time/hrtimer.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 883fef2926e9..65543d31af32 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -1204,9 +1204,9 @@ static void __run_hrtimer(struct hrtimer
@@ -1204,9 +1204,9 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base,
timer->is_rel = false;
/*
@@ -34,3 +37,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*/
raw_spin_unlock(&cpu_base->lock);
trace_hrtimer_expire_entry(timer, now);
--
2.17.1

View File

@@ -1,6 +1,7 @@
From b9a845a61b4f2fd293791e8a6f3b3031ba03308d Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:12:52 +0100
Subject: [PATCH 03/29] hrtimer: Fix kerneldoc for struct hrtimer_cpu_base
Subject: [PATCH 021/418] hrtimer: Fix kerneldoc for struct hrtimer_cpu_base
The sequence '/**' marks the start of a struct description. Add the
missing second asterisk. While at it adapt the ordering of the struct
@@ -10,9 +11,11 @@ expires_next more precisely.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 8 ++++----
include/linux/hrtimer.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 79b2a8d29d8c..b3a382be8db0 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -144,7 +144,7 @@ enum hrtimer_base_type {
@@ -40,3 +43,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
* @nr_events: Total number of hrtimer interrupt events
* @nr_retries: Total number of hrtimer interrupt retries
* @nr_hangs: Total number of hrtimer interrupt hangs
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 3f2ef191049442d38c95443f4a85062a403cb21a Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:12:53 +0100
Subject: [PATCH 04/29] hrtimer: Cleanup clock argument in
Subject: [PATCH 022/418] hrtimer: Cleanup clock argument in
schedule_hrtimeout_range_clock()
schedule_hrtimeout_range_clock() uses an integer for the clock id
@@ -18,13 +19,15 @@ No functional change.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 2 +-
kernel/time/hrtimer.c | 12 ++++++------
include/linux/hrtimer.h | 2 +-
kernel/time/hrtimer.c | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index b3a382be8db0..931ce9c89c93 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -462,7 +462,7 @@ extern int schedule_hrtimeout_range(ktim
@@ -462,7 +462,7 @@ extern int schedule_hrtimeout_range(ktime_t *expires, u64 delta,
extern int schedule_hrtimeout_range_clock(ktime_t *expires,
u64 delta,
const enum hrtimer_mode mode,
@@ -33,6 +36,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode);
/* Soft interrupt function to run the hrtimer queues: */
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 65543d31af32..790841b59433 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -1672,12 +1672,12 @@ void __init hrtimers_init(void)
@@ -51,7 +56,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
{
struct hrtimer_sleeper t;
@@ -1698,7 +1698,7 @@ schedule_hrtimeout_range_clock(ktime_t *
@@ -1698,7 +1698,7 @@ schedule_hrtimeout_range_clock(ktime_t *expires, u64 delta,
return -EINTR;
}
@@ -60,7 +65,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hrtimer_set_expires_range_ns(&t.timer, *expires, delta);
hrtimer_init_sleeper(&t, current);
@@ -1720,7 +1720,7 @@ schedule_hrtimeout_range_clock(ktime_t *
@@ -1720,7 +1720,7 @@ schedule_hrtimeout_range_clock(ktime_t *expires, u64 delta,
* schedule_hrtimeout_range - sleep until timeout
* @expires: timeout value (ktime_t)
* @delta: slack in expires timeout (ktime_t)
@@ -69,7 +74,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*
* Make the current task sleep until the given expiry time has
* elapsed. The routine will return immediately unless
@@ -1759,7 +1759,7 @@ EXPORT_SYMBOL_GPL(schedule_hrtimeout_ran
@@ -1759,7 +1759,7 @@ EXPORT_SYMBOL_GPL(schedule_hrtimeout_range);
/**
* schedule_hrtimeout - sleep until timeout
* @expires: timeout value (ktime_t)
@@ -78,3 +83,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*
* Make the current task sleep until the given expiry time has
* elapsed. The routine will return immediately unless
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 7bceac6c2181a2ce1ba209d1fc6afb626dbab4c7 Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:12:54 +0100
Subject: [PATCH 05/29] hrtimer: Fix hrtimer function description
Subject: [PATCH 023/418] hrtimer: Fix hrtimer function description
The hrtimer_start[_range_ns]() starts a timer reliable on this CPU only
when HRTIMER_MODE_PINNED is set. Furthermore the HRTIMER_MODE_PINNED mode
@@ -9,13 +10,15 @@ is not considered, when a hrtimer is initialized.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 6 +++---
kernel/time/hrtimer.c | 9 +++++----
include/linux/hrtimer.h | 6 +++---
kernel/time/hrtimer.c | 9 +++++----
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 931ce9c89c93..4e6a8841dcbe 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -361,11 +361,11 @@ extern void hrtimer_start_range_ns(struc
@@ -361,11 +361,11 @@ extern void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
u64 range_ns, const enum hrtimer_mode mode);
/**
@@ -30,9 +33,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*/
static inline void hrtimer_start(struct hrtimer *timer, ktime_t tim,
const enum hrtimer_mode mode)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 790841b59433..6460aa2d9b25 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -928,12 +928,12 @@ static inline ktime_t hrtimer_update_low
@@ -928,12 +928,12 @@ static inline ktime_t hrtimer_update_lowres(struct hrtimer *timer, ktime_t tim,
}
/**
@@ -48,7 +53,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*/
void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
u64 delta_ns, const enum hrtimer_mode mode)
@@ -1116,7 +1116,8 @@ static void __hrtimer_init(struct hrtime
@@ -1116,7 +1116,8 @@ static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id,
* hrtimer_init - initialize a timer to the given clock
* @timer: the timer to be initialized
* @clock_id: the clock to be used
@@ -58,3 +63,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*/
void hrtimer_init(struct hrtimer *timer, clockid_t clock_id,
enum hrtimer_mode mode)
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 79c700b613fe56d7318ab41bc9184cd8572006ec Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:12:56 +0100
Subject: [PATCH 07/29] hrtimer: Cleanup hrtimer_mode enum
Subject: [PATCH 024/418] hrtimer: Cleanup hrtimer_mode enum
It's not obvious that the HRTIMER_MODE variants are bit combinations
because all modes are hard coded constants.
@@ -13,9 +14,11 @@ While at it get rid of the ugly tail comments.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 16 +++++++++++-----
include/linux/hrtimer.h | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 4e6a8841dcbe..28f267cf2851 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -28,13 +28,19 @@ struct hrtimer_cpu_base;
@@ -43,3 +46,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
};
/*
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 734fc4622933368429263530e951f67c458070eb Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:12:58 +0100
Subject: [PATCH 09/29] tracing/hrtimer: Print hrtimer mode in hrtimer_start
Subject: [PATCH 025/418] tracing/hrtimer: Print hrtimer mode in hrtimer_start
tracepoint
The hrtimer_start tracepoint lacks the mode information. The mode is
@@ -12,10 +13,12 @@ Add the mode information.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/trace/events/timer.h | 13 ++++++++-----
kernel/time/hrtimer.c | 16 +++++++++-------
include/trace/events/timer.h | 13 ++++++++-----
kernel/time/hrtimer.c | 16 +++++++++-------
2 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/include/trace/events/timer.h b/include/trace/events/timer.h
index c6f728037c53..744b4310b24b 100644
--- a/include/trace/events/timer.h
+++ b/include/trace/events/timer.h
@@ -186,15 +186,16 @@ TRACE_EVENT(hrtimer_init,
@@ -55,9 +58,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
);
/**
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 6460aa2d9b25..476fe683e8ed 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -435,10 +435,11 @@ debug_init(struct hrtimer *timer, clocki
@@ -435,10 +435,11 @@ debug_init(struct hrtimer *timer, clockid_t clockid,
trace_hrtimer_init(timer, clockid, mode);
}
@@ -84,7 +89,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
base->cpu_base->active_bases |= 1 << base->index;
@@ -957,7 +959,7 @@ void hrtimer_start_range_ns(struct hrtim
@@ -957,7 +959,7 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
/* Switch the timer base, if necessary: */
new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED);
@@ -93,7 +98,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (!leftmost)
goto unlock;
@@ -1226,7 +1228,7 @@ static void __run_hrtimer(struct hrtimer
@@ -1226,7 +1228,7 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base,
*/
if (restart != HRTIMER_NORESTART &&
!(timer->state & HRTIMER_STATE_ENQUEUED))
@@ -102,7 +107,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Separate the ->running assignment from the ->state assignment.
@@ -1626,7 +1628,7 @@ static void migrate_hrtimer_list(struct
@@ -1626,7 +1628,7 @@ static void migrate_hrtimer_list(struct hrtimer_clock_base *old_base,
* sort out already expired timers and reprogram the
* event device.
*/
@@ -111,3 +116,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
}
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 551c25858df0438915d8addafa70afbb12779d35 Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:12:59 +0100
Subject: [PATCH 10/29] hrtimer: Switch for loop to _ffs() evaluation
Subject: [PATCH 026/418] hrtimer: Switch for loop to _ffs() evaluation
Looping over all clock bases to find active bits is suboptimal if not all
bases are active.
@@ -13,12 +14,14 @@ Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 31 +++++++++++++++++++++----------
kernel/time/hrtimer.c | 31 +++++++++++++++++++++----------
1 file changed, 21 insertions(+), 10 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 476fe683e8ed..85f9335d0d60 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -448,6 +448,23 @@ static inline void debug_deactivate(stru
@@ -448,6 +448,23 @@ static inline void debug_deactivate(struct hrtimer *timer)
trace_hrtimer_cancel(timer);
}
@@ -42,7 +45,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#if defined(CONFIG_NO_HZ_COMMON) || defined(CONFIG_HIGH_RES_TIMERS)
static inline void hrtimer_update_next_timer(struct hrtimer_cpu_base *cpu_base,
struct hrtimer *timer)
@@ -459,18 +476,15 @@ static inline void hrtimer_update_next_t
@@ -459,18 +476,15 @@ static inline void hrtimer_update_next_timer(struct hrtimer_cpu_base *cpu_base,
static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base)
{
@@ -63,7 +66,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
next = timerqueue_getnext(&base->active);
timer = container_of(next, struct hrtimer, node);
expires = ktime_sub(hrtimer_get_expires(timer), base->offset);
@@ -1245,16 +1259,13 @@ static void __run_hrtimer(struct hrtimer
@@ -1245,16 +1259,13 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base,
static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now)
{
@@ -82,3 +85,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
basenow = ktime_add(now, base->offset);
while ((node = timerqueue_getnext(&base->active))) {
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 1ca83795806184362986a22e2a4dd0d5ac30eddd Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:00 +0100
Subject: [PATCH 11/29] hrtimer: Store running timer in hrtimer_clock_base
Subject: [PATCH 027/418] hrtimer: Store running timer in hrtimer_clock_base
The pointer to the currently running timer is stored in hrtimer_cpu_base
before the base lock is dropped and the callback is invoked.
@@ -28,10 +29,12 @@ clocks.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 20 +++++++++-----------
kernel/time/hrtimer.c | 28 +++++++++++++---------------
include/linux/hrtimer.h | 20 +++++++++-----------
kernel/time/hrtimer.c | 28 +++++++++++++---------------
2 files changed, 22 insertions(+), 26 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 28f267cf2851..1bae7b9f071d 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -118,9 +118,9 @@ struct hrtimer_sleeper {
@@ -98,7 +101,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
timer->node.expires = time;
timer->_softexpires = time;
}
@@ -424,7 +422,7 @@ static inline int hrtimer_is_queued(stru
@@ -424,7 +422,7 @@ static inline int hrtimer_is_queued(struct hrtimer *timer)
*/
static inline int hrtimer_callback_running(struct hrtimer *timer)
{
@@ -107,6 +110,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/* Forward a hrtimer so it expires after now: */
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 85f9335d0d60..bedfc2865901 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -70,7 +70,6 @@
@@ -117,7 +122,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
.clock_base =
{
{
@@ -118,7 +117,6 @@ static const int hrtimer_clock_to_base_t
@@ -118,7 +117,6 @@ static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = {
* timer->base->cpu_base
*/
static struct hrtimer_cpu_base migration_cpu_base = {
@@ -151,7 +156,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return false;
}
@@ -1198,16 +1196,16 @@ static void __run_hrtimer(struct hrtimer
@@ -1198,16 +1196,16 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base,
lockdep_assert_held(&cpu_base->lock);
debug_deactivate(timer);
@@ -171,7 +176,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
__remove_hrtimer(timer, base, HRTIMER_STATE_INACTIVE, 0);
fn = timer->function;
@@ -1248,13 +1246,13 @@ static void __run_hrtimer(struct hrtimer
@@ -1248,13 +1246,13 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base,
* Separate the ->running assignment from the ->state assignment.
*
* As with a regular write barrier, this ensures the read side in
@@ -189,3 +194,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now)
--
2.17.1

View File

@@ -1,6 +1,7 @@
From bbc2c2e88a6682df03351e2a3c19593de4c08d3e Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:01 +0100
Subject: [PATCH 12/29] hrtimer: Make room in struct hrtimer_cpu_base
Subject: [PATCH 028/418] hrtimer: Make room in struct hrtimer_cpu_base
The upcoming softirq based hrtimers support requires an additional field in
the hrtimer_cpu_base struct, which would grow the struct size beyond a
@@ -15,9 +16,11 @@ functional change.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 4 ++--
include/linux/hrtimer.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 1bae7b9f071d..56e56bcb6f0f 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -189,8 +189,8 @@ struct hrtimer_cpu_base {
@@ -31,3 +34,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
unsigned int max_hang_time;
#endif
struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES];
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 036160e2bf23c43f7a7eb4482cd372c2c5983389 Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:02 +0100
Subject: [PATCH 13/29] hrtimer: Reduce conditional code (hres_active)
Subject: [PATCH 029/418] hrtimer: Reduce conditional code (hres_active)
The hrtimer_cpu_base struct has the CONFIG_HIGH_RES_TIMERS conditional
struct member hres_active. All related functions to this member are
@@ -17,10 +18,12 @@ Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 20 ++++++++------------
kernel/time/hrtimer.c | 31 +++++++++++++++----------------
include/linux/hrtimer.h | 20 ++++++++------------
kernel/time/hrtimer.c | 31 +++++++++++++++----------------
2 files changed, 23 insertions(+), 28 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 56e56bcb6f0f..22627b3a33fe 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -161,8 +161,8 @@ enum hrtimer_base_type {
@@ -44,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hang_detected : 1;
ktime_t expires_next;
struct hrtimer *next_timer;
@@ -266,16 +266,17 @@ static inline ktime_t hrtimer_cb_get_tim
@@ -266,16 +266,17 @@ static inline ktime_t hrtimer_cb_get_time(struct hrtimer *timer)
return timer->base->get_time();
}
@@ -79,9 +82,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static inline void clock_was_set_delayed(void) { }
#endif
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index bedfc2865901..7e0490143275 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -512,6 +512,20 @@ static inline ktime_t hrtimer_update_bas
@@ -512,6 +512,20 @@ static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base)
offs_real, offs_boot, offs_tai);
}
@@ -102,10 +107,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* High resolution timer related functions */
#ifdef CONFIG_HIGH_RES_TIMERS
@@ -541,19 +555,6 @@ static inline int hrtimer_is_hres_enable
@@ -540,19 +554,6 @@ static inline int hrtimer_is_hres_enabled(void)
return hrtimer_hres_enabled;
}
/*
-/*
- * Is the high resolution mode active ?
- */
-static inline int __hrtimer_hres_active(struct hrtimer_cpu_base *cpu_base)
@@ -118,11 +124,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
- return __hrtimer_hres_active(this_cpu_ptr(&hrtimer_bases));
-}
-
-/*
/*
* Reprogram the event source with checking both queues for the
* next event
* Called with interrupts disabled and base->lock held
@@ -662,7 +663,6 @@ static inline void hrtimer_init_hres(str
@@ -662,7 +663,6 @@ static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base)
{
base->expires_next = KTIME_MAX;
base->hang_detected = 0;
@@ -139,7 +144,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static inline int hrtimer_is_hres_enabled(void) { return 0; }
static inline void hrtimer_switch_to_hres(void) { }
static inline void
@@ -1605,6 +1603,7 @@ int hrtimers_prepare_cpu(unsigned int cp
@@ -1605,6 +1603,7 @@ int hrtimers_prepare_cpu(unsigned int cpu)
cpu_base->active_bases = 0;
cpu_base->cpu = cpu;
@@ -147,3 +152,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hrtimer_init_hres(cpu_base);
return 0;
}
--
2.17.1

View File

@@ -1,6 +1,8 @@
From 5f845b534ffc9f5a653f45bddf0dc4e99dd6a510 Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:03 +0100
Subject: [PATCH 14/29] hrtimer: Use accesor functions instead of direct access
Subject: [PATCH 030/418] hrtimer: Use accesor functions instead of direct
access
__hrtimer_hres_active() is now available unconditionally. Replace the
direct access to hrtimer_cpu_base.hres_active.
@@ -10,12 +12,14 @@ No functional change.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 4 ++--
kernel/time/hrtimer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 7e0490143275..85882d5da523 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -564,7 +564,7 @@ hrtimer_force_reprogram(struct hrtimer_c
@@ -564,7 +564,7 @@ hrtimer_force_reprogram(struct hrtimer_cpu_base *cpu_base, int skip_equal)
{
ktime_t expires_next;
@@ -24,7 +28,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return;
expires_next = __hrtimer_get_next_event(cpu_base);
@@ -675,7 +675,7 @@ static void retrigger_next_event(void *a
@@ -675,7 +675,7 @@ static void retrigger_next_event(void *arg)
{
struct hrtimer_cpu_base *base = this_cpu_ptr(&hrtimer_bases);
@@ -33,3 +37,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return;
raw_spin_lock(&base->lock);
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 454c4ff0fb355b4dafad0f616d12cbdf1a6521db Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:04 +0100
Subject: [PATCH 15/29] hrtimer: Make the remote enqueue check unconditional
Subject: [PATCH 031/418] hrtimer: Make the remote enqueue check unconditional
hrtimer_cpu_base.expires_next is used to cache the next event armed in the
timer hardware. The value is used to check whether an hrtimer can be
@@ -23,10 +24,12 @@ which further reduce the #ifdef zoo in this code.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 6 +++---
kernel/time/hrtimer.c | 32 +++++++++-----------------------
include/linux/hrtimer.h | 6 +++---
kernel/time/hrtimer.c | 32 +++++++++-----------------------
2 files changed, 12 insertions(+), 26 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 22627b3a33fe..bb7270e8bc37 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -164,13 +164,13 @@ enum hrtimer_base_type {
@@ -60,9 +63,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES];
} ____cacheline_aligned;
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 85882d5da523..b1016aabc73a 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -154,26 +154,21 @@ struct hrtimer_clock_base *lock_hrtimer_
@@ -154,26 +154,21 @@ struct hrtimer_clock_base *lock_hrtimer_base(const struct hrtimer *timer,
}
/*
@@ -94,10 +99,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
static inline
@@ -657,16 +652,6 @@ static void hrtimer_reprogram(struct hrt
@@ -656,16 +651,6 @@ static void hrtimer_reprogram(struct hrtimer *timer,
tick_program_event(expires, 1);
}
/*
-/*
- * Initialize the high resolution related parts of cpu_base
- */
-static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base)
@@ -107,11 +113,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
- base->next_timer = NULL;
-}
-
-/*
/*
* Retrigger next event is called after clock was set
*
* Called with interrupts disabled via on_each_cpu()
@@ -731,7 +716,6 @@ static inline int hrtimer_reprogram(stru
@@ -731,7 +716,6 @@ static inline int hrtimer_reprogram(struct hrtimer *timer,
{
return 0;
}
@@ -119,7 +124,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static inline void retrigger_next_event(void *arg) { }
#endif /* CONFIG_HIGH_RES_TIMERS */
@@ -1601,10 +1585,12 @@ int hrtimers_prepare_cpu(unsigned int cp
@@ -1601,10 +1585,12 @@ int hrtimers_prepare_cpu(unsigned int cpu)
timerqueue_init_head(&cpu_base->clock_base[i].active);
}
@@ -134,3 +139,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return 0;
}
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 0f5e672a02807d10c8772c839d358cb498ec6d9f Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:05 +0100
Subject: [PATCH 16/29] hrtimer: Make hrtimer_cpu_base.next_timer handling
Subject: [PATCH 032/418] hrtimer: Make hrtimer_cpu_base.next_timer handling
unconditional
hrtimer_cpu_base.next_timer stores the pointer to the next expiring timer
@@ -25,10 +26,12 @@ No functional change.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 4 ++--
kernel/time/hrtimer.c | 12 ++----------
include/linux/hrtimer.h | 4 ++--
kernel/time/hrtimer.c | 12 ++----------
2 files changed, 4 insertions(+), 12 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index bb7270e8bc37..2d3e1d678a4d 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -164,13 +164,13 @@ enum hrtimer_base_type {
@@ -61,9 +64,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES];
} ____cacheline_aligned;
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index b1016aabc73a..e01c2e78c032 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -459,21 +459,13 @@ static struct hrtimer_clock_base *
@@ -459,21 +459,13 @@ __next_base(struct hrtimer_cpu_base *cpu_base, unsigned int *active)
while ((base = __next_base((cpu_base), &(active))))
#if defined(CONFIG_NO_HZ_COMMON) || defined(CONFIG_HIGH_RES_TIMERS)
@@ -86,7 +91,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
for_each_active_base(base, cpu_base, active) {
struct timerqueue_node *next;
struct hrtimer *timer;
@@ -483,7 +475,7 @@ static ktime_t __hrtimer_get_next_event(
@@ -483,7 +475,7 @@ static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base)
expires = ktime_sub(hrtimer_get_expires(timer), base->offset);
if (expires < expires_next) {
expires_next = expires;
@@ -95,3 +100,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
}
/*
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 528276dfeb134c7e8f46afdced23ebb1c7da0c8b Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:06 +0100
Subject: [PATCH 17/29] hrtimer: Make hrtimer_reprogramm() unconditional
Subject: [PATCH 033/418] hrtimer: Make hrtimer_reprogramm() unconditional
hrtimer_reprogram() needs to be available unconditionally for softirq based
hrtimers. Move the function and all required struct members out of the
@@ -14,10 +15,12 @@ replication of that code for the upcoming softirq based hrtimers support.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 6 +-
kernel/time/hrtimer.c | 129 +++++++++++++++++++++++-------------------------
include/linux/hrtimer.h | 6 +-
kernel/time/hrtimer.c | 129 +++++++++++++++++++---------------------
2 files changed, 65 insertions(+), 70 deletions(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 2d3e1d678a4d..98ed35767ac5 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -182,10 +182,10 @@ struct hrtimer_cpu_base {
@@ -34,12 +37,15 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
unsigned int nr_events;
unsigned short nr_retries;
unsigned short nr_hangs;
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index e01c2e78c032..37085a13f19a 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -582,68 +582,6 @@ hrtimer_force_reprogram(struct hrtimer_c
@@ -581,68 +581,6 @@ hrtimer_force_reprogram(struct hrtimer_cpu_base *cpu_base, int skip_equal)
tick_program_event(cpu_base->expires_next, 1);
}
/*
-/*
- * When a timer is enqueued and expires earlier than the already enqueued
- * timers, we have to check, whether it expires earlier than the timer for
- * which the clock event device was armed.
@@ -101,11 +107,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
- tick_program_event(expires, 1);
-}
-
-/*
/*
* Retrigger next event is called after clock was set
*
* Called with interrupts disabled via on_each_cpu()
@@ -703,16 +641,73 @@ static inline int hrtimer_is_hres_enable
@@ -703,15 +641,72 @@ static inline int hrtimer_is_hres_enabled(void) { return 0; }
static inline void hrtimer_switch_to_hres(void) { }
static inline void
hrtimer_force_reprogram(struct hrtimer_cpu_base *base, int skip_equal) { }
@@ -118,7 +123,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#endif /* CONFIG_HIGH_RES_TIMERS */
/*
+/*
+ * When a timer is enqueued and expires earlier than the already enqueued
+ * timers, we have to check, whether it expires earlier than the timer for
+ * which the clock event device was armed.
@@ -180,7 +185,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+ tick_program_event(expires, 1);
+}
+
+/*
/*
* Clock realtime was set
*
* Change the offset of the realtime clock vs. the monotonic
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 679e677ed43106bfa23fcd7fa318acf826e27113 Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:07 +0100
Subject: [PATCH 18/29] hrtimer: Make hrtimer_force_reprogramm()
Subject: [PATCH 034/418] hrtimer: Make hrtimer_force_reprogramm()
unconditionally available
hrtimer_force_reprogram() needs to be available unconditionally for softirq
@@ -19,12 +20,14 @@ eliminated in the CONFIG_HIGH_RES_TIMERS=n case by the compiler.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 58 ++++++++++++++++++++++++--------------------------
kernel/time/hrtimer.c | 58 +++++++++++++++++++++----------------------
1 file changed, 28 insertions(+), 30 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 37085a13f19a..5fd669dd46be 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -513,34 +513,6 @@ static inline int hrtimer_hres_active(vo
@@ -513,34 +513,6 @@ static inline int hrtimer_hres_active(void)
return __hrtimer_hres_active(this_cpu_ptr(&hrtimer_bases));
}
@@ -59,7 +62,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Reprogram the event source with checking both queues for the
* next event
@@ -581,6 +553,34 @@ hrtimer_force_reprogram(struct hrtimer_c
@@ -581,6 +553,34 @@ hrtimer_force_reprogram(struct hrtimer_cpu_base *cpu_base, int skip_equal)
tick_program_event(cpu_base->expires_next, 1);
}
@@ -103,3 +106,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static inline void retrigger_next_event(void *arg) { }
#endif /* CONFIG_HIGH_RES_TIMERS */
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 748812cb4f5a3b85cb2ba72c6edb68e390137b84 Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:08 +0100
Subject: [PATCH 19/29] hrtimer: Unify handling of hrtimer remove
Subject: [PATCH 035/418] hrtimer: Unify handling of hrtimer remove
When the first hrtimer on the current CPU is removed,
hrtimer_force_reprogram() is invoked but only when
@@ -36,12 +37,14 @@ compiler in the CONFIG_HIGH_RES_TIMERS=n case.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 10 ++++------
kernel/time/hrtimer.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 5fd669dd46be..ce9a3ef7a796 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -523,9 +523,6 @@ hrtimer_force_reprogram(struct hrtimer_c
@@ -523,9 +523,6 @@ hrtimer_force_reprogram(struct hrtimer_cpu_base *cpu_base, int skip_equal)
{
ktime_t expires_next;
@@ -51,7 +54,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
expires_next = __hrtimer_get_next_event(cpu_base);
if (skip_equal && expires_next == cpu_base->expires_next)
@@ -534,6 +531,9 @@ hrtimer_force_reprogram(struct hrtimer_c
@@ -534,6 +531,9 @@ hrtimer_force_reprogram(struct hrtimer_cpu_base *cpu_base, int skip_equal)
cpu_base->expires_next = expires_next;
/*
@@ -61,7 +64,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
* If a hang was detected in the last timer interrupt then we
* leave the hang delay active in the hardware. We want the
* system to make progress. That also prevents the following
@@ -547,7 +547,7 @@ hrtimer_force_reprogram(struct hrtimer_c
@@ -547,7 +547,7 @@ hrtimer_force_reprogram(struct hrtimer_cpu_base *cpu_base, int skip_equal)
* set. So we'd effectivly block all timers until the T2 event
* fires.
*/
@@ -70,7 +73,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return;
tick_program_event(cpu_base->expires_next, 1);
@@ -848,7 +848,6 @@ static void __remove_hrtimer(struct hrti
@@ -848,7 +848,6 @@ static void __remove_hrtimer(struct hrtimer *timer,
if (!timerqueue_del(&base->active, &timer->node))
cpu_base->active_bases &= ~(1 << base->index);
@@ -78,7 +81,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Note: If reprogram is false we do not update
* cpu_base->next_timer. This happens when we remove the first
@@ -859,7 +858,6 @@ static void __remove_hrtimer(struct hrti
@@ -859,7 +858,6 @@ static void __remove_hrtimer(struct hrtimer *timer,
*/
if (reprogram && timer == cpu_base->next_timer)
hrtimer_force_reprogram(cpu_base, 1);
@@ -86,3 +89,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/*
--
2.17.1

View File

@@ -1,6 +1,7 @@
From bf1446f64f73dad06295e748afb019d24f7cb3ef Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:09 +0100
Subject: [PATCH 20/29] hrtimer: Unify handling of remote enqueue
Subject: [PATCH 036/418] hrtimer: Unify handling of remote enqueue
hrtimer_reprogram() is conditionally invoked from hrtimer_start_range_ns()
when hrtimer_cpu_base.hres_active is true.
@@ -48,14 +49,16 @@ now.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 18 ++++++------------
kernel/time/tick-internal.h | 6 ------
kernel/time/timer.c | 9 ++++++++-
kernel/time/hrtimer.c | 18 ++++++------------
kernel/time/tick-internal.h | 6 ------
kernel/time/timer.c | 9 ++++++++-
3 files changed, 14 insertions(+), 19 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index ce9a3ef7a796..35d7d0c8c3d6 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -687,21 +687,24 @@ static void hrtimer_reprogram(struct hrt
@@ -687,21 +687,24 @@ static void hrtimer_reprogram(struct hrtimer *timer,
/* Update the pointer to the next expiring timer */
cpu_base->next_timer = timer;
@@ -82,7 +85,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
tick_program_event(expires, 1);
}
@@ -940,16 +943,7 @@ void hrtimer_start_range_ns(struct hrtim
@@ -940,16 +943,7 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
if (!leftmost)
goto unlock;
@@ -100,9 +103,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
unlock:
unlock_hrtimer_base(timer, &flags);
}
diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
index 4ac74dff59f0..e277284c2831 100644
--- a/kernel/time/tick-internal.h
+++ b/kernel/time/tick-internal.h
@@ -151,18 +151,12 @@ static inline void tick_nohz_init(void)
@@ -151,18 +151,12 @@ static inline void tick_nohz_init(void) { }
#ifdef CONFIG_NO_HZ_COMMON
extern unsigned long tick_nohz_active;
extern void timers_update_nohz(void);
@@ -121,9 +126,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#endif
DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases);
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index b24232985960..34415f2b3f04 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -210,7 +210,7 @@ static DEFINE_PER_CPU(struct timer_base,
@@ -210,7 +210,7 @@ static DEFINE_PER_CPU(struct timer_base, timer_bases[NR_BASES]);
#ifdef CONFIG_NO_HZ_COMMON
@@ -132,7 +139,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static DEFINE_MUTEX(timer_keys_mutex);
static void timer_update_keys(struct work_struct *work);
@@ -260,6 +260,13 @@ int timer_migration_handler(struct ctl_t
@@ -260,6 +260,13 @@ int timer_migration_handler(struct ctl_table *table, int write,
mutex_unlock(&timer_keys_mutex);
return ret;
}
@@ -146,3 +153,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#endif /* NO_HZ_COMMON */
static unsigned long round_jiffies_common(unsigned long j, int cpu,
--
2.17.1

View File

@@ -1,6 +1,8 @@
From fb8fd05821b83cac5e75caf3cd2e7d7f939e9df8 Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:10 +0100
Subject: [PATCH 21/29] hrtimer: Make remote enqueue decision less restrictive
Subject: [PATCH 037/418] hrtimer: Make remote enqueue decision less
restrictive
The current decision whether a timer can be queued on a remote CPU checks
for timer->expiry <= remote_cpu_base.expires_next.
@@ -15,12 +17,14 @@ first expiring timer on a remote CPU base.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 2 +-
kernel/time/hrtimer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 35d7d0c8c3d6..1b2866645c83 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -168,7 +168,7 @@ hrtimer_check_target(struct hrtimer *tim
@@ -168,7 +168,7 @@ hrtimer_check_target(struct hrtimer *timer, struct hrtimer_clock_base *new_base)
ktime_t expires;
expires = ktime_sub(hrtimer_get_expires(timer), new_base->offset);
@@ -29,3 +33,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
static inline
--
2.17.1

View File

@@ -1,6 +1,8 @@
From 9f9520ee32930e264c6c3b96bcbff47d3e1d3535 Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:11 +0100
Subject: [PATCH 22/29] hrtimer: Remove base argument from hrtimer_reprogram()
Subject: [PATCH 038/418] hrtimer: Remove base argument from
hrtimer_reprogram()
hrtimer_reprogram() must have access to the hrtimer_clock_base of the new
first expiring timer to access hrtimer_clock_base.offset for adjusting the
@@ -20,12 +22,14 @@ argument from hrtimer_reprogram() and retrieve the clock base internally.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 6 +++---
kernel/time/hrtimer.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 1b2866645c83..9030dcb3ef14 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -650,10 +650,10 @@ static inline void retrigger_next_event(
@@ -650,10 +650,10 @@ static inline void retrigger_next_event(void *arg) { }
*
* Called with interrupts disabled and base->cpu_base.lock held
*/
@@ -38,7 +42,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
ktime_t expires = ktime_sub(hrtimer_get_expires(timer), base->offset);
WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0);
@@ -943,7 +943,7 @@ void hrtimer_start_range_ns(struct hrtim
@@ -943,7 +943,7 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
if (!leftmost)
goto unlock;
@@ -47,3 +51,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
unlock:
unlock_hrtimer_base(timer, &flags);
}
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 2902f951d983fd0c1ba2c263f8cefaaf9920dddf Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:12 +0100
Subject: [PATCH 23/29] hrtimer: Split hrtimer_start_range_ns()
Subject: [PATCH 039/418] hrtimer: Split hrtimer_start_range_ns()
Preparatory patch for softirq based hrtimers to avoid code duplication. No
functional change.
@@ -8,12 +9,14 @@ functional change.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 44 ++++++++++++++++++++++++--------------------
kernel/time/hrtimer.c | 44 +++++++++++++++++++++++--------------------
1 file changed, 24 insertions(+), 20 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 9030dcb3ef14..687a8d903a18 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -909,22 +909,11 @@ static inline ktime_t hrtimer_update_low
@@ -909,22 +909,11 @@ static inline ktime_t hrtimer_update_lowres(struct hrtimer *timer, ktime_t tim,
return tim;
}
@@ -40,7 +43,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* Remove an active timer from the queue: */
remove_hrtimer(timer, base, true);
@@ -939,12 +928,27 @@ void hrtimer_start_range_ns(struct hrtim
@@ -939,12 +928,27 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
/* Switch the timer base, if necessary: */
new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED);
@@ -73,3 +76,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
unlock_hrtimer_base(timer, &flags);
}
EXPORT_SYMBOL_GPL(hrtimer_start_range_ns);
--
2.17.1

View File

@@ -1,6 +1,7 @@
From 02981f05fa68ffe985a592dc05e55aab21ade52d Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:13 +0100
Subject: [PATCH 24/29] hrtimer: Split __hrtimer_get_next_event()
Subject: [PATCH 040/418] hrtimer: Split __hrtimer_get_next_event()
Preparatory patch for softirq based hrtimers to avoid code duplication. No
functional change.
@@ -8,12 +9,14 @@ functional change.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 20 ++++++++++++++++----
kernel/time/hrtimer.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 687a8d903a18..2382bc5d8e4d 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -459,13 +459,13 @@ static struct hrtimer_clock_base *
@@ -459,13 +459,13 @@ __next_base(struct hrtimer_cpu_base *cpu_base, unsigned int *active)
while ((base = __next_base((cpu_base), &(active))))
#if defined(CONFIG_NO_HZ_COMMON) || defined(CONFIG_HIGH_RES_TIMERS)
@@ -31,7 +34,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
for_each_active_base(base, cpu_base, active) {
struct timerqueue_node *next;
struct hrtimer *timer;
@@ -487,6 +487,18 @@ static ktime_t __hrtimer_get_next_event(
@@ -487,6 +487,18 @@ static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base)
expires_next = 0;
return expires_next;
}
@@ -50,3 +53,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#endif
static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base)
--
2.17.1

View File

@@ -1,6 +1,8 @@
From 98dc570c5d061de989184f864ecfb6ce8d37908d Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:14 +0100
Subject: [PATCH 25/29] hrtimer: Use irqsave/irqrestore around __run_hrtimer()
Subject: [PATCH 041/418] hrtimer: Use irqsave/irqrestore around
__run_hrtimer()
__run_hrtimer() is called with the hrtimer_cpu_base.lock held and
interrupts disabled. Before invoking the timer callback the base lock is
@@ -19,9 +21,11 @@ Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
kernel/time/hrtimer.c | 31 ++++++++++++++++++-------------
kernel/time/hrtimer.c | 31 ++++++++++++++++++-------------
1 file changed, 18 insertions(+), 13 deletions(-)
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 2382bc5d8e4d..86cdc9a76911 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -1163,7 +1163,8 @@ EXPORT_SYMBOL_GPL(hrtimer_active);
@@ -34,7 +38,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
{
enum hrtimer_restart (*fn)(struct hrtimer *);
int restart;
@@ -1198,11 +1199,11 @@ static void __run_hrtimer(struct hrtimer
@@ -1198,11 +1199,11 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base,
* protected against migration to a different CPU even if the lock
* is dropped.
*/
@@ -48,7 +52,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Note: We clear the running state after enqueue_hrtimer and
@@ -1230,7 +1231,8 @@ static void __run_hrtimer(struct hrtimer
@@ -1230,7 +1231,8 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base,
base->running = NULL;
}
@@ -58,7 +62,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
{
struct hrtimer_clock_base *base;
unsigned int active = cpu_base->active_bases;
@@ -1261,7 +1263,7 @@ static void __hrtimer_run_queues(struct
@@ -1261,7 +1263,7 @@ static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now)
if (basenow < hrtimer_get_softexpires_tv64(timer))
break;
@@ -67,7 +71,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
}
}
@@ -1276,13 +1278,14 @@ void hrtimer_interrupt(struct clock_even
@@ -1276,13 +1278,14 @@ void hrtimer_interrupt(struct clock_event_device *dev)
{
struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases);
ktime_t expires_next, now, entry_time, delta;
@@ -83,7 +87,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
entry_time = now = hrtimer_update_base(cpu_base);
retry:
cpu_base->in_hrtirq = 1;
@@ -1295,7 +1298,7 @@ void hrtimer_interrupt(struct clock_even
@@ -1295,7 +1298,7 @@ void hrtimer_interrupt(struct clock_event_device *dev)
*/
cpu_base->expires_next = KTIME_MAX;
@@ -92,7 +96,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* Reevaluate the clock bases for the next expiry */
expires_next = __hrtimer_get_next_event(cpu_base);
@@ -1305,7 +1308,7 @@ void hrtimer_interrupt(struct clock_even
@@ -1305,7 +1308,7 @@ void hrtimer_interrupt(struct clock_event_device *dev)
*/
cpu_base->expires_next = expires_next;
cpu_base->in_hrtirq = 0;
@@ -101,7 +105,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* Reprogramming necessary ? */
if (!tick_program_event(expires_next, 0)) {
@@ -1326,7 +1329,7 @@ void hrtimer_interrupt(struct clock_even
@@ -1326,7 +1329,7 @@ void hrtimer_interrupt(struct clock_event_device *dev)
* Acquire base lock for updating the offsets and retrieving
* the current time.
*/
@@ -110,7 +114,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
now = hrtimer_update_base(cpu_base);
cpu_base->nr_retries++;
if (++retries < 3)
@@ -1339,7 +1342,8 @@ void hrtimer_interrupt(struct clock_even
@@ -1339,7 +1342,8 @@ void hrtimer_interrupt(struct clock_event_device *dev)
*/
cpu_base->nr_hangs++;
cpu_base->hang_detected = 1;
@@ -120,7 +124,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
delta = ktime_sub(now, entry_time);
if ((unsigned int)delta > cpu_base->max_hang_time)
cpu_base->max_hang_time = (unsigned int) delta;
@@ -1381,6 +1385,7 @@ static inline void __hrtimer_peek_ahead_
@@ -1381,6 +1385,7 @@ static inline void __hrtimer_peek_ahead_timers(void) { }
void hrtimer_run_queues(void)
{
struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases);
@@ -142,3 +146,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/*
--
2.17.1

View File

@@ -1,7 +1,8 @@
From d748cf5fda146e95ece2f26bbb5355989feb2c0c Mon Sep 17 00:00:00 2001
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Wed, 20 Dec 2017 17:13:15 +0100
Subject: [PATCH 26/29] hrtimer: Add clock bases and hrtimer mode for soft irq
context
Subject: [PATCH 042/418] hrtimer: Add clock bases and hrtimer mode for soft
irq context
hrtimer callback functions are always executed in hard interrupt
context. Users of hrtimer which need their timer function to be executed
@@ -19,11 +20,13 @@ bits and update the decoding of hrtimer_mode in tracepoints.
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
include/linux/hrtimer.h | 14 ++++++++++++++
include/trace/events/timer.h | 6 +++++-
kernel/time/hrtimer.c | 20 ++++++++++++++++++++
include/linux/hrtimer.h | 14 ++++++++++++++
include/trace/events/timer.h | 6 +++++-
kernel/time/hrtimer.c | 20 ++++++++++++++++++++
3 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 98ed35767ac5..26ae8a868ea8 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -33,14 +33,24 @@ struct hrtimer_cpu_base;
@@ -62,6 +65,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
HRTIMER_MAX_CLOCK_BASES,
};
diff --git a/include/trace/events/timer.h b/include/trace/events/timer.h
index 744b4310b24b..a57e4ee989d6 100644
--- a/include/trace/events/timer.h
+++ b/include/trace/events/timer.h
@@ -148,7 +148,11 @@ DEFINE_EVENT(timer_class, timer_cancel,
@@ -77,9 +82,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/**
* hrtimer_init - called when the hrtimer is initialized
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 86cdc9a76911..b5121845d12c 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -92,6 +92,26 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base,
@@ -92,6 +92,26 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) =
.clockid = CLOCK_TAI,
.get_time = &ktime_get_clocktai,
},
@@ -106,3 +113,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
};
--
2.17.1

Some files were not shown because too many files have changed in this diff Show More