Commit cb7ef4bc authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 's390-5.3-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux

Pull s390 fixes from Vasily Gorbik:

 - Map vdso also for statically linked binaries like all other
   architectures.

 - Fix no .bss usage compile-time check to account common objects with
   the help of binutils size tool. Top level Makefile change acked-by
   Masahiro.

 - A fix to make perf happy with _etext symbol type.

 - Fix dump_pagetables which is broken since p*d_offset implementation
   change to comply with mm/gup.c expectations.

 - Revert memory sharing for diag calls in protected virtualization,
   since this is not required after all.

 - Couple of other minor code cleanups.

* tag 's390-5.3-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
  s390/vdso: map vdso also for statically linked binaries
  s390/build: use size command to perform empty .bss check
  kbuild: add OBJSIZE variable for the size tool
  s390: put _stext and _etext into .text section
  s390/head64: cleanup unused labels
  s390/unwind: remove stack recursion warning
  s390/setup: adjust start_code of init_mm to _text
  s390/mm: fix dump_pagetables top level page table walking
  s390/protvirt: avoid memory sharing for diag 308 set/store
parents 50e73a4a 404861e1
...@@ -419,6 +419,7 @@ NM = $(CROSS_COMPILE)nm ...@@ -419,6 +419,7 @@ NM = $(CROSS_COMPILE)nm
STRIP = $(CROSS_COMPILE)strip STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump OBJDUMP = $(CROSS_COMPILE)objdump
OBJSIZE = $(CROSS_COMPILE)size
PAHOLE = pahole PAHOLE = pahole
LEX = flex LEX = flex
YACC = bison YACC = bison
...@@ -475,9 +476,9 @@ GCC_PLUGINS_CFLAGS := ...@@ -475,9 +476,9 @@ GCC_PLUGINS_CFLAGS :=
CLANG_FLAGS := CLANG_FLAGS :=
export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC
export CPP AR NM STRIP OBJCOPY OBJDUMP PAHOLE KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE PAHOLE LEX YACC AWK INSTALLKERNEL
export MAKE LEX YACC AWK INSTALLKERNEL PERL PYTHON PYTHON2 PYTHON3 UTS_MACHINE export PERL PYTHON PYTHON2 PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
export HOSTCXX KBUILD_HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
......
...@@ -48,9 +48,7 @@ void store_ipl_parmblock(void) ...@@ -48,9 +48,7 @@ void store_ipl_parmblock(void)
{ {
int rc; int rc;
uv_set_shared(__pa(&ipl_block));
rc = __diag308(DIAG308_STORE, &ipl_block); rc = __diag308(DIAG308_STORE, &ipl_block);
uv_remove_shared(__pa(&ipl_block));
if (rc == DIAG308_RC_OK && if (rc == DIAG308_RC_OK &&
ipl_block.hdr.version <= IPL_MAX_SUPPORTED_VERSION) ipl_block.hdr.version <= IPL_MAX_SUPPORTED_VERSION)
ipl_block_valid = 1; ipl_block_valid = 1;
......
...@@ -114,12 +114,8 @@ int get_stack_info(unsigned long sp, struct task_struct *task, ...@@ -114,12 +114,8 @@ int get_stack_info(unsigned long sp, struct task_struct *task,
* If it comes up a second time then there's something wrong going on: * If it comes up a second time then there's something wrong going on:
* just break out and report an unknown stack type. * just break out and report an unknown stack type.
*/ */
if (*visit_mask & (1UL << info->type)) { if (*visit_mask & (1UL << info->type))
printk_deferred_once(KERN_WARNING
"WARNING: stack recursion on stack type %d\n",
info->type);
goto unknown; goto unknown;
}
*visit_mask |= 1UL << info->type; *visit_mask |= 1UL << info->type;
return 0; return 0;
unknown: unknown:
......
...@@ -60,12 +60,5 @@ ENTRY(startup_continue) ...@@ -60,12 +60,5 @@ ENTRY(startup_continue)
.align 16 .align 16
.LPG1: .LPG1:
.Lpcmsk:.quad 0x0000000180000000
.L4malign:.quad 0xffffffffffc00000
.Lscan2g:.quad 0x80000000 + 0x20000 - 8 # 2GB + 128K - 8
.Lnop: .long 0x07000700
.Lparmaddr:
.quad PARMAREA
.align 64
.Ldw: .quad 0x0002000180000000,0x0000000000000000 .Ldw: .quad 0x0002000180000000,0x0000000000000000
.Laregs:.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .Laregs:.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <asm/os_info.h> #include <asm/os_info.h>
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/boot_data.h> #include <asm/boot_data.h>
#include <asm/uv.h>
#include "entry.h" #include "entry.h"
#define IPL_PARM_BLOCK_VERSION 0 #define IPL_PARM_BLOCK_VERSION 0
...@@ -892,21 +891,15 @@ static void __reipl_run(void *unused) ...@@ -892,21 +891,15 @@ static void __reipl_run(void *unused)
{ {
switch (reipl_type) { switch (reipl_type) {
case IPL_TYPE_CCW: case IPL_TYPE_CCW:
uv_set_shared(__pa(reipl_block_ccw));
diag308(DIAG308_SET, reipl_block_ccw); diag308(DIAG308_SET, reipl_block_ccw);
uv_remove_shared(__pa(reipl_block_ccw));
diag308(DIAG308_LOAD_CLEAR, NULL); diag308(DIAG308_LOAD_CLEAR, NULL);
break; break;
case IPL_TYPE_FCP: case IPL_TYPE_FCP:
uv_set_shared(__pa(reipl_block_fcp));
diag308(DIAG308_SET, reipl_block_fcp); diag308(DIAG308_SET, reipl_block_fcp);
uv_remove_shared(__pa(reipl_block_fcp));
diag308(DIAG308_LOAD_CLEAR, NULL); diag308(DIAG308_LOAD_CLEAR, NULL);
break; break;
case IPL_TYPE_NSS: case IPL_TYPE_NSS:
uv_set_shared(__pa(reipl_block_nss));
diag308(DIAG308_SET, reipl_block_nss); diag308(DIAG308_SET, reipl_block_nss);
uv_remove_shared(__pa(reipl_block_nss));
diag308(DIAG308_LOAD_CLEAR, NULL); diag308(DIAG308_LOAD_CLEAR, NULL);
break; break;
case IPL_TYPE_UNKNOWN: case IPL_TYPE_UNKNOWN:
...@@ -1176,9 +1169,7 @@ static struct kset *dump_kset; ...@@ -1176,9 +1169,7 @@ static struct kset *dump_kset;
static void diag308_dump(void *dump_block) static void diag308_dump(void *dump_block)
{ {
uv_set_shared(__pa(dump_block));
diag308(DIAG308_SET, dump_block); diag308(DIAG308_SET, dump_block);
uv_remove_shared(__pa(dump_block));
while (1) { while (1) {
if (diag308(DIAG308_LOAD_NORMAL_DUMP, NULL) != 0x302) if (diag308(DIAG308_LOAD_NORMAL_DUMP, NULL) != 0x302)
break; break;
......
...@@ -1114,8 +1114,7 @@ void __init setup_arch(char **cmdline_p) ...@@ -1114,8 +1114,7 @@ void __init setup_arch(char **cmdline_p)
ROOT_DEV = Root_RAM0; ROOT_DEV = Root_RAM0;
/* Is init_mm really needed? */ init_mm.start_code = (unsigned long) _text;
init_mm.start_code = PAGE_OFFSET;
init_mm.end_code = (unsigned long) _etext; init_mm.end_code = (unsigned long) _etext;
init_mm.end_data = (unsigned long) _edata; init_mm.end_data = (unsigned long) _edata;
init_mm.brk = (unsigned long) _end; init_mm.brk = (unsigned long) _end;
......
...@@ -216,11 +216,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) ...@@ -216,11 +216,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
if (!vdso_enabled) if (!vdso_enabled)
return 0; return 0;
/*
* Only map the vdso for dynamically linked elf binaries.
*/
if (!uses_interp)
return 0;
vdso_pages = vdso64_pages; vdso_pages = vdso64_pages;
#ifdef CONFIG_COMPAT_VDSO #ifdef CONFIG_COMPAT_VDSO
......
...@@ -32,10 +32,9 @@ PHDRS { ...@@ -32,10 +32,9 @@ PHDRS {
SECTIONS SECTIONS
{ {
. = 0x100000; . = 0x100000;
_stext = .; /* Start of text section */
.text : { .text : {
/* Text and read-only data */ _stext = .; /* Start of text section */
_text = .; _text = .; /* Text and read-only data */
HEAD_TEXT HEAD_TEXT
TEXT_TEXT TEXT_TEXT
SCHED_TEXT SCHED_TEXT
...@@ -47,11 +46,10 @@ SECTIONS ...@@ -47,11 +46,10 @@ SECTIONS
*(.text.*_indirect_*) *(.text.*_indirect_*)
*(.fixup) *(.fixup)
*(.gnu.warning) *(.gnu.warning)
. = ALIGN(PAGE_SIZE);
_etext = .; /* End of text section */
} :text = 0x0700 } :text = 0x0700
. = ALIGN(PAGE_SIZE);
_etext = .; /* End of text section */
NOTES :text :note NOTES :text :note
.dummy : { *(.dummy) } :data .dummy : { *(.dummy) } :data
......
...@@ -161,9 +161,9 @@ static void walk_pmd_level(struct seq_file *m, struct pg_state *st, ...@@ -161,9 +161,9 @@ static void walk_pmd_level(struct seq_file *m, struct pg_state *st,
} }
#endif #endif
for (i = 0; i < PTRS_PER_PMD && addr < max_addr; i++) { pmd = pmd_offset(pud, addr);
for (i = 0; i < PTRS_PER_PMD && addr < max_addr; i++, pmd++) {
st->current_address = addr; st->current_address = addr;
pmd = pmd_offset(pud, addr);
if (!pmd_none(*pmd)) { if (!pmd_none(*pmd)) {
if (pmd_large(*pmd)) { if (pmd_large(*pmd)) {
prot = pmd_val(*pmd) & prot = pmd_val(*pmd) &
...@@ -192,9 +192,9 @@ static void walk_pud_level(struct seq_file *m, struct pg_state *st, ...@@ -192,9 +192,9 @@ static void walk_pud_level(struct seq_file *m, struct pg_state *st,
} }
#endif #endif
for (i = 0; i < PTRS_PER_PUD && addr < max_addr; i++) { pud = pud_offset(p4d, addr);
for (i = 0; i < PTRS_PER_PUD && addr < max_addr; i++, pud++) {
st->current_address = addr; st->current_address = addr;
pud = pud_offset(p4d, addr);
if (!pud_none(*pud)) if (!pud_none(*pud))
if (pud_large(*pud)) { if (pud_large(*pud)) {
prot = pud_val(*pud) & prot = pud_val(*pud) &
...@@ -222,9 +222,9 @@ static void walk_p4d_level(struct seq_file *m, struct pg_state *st, ...@@ -222,9 +222,9 @@ static void walk_p4d_level(struct seq_file *m, struct pg_state *st,
} }
#endif #endif
for (i = 0; i < PTRS_PER_P4D && addr < max_addr; i++) { p4d = p4d_offset(pgd, addr);
for (i = 0; i < PTRS_PER_P4D && addr < max_addr; i++, p4d++) {
st->current_address = addr; st->current_address = addr;
p4d = p4d_offset(pgd, addr);
if (!p4d_none(*p4d)) if (!p4d_none(*p4d))
walk_pud_level(m, st, p4d, addr); walk_pud_level(m, st, p4d, addr);
else else
......
...@@ -11,8 +11,7 @@ chkbss: $(addprefix $(obj)/, $(chkbss-files)) ...@@ -11,8 +11,7 @@ chkbss: $(addprefix $(obj)/, $(chkbss-files))
quiet_cmd_chkbss = CHKBSS $< quiet_cmd_chkbss = CHKBSS $<
cmd_chkbss = \ cmd_chkbss = \
if $(OBJDUMP) -h $< | grep -q "\.bss" && \ if ! $(OBJSIZE) --common $< | $(AWK) 'END { if ($$3) exit 1 }'; then \
! $(OBJDUMP) -j .bss -w -h $< | awk 'END { if ($$3) exit 1 }'; then \
echo "error: $< .bss section is not empty" >&2; exit 1; \ echo "error: $< .bss section is not empty" >&2; exit 1; \
fi; \ fi; \
touch $@; touch $@;
......
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