Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 015cd867 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull s390 updates from Martin Schwidefsky:
 "There are a couple of new things for s390 with this merge request:

   - a new scheduling domain "drawer" is added to reflect the unusual
     topology found on z13 machines.  Performance tests showed up to 8
     percent gain with the additional domain.

   - the new crc-32 checksum crypto module uses the vector-galois-field
     multiply and sum SIMD instruction to speed up crc-32 and crc-32c.

   - proper __ro_after_init support, this requires RO_AFTER_INIT_DATA in
     the generic vmlinux.lds linker script definitions.

   - kcov instrumentation support.  A prerequisite for that is the
     inline assembly basic block cleanup, which is the reason for the
     net/iucv/iucv.c change.

   - support for 2GB pages is added to the hugetlbfs backend.

  Then there are two removals:

   - the oprofile hardware sampling support is dead code and is removed.
     The oprofile user space uses the perf interface nowadays.

   - the ETR clock synchronization is removed, this has been superseeded
     be the STP clock synchronization.  And it always has been
     "interesting" code..

  And the usual bug fixes and cleanups"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (82 commits)
  s390/pci: Delete an unnecessary check before the function call "pci_dev_put"
  s390/smp: clean up a condition
  s390/cio/chp : Remove deprecated create_singlethread_workqueue
  s390/chsc: improve channel path descriptor determination
  s390/chsc: sanitize fmt check for chp_desc determination
  s390/cio: make fmt1 channel path descriptor optional
  s390/chsc: fix ioctl CHSC_INFO_CU command
  s390/cio/device_ops: fix kernel doc
  s390/cio: allow to reset channel measurement block
  s390/console: Make preferred console handling more consistent
  s390/mm: fix gmap tlb flush issues
  s390/mm: add support for 2GB hugepages
  s390: have unique symbol for __switch_to address
  s390/cpuinfo: show maximum thread id
  s390/ptrace: clarify bits in the per_struct
  s390: stack address vs thread_info
  s390: remove pointless load within __switch_to
  s390: enable kcov support
  s390/cpumf: use basic block for ecctr inline assembly
  s390/hypfs: use basic block for diag inline assembly
  ...
parents 85802a49 64a40c84
Loading
Loading
Loading
Loading
+32 −8
Original line number Diff line number Diff line
@@ -20,48 +20,70 @@ to /proc/cpuinfo output of some architectures:
	identifier (rather than the kernel's).	The actual value is
	architecture and platform dependent.

4) /sys/devices/system/cpu/cpuX/topology/thread_siblings:
4) /sys/devices/system/cpu/cpuX/topology/drawer_id:

	the drawer ID of cpuX. Typically it is the hardware platform's
	identifier (rather than the kernel's).	The actual value is
	architecture and platform dependent.

5) /sys/devices/system/cpu/cpuX/topology/thread_siblings:

	internal kernel map of cpuX's hardware threads within the same
	core as cpuX.

5) /sys/devices/system/cpu/cpuX/topology/thread_siblings_list:
6) /sys/devices/system/cpu/cpuX/topology/thread_siblings_list:

	human-readable list of cpuX's hardware threads within the same
	core as cpuX.

6) /sys/devices/system/cpu/cpuX/topology/core_siblings:
7) /sys/devices/system/cpu/cpuX/topology/core_siblings:

	internal kernel map of cpuX's hardware threads within the same
	physical_package_id.

7) /sys/devices/system/cpu/cpuX/topology/core_siblings_list:
8) /sys/devices/system/cpu/cpuX/topology/core_siblings_list:

	human-readable list of cpuX's hardware threads within the same
	physical_package_id.

8) /sys/devices/system/cpu/cpuX/topology/book_siblings:
9) /sys/devices/system/cpu/cpuX/topology/book_siblings:

	internal kernel map of cpuX's hardware threads within the same
	book_id.

9) /sys/devices/system/cpu/cpuX/topology/book_siblings_list:
10) /sys/devices/system/cpu/cpuX/topology/book_siblings_list:

	human-readable list of cpuX's hardware threads within the same
	book_id.

11) /sys/devices/system/cpu/cpuX/topology/drawer_siblings:

	internal kernel map of cpuX's hardware threads within the same
	drawer_id.

12) /sys/devices/system/cpu/cpuX/topology/drawer_siblings_list:

	human-readable list of cpuX's hardware threads within the same
	drawer_id.

To implement it in an architecture-neutral way, a new source file,
drivers/base/topology.c, is to export the 6 or 9 attributes. The three book
related sysfs files will only be created if CONFIG_SCHED_BOOK is selected.
drivers/base/topology.c, is to export the 6 to 12 attributes. The book
and drawer related sysfs files will only be created if CONFIG_SCHED_BOOK
and CONFIG_SCHED_DRAWER are selected.

