07 Jul, 2020

1 commit

  • Some Makefiles already pass -ffreestanding unconditionally.
    For example, arch/arm64/lib/Makefile, arch/x86/purgatory/Makefile.

    No problem report so far about hard-coding this option. So, we can
    assume all supported compilers know -ffreestanding.

    I confirmed GCC 4.8 and Clang manuals document this option.

    Get rid of cc-option from -ffreestanding.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Nick Desaulniers
    Reviewed-by: Kees Cook
    Acked-by: Ard Biesheuvel

    Masahiro Yamada
     

18 Feb, 2020

1 commit

  • For the same reason as commit 19514fc665ff ("arm, kbuild: make "make
    install" not depend on vmlinux"), the install targets should never
    trigger the rebuild of the kernel.

    The variable, CONFIGURE, is not set by anyone. Remove it as well.

    Link: https://lkml.kernel.org/r/20200216144829.27023-1-masahiroy@kernel.org
    Signed-off-by: Masahiro Yamada
    Signed-off-by: Vasily Gorbik

    Masahiro Yamada
     

22 Jan, 2020

1 commit

  • clang 10 introduces -mpacked-stack compiler option implementation. At the
    same time currently it does not support a combination of -mpacked-stack
    and -mbackchain. This leads to the following build error:

    clang: error: unsupported option '-mpacked-stack with -mbackchain' for
    target 's390x-ibm-linux'

    If/when clang adds support for a combination of -mpacked-stack and
    -mbackchain it would also require -msoft-float (like gcc does). According
    to Ulrich Weigand "stack slot assigned to the kernel backchain overlaps
    the stack slot assigned to the FPR varargs (both are required to be
    placed immediately after the saved r15 slot if present)."

    Extend -mpacked-stack compiler option support check to include all 3
    options -mpacked-stack -mbackchain -msoft-float which must present to
    support -mpacked-stack with -mbackchain.

    Acked-by: Heiko Carstens
    Signed-off-by: Vasily Gorbik

    Vasily Gorbik
     

01 Dec, 2019

1 commit


13 Sep, 2019

1 commit

  • Add detection for machine types 0x8562 and 8x8561 and set the ELF platform
    name to z15. Add the miscellaneous-instruction-extension 3 facility to
    the list of facilities for z15.

    And allow to generate code that only runs on a z15 machine.

    Reviewed-by: Christian Borntraeger
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Heiko Carstens

    Martin Schwidefsky
     

13 Jul, 2019

