Merge tag 'for-linus-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 29 Jan 2020 02:29:25 +0000 (18:29 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 29 Jan 2020 02:29:25 +0000 (18:29 -0800)
Pull UML updates from Anton Ivanov:
 "I am sending this on behalf of Richard who is traveling.

  This contains the following changes for UML:

   - Fix for time travel mode

   - Disable CONFIG_CONSTRUCTORS again

   - A new command line option to have an non-raw serial line

   - Preparations to remove obsolete UML network drivers"

* tag 'for-linus-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
  um: Fix time-travel=inf-cpu with xor/raid6
  Revert "um: Enable CONFIG_CONSTRUCTORS"
  um: Mark non-vector net transports as obsolete
  um: Add an option to make serial driver non-raw

arch/um/Kconfig
arch/um/drivers/Kconfig
arch/um/drivers/chan_user.h
arch/um/drivers/ssl.c
arch/um/include/asm/Kbuild
arch/um/include/asm/common.lds.S
arch/um/include/asm/xor.h [new file with mode: 0644]
arch/um/kernel/dyn.lds.S
init/Kconfig
kernel/gcov/Kconfig

index 6f0edd0..0917f84 100644 (file)
@@ -189,6 +189,8 @@ config SECCOMP
 config UML_TIME_TRAVEL_SUPPORT
        bool
        prompt "Support time-travel mode (e.g. for test execution)"
+       # inf-cpu mode is incompatible with the benchmarking
+       depends on !RAID6_PQ_BENCHMARK
        help
          Enable this option to support time travel inside the UML instance.
 
index 388096f..72d4170 100644 (file)
@@ -147,7 +147,7 @@ config UML_NET
          make use of UML networking.
 
 config UML_NET_ETHERTAP
-       bool "Ethertap transport"
+       bool "Ethertap transport (obsolete)"
        depends on UML_NET
        help
          The Ethertap User-Mode Linux network transport allows a single
@@ -167,14 +167,13 @@ config UML_NET_ETHERTAP
          has examples of the UML command line to use to enable Ethertap
          networking.
 
-         If you'd like to set up an IP network with the host and/or the
-         outside world, say Y to this, the Daemon Transport and/or the
-         Slip Transport.  You'll need at least one of them, but may choose
-         more than one without conflict.  If you don't need UML networking,
-         say N.
+         NOTE: THIS TRANSPORT IS DEPRECATED AND WILL BE REMOVED SOON!!! Please
+         migrate to UML_NET_VECTOR.
+
+         If unsure, say N.
 
 config UML_NET_TUNTAP
-       bool "TUN/TAP transport"
+       bool "TUN/TAP transport (obsolete)"
        depends on UML_NET
        help
          The UML TUN/TAP network transport allows a UML instance to exchange
@@ -185,8 +184,13 @@ config UML_NET_TUNTAP
          To use this transport, your host kernel must have support for TUN/TAP
          devices, either built-in or as a module.
 
+         NOTE: THIS TRANSPORT IS DEPRECATED AND WILL BE REMOVED SOON!!! Please
+         migrate to UML_NET_VECTOR.
+
+         If unsure, say N.
+
 config UML_NET_SLIP
-       bool "SLIP transport"
+       bool "SLIP transport (obsolete)"
        depends on UML_NET
        help
          The slip User-Mode Linux network transport allows a running UML to
@@ -201,16 +205,13 @@ config UML_NET_SLIP
          has examples of the UML command line to use to enable slip
          networking, and details of a few quirks with it.
 
-         The Ethertap Transport is preferred over slip because of its
-         limitations.  If you prefer slip, however, say Y here.  Otherwise
-         choose the Multicast transport (to network multiple UMLs on
-         multiple hosts), Ethertap (to network with the host and the
-         outside world), and/or the Daemon transport (to network multiple
-         UMLs on a single host).  You may choose more than one without
-         conflict.  If you don't need UML networking, say N.
+         NOTE: THIS TRANSPORT IS DEPRECATED AND WILL BE REMOVED SOON!!! Please
+         migrate to UML_NET_VECTOR.
+
+         If unsure, say N.
 
 config UML_NET_DAEMON
-       bool "Daemon transport"
+       bool "Daemon transport (obsolete)"
        depends on UML_NET
        help
          This User-Mode Linux network transport allows one or more running
@@ -225,13 +226,10 @@ config UML_NET_DAEMON
          has examples of the UML command line to use to enable Daemon
          networking.
 
-         If you'd like to set up a network with other UMLs on a single host,
-         say Y.  If you need a network between UMLs on multiple physical
-         hosts, choose the Multicast Transport.  To set up a network with
-         the host and/or other IP machines, say Y to the Ethertap or Slip
-         transports.  You'll need at least one of them, but may choose
-         more than one without conflict.  If you don't need UML networking,
-         say N.
+         NOTE: THIS TRANSPORT IS DEPRECATED AND WILL BE REMOVED SOON!!! Please
+         migrate to UML_NET_VECTOR.
+
+         If unsure, say N.
 
 config UML_NET_VECTOR
        bool "Vector I/O high performance network devices"
@@ -245,7 +243,7 @@ config UML_NET_VECTOR
        drivers.
 
 config UML_NET_VDE
-       bool "VDE transport"
+       bool "VDE transport (obsolete)"
        depends on UML_NET
        help
        This User-Mode Linux network transport allows one or more running
@@ -263,11 +261,13 @@ config UML_NET_VDE
        That site has a good overview of what VDE is and also examples
        of the UML command line to use to enable VDE networking.
 
