projects/linux·commit 32087d4e

Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6

32087d4e · Linus Torvalds <[email protected]> · 2011-10-31 16:14:20 -07:00

* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6: (54 commits)
  [S390] Remove error checking from copy_oldmem_page()
  [S390] qdio: prevent dsci access without adapter interrupts
  [S390] irqstats: split IPI interrupt accounting
  [S390] add missing __tlb_flush_global() for !CONFIG_SMP
  [S390] sparse: fix sparse symbol shadow warning
  [S390] sparse: fix sparse NULL pointer warnings
  [S390] sparse: fix sparse warnings with __user pointers
  [S390] sparse: fix sparse warnings in math-emu
  [S390] sparse: fix sparse warnings about missing prototypes
  [S390] sparse: fix sparse ANSI-C warnings
  [S390] sparse: fix sparse static warnings
  [S390] sparse: fix access past end of array warnings
  [S390] dasd: prevent path verification before resume
  [S390] qdio: remove multicast polling
  [S390] qdio: reset outbound SBAL error states
  [S390] qdio: EQBS retry after CCQ 96
  [S390] qdio: add timestamp for last queue scan time
  [S390] Introduce get_clock_fast()
  [S390] kvm: Handle diagnose 0x10 (release pages)
  [S390] take mmap_sem when walking guest page table
  ...
Commit
32087d4eeca14b82660dab288b1d659963b954bd
Parents
b1c907f3 · 07ea815b

Merge commit. Changes below are compared with the first parent: b1c907f3.

Changes

107 files changed · +2236 −796

