[GIT PULL] s390 updates for the 6.8 merge window

From: Alexander Gordeev
Date: Tue Jan 09 2024 - 04:06:17 EST


Hello Linus,

Please pull s390 changes for 6.8 merge window.

Please note three KVM commits that were agreed to go via s390 tree
as part of a floating-point unit (FPU) rework:
KVM: s390: fix setting of fpc register
KVM: s390: use READ_ONCE() to read fpc register value
KVM: s390: remove superfluous save_fpu_regs() call

Also, there is revert of defconfigs update that is upstream already
as commit 3d940bb18183 ("s390: update defconfigs"):
Revert "s390: update defconfigs"
s390: update defconfigs

Thank you,
Alexander

The following changes since commit 98b1cc82c4affc16f5598d4fa14b1858671b2263:

Linux 6.7-rc2 (2023-11-19 15:02:14 -0800)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git tags/s390-6.8-1

for you to fetch changes up to b2b97a62f055dd638f7f02087331a8380d8f139a:

Revert "s390: update defconfigs" (2023-12-18 10:58:58 +0100)

----------------------------------------------------------------
s390 updates for 6.8 merge window

- Add machine variable capacity information to /proc/sysinfo.

- Limit the waste of page tables and always align vmalloc area size
and base address on segment boundary.

- Fix a memory leak when an attempt to register interruption sub class
(ISC) for the adjunct-processor (AP) guest failed.

- Reset response code AP_RESPONSE_INVALID_GISA to understandable
by guest AP_RESPONSE_INVALID_ADDRESS in response to a failed
interruption sub class (ISC) registration attempt.

- Improve reaction to adjunct-processor (AP) AP_RESPONSE_OTHERWISE_CHANGED
response code when enabling interrupts on behalf of a guest.

- Fix incorrect sysfs 'status' attribute of adjunct-processor (AP) queue
device bound to the vfio_ap device driver when the mediated device is
attached to a guest, but the queue device is not passed through.

- Rework struct ap_card to hold the whole adjunct-processor (AP) card
hardware information. As result, all the ugly bit checks are replaced
by simple evaluations of the required bit fields.

- Improve handling of some weird scenarios between service element (SE)
host and SE guest with adjunct-processor (AP) pass-through support.

- Change local_ctl_set_bit() and local_ctl_clear_bit() so they return the
previous value of the to be changed control register. This is useful if
a bit is only changed temporarily and the previous content needs to be
restored.

- The kernel starts with machine checks disabled and is expected to enable
it once trap_init() is called. However the implementation allows machine
checks early. Consistently enable it in trap_init() only.

- local_mcck_disable() and local_mcck_enable() assume that machine checks
are always enabled. Instead implement and use local_mcck_save() and
local_mcck_restore() to disable machine checks and restore the previous
state.

- Modification of floating point control (FPC) register of a traced
process using ptrace interface may lead to corruption of the FPC
register of the tracing process. Fix this.

- kvm_arch_vcpu_ioctl_set_fpu() allows to set the floating point control
(FPC) register in vCPU, but may lead to corruption of the FPC register
of the host process. Fix this.

- Use READ_ONCE() to read a vCPU floating point register value from the
memory mapped area. This avoids that, depending on code generation,
a different value is tested for validity than the one that is used.

- Get rid of test_fp_ctl(), since it is quite subtle to use it correctly.
Instead copy a new floating point control register value into its save
area and test the validity of the new value when loading it.

- Remove superfluous save_fpu_regs() call.

- Remove s390 support for ARCH_WANTS_DYNAMIC_TASK_STRUCT. All machines
provide the vector facility since many years and the need to make the
task structure size dependent on the vector facility does not exist.

- Remove the "novx" kernel command line option, as the vector code runs
without any problems since many years.

- Add the vector facility to the z13 architecture level set (ALS).
All hypervisors support the vector facility since many years.
This allows compile time optimizations of the kernel.

- Get rid of MACHINE_HAS_VX and replace it with cpu_has_vx(). As result,
the compiled code will have less runtime checks and less code.

- Convert pgste_get_lock() and pgste_set_unlock() ASM inlines to C.

- Convert the struct subchannel spinlock from pointer to member.

----------------------------------------------------------------
Alexander Gordeev (2):
s390/boot: always align vmalloc area on segment boundary
Revert "s390: update defconfigs"

Anthony Krowiak (2):
s390/vfio-ap: unpin pages on gisc registration failure
s390/vfio-ap: set status response code to 06 on gisc registration failure