1 commit

  • Pull Kconfig updates from Masahiro Yamada:

    - always require argument for --defconfig and remove the hard-coded
    arch/$(ARCH)/defconfig path

    - make arch/$(SRCARCH)/configs/defconfig the new default of defconfig

    - some code cleanups

    * tag 'kconfig-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kconfig: remove meaningless if-conditional in conf_read()
    kconfig: Fix spelling of sym_is_changable
    unicore32: rename unicore32_defconfig to defconfig
    kconfig: make arch/*/configs/defconfig the default of KBUILD_DEFCONFIG
    kconfig: add static qualifier to expand_string()
    kconfig: require the argument of --defconfig
    kconfig: remove always false ifeq ($(KBUILD_DEFCONFIG,) conditional

    Linus Torvalds
     

11 Jun, 2019

1 commit

  • Get rid of gcc9 warnings like this:

    arch/s390/boot/ipl_report.c: In function 'find_bootdata_space':
    arch/s390/boot/ipl_report.c:42:26: warning: taking address of packed member of 'struct ipl_rb_components' may result in an unaligned pointer value [-Waddress-of-packed-member]
    42 | for_each_rb_entry(comp, comps)
    | ^~~~~

    This is effectively the s390 variant of commit 20c6c1890455
    ("x86/boot: Disable the address-of-packed-member compiler warning").

    Reviewed-by: Vasily Gorbik
    Signed-off-by: Heiko Carstens

    Heiko Carstens
     

09 Jun, 2019

1 commit

  • Until recently, if KBUILD_DEFCONFIG was not set by the arch Makefile,
    the default path arch/*/defconfig was used.

    The last users of the default are gone by the following commits:

    - Commit f3e20ad67b4c ("s390: move arch/s390/defconfig to
    arch/s390/configs/defconfig")

    - Commit 986a13769c4b ("alpha: move arch/alpha/defconfig to
    arch/alpha/configs/defconfig")

    Let's set arch/*/configs/defconfig as a new default. This saves
    KBUILD_DEFCONFIG for some architectures.

    Signed-off-by: Masahiro Yamada
    Acked-by: Catalin Marinas

    Masahiro Yamada
     

14 May, 2019

1 commit

  • As of Linux 5.1, alpha and s390 are the last architectures that
    have defconfig in arch/*/ instead of arch/*/configs/.

    $ find arch -name defconfig | sort
    arch/alpha/defconfig
    arch/arm64/configs/defconfig
    arch/csky/configs/defconfig
    arch/nds32/configs/defconfig
    arch/riscv/configs/defconfig
    arch/s390/defconfig

    The arch/$(ARCH)/defconfig is the hard-coded default in Kconfig,
    and I want to deprecate it after evacuating the remaining defconfig
    into the standard location, arch/*/configs/.

    Define KBUILD_DEFCONFIG like other architectures, and move defconfig
    into the configs/ subdirectory.

    Signed-off-by: Masahiro Yamada
    Signed-off-by: Martin Schwidefsky

    Masahiro Yamada
     

03 May, 2019

1 commit

  • The purgatory and boot Makefiles do not inherit the original cflags,
    so clang falls back to the default target architecture when building it,
    typically this would be x86 when cross-compiling.

    Add $(CLANG_FLAGS) everywhere so we pass the correct --target=s390x-linux
    option when cross-compiling.

    Signed-off-by: Arnd Bergmann
    Reviewed-by: Nathan Chancellor
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Arnd Bergmann
     

29 Apr, 2019

1 commit


11 Apr, 2019

1 commit

  • This was added as a workaround for really old compilers, and it prevents
    building with clang now. I can see no reason for keeping it, as it has
    already been removed for most architectures in the pre-git era, so
    let's remove it everywhere, rather than only for clang.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Martin Schwidefsky

    Arnd Bergmann
     

02 Nov, 2018

1 commit

  • Increase kasan instrumented kernel stack size from 32k to 64k. Other
    architectures seems to get away with just doubling kernel stack size under
    kasan, but on s390 this appears to be not enough due to bigger frame size.
    The particular pain point is kasan inlined checks (CONFIG_KASAN_INLINE
    vs CONFIG_KASAN_OUTLINE). With inlined checks one particular case hitting
    stack overflow is fs sync on xfs filesystem:

    #0 [9a0681e8] 704 bytes check_usage at 34b1fc
    #1 [9a0684a8] 432 bytes check_usage at 34c710
    #2 [9a068658] 1048 bytes validate_chain at 35044a
    #3 [9a068a70] 312 bytes __lock_acquire at 3559fe
    #4 [9a068ba8] 440 bytes lock_acquire at 3576ee
    #5 [9a068d60] 104 bytes _raw_spin_lock at 21b44e0
    #6 [9a068dc8] 1992 bytes enqueue_entity at 2dbf72
    #7 [9a069590] 1496 bytes enqueue_task_fair at 2df5f0
    #8 [9a069b68] 64 bytes ttwu_do_activate at 28f438
    #9 [9a069ba8] 552 bytes try_to_wake_up at 298c4c
    #10 [9a069dd0] 168 bytes wake_up_worker at 23f97c
    #11 [9a069e78] 200 bytes insert_work at 23fc2e
    #12 [9a069f40] 648 bytes __queue_work at 2487c0
    #13 [9a06a1c8] 200 bytes __queue_delayed_work at 24db28
    #14 [9a06a290] 248 bytes mod_delayed_work_on at 24de84
    #15 [9a06a388] 24 bytes kblockd_mod_delayed_work_on at 153e2a0
    #16 [9a06a3a0] 288 bytes __blk_mq_delay_run_hw_queue at 158168c
    #17 [9a06a4c0] 192 bytes blk_mq_run_hw_queue at 1581a3c
    #18 [9a06a580] 184 bytes blk_mq_sched_insert_requests at 15a2192
    #19 [9a06a638] 1024 bytes blk_mq_flush_plug_list at 1590f3a
    #20 [9a06aa38] 704 bytes blk_flush_plug_list at 1555028
    #21 [9a06acf8] 320 bytes schedule at 219e476
    #22 [9a06ae38] 760 bytes schedule_timeout at 21b0aac
    #23 [9a06b130] 408 bytes wait_for_common at 21a1706
    #24 [9a06b2c8] 360 bytes xfs_buf_iowait at fa1540
    #25 [9a06b430] 256 bytes __xfs_buf_submit at fadae6
    #26 [9a06b530] 264 bytes xfs_buf_read_map at fae3f6
    #27 [9a06b638] 656 bytes xfs_trans_read_buf_map at 10ac9a8
    #28 [9a06b8c8] 304 bytes xfs_btree_kill_root at e72426
    #29 [9a06b9f8] 288 bytes xfs_btree_lookup_get_block at e7bc5e
    #30 [9a06bb18] 624 bytes xfs_btree_lookup at e7e1a6
    #31 [9a06bd88] 2664 bytes xfs_alloc_ag_vextent_near at dfa070
    #32 [9a06c7f0] 144 bytes xfs_alloc_ag_vextent at dff3ca
    #33 [9a06c880] 1128 bytes xfs_alloc_vextent at e05fce
    #34 [9a06cce8] 584 bytes xfs_bmap_btalloc at e58342
    #35 [9a06cf30] 1336 bytes xfs_bmapi_write at e618de
    #36 [9a06d468] 776 bytes xfs_iomap_write_allocate at ff678e
    #37 [9a06d770] 720 bytes xfs_map_blocks at f82af8
    #38 [9a06da40] 928 bytes xfs_writepage_map at f83cd6
    #39 [9a06dde0] 320 bytes xfs_do_writepage at f85872
    #40 [9a06df20] 1320 bytes write_cache_pages at 73dfe8
    #41 [9a06e448] 208 bytes xfs_vm_writepages at f7f892
    #42 [9a06e518] 88 bytes do_writepages at 73fe6a
    #43 [9a06e570] 872 bytes __writeback_single_inode at a20cb6
    #44 [9a06e8d8] 664 bytes writeback_sb_inodes at a23be2
    #45 [9a06eb70] 296 bytes __writeback_inodes_wb at a242e0
    #46 [9a06ec98] 928 bytes wb_writeback at a2500e
    #47 [9a06f038] 848 bytes wb_do_writeback at a260ae
    #48 [9a06f388] 536 bytes wb_workfn at a28228
    #49 [9a06f5a0] 1088 bytes process_one_work at 24a234
    #50 [9a06f9e0] 1120 bytes worker_thread at 24ba26
    #51 [9a06fe40] 104 bytes kthread at 26545a
    #52 [9a06fea8] kernel_thread_starter at 21b6b62

    To be able to increase the stack size to 64k reuse LLILL instruction
    in __switch_to function to load 64k - STACK_FRAME_OVERHEAD - __PT_SIZE
    (65192) value as unsigned.

    Reported-by: Benjamin Block
    Reviewed-by: Heiko Carstens
    Signed-off-by: Vasily Gorbik
    Signed-off-by: Martin Schwidefsky

    Vasily Gorbik
     

09 Oct, 2018

1 commit

  • Kasan stack instrumentation pads stack variables with redzones, which
    increases stack frames size significantly. Stack sizes are increased
    from 16k to 32k in the code, as well as for the kernel stack overflow
    detection option (CHECK_STACK).

    Reviewed-by: Martin Schwidefsky
    Signed-off-by: Vasily Gorbik
    Signed-off-by: Martin Schwidefsky

    Vasily Gorbik
     

24 Aug, 2018

1 commit

  • Commit a0f97e06a43c ("kbuild: enable 'make CFLAGS=...' to add
    additional options to CC") renamed CFLAGS to KBUILD_CFLAGS.

    Commit 222d394d30e7 ("kbuild: enable 'make AFLAGS=...' to add
    additional options to AS") renamed AFLAGS to KBUILD_AFLAGS.

    Commit 06c5040cdb13 ("kbuild: enable 'make CPPFLAGS=...' to add
    additional options to CPP") renamed CPPFLAGS to KBUILD_CPPFLAGS.

    For some reason, LDFLAGS was not renamed.

    Using a well-known variable like LDFLAGS may result in accidental
    override of the variable.

    Kbuild generally uses KBUILD_ prefixed variables for the internally
    appended options, so here is one more conversion to sanitize the
    naming convention.

    I did not touch Makefiles under tools/ since the tools build system
    is a different world.

    Signed-off-by: Masahiro Yamada
    Acked-by: Kirill A. Shutemov
    Reviewed-by: Palmer Dabbelt

    Masahiro Yamada
     

21 Aug, 2018

1 commit

  • Pull tracing updates from Steven Rostedt:

    - Restructure of lockdep and latency tracers

    This is the biggest change. Joel Fernandes restructured the hooks
    from irqs and preemption disabling and enabling. He got rid of a lot
    of the preprocessor #ifdef mess that they caused.

    He turned both lockdep and the latency tracers to use trace events
    inserted in the preempt/irqs disabling paths. But unfortunately,
    these started to cause issues in corner cases. Thus, parts of the
    code was reverted back to where lockdep and the latency tracers just
    get called directly (without using the trace events). But because the
    original change cleaned up the code very nicely we kept that, as well
    as the trace events for preempt and irqs disabling, but they are
    limited to not being called in NMIs.

    - Have trace events use SRCU for "rcu idle" calls. This was required
    for the preempt/irqs off trace events. But it also had to not allow
    them to be called in NMI context. Waiting till Paul makes an NMI safe
    SRCU API.

    - New notrace SRCU API to allow trace events to use SRCU.

    - Addition of mcount-nop option support

    - SPDX headers replacing GPL templates.

    - Various other fixes and clean ups.

    - Some fixes are marked for stable, but were not fully tested before
    the merge window opened.

    * tag 'trace-v4.19' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (44 commits)
    tracing: Fix SPDX format headers to use C++ style comments
    tracing: Add SPDX License format tags to tracing files
    tracing: Add SPDX License format to bpf_trace.c
    blktrace: Add SPDX License format header
    s390/ftrace: Add -mfentry and -mnop-mcount support
    tracing: Add -mcount-nop option support
    tracing: Avoid calling cc-option -mrecord-mcount for every Makefile
    tracing: Handle CC_FLAGS_FTRACE more accurately
    Uprobe: Additional argument arch_uprobe to uprobe_write_opcode()
    Uprobes: Simplify uprobe_register() body
    tracepoints: Free early tracepoints after RCU is initialized
    uprobes: Use synchronize_rcu() not synchronize_sched()
    tracing: Fix synchronizing to event changes with tracepoint_synchronize_unregister()
    ftrace: Remove unused pointer ftrace_swapper_pid
    tracing: More reverting of "tracing: Centralize preemptirq tracepoints and unify their usage"
    tracing/irqsoff: Handle preempt_count for different configs
    tracing: Partial revert of "tracing: Centralize preemptirq tracepoints and unify their usage"
    tracing: irqsoff: Account for additional preempt_disable
    trace: Use rcu_dereference_raw for hooks from trace-event subsystem
    tracing/kprobes: Fix within_notrace_func() to check only notrace functions
    ...

    Linus Torvalds
     

16 Aug, 2018

1 commit

  • Utilize -mfentry and -mnop-mcount gcc options together with
    -mrecord-mcount to get compiler generated calls to the profiling functions
    as nops which are compatible with current -mhotpatch=0,3 approach. At the
    same time -mrecord-mcount enables __mcount_loc section generation by
    the compiler which allows to avoid using scripts/recordmcount.pl script.

    Link: http://lkml.kernel.org/r/patch-4.thread-aa7b8d.git-aa7b8dbf236f.your-ad-here.call-01533557518-ext-9465@work.hours

    Reviewed-by: Heiko Carstens
    Signed-off-by: Vasily Gorbik
    Signed-off-by: Steven Rostedt (VMware)

    Vasily Gorbik
     

02 Jul, 2018

1 commit


25 Jun, 2018

5 commits

  • Since uncompressed kernel image does not have to be bootable anymore,
    move head.S, head_kdump.S and als.c to boot/ folder and compile them
    in just in the decompressor.

    Reviewed-by: Heiko Carstens
    Signed-off-by: Vasily Gorbik
    Signed-off-by: Martin Schwidefsky

    Vasily Gorbik
     
  • Dropping support for uncompressed kernel "image" build. Having
    both image and bzImage makes it complicated to add new code to an
    early boot phase (which is part of vmlinux for uncompressed kernel and
    a separate arch/s390/boot/compressed/vmlinux for bzImage).

    e.g. sclp_early_core.o is used for both, the decompressor phase and the
    main kernel. The fact of having uncompressed kernel "image" forces us
    to have a single object file and sacrifice instrumentation flags on such
    files (so that we could use them early). The story gets much more
    complicated with the need to utilize some of the string functions.

    With bzImage only support, we have 2 separate boot stages each built
    and linked separately, which allows to reuse some shared code, but
    recompile with appropriate flags.

    Reviewed-by: Heiko Carstens
    Signed-off-by: Vasily Gorbik
    Signed-off-by: Martin Schwidefsky

    Vasily Gorbik
     
  • The decompressor requires its own set of cc and asm flags, to avoid
    building with features which do not make sense at such an early boot stage
    (e.g. expoline, ftrace).

    Currently cc flags are already set for the decompressor, but "cflags-y"
    is not exported and hence empty. To fix that and to add asm flags, define
    and export KBUILD_AFLAGS_DECOMPRESSOR and KBUILD_CFLAGS_DECOMPRESSOR
    and rely on them in the decompressor's Makefile.

    Reviewed-by: Heiko Carstens
    Signed-off-by: Vasily Gorbik
    Signed-off-by: Martin Schwidefsky

    Vasily Gorbik
     
  • -mkernel-backchain cc flag is obsolete since quite a while, and not
    present in minimal (supported by s390) gcc version 4.3. Removing it.

    Reviewed-by: Heiko Carstens
    Signed-off-by: Vasily Gorbik
    Signed-off-by: Martin Schwidefsky

    Vasily Gorbik
     
  • To avoid a mixture of asm code with expolines and c code without them,
    propagate CC_USING_EXPOLINE to KBUILD_AFLAGS and use it to detect
    whether asm code should have expolines or not.

    Reviewed-by: Heiko Carstens
    Signed-off-by: Vasily Gorbik
    Signed-off-by: Martin Schwidefsky

    Vasily Gorbik
     

29 May, 2018

1 commit

  • The kernel depends on macros like __BYTE_ORDER__,
    __BIG_ENDIAN__ or __LITTLE_ENDIAN__.

    OTOH, sparse doesn't know about the endianness of the kernel and
    by default uses the same as the machine on which sparse was built.

    Ensure that sparse can predefine the macros corresponding to
    how the kernel was configured by adding -m{big,little}-endian
    to CHECKFLAGS in the main Makefile (and so for all archs).
    Also, remove the equivalent done in arch specific Makefiles.

    Signed-off-by: Luc Van Oostenryck
    Signed-off-by: Masahiro Yamada

    Luc Van Oostenryck
     

28 Mar, 2018

1 commit


27 Feb, 2018

1 commit

  • Even though s390 compressed kernel support has been introduced long ago,
    by default uncompressed kernel image is used by packaging targets like:
    "make rpm-pkg", "make deb-pkg" as well as "make image_name".

    At the same time "make install" would use compressed bzImage by default.
    To avoid ambiguity, set bzImage as default image for packaging.

    Signed-off-by: Vasily Gorbik
    Acked-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Vasily Gorbik
     

07 Feb, 2018

1 commit

  • Add CONFIG_EXPOLINE to enable the use of the new -mindirect-branch= and
    -mfunction_return= compiler options to create a kernel fortified against
    the specte v2 attack.

    With CONFIG_EXPOLINE=y all indirect branches will be issued with an
    execute type instruction. For z10 or newer the EXRL instruction will
    be used, for older machines the EX instruction. The typical indirect
    call

    basr %r14,%r1

    is replaced with a PC relative call to a new thunk

    brasl %r14,__s390x_indirect_jump_r1

    The thunk contains the EXRL/EX instruction to the indirect branch

    __s390x_indirect_jump_r1:
    exrl 0,0f
    j .
    0: br %r1

    The detour via the execute type instruction has a performance impact.
    To get rid of the detour the new kernel parameter "nospectre_v2" and
    "spectre_v2=[on,off,auto]" can be used. If the parameter is specified
    the kernel and module code will be patched at runtime.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

23 Jan, 2018

2 commits

  • Previously, the generated dis.h and facilities.h header files have been
    stored in include/generated. Because they are s390 specific, store them
    in the arch/s390/include/generated/asm/ directory. Also update
    references to the header files respectively.

    To prevent name collisions with those header files in asm/ that
    include the generated ones, rename the generated headers files
    and add an -defs suffix. Also update the generators to create
    the ifdef guards respectively.

    Signed-off-by: Hendrik Brueckner
    Acked-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Hendrik Brueckner
     
  • Generate the system call specific files from the archheaders
    and archprepare make targets.

    Signed-off-by: Hendrik Brueckner
    Acked-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Hendrik Brueckner
     

13 Dec, 2017

2 commits

  • Revise and add CFI CFA and register rule annotations to the vDSO
    functions for proper stack unwinding and debugging.

    Because glibc might call the vDSO in special ways, the vDSO code
    does not rely on a stack frame created by the caller. The TOD clock
    value can be therefore not stored in the pre-allocated stack area
    and additional stack space is required.
    To correctly annotate these situations with CFI, the .cfi_val_offset
    directive is required to create relative offsets on the value of the
    stack register %r15. Because the .cfi_val_offset directive is
    available with recent GNU assembler versions only, additional checks
    are necessary.

    Note that if the vDSO is assembled with an older assembler version,
    stack unwinding and debugging from within the vDSO code might not
    be possible.

    Signed-off-by: Hendrik Brueckner
    Reviewed-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Hendrik Brueckner
     
  • Using perf probe and libdw on kernel modules failed to find CFI
    data for symbols. The CFI data is stored in the .eh_frame section.
    The elfutils libdw is not able to extract the CFI data correctly,
    because the .eh_frame section requires "non-simple" relocations
    for kernel modules.

    The suggestion is to avoid these "non-simple" relocations by emitting
    the CFI data in the .debug_frame section. Let gcc emit respective
    directives by specifying the -fno-asynchronous-unwind-tables option.

    Using the .debug_frame section for CFI data, the .eh_frame section
    becomes unused and, thus, discard it for kernel and modules builds

    The vDSO requires the .eh_frame section and, hence, emit the CFI data
    in both, the .eh_frame and .debug_frame sections.

    See also discussion on elfutils/libdw bugzilla:
    https://sourceware.org/bugzilla/show_bug.cgi?id=22452

    Suggested-by: Mark Wielaard
    Signed-off-by: Hendrik Brueckner
    Reviewed-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Hendrik Brueckner
     

24 Nov, 2017

2 commits

  • Now that the SPDX tag is in all arch/s390/ files, that identifies the
    license in a specific and legally-defined manner. So the extra GPL text
    wording in the remaining files can be removed as it is no longer needed
    at all.

    This is done on a quest to remove the 700+ different ways that files in
    the kernel describe the GPL license text. And there's unneeded stuff
    like the address (sometimes incorrect) for the FSF which is never
    needed.

    No copyright headers or other non-license-description text was removed.

    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: "Paul E. McKenney"
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Martin Schwidefsky

    Greg Kroah-Hartman
     
  • It's good to have SPDX identifiers in all files to make it easier to
    audit the kernel tree for correct licenses.

    Update the remaining arch/s390/ files with the correct SPDX license
    identifier based on the license text in the file itself. The SPDX
    identifier is a legally binding shorthand, which can be used instead of
    the full boiler plate text.

    This work is based on a script and data from Thomas Gleixner, Philippe
    Ombredanne, and Kate Stewart.

    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Christian Borntraeger
    Cc: Cornelia Huck
    Cc: Thomas Gleixner
    Cc: Kate Stewart
    Cc: Philippe Ombredanne
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Martin Schwidefsky

    Greg Kroah-Hartman
     

09 Nov, 2017

1 commit

  • The current way of adding new instructions to the opcode tables is
    painful and error prone. Therefore add, similar to binutils, a text
    file which contains all opcodes and the corresponding mnemonics and
    instruction formats.

    A small gen_opcode_table tool then generates a header file with the
    required enums and opcode table initializers at the prepare step of
    the kernel build.

    This way only a simple text file has to be maintained, which can be
    rather easily extended.

    Unlike before where there were plenty of opcode tables and a large
    switch statement to find the correct opcode table, there is now only
    one opcode table left which contains all instructions. A second opcode
    offset table now contains offsets within the opcode table to find
    instructions which have the same opcode prefix. In order to save space
    all 1-byte opcode instructions are grouped together at the end of the
    opcode table. This is also quite similar to like it was before.

    In addition also move and change code and definitions within the
    disassembler. As a side effect this reduces the size required for the
    code and opcode tables by ~1.5k.

    Signed-off-by: Heiko Carstens

    Heiko Carstens
     

02 Nov, 2017

1 commit

  • s390 is big-endian only but sparse assumes the same endianness
    as the building machine.
    This is problematic for code which expect __BYTE_ORDER__ being
    correctly predefined by the compiler which sparse can then
    pre-process differently from what gcc would, depending on the
    building machine endianness.

    Fix this by letting sparse know about the architecture endianness.

    Signed-off-by: Luc Van Oostenryck
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Luc Van Oostenryck
     

26 Jul, 2017

1 commit

  • Add detection for machine type 0x3906 and set the ELF platform name
    to z14. Add the miscellaneous-instruction-extension 2 facility to
    the list of facilities for z14.

    And allow to generate code that only runs on a z14 machine.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

06 Sep, 2016

1 commit

  • With git commit 0eab11c7e0d30de14a15ccd8269eef238321a8e1
    "s390/vx: allow to include vx-insn.h with .include"
    and an older gcc we get errors like this:

    {standard input}:6: Error: can't open asm/vx-insn.h for reading:
    No such file or directory
    arch/s390/kernel/fpu.c:57: Error: Unrecognized opcode: `vstm'

    To solve this issue simply add the path to arch/s390/include to
    all assembler runs.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

18 Dec, 2015

1 commit

  • Modifying the architecture level set facility lists was always very
    error prone. Given the numbering of the facility bits within the
    Principles of Operation, where the most significant bit number is 0,
    it happened a lot of times that wrong bits were set or cleared.

    Therefore this patch adds a tool "gen_facilities" which generates
    include/generated/facilites.h. The definition of the bits to be set
    is contained within arch/s390/include/asm/facilities_src.h and can be
    easily extended to e.g. also generate such lists for the KVM module.

    The generated file looks like this:

    #define FACILITIES_ALS _AC(0xc1006450f0040000,UL)
    #define FACILITIES_ALS_DWORDS 1

    The facility bits defined in this patch match 1:1 to the current masks
    that can be found in head.S.

    That is if the tool gets executed with -march=z990 then the generated
    masks will equal the masks in head.S for CONFIG_MARCH_Z990.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     

27 Nov, 2015

1 commit


29 Jul, 2015

1 commit