FileStatusAddDelContent
Documentation/kernel-parameters.txtmodified+3−3View file
arch/s390/Kconfigmodified+10−0View file
arch/s390/boot/compressed/misc.cmodified+1−1View file
arch/s390/defconfigmodified+1−1View file
arch/s390/include/asm/ccwdev.hmodified+3−0View file
arch/s390/include/asm/compat.hmodified+6−7View file
arch/s390/include/asm/ipl.hmodified+1−0View file
arch/s390/include/asm/irq.hmodified+4−2View file
arch/s390/include/asm/kexec.hmodified+6−0View file
arch/s390/include/asm/kvm_host.hmodified+1−0View file
arch/s390/include/asm/lowcore.hmodified+3−7View file
arch/s390/include/asm/page.hmodified+1−0View file
arch/s390/include/asm/pgtable.hmodified+2−0View file
arch/s390/include/asm/processor.hmodified+30−18View file
arch/s390/include/asm/ptrace.hmodified+13−16View file
arch/s390/include/asm/reset.hmodified+1−1View file
arch/s390/include/asm/setup.hmodified+13−0View file
arch/s390/include/asm/sfp-util.hmodified+1−1View file
arch/s390/include/asm/smp.hmodified+5−0View file
arch/s390/include/asm/spinlock.hmodified+2−0View file
arch/s390/include/asm/syscall.hmodified+4−2View file
arch/s390/include/asm/system.hmodified+8−2View file
arch/s390/include/asm/thread_info.hmodified+4−3View file
arch/s390/include/asm/timex.hmodified+11−0View file
arch/s390/include/asm/tlbflush.hmodified+1−0View file
arch/s390/kernel/Makefilemodified+1−0View file
arch/s390/kernel/asm-offsets.cmodified+1−3View file
arch/s390/kernel/base.Smodified+6−0View file
arch/s390/kernel/compat_linux.cmodified+8−24View file
arch/s390/kernel/compat_signal.cmodified+28−43View file
arch/s390/kernel/compat_wrapper.Smodified+1−2View file
arch/s390/kernel/crash_dump.cadded+426−0View file
arch/s390/kernel/early.cmodified+1−1View file
arch/s390/kernel/entry.Smodified+34−50View file
arch/s390/kernel/entry.hmodified+11−2View file
arch/s390/kernel/entry64.Smodified+36−50View file
arch/s390/kernel/head.Smodified+22−0View file
arch/s390/kernel/head31.Smodified+1−1View file
arch/s390/kernel/head64.Smodified+1−1View file
arch/s390/kernel/head_kdump.Sadded+119−0View file
arch/s390/kernel/ipl.cmodified+18−8View file
arch/s390/kernel/irq.cmodified+4−2View file
arch/s390/kernel/kprobes.cmodified+1−1View file
arch/s390/kernel/machine_kexec.cmodified+186−6View file
arch/s390/kernel/mem_detect.cmodified+69−0View file
arch/s390/kernel/process.cmodified+3−1View file
arch/s390/kernel/processor.cmodified+1−1View file
arch/s390/kernel/ptrace.cmodified+85−39View file
arch/s390/kernel/reipl.Smodified+6−0View file
arch/s390/kernel/reipl64.Smodified+6−3View file
arch/s390/kernel/setup.cmodified+244−31View file
arch/s390/kernel/signal.cmodified+70−58View file
arch/s390/kernel/smp.cmodified+64−9View file
arch/s390/kernel/suspend.cmodified+1−0View file
arch/s390/kernel/sysinfo.cmodified+1−1View file
arch/s390/kernel/time.cmodified+1−0View file
arch/s390/kernel/topology.cmodified+2−2View file
arch/s390/kernel/traps.cmodified+3−2View file
arch/s390/kernel/vtime.cmodified+7−4View file
arch/s390/kvm/diag.cmodified+31−1View file
arch/s390/kvm/kvm-s390.cmodified+1−0View file
arch/s390/lib/delay.cmodified+2−1View file
arch/s390/lib/uaccess_pt.cmodified+4−2View file
arch/s390/mm/fault.cmodified+3−3View file
arch/s390/mm/maccess.cmodified+56−0View file
arch/s390/mm/mmap.cmodified+1−0View file
arch/s390/mm/pageattr.cmodified+1−0View file
arch/s390/mm/pgtable.cmodified+77−6View file
arch/s390/mm/vmem.cmodified+6−0View file
arch/s390/oprofile/hwsampler.cmodified+4−4View file
drivers/s390/block/dasd.cmodified+14−5View file
drivers/s390/block/dasd_eckd.cmodified+41−4View file
drivers/s390/block/dasd_fba.cmodified+1−0View file
drivers/s390/block/dasd_int.hmodified+2−0View file
drivers/s390/char/con3215.cmodified+1−2View file
drivers/s390/char/raw3270.cmodified+1−2View file
drivers/s390/char/sclp_cmd.cmodified+2−2View file
drivers/s390/char/sclp_quiesce.cmodified+2−1View file
drivers/s390/char/tape_34xx.cmodified+1−0View file
drivers/s390/char/tape_3590.cmodified+1−0View file
drivers/s390/char/tape_core.cmodified+0−2View file
drivers/s390/char/vmur.cmodified+1−2View file
drivers/s390/char/zcore.cmodified+3−18View file
drivers/s390/cio/ccwgroup.cmodified+137−196View file
drivers/s390/cio/ccwreq.cmodified+20−3View file
drivers/s390/cio/chsc_sch.cmodified+4−1View file
drivers/s390/cio/cio.cmodified+15−4View file
drivers/s390/cio/css.hmodified+2−0View file
drivers/s390/cio/device.cmodified+13−0View file
drivers/s390/cio/device.hmodified+12−1View file
drivers/s390/cio/io_sch.hmodified+2−0View file
drivers/s390/cio/qdio.hmodified+6−34View file
drivers/s390/cio/qdio_debug.cmodified+6−4View file
drivers/s390/cio/qdio_main.cmodified+50−52View file
drivers/s390/cio/qdio_thinint.cmodified+48−4View file
drivers/s390/kvm/kvm_virtio.cmodified+4−4View file
drivers/s390/net/claw.cmodified+1−2View file
drivers/s390/net/ctcm_main.cmodified+1−2View file
drivers/s390/net/ctcm_sysfs.cmodified+1−1View file
drivers/s390/net/lcs.cmodified+2−3View file
drivers/s390/net/qeth_l3_main.cmodified+1−1View file
include/linux/crash_dump.hmodified+1−0View file
include/linux/elf.hmodified+1−0View file
include/linux/kexec.hmodified+10−0View file
kernel/crash_dump.cmodified+11−0View file
kernel/kexec.cmodified+29−12View file
kernel/sysctl.cmodified+0−8View file

Only the first 600 diff lines are shown. Download the complete patch.

Documentation/kernel-parameters.txt

View file
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 27e0488..661efd4 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -741,10 +741,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
See Documentation/block/cfq-iosched.txt and
Documentation/block/deadline-iosched.txt for details.
- elfcorehdr= [IA-64,PPC,SH,X86]
+ elfcorehdr=[size[KMG]@]offset[KMG] [IA64,PPC,SH,X86,S390]
Specifies physical address of start of kernel core
- image elf header. Generally kexec loader will
- pass this option to capture kernel.
+ image elf header and optionally the size. Generally
+ kexec loader will pass this option to capture kernel.
See Documentation/kdump/kdump.txt for details.
enable_mtrr_cleanup [X86]

arch/s390/Kconfig

View file
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 6b99fc3..a9fbd43 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -569,6 +569,16 @@ config KEXEC
current kernel, and to start another kernel. It is like a reboot
but is independent of hardware/microcode support.
+config CRASH_DUMP
+ bool "kernel crash dumps"
+ depends on 64BIT
+ help
+ Generate crash dump after being started by kexec.
+ Crash dump kernels are loaded in the main kernel with kexec-tools
+ into a specially reserved region and then later executed after
+ a crash by kdump/kexec.
+ For more details see Documentation/kdump/kdump.txt
+
config ZFCPDUMP
def_bool n
prompt "zfcpdump support"

arch/s390/boot/compressed/misc.c

View file
diff --git a/arch/s390/boot/compressed/misc.c b/arch/s390/boot/compressed/misc.c
index 028f23e..465eca7 100644
--- a/arch/s390/boot/compressed/misc.c
+++ b/arch/s390/boot/compressed/misc.c
@@ -61,7 +61,7 @@ static unsigned long free_mem_end_ptr;
extern _sclp_print_early(const char *);
-int puts(const char *s)
+static int puts(const char *s)
{
_sclp_print_early(s);
return 0;

arch/s390/defconfig

View file
diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index 29c82c6..6cf8e26 100644
--- a/arch/s390/defconfig
+++ b/arch/s390/defconfig
@@ -68,7 +68,7 @@ CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_DEVTMPFS=y
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_RAM=y

arch/s390/include/asm/ccwdev.h

View file
diff --git a/arch/s390/include/asm/ccwdev.h b/arch/s390/include/asm/ccwdev.h
index 623f2fb..9381c92 100644
--- a/arch/s390/include/asm/ccwdev.h
+++ b/arch/s390/include/asm/ccwdev.h
@@ -11,6 +11,7 @@
#include <linux/device.h>
#include <linux/mod_devicetable.h>
#include <asm/fcx.h>
+#include <asm/irq.h>
/* structs from asm/cio.h */
struct irb;
@@ -127,6 +128,7 @@ enum uc_todo {
* @restore: callback for restoring after hibernation
* @uc_handler: callback for unit check handler
* @driver: embedded device driver structure
+ * @int_class: interruption class to use for accounting interrupts
*/
struct ccw_driver {
struct ccw_device_id *ids;
@@ -144,6 +146,7 @@ struct ccw_driver {
int (*restore)(struct ccw_device *);
enum uc_todo (*uc_handler) (struct ccw_device *, struct irb *);
struct device_driver driver;
+ enum interruption_class int_class;
};
extern struct ccw_device *get_ccwdev_by_busid(struct ccw_driver *cdrv,

arch/s390/include/asm/compat.h

View file
diff --git a/arch/s390/include/asm/compat.h b/arch/s390/include/asm/compat.h
index cdb9b78..2e49748 100644
--- a/arch/s390/include/asm/compat.h
+++ b/arch/s390/include/asm/compat.h
@@ -12,6 +12,7 @@
#define PSW32_MASK_IO 0x02000000UL
#define PSW32_MASK_EXT 0x01000000UL
#define PSW32_MASK_KEY 0x00F00000UL
+#define PSW32_MASK_BASE 0x00080000UL /* Always one */
#define PSW32_MASK_MCHECK 0x00040000UL
#define PSW32_MASK_WAIT 0x00020000UL
#define PSW32_MASK_PSTATE 0x00010000UL
@@ -19,21 +20,19 @@
#define PSW32_MASK_CC 0x00003000UL
#define PSW32_MASK_PM 0x00000f00UL
-#define PSW32_ADDR_AMODE31 0x80000000UL
+#define PSW32_MASK_USER 0x00003F00UL
+
+#define PSW32_ADDR_AMODE 0x80000000UL
#define PSW32_ADDR_INSN 0x7FFFFFFFUL
-#define PSW32_BASE_BITS 0x00080000UL
+#define PSW32_DEFAULT_KEY (((u32) PAGE_DEFAULT_ACC) << 20)
#define PSW32_ASC_PRIMARY 0x00000000UL
#define PSW32_ASC_ACCREG 0x00004000UL
#define PSW32_ASC_SECONDARY 0x00008000UL
#define PSW32_ASC_HOME 0x0000C000UL
-#define PSW32_MASK_MERGE(CURRENT,NEW) \
- (((CURRENT) & ~(PSW32_MASK_CC|PSW32_MASK_PM)) | \
- ((NEW) & (PSW32_MASK_CC|PSW32_MASK_PM)))
-
-extern long psw32_user_bits;
+extern u32 psw32_user_bits;
#define COMPAT_USER_HZ 100
#define COMPAT_UTS_MACHINE "s390\0\0\0\0"

arch/s390/include/asm/ipl.h

View file
diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h
index 97cc440..6940abf 100644
--- a/arch/s390/include/asm/ipl.h
+++ b/arch/s390/include/asm/ipl.h
@@ -168,5 +168,6 @@ enum diag308_rc {
extern int diag308(unsigned long subcode, void *addr);
extern void diag308_reset(void);
+extern void store_status(void);
#endif /* _ASM_S390_IPL_H */

arch/s390/include/asm/irq.h

View file
diff --git a/arch/s390/include/asm/irq.h b/arch/s390/include/asm/irq.h
index ba7b01c..ba6d85f 100644
--- a/arch/s390/include/asm/irq.h
+++ b/arch/s390/include/asm/irq.h
@@ -8,7 +8,8 @@ enum interruption_class {
EXTERNAL_INTERRUPT,
IO_INTERRUPT,
EXTINT_CLK,
- EXTINT_IPI,
+ EXTINT_EXC,
+ EXTINT_EMS,
EXTINT_TMR,
EXTINT_TLA,
EXTINT_PFL,
@@ -17,8 +18,8 @@ enum interruption_class {
EXTINT_SCP,
EXTINT_IUC,
EXTINT_CPM,
+ IOINT_CIO,
IOINT_QAI,
- IOINT_QDI,
IOINT_DAS,
IOINT_C15,
IOINT_C70,
@@ -28,6 +29,7 @@ enum interruption_class {
IOINT_CLW,
IOINT_CTC,
IOINT_APB,
+ IOINT_CSC,
NMI_NMI,
NR_IRQS,
};

arch/s390/include/asm/kexec.h

View file
diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h
index bb729b8..cf4e47b 100644
--- a/arch/s390/include/asm/kexec.h
+++ b/arch/s390/include/asm/kexec.h
@@ -30,9 +30,15 @@
/* Not more than 2GB */
#define KEXEC_CONTROL_MEMORY_LIMIT (1UL<<31)
+/* Maximum address we can use for the crash control pages */
+#define KEXEC_CRASH_CONTROL_MEMORY_LIMIT (-1UL)
+
/* Allocate one page for the pdp and the second for the code */
#define KEXEC_CONTROL_PAGE_SIZE 4096
+/* Alignment of crashkernel memory */
+#define KEXEC_CRASH_MEM_ALIGN HPAGE_SIZE
+
/* The native architecture */
#define KEXEC_ARCH KEXEC_ARCH_S390

arch/s390/include/asm/kvm_host.h

View file
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
index 1ca5de0..24e1847 100644
--- a/arch/s390/include/asm/kvm_host.h
+++ b/arch/s390/include/asm/kvm_host.h
@@ -145,6 +145,7 @@ struct kvm_vcpu_stat {
u32 instruction_sigp_arch;
u32 instruction_sigp_prefix;
u32 instruction_sigp_restart;
+ u32 diagnose_10;
u32 diagnose_44;
};

arch/s390/include/asm/lowcore.h

View file
diff --git a/arch/s390/include/asm/lowcore.h b/arch/s390/include/asm/lowcore.h
index e85c911..9e13c7d 100644
--- a/arch/s390/include/asm/lowcore.h
+++ b/arch/s390/include/asm/lowcore.h
@@ -151,10 +151,8 @@ struct _lowcore {
*/
__u32 ipib; /* 0x0e00 */
__u32 ipib_checksum; /* 0x0e04 */
-
- /* 64 bit save area */
- __u64 save_area_64; /* 0x0e08 */
- __u8 pad_0x0e10[0x0f00-0x0e10]; /* 0x0e10 */
+ __u32 vmcore_info; /* 0x0e08 */
+ __u8 pad_0x0e0c[0x0f00-0x0e0c]; /* 0x0e0c */
/* Extended facility list */
__u64 stfle_fac_list[32]; /* 0x0f00 */
@@ -290,9 +288,7 @@ struct _lowcore {
*/
__u64 ipib; /* 0x0e00 */
__u32 ipib_checksum; /* 0x0e08 */
-
- /* 64 bit save area */
- __u64 save_area_64; /* 0x0e0c */
+ __u64 vmcore_info; /* 0x0e0c */
__u8 pad_0x0e14[0x0f00-0x0e14]; /* 0x0e14 */
/* Extended facility list */

arch/s390/include/asm/page.h

View file
diff --git a/arch/s390/include/asm/page.h b/arch/s390/include/asm/page.h
index accb372..f7ec548 100644
--- a/arch/s390/include/asm/page.h
+++ b/arch/s390/include/asm/page.h
@@ -177,6 +177,7 @@ static inline int page_test_and_clear_young(unsigned long pfn)
struct page;
void arch_free_page(struct page *page, int order);
void arch_alloc_page(struct page *page, int order);
+void arch_set_page_states(int make_stable);
static inline int devmem_is_allowed(unsigned long pfn)
{

arch/s390/include/asm/pgtable.h

View file
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index c0cb794..34ede0e 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -696,7 +696,9 @@ void gmap_disable(struct gmap *gmap);
int gmap_map_segment(struct gmap *gmap, unsigned long from,
unsigned long to, unsigned long length);
int gmap_unmap_segment(struct gmap *gmap, unsigned long to, unsigned long len);
+unsigned long __gmap_fault(unsigned long address, struct gmap *);
unsigned long gmap_fault(unsigned long address, struct gmap *);
+void gmap_discard(unsigned long from, unsigned long to, struct gmap *);
/*
* Certain architectures need to do special things when PTEs

arch/s390/include/asm/processor.h

View file
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
index a4b6229..5f33d37 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -33,6 +33,8 @@ static inline void get_cpu_id(struct cpuid *ptr)
extern void s390_adjust_jiffies(void);
extern int get_cpu_capability(unsigned int *);
+extern const struct seq_operations cpuinfo_op;
+extern int sysctl_ieee_emulation_warnings;
/*
* User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit.
@@ -118,17 +120,17 @@ struct stack_frame {
/*
* Do necessary setup to start up a new thread.
*/
-#define start_thread(regs, new_psw, new_stackp) do { \
- regs->psw.mask = psw_user_bits; \
- regs->psw.addr = new_psw | PSW_ADDR_AMODE; \
- regs->gprs[15] = new_stackp; \
+#define start_thread(regs, new_psw, new_stackp) do { \
+ regs->psw.mask = psw_user_bits | PSW_MASK_EA | PSW_MASK_BA; \
+ regs->psw.addr = new_psw | PSW_ADDR_AMODE; \
+ regs->gprs[15] = new_stackp; \
} while (0)
-#define start_thread31(regs, new_psw, new_stackp) do { \
- regs->psw.mask = psw_user32_bits; \
- regs->psw.addr = new_psw | PSW_ADDR_AMODE; \
- regs->gprs[15] = new_stackp; \
- crst_table_downgrade(current->mm, 1UL << 31); \
+#define start_thread31(regs, new_psw, new_stackp) do { \
+ regs->psw.mask = psw_user_bits | PSW_MASK_BA; \
+ regs->psw.addr = new_psw | PSW_ADDR_AMODE; \
+ regs->gprs[15] = new_stackp; \
+ crst_table_downgrade(current->mm, 1UL << 31); \
} while (0)
/* Forward declaration, a strange C thing */
@@ -187,7 +189,6 @@ static inline void __load_psw(psw_t psw)
* Set PSW mask to specified value, while leaving the
* PSW addr pointing to the next instruction.
*/
-
static inline void __load_psw_mask (unsigned long mask)
{
unsigned long addr;
@@ -212,26 +213,37 @@ static inline void __load_psw_mask (unsigned long mask)
: "=&d" (addr), "=Q" (psw) : "Q" (psw) : "memory", "cc");
#endif /* __s390x__ */
}
-
+
/*
- * Function to stop a processor until an interruption occurred
+ * Rewind PSW instruction address by specified number of bytes.
*/
-static inline void enabled_wait(void)
+static inline unsigned long __rewind_psw(psw_t psw, unsigned long ilc)
{
- __load_psw_mask(PSW_BASE_BITS | PSW_MASK_IO | PSW_MASK_EXT |
- PSW_MASK_MCHECK | PSW_MASK_WAIT | PSW_DEFAULT_KEY);
-}
+#ifndef __s390x__
+ if (psw.addr & PSW_ADDR_AMODE)
+ /* 31 bit mode */
+ return (psw.addr - ilc) | PSW_ADDR_AMODE;
+ /* 24 bit mode */
+ return (psw.addr - ilc) & ((1UL << 24) - 1);
+#else
+ unsigned long mask;
+ mask = (psw.mask & PSW_MASK_EA) ? -1UL :
+ (psw.mask & PSW_MASK_BA) ? (1UL << 31) - 1 :
+ (1UL << 24) - 1;
+ return (psw.addr - ilc) & mask;
+#endif
+}
+
/*
* Function to drop a processor into disabled wait state
*/
-
static inline void ATTRIB_NORET disabled_wait(unsigned long code)
{
unsigned long ctl_buf;
psw_t dw_psw;
- dw_psw.mask = PSW_BASE_BITS | PSW_MASK_WAIT;
+ dw_psw.mask = PSW_MASK_BASE | PSW_MASK_WAIT | PSW_MASK_BA | PSW_MASK_EA;
dw_psw.addr = code;
/*
* Store status and then load disabled wait psw,

arch/s390/include/asm/ptrace.h

View file
diff --git a/arch/s390/include/asm/ptrace.h b/arch/s390/include/asm/ptrace.h
index 62fd80c..a658463 100644
--- a/arch/s390/include/asm/ptrace.h
+++ b/arch/s390/include/asm/ptrace.h
@@ -230,17 +230,21 @@ typedef struct
#define PSW_MASK_IO 0x02000000UL
#define PSW_MASK_EXT 0x01000000UL
#define PSW_MASK_KEY 0x00F00000UL
+#define PSW_MASK_BASE 0x00080000UL /* always one */
#define PSW_MASK_MCHECK 0x00040000UL
#define PSW_MASK_WAIT 0x00020000UL
#define PSW_MASK_PSTATE 0x00010000UL
#define PSW_MASK_ASC 0x0000C000UL
#define PSW_MASK_CC 0x00003000UL
#define PSW_MASK_PM 0x00000F00UL
+#define PSW_MASK_EA 0x00000000UL
+#define PSW_MASK_BA 0x00000000UL
+
+#define PSW_MASK_USER 0x00003F00UL
#define PSW_ADDR_AMODE 0x80000000UL
#define PSW_ADDR_INSN 0x7FFFFFFFUL
-#define PSW_BASE_BITS 0x00080000UL
#define PSW_DEFAULT_KEY (((unsigned long) PAGE_DEFAULT_ACC) << 20)
#define PSW_ASC_PRIMARY 0x00000000UL
@@ -254,6 +258,7 @@ typedef struct
#define PSW_MASK_DAT 0x0400000000000000UL
#define PSW_MASK_IO 0x0200000000000000UL
#define PSW_MASK_EXT 0x0100000000000000UL
+#define PSW_MASK_BASE 0x0000000000000000UL
#define PSW_MASK_KEY 0x00F0000000000000UL
#define PSW_MASK_MCHECK 0x0004000000000000UL
#define PSW_MASK_WAIT 0x0002000000000000UL
@@ -261,12 +266,14 @@ typedef struct
#define PSW_MASK_ASC 0x0000C00000000000UL
#define PSW_MASK_CC 0x0000300000000000UL
#define PSW_MASK_PM 0x00000F0000000000UL
+#define PSW_MASK_EA 0x0000000100000000UL
+#define PSW_MASK_BA 0x0000000080000000UL
+
+#define PSW_MASK_USER 0x00003F0180000000UL
#define PSW_ADDR_AMODE 0x0000000000000000UL
#define PSW_ADDR_INSN 0xFFFFFFFFFFFFFFFFUL
-#define PSW_BASE_BITS 0x0000000180000000UL
-#define PSW_BASE32_BITS 0x0000000080000000UL
#define PSW_DEFAULT_KEY (((unsigned long) PAGE_DEFAULT_ACC) << 52)
#define PSW_ASC_PRIMARY 0x0000000000000000UL
@@ -279,18 +286,7 @@ typedef struct
#ifdef __KERNEL__
extern long psw_kernel_bits;
extern long psw_user_bits;
-#ifdef CONFIG_64BIT
-extern long psw_user32_bits;
#endif
-#endif
-
-/* This macro merges a NEW PSW mask specified by the user into
- the currently active PSW mask CURRENT, modifying only those
- bits in CURRENT that the user may be allowed to change: this
- is the condition code and the program mask bits. */
-#define PSW_MASK_MERGE(CURRENT,NEW) \
- (((CURRENT) & ~(PSW_MASK_CC|PSW_MASK_PM)) | \
- ((NEW) & (PSW_MASK_CC|PSW_MASK_PM)))
/*
* The s390_regs structure is used to define the elf_gregset_t.
@@ -328,8 +324,7 @@ struct pt_regs
psw_t psw;
unsigned long gprs[NUM_GPRS];
unsigned long orig_gpr2;
- unsigned short ilc;
- unsigned short svcnr;
+ unsigned int svc_code;
};
/*
@@ -487,6 +482,8 @@ typedef struct
#define PTRACE_POKETEXT_AREA 0x5004
#define PTRACE_POKEDATA_AREA 0x5005
#define PTRACE_GET_LAST_BREAK 0x5006
+#define PTRACE_PEEK_SYSTEM_CALL 0x5007
+#define PTRACE_POKE_SYSTEM_CALL 0x5008
/*
* PT_PROT definition is loosely based on hppa bsd definition in

arch/s390/include/asm/reset.h

View file
diff --git a/arch/s390/include/asm/reset.h b/arch/s390/include/asm/reset.h
index f584f4a..3d6ad4a 100644
--- a/arch/s390/include/asm/reset.h
+++ b/arch/s390/include/asm/reset.h
@@ -17,5 +17,5 @@ struct reset_call {
extern void register_reset_call(struct reset_call *reset);
extern void unregister_reset_call(struct reset_call *reset);
-extern void s390_reset_system(void);
+extern void s390_reset_system(void (*func)(void *), void *data);
#endif /* _ASM_S390_RESET_H */

arch/s390/include/asm/setup.h

View file
diff --git a/arch/s390/include/asm/setup.h b/arch/s390/include/asm/setup.h
index d5e2ef1..5a09971 100644
--- a/arch/s390/include/asm/setup.h
+++ b/arch/s390/include/asm/setup.h
@@ -26,15 +26,21 @@
#define IPL_DEVICE (*(unsigned long *) (0x10404))
#define INITRD_START (*(unsigned long *) (0x1040C))
#define INITRD_SIZE (*(unsigned long *) (0x10414))
+#define OLDMEM_BASE (*(unsigned long *) (0x1041C))
+#define OLDMEM_SIZE (*(unsigned long *) (0x10424))
#else /* __s390x__ */
#define IPL_DEVICE (*(unsigned long *) (0x10400))
#define INITRD_START (*(unsigned long *) (0x10408))
#define INITRD_SIZE (*(unsigned long *) (0x10410))
+#define OLDMEM_BASE (*(unsigned long *) (0x10418))
+#define OLDMEM_SIZE (*(unsigned long *) (0x10420))
#endif /* __s390x__ */
#define COMMAND_LINE ((char *) (0x10480))
#define CHUNK_READ_WRITE 0
#define CHUNK_READ_ONLY 1
+#define CHUNK_OLDMEM 4
+#define CHUNK_CRASHK 5
struct mem_chunk {
unsigned long addr;
@@ -48,6 +54,8 @@ extern int memory_end_set;
extern unsigned long memory_end;
void detect_memory_layout(struct mem_chunk chunk[]);
+void create_mem_hole(struct mem_chunk memory_chunk[], unsigned long addr,
+ unsigned long size, int type);
#define PRIMARY_SPACE_MODE 0
#define ACCESS_REGISTER_MODE 1
@@ -106,6 +114,7 @@ extern unsigned int user_mode;
#endif /* __s390x__ */
#define ZFCPDUMP_HSA_SIZE (32UL<<20)
+#define ZFCPDUMP_HSA_SIZE_MAX (64UL<<20)
/*
* Console mode. Override with conmode=
@@ -134,10 +143,14 @@ extern char kernel_nss_name[];
#define IPL_DEVICE 0x10404
#define INITRD_START 0x1040C
#define INITRD_SIZE 0x10414
+#define OLDMEM_BASE 0x1041C
+#define OLDMEM_SIZE 0x10424
#else /* __s390x__ */
#define IPL_DEVICE 0x10400
#define INITRD_START 0x10408
#define INITRD_SIZE 0x10410
+#define OLDMEM_BASE 0x10418
+#define OLDMEM_SIZE 0x10420
#endif /* __s390x__ */
#define COMMAND_LINE 0x10480

arch/s390/include/asm/sfp-util.h

View file
diff --git a/arch/s390/include/asm/sfp-util.h b/arch/s390/include/asm/sfp-util.h
index 0addc64..ca3f881 100644
--- a/arch/s390/include/asm/sfp-util.h
+++ b/arch/s390/include/asm/sfp-util.h
@@ -72,6 +72,6 @@ extern unsigned long __udiv_qrnnd (unsigned int *, unsigned int,
#define UDIV_NEEDS_NORMALIZATION 0
-#define abort() return 0
+#define abort() BUG()
#define __BYTE_ORDER __BIG_ENDIAN

arch/s390/include/asm/smp.h

View file
diff --git a/arch/s390/include/asm/smp.h b/arch/s390/include/asm/smp.h
index 045e009..ab47a69 100644
--- a/arch/s390/include/asm/smp.h
+++ b/arch/s390/include/asm/smp.h
@@ -33,6 +33,7 @@ extern struct save_area *zfcpdump_save_areas[NR_CPUS + 1];
extern void smp_switch_to_ipl_cpu(void (*func)(void *), void *);
extern void smp_switch_to_cpu(void (*)(void *), void *, unsigned long sp,
int from, int to);
+extern void smp_restart_with_online_cpu(void);
extern void smp_restart_cpu(void);
/*
@@ -64,6 +65,10 @@ static inline void smp_switch_to_ipl_cpu(void (*func)(void *), void *data)
func(data);
}
+static inline void smp_restart_with_online_cpu(void)
+{
+}
+
#define smp_vcpu_scheduled (1)
#endif /* CONFIG_SMP */

arch/s390/include/asm/spinlock.h

View file
diff --git a/arch/s390/include/asm/spinlock.h b/arch/s390/include/asm/spinlock.h
index 56612fc..fd94dfe 100644
--- a/arch/s390/include/asm/spinlock.h
+++ b/arch/s390/include/asm/spinlock.h
@@ -13,6 +13,8 @@
#include <linux/smp.h>
+extern int spin_retry;
+
static inline int
_raw_compare_and_swap(volatile unsigned int *lock,
unsigned int old, unsigned int new)

arch/s390/include/asm/syscall.h

View file
diff --git a/arch/s390/include/asm/syscall.h b/arch/s390/include/asm/syscall.h
index 5c0246b..b239ff5 100644
--- a/arch/s390/include/asm/syscall.h
+++ b/arch/s390/include/asm/syscall.h
@@ -13,6 +13,7 @@
#define _ASM_SYSCALL_H 1
#include <linux/sched.h>
+#include <linux/err.h>
#include <asm/ptrace.h>
/*
@@ -25,7 +26,8 @@ extern const unsigned int sys_call_table[];
static inline long syscall_get_nr(struct task_struct *task,
struct pt_regs *regs)
{
- return regs->svcnr ? regs->svcnr : -1;
+ return test_tsk_thread_flag(task, TIF_SYSCALL) ?
+ (regs->svc_code & 0xffff) : -1;
}
static inline void syscall_rollback(struct task_struct *task,
@@ -37,7 +39,7 @@ static inline void syscall_rollback(struct task_struct *task,
static inline long syscall_get_error(struct task_struct *task,
struct pt_regs *regs)
{
- return (regs->gprs[2] >= -4096UL) ? -regs->gprs[2] : 0;
+ return IS_ERR_VALUE(regs->gprs[2]) ? regs->gprs[2] : 0;
}
static inline long syscall_get_return_value(struct task_struct *task,

arch/s390/include/asm/system.h

View file
diff --git a/arch/s390/include/asm/system.h b/arch/s390/include/asm/system.h
index 6582f69..ef573c1 100644
--- a/arch/s390/include/asm/system.h
+++ b/arch/s390/include/asm/system.h
@@ -20,6 +20,8 @@
struct task_struct;

This diff is incomplete. Download the complete patch.

arch/s390/include/asm/thread_info.h

View file

This diff is incomplete. Download the complete patch.

arch/s390/include/asm/timex.h

View file

This diff is incomplete. Download the complete patch.

arch/s390/include/asm/tlbflush.h

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/Makefile

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/asm-offsets.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/base.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/compat_linux.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/compat_signal.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/compat_wrapper.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/crash_dump.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/early.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/entry.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/entry.h

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/entry64.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/head.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/head31.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/head64.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/head_kdump.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/ipl.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/irq.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/kprobes.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/machine_kexec.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/mem_detect.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/process.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/processor.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/ptrace.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/reipl.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/reipl64.S

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/setup.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/signal.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/smp.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/suspend.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/sysinfo.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/time.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/topology.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/traps.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kernel/vtime.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kvm/diag.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/kvm/kvm-s390.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/lib/delay.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/lib/uaccess_pt.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/mm/fault.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/mm/maccess.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/mm/mmap.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/mm/pageattr.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/mm/pgtable.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/mm/vmem.c

View file

This diff is incomplete. Download the complete patch.

arch/s390/oprofile/hwsampler.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/block/dasd.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/block/dasd_eckd.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/block/dasd_fba.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/block/dasd_int.h

View file

This diff is incomplete. Download the complete patch.

drivers/s390/char/con3215.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/char/raw3270.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/char/sclp_cmd.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/char/sclp_quiesce.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/char/tape_34xx.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/char/tape_3590.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/char/tape_core.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/char/vmur.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/char/zcore.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/ccwgroup.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/ccwreq.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/chsc_sch.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/cio.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/css.h

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/device.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/device.h

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/io_sch.h

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/qdio.h

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/qdio_debug.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/qdio_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/qdio_thinint.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/kvm/kvm_virtio.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/net/claw.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/net/ctcm_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/net/ctcm_sysfs.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/net/lcs.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/net/qeth_l3_main.c

View file

This diff is incomplete. Download the complete patch.

include/linux/crash_dump.h

View file

This diff is incomplete. Download the complete patch.

include/linux/elf.h

View file

This diff is incomplete. Download the complete patch.

include/linux/kexec.h

View file

This diff is incomplete. Download the complete patch.

kernel/crash_dump.c

View file

This diff is incomplete. Download the complete patch.

kernel/kexec.c

View file

This diff is incomplete. Download the complete patch.

kernel/sysctl.c

View file

This diff is incomplete. Download the complete patch.