1. 03 Sep, 2015 40 commits
    • Kamlakant Patel's avatar
      MIPS: Netlogic: set ARCH_REQUIRE_GPIOLIB for XLP platform · 079e3160
      Kamlakant Patel authored
      This is needed to enable GPIO framework support for Netlogic XLP platform.
      Signed-off-by: default avatarKamlakant Patel <kamlakant.patel@broadcom.com>
      Signed-off-by: default avatarJayachandran C <jchandra@broadcom.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10818/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      079e3160
    • Kamlakant Patel's avatar
      MIPS: Netlogic: add device tree entry for XLP GPIO · a8a74776
      Kamlakant Patel authored
      Add GPIO entries to the Netlogic XLP device tree files.
      Signed-off-by: default avatarKamlakant Patel <kamlakant.patel@broadcom.com>
      Signed-off-by: default avatarJayachandran C <jchandra@broadcom.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10819/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      a8a74776
    • Kamlakant Patel's avatar
      MIPS: Netlogic: Use chip_data for irq_chip methods · 325f0a18
      Kamlakant Patel authored
      Update mips/netlogic/common/irq.c and mips/pci/msi-xlp.c to use chip_data
      to store interrupt controller data pointer. It uses handler_data now,
      and that causes errors when an API (like the GPIO subsystem) tries to
      use the handler data.
      Signed-off-by: default avatarKamlakant Patel <kamlakant.patel@broadcom.com>
      Signed-off-by: default avatarJayachandran C <jchandra@broadcom.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10817/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      325f0a18
    • Alban Bedel's avatar
      MIPS: Remove all the uses of custom gpio.h · 832f5dac
      Alban Bedel authored
      Currently CONFIG_ARCH_HAVE_CUSTOM_GPIO_H is defined for all MIPS
      machines, and each machine type provides its own gpio.h. However
      only a handful really implement the GPIO API, most just forward
      everythings to gpiolib.
      
      The Alchemy machine is notable as it provides a system to allow
      implementing the GPIO API at the board level. But it is not used by
      any board currently supported, so it can also be removed.
      
      For most machine types we can just remove the custom gpio.h, as well
      as the custom wrappers if some exists. Some of the code found in
      the wrappers must be moved to the respective GPIO driver.
      
      A few more fixes are need in some drivers as they rely on linux/gpio.h
      to provides some machine specific definitions, or used asm/gpio.h
      instead of linux/gpio.h for the gpio API.
      Signed-off-by: default avatarAlban Bedel <albeu@free.fr>
      Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Cc: linux-mips@linux-mips.org
      Cc: Hauke Mehrtens <hauke@hauke-m.de>
      Cc: Rafał Miłecki <zajec5@gmail.com>
      Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
      Cc: Florian Fainelli <florian@openwrt.org>
      Cc: Manuel Lauss <manuel.lauss@gmail.com>
      Cc: Joe Perches <joe@perches.com>
      Cc: Daniel Walter <dwalter@google.com>
      Cc: Sergey Ryazanov <ryazanov.s.a@gmail.com>
      Cc: Huacai Chen <chenhc@lemote.com>
      Cc: James Hartley <james.hartley@imgtec.com>
      Cc: Andrew Bresticker <abrestic@chromium.org>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: Jiri Kosina <jkosina@suse.cz>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Wolfram Sang <wsa@the-dreams.de>
      Cc: Randy Dunlap <rdunlap@infradead.org>
      Cc: Varka Bhadram <varkabhadram@gmail.com>
      Cc: Masanari Iida <standby24x7@gmail.com>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Michael Buesch <m@bues.ch>
      Cc: abdoulaye berthe <berthe.ab@gmail.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-ide@vger.kernel.org
      Cc: linux-gpio@vger.kernel.org
      Cc: linux-input@vger.kernel.org
      Cc: netdev@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/10828/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      832f5dac
    • Alban Bedel's avatar
      MIPS: ath79: Move the GPIO driver to drivers/gpio · 1d473c2c
      Alban Bedel authored
      GPIO drivers should be in drivers/gpio
      Signed-off-by: default avatarAlban Bedel <albeu@free.fr>
      Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Cc: linux-gpio@vger.kernel.org
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Gabor Juhos <juhosg@openwrt.org>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/10597/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      1d473c2c
    • Alban Bedel's avatar
      MIPS: Ath79: Remove the unused GPIO function API · f689332b
      Alban Bedel authored
      To prepare moving the GPIO driver to drivers/gpio remove the
      platform specific pinmux API. As it is not used by any board,
      and such functionality should better be implemented using the
      pinmux subsystem just removing it seems to be the best option.
      Signed-off-by: default avatarAlban Bedel <albeu@free.fr>
      Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Cc: linux-gpio@vger.kernel.org
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Gabor Juhos <juhosg@openwrt.org>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/10596/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      f689332b
    • Paul Burton's avatar
      MIPS: Select CONFIG_ARCH_USE_CMPXCHG_LOCKREF for MIPS64 · 5fac4f7a
      Paul Burton authored
      On MIPS64 we have spinlocks that are 32b in size and an efficient
      cmpxchg64 implementation, so we qualify to make use of cmpxchg backed
      lockrefs. Select the ARCH_USE_CMPXCHG_LOCKREF Kconfig symbol and provide
      a trivial implementation of arch_spin_value_unlocked to satisfy the
      lockref code.
      
      Using Linus' simple testcase from
      http://article.gmane.org/gmane.linux.file-systems/77466 on a dual core
      system with an in-development MIPS64 CPU running on FPGA I see around an
      8% gain:
      
      Pre-patch:
          Total loops: 252698
          Total loops: 251482
          Total loops: 250806
          Total loops: 252885
          Total loops: 251666
      
      Post-patch:
          Total loops: 273728
          Total loops: 269932
          Total loops: 269341
          Total loops: 275004
          Total loops: 270208
      
      [ralf@linux-mips.org: Fixed conflict.]
      Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: Steven J. Hill <Steven.Hill@imgtec.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: Maciej W. Rozycki <macro@codesourcery.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Patchwork: https://patchwork.linux-mips.org/patch/10810/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      5fac4f7a
    • Ralf Baechle's avatar
      MIPS: Get rid of finish_arch_switch(). · f51246ef
      Ralf Baechle authored
      MIPS was using finish_arch_switch() as a hook to restore and initialize
      CPU context for all threads, even newly created kernel and user threads.
      This is however entirely solvable within switch_to() so get rid of
      finish_arch_switch() which is in the way of scheduler cleanups.
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      f51246ef
    • Alex Smith's avatar
      MIPS: Use Ingenic-specific write combine attribute on all Ingenic platforms · f1f5e414
      Alex Smith authored
      The Ingenic-specific write combining cache attribute was defined based
      on CONFIG_MACH_JZ4740 and therefore not used on JZ4780. Change this to
      CONFIG_MACH_INGENIC so that it gets used on all Ingenic platforms.
      Signed-off-by: default avatarAlex Smith <alex.smith@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10769/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      f1f5e414
    • Alex Smith's avatar
      MIPS: Add implementation of dma_map_ops.mmap() · 8c172467
      Alex Smith authored
      The generic implementation of dma_map_ops.mmap(), dma_common_mmap(),
      is not correct for non-coherent devices. It expects to be passed a
      virtual address previously returned by dma_alloc_coherent(), which for
      a non-coherent device will return a KSEG1 address. It then attempts to
      convert that virtual address to a physical address using virt_to_page()
      which will yield an incorrect address.
      
      Also, dma_common_mmap() does not handle the DMA_ATTR_WRITE_COMBINE
      attribute, and therefore dma_mmap_writecombine() will not actually set
      the appropriate pgprot_t flags for write combining.
      
      This patch adds an implementation of dma_map_ops.mmap() that correctly
      handles KSEG1 addresses, and enables write combining when requested.
      Signed-off-by: default avatarAlex Smith <alex.smith@imgtec.com>
      Cc: Sadegh Abbasi <Sadegh.Abbasi@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10808/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      8c172467
    • Alex Smith's avatar
      MIPS: Fix definition of pgprot_writecombine() · c4687b15
      Alex Smith authored
      If pgprot_writecombine is not #defined, asm-generic/pgtable.h will try
      to provide a default implementation by #defining it to pgprot_noncached.
      However our implementation is an inline function rather than a #define,
      so it was never actually used because of the #define in generic code.
      
      Add "#define pgprot_writecombine pgprot_writecombine" to prevent generic
      code from re-defining it.
      Signed-off-by: default avatarAlex Smith <alex.smith@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10767/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      c4687b15
    • Paul Burton's avatar
      MIPS: Drop EXPERIMENTAL tag from O32+FP64 & MSA · 0ce3417e
      Paul Burton authored
      CONFIG_MIPS_O32_FP64_SUPPORT and CONFIG_CPU_HAS_MSA are in pretty good
      shape these days, and in much wider use than they once were. Stop
      referring to them as EXPERIMENTAL.
      Signed-off-by: default avatarPaul 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: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/10801/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      0ce3417e
    • Paul Burton's avatar
      MIPS: Advertise MSA support via HWCAP when present · 3cc9fa7f
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      3cc9fa7f
    • Paul Burton's avatar
      MIPS: Advertise MIPSr6 via HWCAP when appropriate · 4c063034
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      4c063034
    • Paul Burton's avatar
      MIPS: AT_HWCAP aux vector infrastructure · e14f1db7
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      e14f1db7
    • Paul Burton's avatar
      MIPS: Save MSA extended context around signals · bf82cb30
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      bf82cb30
    • Paul Burton's avatar
      MIPS: Add definitions for extended context · f1fe2d21
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      f1fe2d21
    • Paul Burton's avatar
      MIPS: Indicate FP mode in sigcontext sc_used_math · 0d071fa3
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      0d071fa3
    • Paul Burton's avatar
      MIPS: Remove unused {get,put}_sigset functions · 6a24432c
      Paul Burton authored
      These functions are never called & thus dead code. Remove them.
      Signed-off-by: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      6a24432c
    • Paul Burton's avatar
      MIPS: Use common FP sigcontext code for O32 compat · d02a40af
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      d02a40af
    • Paul Burton's avatar
      MIPS: Skip odd double FP registers when copying FP32 sigcontext · 6f0aba63
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      6f0aba63
    • Paul Burton's avatar
      MIPS: Move FP usage checks into protected_{save, restore}_fp_context · 64243c2a
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      64243c2a
    • Paul Burton's avatar
      MIPS: Use struct mips_abi offsets to save FP context · 2db9ca0a
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      2db9ca0a
    • Paul Burton's avatar
      MIPS: Add offsets to sigcontext FP fields to struct mips_abi · 77856100
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      77856100
    • Paul Burton's avatar
      MIPS: Simplify EVA FP context handling code · 689ee856
      Paul Burton authored
      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: default avatarPaul 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: default avatarRalf Baechle <ralf@linux-mips.org>
      689ee856
    • Viresh Kumar's avatar
      MIPS: sni: Migrate to new 'set-state' interface · 397d08b0
      Viresh Kumar authored
      Migrate sni 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: default avatarViresh 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/10612/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      397d08b0
    • Viresh Kumar's avatar
      MIPS: IP27: Migrate to new 'set-state' interface · 0c16240a
      Viresh Kumar authored
      Migrate sgidriver 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: default avatarViresh 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>
      Patchwork: https://patchwork.linux-mips.org/patch/10611/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      0c16240a
    • Viresh Kumar's avatar
      MIPS: rt3352: Migrate to new 'set-state' interface · 59113d93
      Viresh Kumar authored
      Migrate ralink 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: default avatarViresh 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/10610/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      59113d93
    • Viresh Kumar's avatar
      MIPS: loongsoon32: Migrate to new 'set-state' interface · 1fed884d
      Viresh Kumar authored
      Migrate loongsoon32 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: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Cc: Kelvin Cheung <keguang.zhang@gmail.com>
      Cc: Huacai Chen <chenhc@lemote.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/10609/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      1fed884d
    • Viresh Kumar's avatar
      MIPS: loongson64/timer: Migrate to new 'set-state' interface · e3280b2a
      Viresh Kumar authored
      Migrate loongson 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.
      
      [ralf@linux-mips.org: Folded in Viresh's followon fix.]
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Cc: Huacai Chen <chenhc@lemote.com>
      Cc: Michael Opdenacker <michael.opdenacker@free-electrons.com>
      Cc: Hongliang Tao <taohl@lemote.com>
      Cc: Valentin Rothberg <valentinrothberg@gmail.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/10608/
      Patchwork: https://patchwork.linux-mips.org/patch/10883/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      e3280b2a
    • Viresh Kumar's avatar
      MIPS: cevt-txx9: Migrate to new 'set-state' interface · d199da55
      Viresh Kumar authored
      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: default avatarViresh 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: default avatarRalf Baechle <ralf@linux-mips.org>
      d199da55
    • Viresh Kumar's avatar
      MIPS: cevt-sb1250: Migrate to new 'set-state' interface · 57e148ca
      Viresh Kumar authored
      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: default avatarViresh 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: default avatarRalf Baechle <ralf@linux-mips.org>
      57e148ca
    • Viresh Kumar's avatar
      MIPS: cevt-r4k: Migrate to new 'set-state' interface · 877c61dc
      Viresh Kumar authored
      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: default avatarViresh 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: default avatarRalf Baechle <ralf@linux-mips.org>
      877c61dc
    • Viresh Kumar's avatar
      MIPS: cevt-gt641xx: Migrate to new 'set-state' interface · c88f2fb4
      Viresh Kumar authored
      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: default avatarViresh 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: default avatarRalf Baechle <ralf@linux-mips.org>
      c88f2fb4
    • Viresh Kumar's avatar
      MIPS: cevt-ds1287: Migrate to new 'set-state' interface · 9f95618f
      Viresh Kumar authored
      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: default avatarViresh 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: default avatarRalf Baechle <ralf@linux-mips.org>
      9f95618f
    • Viresh Kumar's avatar
      MIPS: cevt-bcm1480: Migrate to new 'set-state' interface · 1edf907a
      Viresh Kumar authored
      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: default avatarViresh 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: default avatarRalf Baechle <ralf@linux-mips.org>
      1edf907a
    • Viresh Kumar's avatar
      MIPS: jz4740: Migrate to new 'set-state' interface · c87cbe06
      Viresh Kumar authored
      Migrate jz4740 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: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Cc: Paul Burton <paul.burton@imgtec.com>
      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>
      Patchwork: https://patchwork.linux-mips.org/patch/10601/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      c87cbe06
    • Viresh Kumar's avatar
      MIPS: Jazz: Migrate to new 'set-state' interface · 20a7835f
      Viresh Kumar authored
      Migrate jazz 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: default avatarViresh 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/10600/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      20a7835f
    • Viresh Kumar's avatar
      MIPS: Alchemy: Migrate to new 'set-state' interface · 3dcd7779
      Viresh Kumar authored
      Migrate alchemy 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: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Cc: Manuel Lauss <manuel.lauss@gmail.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/10599/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      3dcd7779
    • Ralf Baechle's avatar