1. 10 8月, 2016 5 次提交
  2. 09 8月, 2016 7 次提交
  3. 04 8月, 2016 1 次提交
    • K
      dma-mapping: use unsigned long for dma_attrs · 00085f1e
      Krzysztof Kozlowski 提交于
      The dma-mapping core and the implementations do not change the DMA
      attributes passed by pointer.  Thus the pointer can point to const data.
      However the attributes do not have to be a bitfield.  Instead unsigned
      long will do fine:
      
      1. This is just simpler.  Both in terms of reading the code and setting
         attributes.  Instead of initializing local attributes on the stack
         and passing pointer to it to dma_set_attr(), just set the bits.
      
      2. It brings safeness and checking for const correctness because the
         attributes are passed by value.
      
      Semantic patches for this change (at least most of them):
      
          virtual patch
          virtual context
      
          @r@
          identifier f, attrs;
      
          @@
          f(...,
          - struct dma_attrs *attrs
          + unsigned long attrs
          , ...)
          {
          ...
          }
      
          @@
          identifier r.f;
          @@
          f(...,
          - NULL
          + 0
           )
      
      and
      
          // Options: --all-includes
          virtual patch
          virtual context
      
          @r@
          identifier f, attrs;
          type t;
      
          @@
          t f(..., struct dma_attrs *attrs);
      
          @@
          identifier r.f;
          @@
          f(...,
          - NULL
          + 0
           )
      
      Link: http://lkml.kernel.org/r/1468399300-5399-2-git-send-email-k.kozlowski@samsung.comSigned-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Acked-by: NVineet Gupta <vgupta@synopsys.com>
      Acked-by: NRobin Murphy <robin.murphy@arm.com>
      Acked-by: NHans-Christian Noren Egtvedt <egtvedt@samfundet.no>
      Acked-by: Mark Salter <msalter@redhat.com> [c6x]
      Acked-by: Jesper Nilsson <jesper.nilsson@axis.com> [cris]
      Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> [drm]
      Reviewed-by: NBart Van Assche <bart.vanassche@sandisk.com>
      Acked-by: Joerg Roedel <jroedel@suse.de> [iommu]
      Acked-by: Fabien Dessenne <fabien.dessenne@st.com> [bdisp]
      Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com> [vb2-core]
      Acked-by: David Vrabel <david.vrabel@citrix.com> [xen]
      Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> [xen swiotlb]
      Acked-by: Joerg Roedel <jroedel@suse.de> [iommu]
      Acked-by: Richard Kuo <rkuo@codeaurora.org> [hexagon]
      Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> [m68k]
      Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> [s390]
      Acked-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      Acked-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no> [avr32]
      Acked-by: Vineet Gupta <vgupta@synopsys.com> [arc]
      Acked-by: Robin Murphy <robin.murphy@arm.com> [arm64 and dma-iommu]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      00085f1e
  4. 01 8月, 2016 22 次提交
  5. 26 7月, 2016 1 次提交
  6. 21 7月, 2016 4 次提交
    • M
      powerpc/modules: Never restore r2 for a mprofile-kernel style mcount() call · 31278b17
      Michael Ellerman 提交于
      In the module loader we process relocations, and for long jumps we
      generate trampolines (aka stubs). At the call site for one of these
      trampolines we usually need to generate a load instruction to restore
      the TOC pointer into r2.
      
      There is one exception however, which is calls to mcount() using the
      mprofile-kernel ABI, they handle the TOC inside the stub, and so for
      them we do not generate a TOC load.
      
      The bug is in how the code in restore_r2() decides if it needs to
      generate the TOC load. It does so by looking for a nop following the
      branch, and if it sees a nop, it replaces it with the load. In general
      the compiler has no reason to generate a nop following the mcount()
      call and so that check works OK.
      
      However if we combine a jump label at the start of a function, with an
      early return, such that GCC applies the shrink-wrapping optimisation, we
      can then end up with an mcount call followed immediately by a nop.
      However the nop is not there for a TOC load, it is for the jump label.
      
      That confuses restore_r2() into replacing the jump label nop with a TOC
      load, which in turn confuses ftrace into replacing the mcount call with
      a b +8 (fixed in the previous commit). The end result is we jump over
      the jump label, which if it was supposed to return means we incorrectly
      run the body of the function.
      
      We have seen this in practice with some yet-to-be-merged patches that
      use jump labels more extensively.
      
      The fix is relatively simple, in restore_r2() we check for an
      mprofile-kernel style mcount() call first, before looking for the
      presence of a nop.
      
      Fixes: 15308664 ("powerpc/ftrace: Add support for -mprofile-kernel ftrace ABI")
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      31278b17
    • M
      powerpc/ftrace: Separate the heuristics for checking call sites · 9d636109
      Michael Ellerman 提交于
      In __ftrace_make_nop() (the 64-bit version), we have code to deal with
      two ftrace ABIs. There is the original ABI, which looks mostly like a
      function call, and then the mprofile-kernel ABI which is just a branch.
      
      The code tries to handle both cases, by looking for the presence of a
      load to restore the TOC pointer (PPC_INST_LD_TOC). If we detect the TOC
      load, we assume the call site is for an mcount() call using the old ABI.
      That means we patch the mcount() call with a b +8, to branch over the
      TOC load.
      
      However if the kernel was built with mprofile-kernel, then there will
      never be a call site using the original ftrace ABI. If for some reason
      we do see a TOC load, then it's there for a good reason, and we should
      not jump over it.
      
      So split the code, using the existing CC_USING_MPROFILE_KERNEL. Kernels
      built with mprofile-kernel will only look for, and expect, the new ABI,
      and similarly for the original ABI.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      9d636109
    • B
      powerpc: Merge 32-bit and 64-bit setup_arch() · b1923caa
      Benjamin Herrenschmidt 提交于
      There is little enough differences now.
      
      mpe: Add a/p/k/setup.h to contain the prototypes and empty versions of
      functions we need, rather than using weak functions. Add a few other
      empty versions to avoid as many #ifdefs as possible in the code.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      b1923caa
    • B