Commit 0b707e57 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull s390 updates from Vasily Gorbik:

 - Add support for ftrace with direct call and ftrace direct call
   samples.

 - Add support for kernel command lines longer than current 896 bytes
   and make its length configurable.

 - Add support for BEAR enhancement facility to improve last breaking
   event instruction tracking.

 - Add kprobes sanity checks and testcases to prevent kprobe in the mid
   of an instruction.

 - Allow concurrent access to /dev/hwc for the CPUMF users.

 - Various ftrace / jump label improvements.

 - Convert unwinder tests to KUnit.

 - Add s390_iommu_aperture kernel parameter to tweak the limits on
   concurrently usable DMA mappings.

 - Add ap.useirq AP module option which can be used to disable interrupt
   use.

 - Add add_disk() error handling support to block device drivers.

 - Drop arch specific and use generic implementation of strlcpy and
   strrchr.

 - Several __pa/__va usages fixes.

 - Various cio, crypto, pci, kernel doc and other small fixes and
   improvements all over the code.

[ Merge fixup as per https://lore.kernel.org/all/YXAqZ%2FEszRisunQw@osiris/ ]

* tag 's390-5.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (63 commits)
  s390: make command line configurable
  s390: support command lines longer than 896 bytes
  s390/kexec_file: move kernel image size check
  s390/pci: add s390_iommu_aperture kernel parameter
  s390/spinlock: remove incorrect kernel doc indicator
  s390/string: use generic strlcpy
  s390/string: use generic strrchr
  s390/ap: function rework based on compiler warning
  s390/cio: make ccw_device_dma_* more robust
  s390/vfio-ap: s390/crypto: fix all kernel-doc warnings
  s390/hmcdrv: fix kernel doc comments
  s390/ap: new module option ap.useirq
  s390/cpumf: Allow multiple processes to access /dev/hwc
  s390/bitops: return true/false (not 1/0) from bool functions
  s390: add support for BEAR enhancement facility
  s390: introduce nospec_uses_trampoline()
  s390: rename last_break to pgm_last_break
  s390/ptrace: add last_break member to pt_regs
  s390/sclp: sort out physical vs virtual pointers usage
  s390/setup: convert start and end initrd pointers to virtual
  ...
parents 0c5c62dd 622021cd
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -4992,6 +4992,18 @@
			an IOTLB flush. Default is lazy flushing before reuse,
			which is faster.

	s390_iommu_aperture=	[KNL,S390]
			Specifies the size of the per device DMA address space
			accessible through the DMA and IOMMU APIs as a decimal
			factor of the size of main memory.
			The default is 1 meaning that one can concurrently use
			as many DMA addresses as physical memory is installed,
			if supported by hardware, and thus map all of memory
			once. With a value of 2 one can map all of memory twice
			and so on. As a special case a factor of 0 imposes no
			restrictions other than those given by hardware at the
			cost of significant additional memory use for tables.

	sa1100ir	[NET]
			See drivers/net/irda/sa1100_ir.c.

+26 −0
Original line number Diff line number Diff line
@@ -153,12 +153,15 @@ config S390
	select HAVE_DEBUG_KMEMLEAK
	select HAVE_DMA_CONTIGUOUS
	select HAVE_DYNAMIC_FTRACE
	select HAVE_DYNAMIC_FTRACE_WITH_ARGS
	select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
	select HAVE_DYNAMIC_FTRACE_WITH_REGS
	select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
	select HAVE_EFFICIENT_UNALIGNED_ACCESS
	select HAVE_FAST_GUP
	select HAVE_FENTRY
	select HAVE_FTRACE_MCOUNT_RECORD
	select HAVE_FUNCTION_ARG_ACCESS_API
	select HAVE_FUNCTION_ERROR_INJECTION
	select HAVE_FUNCTION_GRAPH_TRACER
	select HAVE_FUNCTION_TRACER
@@ -190,6 +193,7 @@ config S390
	select HAVE_REGS_AND_STACK_ACCESS_API
	select HAVE_RELIABLE_STACKTRACE
	select HAVE_RSEQ
	select HAVE_SAMPLE_FTRACE_DIRECT
	select HAVE_SOFTIRQ_ON_OWN_STACK
	select HAVE_SYSCALL_TRACEPOINTS
	select HAVE_VIRT_CPU_ACCOUNTING
@@ -434,6 +438,14 @@ endchoice
config 64BIT
	def_bool y

config COMMAND_LINE_SIZE
	int "Maximum size of kernel command line"
	default 4096
	range 896 1048576
	help
	  This allows you to specify the maximum length of the kernel command
	  line.

config COMPAT
	def_bool y
	prompt "Kernel support for 31 bit emulation"
@@ -938,6 +950,8 @@ menu "Selftests"

config S390_UNWIND_SELFTEST
	def_tristate n
	depends on KUNIT
	default KUNIT_ALL_TESTS
	prompt "Test unwind functions"
	help
	  This option enables s390 specific stack unwinder testing kernel
@@ -946,4 +960,16 @@ config S390_UNWIND_SELFTEST

	  Say N if you are unsure.

config S390_KPROBES_SANITY_TEST
	def_tristate n
	prompt "Enable s390 specific kprobes tests"
	depends on KPROBES
	depends on KUNIT
	help
	  This option enables an s390 specific kprobes test module. This option
	  is not useful for distributions or general kernels, but only for kernel
	  developers working on architecture code.

	  Say N if you are unsure.

endmenu
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ struct vmlinux_info {
	unsigned long dynsym_start;
	unsigned long rela_dyn_start;
	unsigned long rela_dyn_end;
	unsigned long amode31_size;
};

/* Symbols defined by linker scripts */
+29 −25
Original line number Diff line number Diff line
@@ -184,35 +184,23 @@ iplstart:
	bas	%r14,.Lloader		# load parameter file
	ltr	%r2,%r2 		# got anything ?
	bz	.Lnopf
	chi	%r2,895
	bnh	.Lnotrunc
	la	%r2,895
	l	%r3,MAX_COMMAND_LINE_SIZE+ARCH_OFFSET-PARMAREA(%r12)
	ahi	%r3,-1
	clr	%r2,%r3
	bl	.Lnotrunc
	lr	%r2,%r3
.Lnotrunc:
	l	%r4,.Linitrd
	clc	0(3,%r4),.L_hdr		# if it is HDRx
	bz	.Lagain1		# skip dataset header
	clc	0(3,%r4),.L_eof		# if it is EOFx
	bz	.Lagain1		# skip dateset trailer
	la	%r5,0(%r4,%r2)
	lr	%r3,%r2
	la	%r3,COMMAND_LINE-PARMAREA(%r12) # load adr. of command line
	mvc	0(256,%r3),0(%r4)
	mvc	256(256,%r3),256(%r4)
	mvc	512(256,%r3),512(%r4)
	mvc	768(122,%r3),768(%r4)
	slr	%r0,%r0
	b	.Lcntlp
.Ldelspc:
	ic	%r0,0(%r2,%r3)
	chi	%r0,0x20		# is it a space ?
	be	.Lcntlp
	ahi	%r2,1
	b	.Leolp
.Lcntlp:
	brct	%r2,.Ldelspc
.Leolp:
	slr	%r0,%r0
	stc	%r0,0(%r2,%r3)		# terminate buffer

	lr	%r5,%r2
	la	%r6,COMMAND_LINE-PARMAREA(%r12)
	lr	%r7,%r2
	ahi	%r7,1
	mvcl	%r6,%r4
.Lnopf:

#
@@ -317,6 +305,7 @@ SYM_CODE_START_LOCAL(startup_normal)
	xc	0x300(256),0x300
	xc	0xe00(256),0xe00
	xc	0xf00(256),0xf00
	lctlg	%c0,%c15,.Lctl-.LPG0(%r13)	# load control registers
	stcke	__LC_BOOT_CLOCK
	mvc	__LC_LAST_UPDATE_CLOCK(8),__LC_BOOT_CLOCK+1
	spt	6f-.LPG0(%r13)
@@ -335,6 +324,22 @@ SYM_CODE_END(startup_normal)
	.quad	0x0000000180000000,startup_pgm_check_handler
.Lio_new_psw:
	.quad	0x0002000180000000,0x1f0	# disabled wait
.Lctl:	.quad	0x04040000		# cr0: AFP registers & secondary space
	.quad	0			# cr1: primary space segment table
	.quad	0			# cr2: dispatchable unit control table
	.quad	0			# cr3: instruction authorization
	.quad	0xffff			# cr4: instruction authorization
	.quad	0			# cr5: primary-aste origin
	.quad	0			# cr6:	I/O interrupts
	.quad	0			# cr7:	secondary space segment table
	.quad	0x0000000000008000	# cr8:	access registers translation
	.quad	0			# cr9:	tracing off
	.quad	0			# cr10: tracing off
	.quad	0			# cr11: tracing off
	.quad	0			# cr12: tracing off
	.quad	0			# cr13: home space segment table
	.quad	0xc0000000		# cr14: machine check handling off
	.quad	0			# cr15: linkage stack operations

#include "head_kdump.S"

@@ -377,11 +382,10 @@ SYM_DATA_START(parmarea)
	.quad	0			# OLDMEM_BASE
	.quad	0			# OLDMEM_SIZE
	.quad	kernel_version		# points to kernel version string
	.quad	COMMAND_LINE_SIZE

	.org	COMMAND_LINE
	.byte	"root=/dev/ram0 ro"
	.byte	0
	.org	PARMAREA+__PARMAREA_SIZE
SYM_DATA_END(parmarea)

	.org	HEAD_END
+2 −2
Original line number Diff line number Diff line
@@ -170,10 +170,10 @@ static inline int has_ebcdic_char(const char *str)

void setup_boot_command_line(void)
{
	parmarea.command_line[ARCH_COMMAND_LINE_SIZE - 1] = 0;
	parmarea.command_line[COMMAND_LINE_SIZE - 1] = 0;
	/* convert arch command line to ascii if necessary */
	if (has_ebcdic_char(parmarea.command_line))
		EBCASC(parmarea.command_line, ARCH_COMMAND_LINE_SIZE);
		EBCASC(parmarea.command_line, COMMAND_LINE_SIZE);
	/* copy arch command line */
	strcpy(early_command_line, strim(parmarea.command_line));

Loading