CONFIG_SCHED_BOOK and CONFIG_DRAWER are currently only used on s390, where
they reflect the cpu and cache hierarchy.

For an architecture to support this feature, it must define some of
these macros in include/asm-XXX/topology.h:
#define topology_physical_package_id(cpu)
#define topology_core_id(cpu)
#define topology_book_id(cpu)
#define topology_drawer_id(cpu)
#define topology_sibling_cpumask(cpu)
#define topology_core_cpumask(cpu)
#define topology_book_cpumask(cpu)
#define topology_drawer_cpumask(cpu)

The type of **_id macros is int.
The type of **_cpumask macros is (const) struct cpumask *. The latter
@@ -78,6 +100,8 @@ not defined by include/asm-XXX/topology.h:

For architectures that don't support books (CONFIG_SCHED_BOOK) there are no
default definitions for topology_book_id() and topology_book_cpumask().
For architectures that don't support drawes (CONFIG_SCHED_DRAWER) there are
no default definitions for topology_drawer_id() and topology_drawer_cpumask().

Additionally, CPU topology information is provided under
/sys/devices/system/cpu and includes these files.  The internal
+0 −2
Original line number Diff line number Diff line
@@ -2794,8 +2794,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
			timer: [X86] Force use of architectural NMI
				timer mode (see also oprofile.timer
				for generic hr timer mode)
				[s390] Force legacy basic mode sampling
                                (report cpu_type "timer")

	oops=panic	Always panic on oopses. Default is to just kill the
			process, but there is a small probability of
+1 −1
Original line number Diff line number Diff line
@@ -405,7 +405,7 @@ Example:

> ls /sys/kernel/debug/s390dbf/dasd
flush  hex_ascii  level pages raw
> cat /sys/kernel/debug/s390dbf/dasd/hex_ascii | sort +1
> cat /sys/kernel/debug/s390dbf/dasd/hex_ascii | sort -k2,2 -s
00 00974733272:680099 2 - 02 0006ad7e  07 ea 4a 90 | ....
00 00974733272:682210 2 - 02 0006ade6  46 52 45 45 | FREE
00 00974733272:682213 2 - 02 0006adf6  07 ea 4a 90 | ....
+6 −10
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ config S390
	select ARCH_HAS_DEVMEM_IS_ALLOWED
	select ARCH_HAS_ELF_RANDOMIZE
	select ARCH_HAS_GCOV_PROFILE_ALL
	select ARCH_HAS_KCOV
	select ARCH_HAS_SG_CHAIN
	select ARCH_HAVE_NMI_SAFE_CMPXCHG
	select ARCH_INLINE_READ_LOCK
@@ -163,6 +164,7 @@ config S390
	select NO_BOOTMEM
	select OLD_SIGACTION
	select OLD_SIGSUSPEND3
	select SPARSE_IRQ
	select SYSCTL_EXCEPTION_TRACE
	select TTY
	select VIRT_CPU_ACCOUNTING
@@ -477,6 +479,9 @@ config SCHED_MC
config SCHED_BOOK
	def_bool n

config SCHED_DRAWER
	def_bool n

config SCHED_TOPOLOGY
	def_bool y
	prompt "Topology scheduler support"
@@ -484,6 +489,7 @@ config SCHED_TOPOLOGY
	select SCHED_SMT
	select SCHED_MC
	select SCHED_BOOK
	select SCHED_DRAWER
	help
	  Topology scheduler support improves the CPU scheduler's decision
	  making when dealing with machines that have multi-threading,
@@ -605,16 +611,6 @@ config PCI_NR_FUNCTIONS
	  This allows you to specify the maximum number of PCI functions which
	  this kernel will support.

config PCI_NR_MSI
	int "Maximum number of MSI interrupts (64-32768)"
	range 64 32768
	default "256"
	help
	  This defines the number of virtual interrupts the kernel will
	  provide for MSI interrupts. If you configure your system to have
	  too few drivers will fail to allocate MSI interrupts for all
	  PCI devices.

source "drivers/pci/Kconfig"

endif	# PCI
+2 −0
Original line number Diff line number Diff line
@@ -4,6 +4,8 @@
# create a compressed vmlinux image from the original vmlinux
#

KCOV_INSTRUMENT := n

targets	:= vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2
targets += vmlinux.bin.xz vmlinux.bin.lzma vmlinux.bin.lzo vmlinux.bin.lz4
targets += misc.o piggy.o sizes.h head.o
Loading