Claudio Imbrenda (1):
s390/mm: convert pgste locking functions to C

Halil Pasic (1):
s390/cio: make sch->lock spinlock pointer a member

Harald Freudenberger (2):
s390/ap: store TAPQ hwinfo in struct ap_card
s390/ap: handle outband SE bind state change

Heiko Carstens (13):
s390/ctlreg: return old register contents when changing bits
s390/nmi: consistently enable machine checks in trap_init()
s390/nmi: implement and use local_mcck_save() / local_mcck_restore()
s390/ptrace: handle setting of fpc register correctly
KVM: s390: fix setting of fpc register
KVM: s390: use READ_ONCE() to read fpc register value
s390/fpu: get rid of test_fp_ctl()
KVM: s390: remove superfluous save_fpu_regs() call
s390/fpu: remove ARCH_WANTS_DYNAMIC_TASK_STRUCT support
s390/fpu: remove "novx" option
s390/als: add vector facility to z13 architecture level set
s390/fpu: get rid of MACHINE_HAS_VX
s390: update defconfigs

Tony Krowiak (2):
s390/vfio-ap: improve reaction to response code 07 from PQAP(AQIC) command
s390/vfio-ap: fix sysfs status attribute for AP queue devices

Vasily Gorbik (1):
s390/sysinfo: add variable capacity information

arch/s390/Kconfig | 1 -
arch/s390/boot/ipl_parm.c | 2 +-
arch/s390/boot/startup.c | 3 +-
arch/s390/crypto/chacha-glue.c | 2 +-
arch/s390/include/asm/ap.h | 21 ++--
arch/s390/include/asm/ctlreg.h | 24 +++--
arch/s390/include/asm/fpu/api.h | 35 +++---
arch/s390/include/asm/fpu/internal.h | 10 +-
arch/s390/include/asm/processor.h | 34 ++++--
arch/s390/include/asm/setup.h | 2 -
arch/s390/include/asm/sysinfo.h | 4 +
arch/s390/kernel/compat_signal.c | 16 ++-
arch/s390/kernel/crash_dump.c | 5 +-
arch/s390/kernel/early.c | 12 +--
arch/s390/kernel/fpu.c | 12 +--
arch/s390/kernel/machine_kexec.c | 2 +-
arch/s390/kernel/nmi.c | 10 +-
arch/s390/kernel/perf_regs.c | 6 +-
arch/s390/kernel/process.c | 2 +-
arch/s390/kernel/processor.c | 7 +-
arch/s390/kernel/ptrace.c | 28 +++--
arch/s390/kernel/setup.c | 25 +----
arch/s390/kernel/signal.c | 12 +--
arch/s390/kernel/smp.c | 6 +-
arch/s390/kernel/sysinfo.c | 10 ++
arch/s390/kernel/traps.c | 13 ++-
arch/s390/kernel/vmlinux.lds.S | 1 +
arch/s390/kvm/interrupt.c | 2 +-
arch/s390/kvm/kvm-s390.c | 26 ++---
arch/s390/lib/test_unwind.c | 6 +-
arch/s390/mm/pgtable.c | 27 ++---
arch/s390/tools/gen_facilities.c | 1 +
drivers/s390/cio/chsc.c | 18 ++--
drivers/s390/cio/chsc_sch.c | 6 +-
drivers/s390/cio/cio.c | 6 +-
drivers/s390/cio/cio.h | 2 +-
drivers/s390/cio/css.c | 36 ++-----
drivers/s390/cio/device.c | 66 ++++++------
drivers/s390/cio/device_pgid.c | 12 +--
drivers/s390/cio/eadm_sch.c | 36 +++----
drivers/s390/cio/vfio_ccw_drv.c | 8 +-
drivers/s390/cio/vfio_ccw_fsm.c | 24 ++---
drivers/s390/crypto/ap_bus.c | 72 ++++++-------
drivers/s390/crypto/ap_bus.h | 22 +---
drivers/s390/crypto/ap_card.c | 18 ++--
drivers/s390/crypto/ap_queue.c | 200 +++++++++++++++++++++++------------
drivers/s390/crypto/vfio_ap_ops.c | 30 ++++--
drivers/s390/crypto/zcrypt_api.c | 16 +--
drivers/s390/crypto/zcrypt_cex4.c | 31 +++---
lib/raid6/s390vx.uc | 2 +-
50 files changed, 517 insertions(+), 455 deletions(-)