Commit c6b3e969 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux

Pull s390 fixes from Martin Schwidefsky:

 - three more patches in regard to the SPDX license tags. The missing
   tags for the files in arch/s390/kvm will be merged via the KVM tree.
   With that all s390 related files should have their SPDX tags.

 - a patch to get rid of 'struct timespec' in the DASD driver.

 - bug fixes

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
  s390: fix compat system call table
  s390/mm: fix off-by-one bug in 5-level page table handling
  s390: Remove redudant license text
  s390: add a few more SPDX identifiers
  s390/dasd: prevent prefix I/O error
  s390: always save and restore all registers on context switch
  s390/dasd: remove 'struct timespec' usage
  s390/qdio: restrict target-full handling to IQDIO
  s390/qdio: consider ERROR buffers for inbound-full condition
  s390/virtio: add BSD license to virtio-ccw
parents 6e7e7f4d e779498d
# SPDX-License-Identifier: GPL-2.0
obj-y += kernel/ obj-y += kernel/
obj-y += mm/ obj-y += mm/
obj-$(CONFIG_KVM) += kvm/ obj-$(CONFIG_KVM) += kvm/
......
# SPDX-License-Identifier: GPL-2.0
# #
# Makefile for the Linux - z/VM Monitor Stream. # Makefile for the Linux - z/VM Monitor Stream.
# #
......
/* SPDX-License-Identifier: GPL-2.0 */
SECTIONS SECTIONS
{ {
.rodata.compressed : { .rodata.compressed : {
......
// SPDX-License-Identifier: GPL-2.0+
/* /*
* Cryptographic API. * Cryptographic API.
* *
...@@ -16,12 +17,6 @@ ...@@ -16,12 +17,6 @@
* Copyright (c) Alan Smithee. * Copyright (c) Alan Smithee.
* Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk> * Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk>
* Copyright (c) Jean-Francois Dive <jef@linuxbe.org> * Copyright (c) Jean-Francois Dive <jef@linuxbe.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
*/ */
#include <crypto/internal/hash.h> #include <crypto/internal/hash.h>
#include <linux/init.h> #include <linux/init.h>
......
# SPDX-License-Identifier: GPL-2.0
# #
# Makefile for the linux hypfs filesystem routines. # Makefile for the linux hypfs filesystem routines.
# #
......
# SPDX-License-Identifier: GPL-2.0
generic-y += asm-offsets.h generic-y += asm-offsets.h
generic-y += cacheflush.h generic-y += cacheflush.h
generic-y += clkdev.h generic-y += clkdev.h
......
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_ALTERNATIVE_H #ifndef _ASM_S390_ALTERNATIVE_H
#define _ASM_S390_ALTERNATIVE_H #define _ASM_S390_ALTERNATIVE_H
......
/* SPDX-License-Identifier: GPL-2.0 */
/* /*
* Adjunct processor (AP) interfaces * Adjunct processor (AP) interfaces
* *
* Copyright IBM Corp. 2017 * Copyright IBM Corp. 2017
* *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License (version 2 only)
* as published by the Free Software Foundation.
*
* Author(s): Tony Krowiak <akrowia@linux.vnet.ibm.com> * Author(s): Tony Krowiak <akrowia@linux.vnet.ibm.com>
* Martin Schwidefsky <schwidefsky@de.ibm.com> * Martin Schwidefsky <schwidefsky@de.ibm.com>
* Harald Freudenberger <freude@de.ibm.com> * Harald Freudenberger <freude@de.ibm.com>
......
/* SPDX-License-Identifier: GPL-2.0 */
/* /*
* S390 version * S390 version
* Copyright IBM Corp. 1999 * Copyright IBM Corp. 1999
......
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_SEGMENT_H #ifndef _ASM_SEGMENT_H
#define _ASM_SEGMENT_H #define _ASM_SEGMENT_H
......
...@@ -30,21 +30,20 @@ static inline void restore_access_regs(unsigned int *acrs) ...@@ -30,21 +30,20 @@ static inline void restore_access_regs(unsigned int *acrs)
asm volatile("lam 0,15,%0" : : "Q" (*(acrstype *)acrs)); asm volatile("lam 0,15,%0" : : "Q" (*(acrstype *)acrs));
} }
#define switch_to(prev,next,last) do { \ #define switch_to(prev, next, last) do { \
if (prev->mm) { \ /* save_fpu_regs() sets the CIF_FPU flag, which enforces \
* a restore of the floating point / vector registers as \
* soon as the next task returns to user space \
*/ \
save_fpu_regs(); \ save_fpu_regs(); \
save_access_regs(&prev->thread.acrs[0]); \ save_access_regs(&prev->thread.acrs[0]); \
save_ri_cb(prev->thread.ri_cb); \ save_ri_cb(prev->thread.ri_cb); \
save_gs_cb(prev->thread.gs_cb); \ save_gs_cb(prev->thread.gs_cb); \
} \
update_cr_regs(next); \ update_cr_regs(next); \
if (next->mm) { \
set_cpu_flag(CIF_FPU); \
restore_access_regs(&next->thread.acrs[0]); \ restore_access_regs(&next->thread.acrs[0]); \
restore_ri_cb(next->thread.ri_cb, prev->thread.ri_cb); \ restore_ri_cb(next->thread.ri_cb, prev->thread.ri_cb); \
restore_gs_cb(next->thread.gs_cb); \ restore_gs_cb(next->thread.gs_cb); \
} \ prev = __switch_to(prev, next); \
prev = __switch_to(prev,next); \
} while (0) } while (0)
#endif /* __ASM_SWITCH_TO_H */ #endif /* __ASM_SWITCH_TO_H */
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_S390_VGA_H #ifndef _ASM_S390_VGA_H
#define _ASM_S390_VGA_H #define _ASM_S390_VGA_H
......
# SPDX-License-Identifier: GPL-2.0
# UAPI Header export list # UAPI Header export list
include include/uapi/asm-generic/Kbuild.asm include include/uapi/asm-generic/Kbuild.asm
......
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ASM_S390_PERF_REGS_H #ifndef _ASM_S390_PERF_REGS_H
#define _ASM_S390_PERF_REGS_H #define _ASM_S390_PERF_REGS_H
......
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_ASM_STHYI_H #ifndef _UAPI_ASM_STHYI_H
#define _UAPI_ASM_STHYI_H #define _UAPI_ASM_STHYI_H
......
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
/* /*
* Definitions for virtio-ccw devices. * Definitions for virtio-ccw devices.
* *
......
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* /*
* Copyright IBM Corp. 2004, 2005 * Copyright IBM Corp. 2004, 2005
* Interface implementation for communication with the z/VM control program * Interface implementation for communication with the z/VM control program
......
// SPDX-License-Identifier: GPL-2.0
#include <linux/module.h> #include <linux/module.h>
#include <asm/alternative.h> #include <asm/alternative.h>
#include <asm/facility.h> #include <asm/facility.h>
......
// SPDX-License-Identifier: GPL-2.0
#include <linux/perf_event.h> #include <linux/perf_event.h>
#include <linux/perf_regs.h> #include <linux/perf_regs.h>
#include <linux/kernel.h> #include <linux/kernel.h>
......
...@@ -370,10 +370,10 @@ SYSCALL(sys_recvmmsg,compat_sys_recvmmsg) ...@@ -370,10 +370,10 @@ SYSCALL(sys_recvmmsg,compat_sys_recvmmsg)
SYSCALL(sys_sendmmsg,compat_sys_sendmmsg) SYSCALL(sys_sendmmsg,compat_sys_sendmmsg)
SYSCALL(sys_socket,sys_socket) SYSCALL(sys_socket,sys_socket)
SYSCALL(sys_socketpair,compat_sys_socketpair) /* 360 */ SYSCALL(sys_socketpair,compat_sys_socketpair) /* 360 */
SYSCALL(sys_bind,sys_bind) SYSCALL(sys_bind,compat_sys_bind)
SYSCALL(sys_connect,sys_connect) SYSCALL(sys_connect,compat_sys_connect)
SYSCALL(sys_listen,sys_listen) SYSCALL(sys_listen,sys_listen)
SYSCALL(sys_accept4,sys_accept4) SYSCALL(sys_accept4,compat_sys_accept4)
SYSCALL(sys_getsockopt,compat_sys_getsockopt) /* 365 */ SYSCALL(sys_getsockopt,compat_sys_getsockopt) /* 365 */
SYSCALL(sys_setsockopt,compat_sys_setsockopt) SYSCALL(sys_setsockopt,compat_sys_setsockopt)
SYSCALL(sys_getsockname,compat_sys_getsockname) SYSCALL(sys_getsockname,compat_sys_getsockname)
......
/* SPDX-License-Identifier: GPL-2.0 */
/* /*
* This supplies .note.* sections to go into the PT_NOTE inside the vDSO text. * This supplies .note.* sections to go into the PT_NOTE inside the vDSO text.
* Here we can supply some information useful to userland. * Here we can supply some information useful to userland.
......
...@@ -83,8 +83,6 @@ int crst_table_upgrade(struct mm_struct *mm, unsigned long end) ...@@ -83,8 +83,6 @@ int crst_table_upgrade(struct mm_struct *mm, unsigned long end)
/* upgrade should only happen from 3 to 4, 3 to 5, or 4 to 5 levels */ /* upgrade should only happen from 3 to 4, 3 to 5, or 4 to 5 levels */
VM_BUG_ON(mm->context.asce_limit < _REGION2_SIZE); VM_BUG_ON(mm->context.asce_limit < _REGION2_SIZE);
if (end >= TASK_SIZE_MAX)
return -ENOMEM;
rc = 0; rc = 0;
notify = 0; notify = 0;
while (mm->context.asce_limit < end) { while (mm->context.asce_limit < end) {
......
# SPDX-License-Identifier: GPL-2.0
# #
# Arch-specific network modules # Arch-specific network modules
# #
......
# SPDX-License-Identifier: GPL-2.0
obj-y += numa.o obj-y += numa.o
obj-y += toptree.o obj-y += toptree.o
obj-$(CONFIG_NUMA_EMU) += mode_emu.o obj-$(CONFIG_NUMA_EMU) += mode_emu.o
# SPDX-License-Identifier: GPL-2.0
# #
# Makefile for the s390 PCI subsystem. # Makefile for the s390 PCI subsystem.
# #
......
/* SPDX-License-Identifier: GPL-2.0 */
/* /*
* Generate opcode table initializers for the in-kernel disassembler. * Generate opcode table initializers for the in-kernel disassembler.
* *
......
# SPDX-License-Identifier: GPL-2.0
# #
# Makefile for the S/390 specific device drivers # Makefile for the S/390 specific device drivers
# #
......
# SPDX-License-Identifier: GPL-2.0
comment "S/390 block device drivers" comment "S/390 block device drivers"
depends on S390 && BLOCK depends on S390 && BLOCK
......
...@@ -759,7 +759,7 @@ static void dasd_profile_end_add_data(struct dasd_profile_info *data, ...@@ -759,7 +759,7 @@ static void dasd_profile_end_add_data(struct dasd_profile_info *data,
/* in case of an overflow, reset the whole profile */ /* in case of an overflow, reset the whole profile */
if (data->dasd_io_reqs == UINT_MAX) { if (data->dasd_io_reqs == UINT_MAX) {
memset(data, 0, sizeof(*data)); memset(data, 0, sizeof(*data));
getnstimeofday(&data->starttod); ktime_get_real_ts64(&data->starttod);
} }
data->dasd_io_reqs++; data->dasd_io_reqs++;
data->dasd_io_sects += sectors; data->dasd_io_sects += sectors;
...@@ -894,7 +894,7 @@ void dasd_profile_reset(struct dasd_profile *profile) ...@@ -894,7 +894,7 @@ void dasd_profile_reset(struct dasd_profile *profile)
return; return;
} }
memset(data, 0, sizeof(*data)); memset(data, 0, sizeof(*data));
getnstimeofday(&data->starttod); ktime_get_real_ts64(&data->starttod);
spin_unlock_bh(&profile->lock); spin_unlock_bh(&profile->lock);
} }
...@@ -911,7 +911,7 @@ int dasd_profile_on(struct dasd_profile *profile) ...@@ -911,7 +911,7 @@ int dasd_profile_on(struct dasd_profile *profile)
kfree(data); kfree(data);
return 0; return 0;
} }
getnstimeofday(&data->starttod); ktime_get_real_ts64(&data->starttod);
profile->data = data; profile->data = data;
spin_unlock_bh(&profile->lock); spin_unlock_bh(&profile->lock);
return 0; return 0;
...@@ -995,8 +995,8 @@ static void dasd_stats_array(struct seq_file *m, unsigned int *array) ...@@ -995,8 +995,8 @@ static void dasd_stats_array(struct seq_file *m, unsigned int *array)
static void dasd_stats_seq_print(struct seq_file *m, static void dasd_stats_seq_print(struct seq_file *m,
struct dasd_profile_info *data) struct dasd_profile_info *data)
{ {
seq_printf(m, "start_time %ld.%09ld\n", seq_printf(m, "start_time %lld.%09ld\n",
data->starttod.tv_sec, data->starttod.tv_nsec); (s64)data->starttod.tv_sec, data->starttod.tv_nsec);
seq_printf(m, "total_requests %u\n", data->dasd_io_reqs); seq_printf(m, "total_requests %u\n", data->dasd_io_reqs);
seq_printf(m, "total_sectors %u\n", data->dasd_io_sects); seq_printf(m, "total_sectors %u\n", data->dasd_io_sects);
seq_printf(m, "total_pav %u\n", data->dasd_io_alias); seq_printf(m, "total_pav %u\n", data->dasd_io_alias);
......
...@@ -531,9 +531,11 @@ static int prefix_LRE(struct ccw1 *ccw, struct PFX_eckd_data *pfxdata, ...@@ -531,9 +531,11 @@ static int prefix_LRE(struct ccw1 *ccw, struct PFX_eckd_data *pfxdata,
pfxdata->validity.define_extent = 1; pfxdata->validity.define_extent = 1;
/* private uid is kept up to date, conf_data may be outdated */ /* private uid is kept up to date, conf_data may be outdated */
if (startpriv->uid.type != UA_BASE_DEVICE) { if (startpriv->uid.type == UA_BASE_PAV_ALIAS)
pfxdata->validity.verify_base = 1;
if (startpriv->uid.type == UA_HYPER_PAV_ALIAS) {
pfxdata->validity.verify_base = 1; pfxdata->validity.verify_base = 1;
if (startpriv->uid.type == UA_HYPER_PAV_ALIAS)
pfxdata->validity.hyper_pav = 1; pfxdata->validity.hyper_pav = 1;
} }
...@@ -3415,9 +3417,11 @@ static int prepare_itcw(struct itcw *itcw, ...@@ -3415,9 +3417,11 @@ static int prepare_itcw(struct itcw *itcw,
pfxdata.validity.define_extent = 1; pfxdata.validity.define_extent = 1;
/* private uid is kept up to date, conf_data may be outdated */ /* private uid is kept up to date, conf_data may be outdated */
if (startpriv->uid.type != UA_BASE_DEVICE) { if (startpriv->uid.type == UA_BASE_PAV_ALIAS)
pfxdata.validity.verify_base = 1;
if (startpriv->uid.type == UA_HYPER_PAV_ALIAS) {
pfxdata.validity.verify_base = 1; pfxdata.validity.verify_base = 1;
if (startpriv->uid.type == UA_HYPER_PAV_ALIAS)
pfxdata.validity.hyper_pav = 1; pfxdata.validity.hyper_pav = 1;
} }
......
...@@ -441,7 +441,7 @@ struct dasd_profile_info { ...@@ -441,7 +441,7 @@ struct dasd_profile_info {
unsigned int dasd_io_nr_req[32]; /* hist. of # of requests in chanq */ unsigned int dasd_io_nr_req[32]; /* hist. of # of requests in chanq */
/* new data */ /* new data */
struct timespec starttod; /* time of start or last reset */ struct timespec64 starttod; /* time of start or last reset */
unsigned int dasd_io_alias; /* requests using an alias */ unsigned int dasd_io_alias; /* requests using an alias */
unsigned int dasd_io_tpm; /* requests using transport mode */ unsigned int dasd_io_tpm; /* requests using transport mode */
unsigned int dasd_read_reqs; /* total number of read requests */ unsigned int dasd_read_reqs; /* total number of read requests */
......
# SPDX-License-Identifier: GPL-2.0
comment "S/390 character device drivers" comment "S/390 character device drivers"
depends on S390 depends on S390
......
# SPDX-License-Identifier: GPL-2.0
# Default keymap for 3270 (ebcdic codepage 037). # Default keymap for 3270 (ebcdic codepage 037).
keymaps 0-1,4-5 keymaps 0-1,4-5
......
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef S390_BLACKLIST_H #ifndef S390_BLACKLIST_H
#define S390_BLACKLIST_H #define S390_BLACKLIST_H
......
...@@ -431,8 +431,8 @@ static void process_buffer_error(struct qdio_q *q, int count) ...@@ -431,8 +431,8 @@ static void process_buffer_error(struct qdio_q *q, int count)
q->qdio_error = QDIO_ERROR_SLSB_STATE; q->qdio_error = QDIO_ERROR_SLSB_STATE;
/* special handling for no target buffer empty */ /* special handling for no target buffer empty */
if ((!q->is_input_q && if (queue_type(q) == QDIO_IQDIO_QFMT && !q->is_input_q &&
(q->sbal[q->first_to_check]->element[15].sflags) == 0x10)) { q->sbal[q->first_to_check]->element[15].sflags == 0x10) {
qperf_inc(q, target_full); qperf_inc(q, target_full);
DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "OUTFULL FTC:%02x", DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "OUTFULL FTC:%02x",
q->first_to_check); q->first_to_check);
...@@ -536,7 +536,8 @@ static int get_inbound_buffer_frontier(struct qdio_q *q) ...@@ -536,7 +536,8 @@ static int get_inbound_buffer_frontier(struct qdio_q *q)
case SLSB_P_INPUT_ERROR: case SLSB_P_INPUT_ERROR:
process_buffer_error(q, count); process_buffer_error(q, count);
q->first_to_check = add_buf(q->first_to_check, count); q->first_to_check = add_buf(q->first_to_check, count);
atomic_sub(count, &q->nr_buf_used); if (atomic_sub_return(count, &q->nr_buf_used) == 0)
qperf_inc(q, inbound_queue_full);
if (q->irq_ptr->perf_stat_enabled) if (q->irq_ptr->perf_stat_enabled)
account_sbals_error(q, count); account_sbals_error(q, count);
break; break;
......
# SPDX-License-Identifier: GPL-2.0
menu "S/390 network device drivers" menu "S/390 network device drivers"
depends on NETDEVICES && S390 depends on NETDEVICES && S390
......
# SPDX-License-Identifier: GPL-2.0
# #
# Makefile for the S/390 specific device drivers # Makefile for the S/390 specific device drivers
# #
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment