1. 28 Sep, 2016 3 commits
    • Oliver O'Halloran's avatar
      powerpc/boot: Use the pre-boot decompression API · 1b7898ee
      Oliver O'Halloran authored
      Currently the powerpc boot wrapper has its own wrapper around zlib to
      handle decompressing gzipped kernels. The kernel decompressor library
      functions now provide a generic interface that can be used in the
      pre-boot environment. This allows boot wrappers to easily support
      different compression algorithms. This patch converts the wrapper to use
      this new API, but does not add support for using new algorithms.
      Signed-off-by: default avatarOliver O'Halloran <oohall@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      1b7898ee
    • Oliver O'Halloran's avatar
      powerpc/boot: Use CONFIG_KERNEL_GZIP · 22750d98
      Oliver O'Halloran authored
      Most architectures allow the compression algorithm used to produced the
      vmlinuz image to be selected as a kernel config option. In preperation
      for supporting algorithms other than gzip in the powerpc boot wrapper
      the makefile needs to be modified to use these config options.
      Signed-off-by: default avatarOliver O'Halloran <oohall@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      22750d98
    • Oliver O'Halloran's avatar
      powerpc/boot: Add sed script · 1a13de6d
      Oliver O'Halloran authored
      The powerpc boot wrapper is potentially compiled with a separate
      toolchain and/or toolchain flags than the rest of the kernel. The usual
      case is a 64-bit big endian kernel builds a 32-bit big endian wrapper.
      
      The main problem with this is that the wrapper does not have access to
      the kernel headers (without a lot of gross hacks). To get around this
      the required headers are copied into the build directory via several sed
      scripts which rewrite problematic includes. This patch moves these
      fixups out of the makefile into a separate .sed script file to clean up
      makefile slightly.
      Signed-off-by: default avatarOliver O'Halloran <oohall@gmail.com>
      [mpe: Reword first paragraph of change log a little]
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      1a13de6d
  2. 23 Sep, 2016 1 commit
  3. 22 Sep, 2016 15 commits
  4. 20 Sep, 2016 10 commits
  5. 19 Sep, 2016 4 commits
    • Michael Ellerman's avatar
      powerpc: Ensure .mem(init|exit).text are within _stext/_etext · 7de3b27b
      Michael Ellerman authored
      In our linker script we open code the list of text sections, because we
      need to include the __ftr_alt sections, which are arch-specific.
      
      This means we can't use TEXT_TEXT as defined in vmlinux.lds.h, and so we
      don't have the MEM_KEEP() logic for memory hotplug sections.
      
      If we build the kernel with the gold linker, and with CONFIG_MEMORY_HOTPLUG=y,
      we see that functions marked __meminit can end up outside of the
      _stext/_etext range, and also outside of _sinittext/_einittext, eg:
      
          c000000000000000 T _stext
          c0000000009e0000 A _etext
          c0000000009e3f18 T hash__vmemmap_create_mapping
          c000000000ca0000 T _sinittext
          c000000000d00844 T _einittext
      
      This causes them to not be recognised as text by is_kernel_text(), and
      prevents them being patched by jump_label (and presumably ftrace/kprobes
      etc.).
      
      Fix it by adding MEM_KEEP() directives, mirroring what TEXT_TEXT does.
      
      This isn't a problem when CONFIG_MEMORY_HOTPLUG=n, because we use the
      standard INIT_TEXT_SECTION() and EXIT_TEXT macros from vmlinux.lds.h.
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Tested-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      7de3b27b
    • Michael Ellerman's avatar
      powerpc: Don't change the section in _GLOBAL() · bea2dccc
      Michael Ellerman authored
      Currently the _GLOBAL() macro unilaterally sets the assembler section to
      ".text" at the start of the macro. This is rude as the caller may be
      using a different section.
      
      So let the caller decide which section to emit the code into. On big
      endian we do need to switch to the ".opd" section to emit the OPD, but
      do that with pushsection/popsection, thereby leaving the original
      section intact.
      
      I verified that the order of all entries in System.map is unchanged
      after this patch. The actual addresses shift around slightly so you
      can't just diff the System.map.
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Reviewed-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      bea2dccc
    • Nicholas Piggin's avatar
      powerpc/kernel: Use kprobe blacklist for asm functions · 6f698df1
      Nicholas Piggin authored
      Rather than forcing the whole function into the ".kprobes.text" section,
      just add the symbol's address to the kprobe blacklist.
      
      This also lets us drop the three versions of the_KPROBE macro, in
      exchange for just one version of _ASM_NOKPROBE_SYMBOL - which is a good
      cleanup.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      6f698df1
    • Nicholas Piggin's avatar
      powerpc: Use kprobe blacklist for exception handlers · 03465f89
      Nicholas Piggin authored
      Currently we mark the C implementations of some exception handlers as
      __kprobes. This has the effect of putting them in the ".kprobes.text"
      section, which separates them from the rest of the text.
      
      Instead we can use the blacklist macros to add the symbols to a
      blacklist which kprobes will check. This allows the linker to move
      exception handler functions close to callers and avoids trampolines in
      larger kernels.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      [mpe: Reword change log a bit]
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      03465f89
  6. 13 Sep, 2016 7 commits