-       If you need UML networking with VDE,
-       say Y.
+       NOTE: THIS TRANSPORT IS DEPRECATED AND WILL BE REMOVED SOON!!! Please
+       migrate to UML_NET_VECTOR.
+
+       If unsure, say N.
 
 config UML_NET_MCAST
-       bool "Multicast transport"
+       bool "Multicast transport (obsolete)"
        depends on UML_NET
        help
          This Multicast User-Mode Linux network transport allows multiple
@@ -284,15 +284,13 @@ config UML_NET_MCAST
          has examples of the UML command line to use to enable Multicast
          networking, and notes about the security of this approach.
 
-         If you need UMLs on multiple physical hosts to communicate as if
-         they shared an Ethernet network, say Y.  If you need to communicate
-         with other IP machines, make sure you select one of the other
-         transports (possibly in addition to Multicast; they're not
-         exclusive).  If you don't need to network UMLs say N to each of
-         the transports.
+         NOTE: THIS TRANSPORT IS DEPRECATED AND WILL BE REMOVED SOON!!! Please
+         migrate to UML_NET_VECTOR.
+
+         If unsure, say N.
 
 config UML_NET_PCAP
-       bool "pcap transport"
+       bool "pcap transport (obsolete)"
        depends on UML_NET
        help
        The pcap transport makes a pcap packet stream on the host look
@@ -304,11 +302,13 @@ config UML_NET_PCAP
          <http://user-mode-linux.sourceforge.net/old/networking.html>  That site
          has examples of the UML command line to use to enable this option.
 
-       If you intend to use UML as a network monitor for the host, say
-       Y here.  Otherwise, say N.
+       NOTE: THIS TRANSPORT IS DEPRECATED AND WILL BE REMOVED SOON!!! Please
+       migrate to UML_NET_VECTOR.
+
+       If unsure, say N.
 
 config UML_NET_SLIRP
-       bool "SLiRP transport"
+       bool "SLiRP transport (obsolete)"
        depends on UML_NET
        help
          The SLiRP User-Mode Linux network transport allows a running UML
@@ -328,9 +328,10 @@ config UML_NET_SLIRP
          that of a host behind a firewall that masquerades all network
          connections passing through it (but is less secure).
 
-         To use this you should first have slirp compiled somewhere
-         accessible on the host, and have read its documentation.  If you
-         don't need UML networking, say N.
+         NOTE: THIS TRANSPORT IS DEPRECATED AND WILL BE REMOVED SOON!!! Please
+         migrate to UML_NET_VECTOR.
+
+         If unsure, say N.
 
          Startup example: "eth0=slirp,FE:FD:01:02:03:04,/usr/local/bin/slirp"
 
index 72222bb..4e51b85 100644 (file)
@@ -11,7 +11,7 @@
 struct chan_opts {
        void (*const announce)(char *dev_name, int dev);
        char *xterm_title;
-       const int raw;
+       int raw;
 };
 
 struct chan_ops {
index b213201..26c5716 100644 (file)
@@ -196,3 +196,11 @@ static int ssl_chan_setup(char *str)
 
 __setup("ssl", ssl_chan_setup);
 __channel_help(ssl_chan_setup, "ssl");
+
+static int ssl_non_raw_setup(char *str)
+{
+       opts.raw = 0;
+       return 1;
+}
+__setup("ssl-non-raw", ssl_non_raw_setup);
+__channel_help(ssl_non_raw_setup, "set serial lines to non-raw mode");
index 398006d..db7d9d4 100644 (file)
@@ -25,5 +25,4 @@ generic-y += switch_to.h
 generic-y += topology.h
 generic-y += trace_clock.h
 generic-y += word-at-a-time.h
-generic-y += xor.h
 generic-y += kprobes.h
index 7145ce6..eca6c45 100644 (file)
@@ -82,8 +82,8 @@
        __preinit_array_end = .;
   }
   .init_array : {
-        /* dummy - we call this ourselves */
        __init_array_start = .;
+       *(.init_array)
        __init_array_end = .;
   }
   .fini_array : {
diff --git a/arch/um/include/asm/xor.h b/arch/um/include/asm/xor.h
new file mode 100644 (file)
index 0000000..7a3208c
--- /dev/null
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#include <asm-generic/xor.h>
+#include <shared/timer-internal.h>
+
+/* pick an arbitrary one - measuring isn't possible with inf-cpu */
+#define XOR_SELECT_TEMPLATE(x) \
+       (time_travel_mode == TT_MODE_INFCPU ? &xor_block_8regs : NULL)
index c69d69e..f500148 100644 (file)
@@ -103,6 +103,7 @@ SECTIONS
      be empty, which isn't pretty.  */
   . = ALIGN(32 / 8);
   .preinit_array     : { *(.preinit_array) }
+  .init_array     : { *(.init_array) }
   .fini_array     : { *(.fini_array) }
   .data           : {
     INIT_TASK_DATA(KERNEL_STACK_SIZE)
index 303b413..24b23d8 100644 (file)
@@ -54,6 +54,7 @@ config CC_DISABLE_WARN_MAYBE_UNINITIALIZED
 
 config CONSTRUCTORS
        bool
+       depends on !UML
 
 config IRQ_WORK
        bool
index 060e8e7..3941a9c 100644 (file)
@@ -4,7 +4,7 @@ menu "GCOV-based kernel profiling"
 config GCOV_KERNEL
        bool "Enable gcov-based kernel profiling"
        depends on DEBUG_FS
-       select CONSTRUCTORS
+       select CONSTRUCTORS if !UML
        default n
        ---help---
        This option enables gcov-based code profiling (e.g. for code coverage