1. 04 10月, 2015 1 次提交
  2. 03 10月, 2015 2 次提交
    • P
      MIPS: Fix R2300 FP context switch handling · 085c2f25
      Paul Burton 提交于
      Commit 1a3d5957 ("MIPS: Tidy up FPU context switching") removed FP
      context saving from the asm-written resume function in favour of reusing
      existing code to perform the same task. However it only removed the FP
      context saving code from the r4k_switch.S implementation of resume.
      Remove it from the r2300_switch.S implementation too in order to prevent
      attempting to save the FP context twice, which would likely lead to an
      exception from the second save because the FPU had already been disabled
      by the first save.
      
      This patch has only been build tested, using rbtx49xx_defconfig.
      
      Fixes: 1a3d5957 ("MIPS: Tidy up FPU context switching")
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-kernel@vger.kernel.org
      Cc: Manuel Lauss <manuel.lauss@gmail.com>
      Patchwork: https://patchwork.linux-mips.org/patch/11167/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      085c2f25
    • P
      MIPS: Fix octeon FP context switch handling · 0fa24340
      Paul Burton 提交于
      Commit 1a3d5957 ("MIPS: Tidy up FPU context switching") removed FP
      context saving from the asm-written resume function in favour of reusing
      existing code to perform the same task. However it only removed the FP
      context saving code from the r4k_switch.S implementation of resume.
      Octeon uses its own implementation in octeon_switch.S, so remove FP
      context saving there too in order to prevent attempting to save context
      twice. That formerly led to an exception from the second save as follows
      because the FPU had already been disabled by the first save:
      
          do_cpu invoked from kernel context![#1]:
          CPU: 0 PID: 2 Comm: kthreadd Not tainted 4.3.0-rc2-dirty #2
          task: 800000041f84a008 ti: 800000041f864000 task.ti: 800000041f864000
          $ 0   : 0000000000000000 0000000010008ce1 0000000000100000 ffffffffbfffffff
          $ 4   : 800000041f84a008 800000041f84ac08 800000041f84c000 0000000000000004
          $ 8   : 0000000000000001 0000000000000000 0000000000000000 0000000000000001
          $12   : 0000000010008ce3 0000000000119c60 0000000000000036 800000041f864000
          $16   : 800000041f84ac08 800000000792ce80 800000041f84a008 ffffffff81758b00
          $20   : 0000000000000000 ffffffff8175ae50 0000000000000000 ffffffff8176c740
          $24   : 0000000000000006 ffffffff81170300
          $28   : 800000041f864000 800000041f867d90 0000000000000000 ffffffff815f3fa0
          Hi    : 0000000000fa8257
          Lo    : ffffffffe15cfc00
          epc   : ffffffff8112821c resume+0x9c/0x200
          ra    : ffffffff815f3fa0 __schedule+0x3f0/0x7d8
          Status: 10008ce2        KX SX UX KERNEL EXL
          Cause : 1080002c (ExcCode 0b)
          PrId  : 000d0601 (Cavium Octeon+)
          Modules linked in:
          Process kthreadd (pid: 2, threadinfo=800000041f864000, task=800000041f84a008, tls=0000000000000000)
          Stack : ffffffff81604218 ffffffff815f7e08 800000041f84a008 ffffffff811681b0
                    800000041f84a008 ffffffff817e9878 0000000000000000 ffffffff81770000
                    ffffffff81768340 ffffffff81161398 0000000000000001 0000000000000000
                    0000000000000000 ffffffff815f4424 0000000000000000 ffffffff81161d68
                    ffffffff81161be8 0000000000000000 0000000000000000 0000000000000000
                    0000000000000000 0000000000000000 0000000000000000 ffffffff8111e16c
                    0000000000000000 0000000000000000 0000000000000000 0000000000000000
                    0000000000000000 0000000000000000 0000000000000000 0000000000000000
                    0000000000000000 0000000000000000 0000000000000000 0000000000000000
                    0000000000000000 0000000000000000 0000000000000000 0000000000000000
                    ...
          Call Trace:
          [<ffffffff8112821c>] resume+0x9c/0x200
          [<ffffffff815f3fa0>] __schedule+0x3f0/0x7d8
          [<ffffffff815f4424>] schedule+0x34/0x98
          [<ffffffff81161d68>] kthreadd+0x180/0x198
          [<ffffffff8111e16c>] ret_from_kernel_thread+0x14/0x1c
      
      Tested using cavium_octeon_defconfig on an EdgeRouter Lite.
      
      Fixes: 1a3d5957 ("MIPS: Tidy up FPU context switching")
      Reported-by: NAaro Koskinen <aaro.koskinen@nokia.com>
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Aleksey Makarov <aleksey.makarov@auriga.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: Chandrakala Chavva <cchavva@caviumnetworks.com>
      Cc: David Daney <david.daney@cavium.com>
      Cc: Leonid Rosenboim <lrosenboim@caviumnetworks.com>
      Patchwork: https://patchwork.linux-mips.org/patch/11166/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      0fa24340
  3. 01 10月, 2015 3 次提交
  4. 30 9月, 2015 1 次提交
  5. 27 9月, 2015 1 次提交
    • P
      MIPS: Initialise MAARs on secondary CPUs · e060f6ed
      Paul Burton 提交于
      MAARs should be initialised on each CPU (or rather, core) in the system
      in order to achieve consistent behaviour & performance. Previously they
      have only been initialised on the boot CPU which leads to performance
      problems if tasks are later scheduled on a secondary CPU, particularly
      if those tasks make use of unaligned vector accesses where some CPUs
      don't handle any cases in hardware for non-speculative memory regions.
      Fix this by recording the MAAR configuration from the boot CPU and
      applying it to secondary CPUs as part of their bringup.
      Reported-by: NDoug Gilmore <doug.gilmore@imgtec.com>
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Steven J. Hill <Steven.Hill@imgtec.com>
      Cc: Andrew Bresticker <abrestic@chromium.org>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: David Hildenbrand <dahi@linux.vnet.ibm.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Hemmo Nieminen <hemmo.nieminen@iki.fi>
      Cc: Alex Smith <alex.smith@imgtec.com>
      Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
      Patchwork: https://patchwork.linux-mips.org/patch/11239/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      e060f6ed
  6. 23 9月, 2015 2 次提交
  7. 22 9月, 2015 1 次提交
  8. 03 9月, 2015 28 次提交
    • P
      MIPS: Tidy up FPU context switching · 1a3d5957
      Paul Burton 提交于
      Rather than saving the scalar FP or vector context in the assembly
      resume function, reuse the existing C code we have in fpu.h to do
      exactly that. This reduces duplication, results in a much easier to read
      resume function & should allow the compiler to optimise out more MSA
      code due to is_msa_enabled()/cpu_has_msa being known-zero at compile
      time for kernels without MSA support.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-kernel@vger.kernel.org
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Manuel Lauss <manuel.lauss@gmail.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10830/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      1a3d5957
    • R
      MIPS: Add uprobes support. · 40e084a5
      Ralf Baechle 提交于
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      40e084a5
    • R
      MIPS: Set trap_no field in thread_struct on exception. · e3b28831
      Ralf Baechle 提交于
      This reverts commit 7281cd22 and adds
      actual functionality to use the field.
      e3b28831
    • P
      MIPS: Advertise MSA support via HWCAP when present · 3cc9fa7f
      Paul Burton 提交于
      If MSA is supported by both the hardware & the kernel then advertise
      that support to userland via the AT_HWCAP aux vector.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-kernel@vger.kernel.org
      Cc: Huacai Chen <chenhc@lemote.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10799/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      3cc9fa7f
    • P
      MIPS: Advertise MIPSr6 via HWCAP when appropriate · 4c063034
      Paul Burton 提交于
      When running on a CPU implementing the release 6 of the MIPS32 or MIPS64
      ISA, advertise that to userland via the appropriate HWCAP bit.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-kernel@vger.kernel.org
      Cc: Huacai Chen <chenhc@lemote.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10798/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      4c063034
    • P
      MIPS: AT_HWCAP aux vector infrastructure · e14f1db7
      Paul Burton 提交于
      In order for userland to determine whether various features are safe to
      use, it will need to know both that the hardware supports those features
      and that the kernel is recent enough & configured appropriately to
      support them. For example under the O32 modeless FP proposal the dynamic
      linker & ifunc resolvers will need this information.  The kernel is the
      only thing in a position to know availability accurately, so the kernel
      needs to provide the information to userland. This patch introduces the
      infrastructure to provide the AT_HWCAP aux vector to userland in order
      to provide that information. It also defines the 2 currently specified
      flags, which indicate MIPSr6 & MSA support.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Huacai Chen <chenhc@lemote.com>
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Cc: Alex Smith <alex@alex-smith.me.uk>
      Cc: linux-kernel@vger.kernel.org
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Patchwork: https://patchwork.linux-mips.org/patch/10797/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      e14f1db7
    • P
      MIPS: Save MSA extended context around signals · bf82cb30
      Paul Burton 提交于
      It is desirable for signal handlers to be allowed to make use of MSA,
      particularly if auto vectorisation is used when compiling a program.
      The MSA context must therefore be saved & restored before & after
      invoking the signal handler. Make use of the extended context structs
      defined in the preceding patch to save MSA context after the sigframe
      when appropriate.
      
      [ralf@linux-mips.org: Fixed conflicts.]
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Manuel Lauss <manuel.lauss@gmail.com>
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10796/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      bf82cb30
    • P
      MIPS: Add definitions for extended context · f1fe2d21
      Paul Burton 提交于
      The context introduced by MSA needs to be saved around signals. However,
      we can't increase the size of struct sigcontext because that will change
      the offset of the signal mask in struct sigframe or struct ucontext.
      This patch instead places the new context immediately after the struct
      sigframe for traditional signals, or similarly after struct ucontext for
      RT signals. The layout of struct sigframe & struct ucontext is identical
      from their sigcontext fields onwards, so the offset from the sigcontext
      to the extended context will always be the same regardless of the type
      of signal.
      
      Userland will be able to search through the extended context by using
      the magic values to detect which types of context are present. Any
      unrecognised context can be skipped over using the size field of struct
      extcontext. Once the magic value END_EXTCONTEXT_MAGIC is seen it is
      known that there are no further extended context structures to examine.
      
      This approach is somewhat similar to that taken by ARM to save VFP &
      other context at the end of struct ucontext.
      
      Userland can determine whether extended context is present by checking
      for the USED_EXTCONTEXT bit in the sc_used_math field of struct
      sigcontext. Whilst this could potentially change the historic semantics
      of sc_used_math if further extended context which does not imply FP
      context were to be introduced in the future, I have been unable to find
      any userland code making use of sc_used_math at all. Using one of the
      fields described as unused in struct sigcontext was considered, but the
      kernel does not already write to those fields so there would be no
      guarantee of the field being clear on older kernels. Other alternatives
      would be to have userland check the kernel version, or to have a HWCAP
      bit indicating presence of extended context. However there is a desire
      to have the context & information required to decode it be self
      contained such that, for example, debuggers could decode the saved
      context easily.
      
      [ralf@linux-mips.org: Fixed conflict.]
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
      Cc: Alex Smith <alex@alex-smith.me.uk>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Daniel Borkmann <dborkman@redhat.com>
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10795/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      f1fe2d21
    • P
      MIPS: Indicate FP mode in sigcontext sc_used_math · 0d071fa3
      Paul Burton 提交于
      The sc_used_math field of struct sigcontext & its variants has
      traditionally been used as a boolean value indicating only whether or
      not floating point context is saved within the sigcontext. With various
      supported FP modes & the ability to switch between them this information
      will no longer be enough to decode the meaning of the data stored in the
      sc_fpregs fields of struct sigcontext.
      
      To make that possible 3 bits are defined within sc_used_math:
      
        - Bit 0 (USED_FP) represents whether FP was used, essentially
          providing the boolean flag which sc_used_math as a whole provided
          previously.
      
        - Bit 1 (USED_FR1) provides the value of the Status.FR bit at the time
          the FP context was saved.
      
        - Bit 2 (USED_HYBRID_FPRS) indicates whether the FP context was saved
          under the hybrid FPR scheme. Essentially, when set the odd singles
          are located in bits 63:32 of the preceding even indexed sc_fpregs
          element.
      
      Any userland that tests whether the sc_used_math field is zero or
      non-zero will continue to function as expected. Having said that, I
      could not find any userland which uses the sc_used_math field at all.
      
      [ralf@linux-mips.org: Fixed rejects.]
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10794/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      0d071fa3
    • P
      MIPS: Remove unused {get,put}_sigset functions · 6a24432c
      Paul Burton 提交于
      These functions are never called & thus dead code. Remove them.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Patchwork: https://patchwork.linux-mips.org/patch/10793/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      6a24432c
    • P
      MIPS: Use common FP sigcontext code for O32 compat · d02a40af
      Paul Burton 提交于
      Make use of the common FP sigcontext code for O32 binaries running on
      MIPS64 kernels now that it is taking appropriate offsets into struct
      sigcontext(32) from struct mips_abi.
      
      [ralf@linux-mips.org: Fixed reject.]
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Manuel Lauss <manuel.lauss@gmail.com>
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10792/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      d02a40af
    • P
      MIPS: Skip odd double FP registers when copying FP32 sigcontext · 6f0aba63
      Paul Burton 提交于
      When a task uses 32 bit floating point, the odd indexed 32b register
      values are stored in bits 63:32 of the preceding even indexed 64b
      FP register field in saved context. Thus there is no point in
      preserving the odd indexed 64b register fields since they hold no
      valid context. This patch will cause them to be skipped, as is
      already done in arch/mips/kernel/signal32.c.
      
      [ralf@linux-mips.org: Fixed reject.]
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Patchwork: https://patchwork.linux-mips.org/patch/10791/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      6f0aba63
    • P
      MIPS: Move FP usage checks into protected_{save, restore}_fp_context · 64243c2a
      Paul Burton 提交于
      In preparation for sharing protected_{save,restore}_fp_context with
      compat ABIs, move the FP usage checks into said functions. This will
      both enable that code to be shared, and allow for extensions of it in
      further patches to also be shared.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10790/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      64243c2a
    • P
      MIPS: Use struct mips_abi offsets to save FP context · 2db9ca0a
      Paul Burton 提交于
      When saving FP state to struct sigcontext, make use of the offsets
      provided by struct mips_abi to obtain appropriate addresses for the
      sc_fpregs & sc_fpc_csr fields of the sigcontext. This is done only for
      the native struct sigcontext in this patch (ie. for O32 in CONFIG_32BIT
      kernels or for N64 in CONFIG_64BIT kernels) but is done in preparation
      for sharing this code with compat ABIs in further patches.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Manuel Lauss <manuel.lauss@gmail.com>
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10789/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      2db9ca0a
    • P
      MIPS: Add offsets to sigcontext FP fields to struct mips_abi · 77856100
      Paul Burton 提交于
      Add fields to struct mips_abi, which holds information regarding the
      kernel-userland ABI regarding signals, to specify the offsets to the FP
      related fields within the appropriate variant of struct sigcontext.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10788/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      77856100
    • P
      MIPS: Simplify EVA FP context handling code · 689ee856
      Paul Burton 提交于
      The protected_{save,restore}_fp_context functions had effectively
      different implementations for EVA. Simplify & unify the code somewhat
      such that EVA configurations simply guarantee the FPU-not-owned path
      through the standard code path.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Matthew Fortune <matthew.fortune@imgtec.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: linux-kernel@vger.kernel.org
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10787/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      689ee856
    • V
      MIPS: cevt-txx9: Migrate to new 'set-state' interface · d199da55
      Viresh Kumar 提交于
      Migrate cevt-txx9 driver to the new 'set-state' interface provided by
      clockevents core, the earlier 'set-mode' interface is marked obsolete
      now.
      
      This also enables us to implement callbacks for new states of clockevent
      devices, for example: ONESHOT_STOPPED.
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Cc: Deng-Cheng Zhu <dengcheng.zhu@imgtec.com>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: linux-mips@linux-mips.org
      Cc: linaro-kernel@lists.linaro.org
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Viresh Kumar <viresh.kumar@linaro.org>
      Patchwork: https://patchwork.linux-mips.org/patch/10607/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      d199da55
    • V
      MIPS: cevt-sb1250: Migrate to new 'set-state' interface · 57e148ca
      Viresh Kumar 提交于
      Migrate cevt-rsb1250 driver to the new 'set-state' interface provided by
      clockevents core, the earlier 'set-mode' interface is marked obsolete
      now.
      
      This also enables us to implement callbacks for new states of clockevent
      devices, for example: ONESHOT_STOPPED.
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: linux-mips@linux-mips.org
      Cc: linaro-kernel@lists.linaro.org
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Patchwork: https://patchwork.linux-mips.org/patch/10606/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      57e148ca
    • V
      MIPS: cevt-r4k: Migrate to new 'set-state' interface · 877c61dc
      Viresh Kumar 提交于
      Migrate cevt-4k driver to the new 'set-state' interface provided by
      clockevents core, the earlier 'set-mode' interface is marked obsolete
      now.
      
      This also enables us to implement callbacks for new states of clockevent
      devices, for example: ONESHOT_STOPPED.
      
      We weren't doing anything in the ->set_mode() callback. So, this patch
      doesn't provide any set-state callbacks.
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Andrew Bresticker <abrestic@chromium.org>
      Cc: Qais Yousef <qais.yousef@imgtec.com>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: linux-mips@linux-mips.org
      Cc: linaro-kernel@lists.linaro.org
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Patchwork: https://patchwork.linux-mips.org/patch/10605/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      877c61dc
    • V
      MIPS: cevt-gt641xx: Migrate to new 'set-state' interface · c88f2fb4
      Viresh Kumar 提交于
      Migrate cevt-gt641xx driver to the new 'set-state' interface provided by
      clockevents core, the earlier 'set-mode' interface is marked obsolete
      now.
      
      This also enables us to implement callbacks for new states of clockevent
      devices, for example: ONESHOT_STOPPED.
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: linux-mips@linux-mips.org
      Cc: linaro-kernel@lists.linaro.org
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Patchwork: https://patchwork.linux-mips.org/patch/10604/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      c88f2fb4
    • V
      MIPS: cevt-ds1287: Migrate to new 'set-state' interface · 9f95618f
      Viresh Kumar 提交于
      Migrate cevt-ds1287 driver to the new 'set-state' interface provided by
      clockevents core, the earlier 'set-mode' interface is marked obsolete
      now.
      
      This also enables us to implement callbacks for new states of clockevent
      devices, for example: ONESHOT_STOPPED.
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: linux-mips@linux-mips.org
      Cc: linaro-kernel@lists.linaro.org
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Patchwork: https://patchwork.linux-mips.org/patch/10603/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      9f95618f
    • V
      MIPS: cevt-bcm1480: Migrate to new 'set-state' interface · 1edf907a
      Viresh Kumar 提交于
      Migrate cevt-bcm1480 driver to the new 'set-state' interface provided by
      clockevents core, the earlier 'set-mode' interface is marked obsolete
      now.
      
      This also enables us to implement callbacks for new states of clockevent
      devices, for example: ONESHOT_STOPPED.
      
      Read operation on R_SCD_TIMER_CFG and R_SCD_TIMER_INIT registers isn't
      performed now for many modes as there returned values aren't used.
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: linux-mips@linux-mips.org
      Cc: linaro-kernel@lists.linaro.org
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Patchwork: https://patchwork.linux-mips.org/patch/10602/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      1edf907a
    • R
    • J
      MIPS: Probe for small (1KiB) page support · aaa7be48
      James Hogan 提交于
      Probe Config3 for small page support. This will be useful to give clues
      as to whether the PageGrain register exists.
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10722/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      aaa7be48
    • J
      MIPS: Refactor dumping of TLB registers for r3k/r4k · 3c865dd9
      James Hogan 提交于
      The TLB registers are dumped in a couble of places:
       - sysrq_tlbdump_single() - when dumping TLB state.
       - do_mcheck() - in response to a machine check error.
      
      The main TLB registers also differ between r3k and r4k, but r4k appears
      to be assumed.
      
      Refactor this code into a dump_tlb_regs() function, implemented for both
      r3k and r4k, and used by both of the above functions.
      
      Fixes: d1e9a4f5 ("MIPS: Add SysRq operation to dump TLBs on all CPUs")
      Suggested-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10721/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      3c865dd9
    • L
      MIPS: MSA unaligned memory access support · e4aa1f15
      Leonid Yegoshin 提交于
      The MSA architecture specification allows for hardware to not implement
      unaligned vector memory accesses in some or all cases. A typical example
      of this is the I6400 core which does not implement unaligned vector
      memory access when the memory crosses a page boundary. The architecture
      also requires that such memory accesses complete successfully as far as
      userland is concerned, so the kernel is required to emulate them.
      
      This patch implements support for emulating unaligned MSA ld & st
      instructions by copying between the user memory & the tasks FP context
      in struct thread_struct, updating hardware registers from there as
      appropriate in order to avoid saving & restoring the entire vector
      context for each unaligned memory access.
      
      Tested both using an I6400 CPU and with a QEMU build hacked to produce
      AdEL exceptions for unaligned vector memory accesses.
      
      [paul.burton@imgtec.com:
        - Remove #ifdef's
        - Move msa_op into enum major_op rather than #define
        - Replace msa_{to,from}_wd with {read,write}_msa_wr_{b,h,w,l} and the
          format-agnostic wrappers, removing the custom endian mangling for
          big endian systems.
        - Restructure the msa_op case in emulate_load_store_insn to share
          more code between the load & store cases.
        - Avoid the need for a temporary union fpureg on the stack by simply
          reusing the already suitably aligned context in struct
          thread_struct.
        - Use sizeof(*fpr) rather than hardcoding 16 as the size for user
          memory checks & copies.
        - Stop recalculating the address of the unaligned vector memory access
          and rely upon the value read from BadVAddr as we do for other
          unaligned memory access instructions.
        - Drop the now unused val8 & val16 fields in union fpureg.
        - Rewrite commit message.
        - General formatting cleanups.]
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: Huacai Chen <chenhc@lemote.com>
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-kernel@vger.kernel.org
      Cc: Jie Chen <chenj@lemote.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10573/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      e4aa1f15
    • P
      MIPS: Introduce accessors for MSA vector registers · 6b35e114
      Paul Burton 提交于
      Introduce accessor functions allowing the kernel to access arbitrary
      vector registers using an arbitrary data format. The accessors are
      implemented in assembly, using macros to avoid massive duplication, in
      order to make use of the existing support for MSA with & without
      toolchain support. The accessors will be used in a later patch.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Manuel Lauss <manuel.lauss@gmail.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10572/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      6b35e114
    • B
      MIPS: Remove "weak" from get_c0_compare_int() declaration · ec0b9d35
      Bjorn Helgaas 提交于
      Weak header file declarations are error-prone because they make every
      definition weak, and the linker chooses one based on link order (see
      10629d71 ("PCI: Remove __weak annotation from pcibios_get_phb_of_node
      decl")).
      
      get_c0_compare_int() is defined in several files.  Each definition is weak,
      so I assume Kconfig prevents two or more from being included.  The caller
      contains default code used when get_c0_compare_int() isn't defined at all.
      
      Add a weak get_c0_compare_int() definition with the default code and remove
      the weak annotation from the declaration.
      
      Then the platform implementations will be strong and will override the weak
      default.  If multiple platforms are ever configured in, we'll get a link
      error instead of calling a random platform's implementation.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Reviewed-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Andrew Bresticker <abrestic@chromium.org>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/10686/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      ec0b9d35
  9. 28 8月, 2015 1 次提交
    • P
      MIPS: CPS: use 32b accesses to GCRs · 90996511
      Paul Burton 提交于
      Commit b677bc03 ("MIPS: cps-vec: Use macros for various arithmetics
      and memory operations") replaced various load & store instructions
      through cps-vec.S with the PTR_L & PTR_S macros. However it was somewhat
      overzealous in doing so for CM GCR accesses, since the bit width of the
      CM doesn't necessarily match that of the CPU. The registers accessed
      (GCR_CL_COHERENCE & GCR_CL_ID) should be safe to simply always access
      using 32b instructions, so do so in order to avoid issues when using a
      32b CM with a 64b CPU.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: <stable@vger.kernel.org> # 3.16+
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Cc: James Hogan <james.hogan@imgtec.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10864/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      90996511