1. 10 11月, 2018 3 次提交
    • P
      MIPS: Drop forward declarations of sigcontext in asm/fpu.h · 7d3713a4
      Paul Burton 提交于
      asm/fpu.h contains forward declarations of struct sigcontext & struct
      sigcontext32 which appear to have been unused since commit 137f6f3e
      ("MIPS: Cleanup signal code initialization"). Remove the dead code.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Patchwork: https://patchwork.linux-mips.org/patch/21015/
      Cc: linux-mips@linux-mips.org
      7d3713a4
    • P
      MIPS: Ensure emulated FP sets PF_USED_MATH · 1975ed43
      Paul Burton 提交于
      Emulated floating point instructions don't ensure that the PF_USED_MATH
      flag is set for the task. This results in a couple of inconsistencies:
      
        - ptrace will return the default initial state of FP registers rather
          than the values actually stored in struct thread_struct, hiding
          state that has been updated by emulated floating point instructions.
      
        - If a task migrates to a CPU with an FPU after having emulated
          floating point instructions then its floating point register state
          will be reset to the default ~0 bit pattern, losing state from the
          emulated instructions.
      
      Fix this by calling init_fp_ctx() from fpu_emulator_cop1Handler() to
      consistently initialize FP state if it was previously uninitialized,
      setting the PF_USED_MATH flag in the process.
      
      All callers of fpu_emulator_cop1Handler() either call lose_fpu(1) before
      it in order to save any live FPU registers to struct thread_struct, or
      in the case of do_cpu() already know that the task does not own an FPU
      so lose_fpu(1) would be a no-op. Since we know that saving FP context
      will be unnecessary in the case where FP context was just initialized we
      move this call into fpu_emulator_cop1Handler() too, providing
      consistency & avoiding needless duplication.
      
      Calls to own_fpu(1) are common after return from
      fpu_emulator_cop1Handler() too, but this would not be a no-op in the
      do_cpu() case so these are left as-is. A potential future improvement
      could be to have fpu_emulator_cop1Handler() restore FPU state
      automatically only if it saved it, though this may not be optimal if
      some callers are better off without their current calls to own_fpu(1).
      One potential example of this could be mipsr2_decoder() which as-is
      could end up saving & restoring FP context repeatedly & unnecessarily if
      emulating multiple FP instructions.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Patchwork: https://patchwork.linux-mips.org/patch/21003/
      Cc: linux-mips@linux-mips.org
      1975ed43
    • P
      MIPS: Simplify FP context initialization · cc97ab23
      Paul Burton 提交于
      MIPS has up until now had 3 different ways for a task's floating point
      context to be initialized:
      
        - If the task's first use of FP involves it gaining ownership of an
          FPU then _init_fpu() is used to initialize the FPU's registers such
          that they all contain ~0, and the FPU registers will be stored to
          struct thread_info later (eg. when context switching).
      
        - If the task first uses FP on a CPU without an associated FPU then
          fpu_emulator_init_fpu() initializes the task's floating point
          register state in struct thread_info such that all floating point
          register contain the bit pattern 0x7ff800007ff80000, different to
          the _init_fpu() behaviour.
      
        - If a task's floating point context is first accessed via ptrace then
          init_fp_ctx() initializes the floating point register state in
          struct thread_info to ~0, giving equivalent state to _init_fpu().
      
      The _init_fpu() path has 2 separate implementations - one for r2k/r3k
      style systems & one for r4k style systems. The _init_fpu() path also
      requires that we be careful to clear & restore the value of the
      Config5.FRE bit on modern systems in order to avoid inadvertently
      triggering floating point exceptions.
      
      None of this code is in a performance critical hot path - it runs only
      the first time a task uses floating point. As such it doesn't seem to
      warrant the complications of maintaining the _init_fpu() path.
      
      Remove _init_fpu() & fpu_emulator_init_fpu(), instead using
      init_fp_ctx() consistently to initialize floating point register state
      in struct thread_info. Upon a task's first use of floating point this
      will typically mean that we initialize state in memory & then load it
      into FPU registers using _restore_fp() just as we would on a context
      switch. For other paths such as __compute_return_epc_for_insn() or
      mipsr2_decoder() this results in a significant simplification of the
      work to be done.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Patchwork: https://patchwork.linux-mips.org/patch/21002/
      Cc: linux-mips@linux-mips.org
      cc97ab23
  2. 09 11月, 2018 3 次提交
  3. 08 11月, 2018 2 次提交
    • P
      MIPS: Simplify GCC_OFF_SMALL_ASM definition · d08b8ccc
      Paul Burton 提交于
      The GCC_OFF_SMALL_ASM macro defines the constraint to use for
      instructions needing "small offsets", typically the LL or SC
      instructions. Historically these had 16 bit offsets, but microMIPS &
      MIPS32/MIPS64r6 onwards reduced the width of the offset field.
      
      GCC 4.9 & higher supports a ZC constraint which matches the offset
      requirements of the LL & SC instructions. Where supported we can use
      the ZC constraint regardless of ISA, and it will handle the requirements
      of the ISA correctly. As such we require 3 cases:
      
        - GCC 4.9 & higher can use ZC.
      
        - GCC older than 4.9 must use the older R constraint, which does not
          take into account microMIPS or MIPSr6.
      
        - microMIPS builds therefore require GCC 4.9 or higher. MIPSr6 support
          was only introduced in newer compilers anyway so it can be ignored
          here.
      
      The current code complicates this a little by specifically having MIPSr6
      bypass the GCC version check, and using the R constraint for pre-MIPSr6
      builds even if the compiler supports ZC which would be equivalent.
      
      Simplify this such that the code straightforwardly implements the 3
      cases outlined above.
      
      For non-GCC compilers we presume that ZC is safe to use. In practice the
      only non-GCC compiler of interest is clang and it has supported the ZC
      constraint since version 3.7.0. It seems safe enough to presume that
      nobody will expect to built a working kernel using a clang version older
      than that, and if they do then they'll have bigger problems. As such we
      don't check the clang version number & just presume ZC is usable when
      the compiler is not GCC.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Patchwork: https://patchwork.linux-mips.org/patch/20999/
      Cc: linux-mips@linux-mips.org
      d08b8ccc
    • P
      MIPS: Remove GCC_IMM_ASM & GCC_REG_ACCUM macros · 57810ecb
      Paul Burton 提交于
      asm/compiler.h defined GCC_IMM_ASM & GCC_REG_ACCUM macros, both of which
      are defined differently for GCC pre-3.4 or GCC 3.4 & higher. We only
      support building with GCC 4.6 & higher since commit cafa0010 ("Raise
      the minimum required gcc version to 4.6"), which makes the pre-3.4
      definition dead code.
      
      Rather than leave the macro definitions around, inline the GCC 3.4 &
      higher definitions into the single file that uses them & remove the
      macros entirely.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Patchwork: https://patchwork.linux-mips.org/patch/21000/
      Cc: linux-mips@linux-mips.org
      57810ecb
  4. 07 11月, 2018 4 次提交
  5. 06 11月, 2018 2 次提交
  6. 05 11月, 2018 5 次提交
    • L
      Linux 4.20-rc1 · 65102238
      Linus Torvalds 提交于
      65102238
    • L
      Merge tag 'tags/upstream-4.20-rc1' of git://git.infradead.org/linux-ubifs · 42bd06e9
      Linus Torvalds 提交于
      Pull UBIFS updates from Richard Weinberger:
      
       - Full filesystem authentication feature, UBIFS is now able to have the
         whole filesystem structure authenticated plus user data encrypted and
         authenticated.
      
       - Minor cleanups
      
      * tag 'tags/upstream-4.20-rc1' of git://git.infradead.org/linux-ubifs: (26 commits)
        ubifs: Remove unneeded semicolon
        Documentation: ubifs: Add authentication whitepaper
        ubifs: Enable authentication support
        ubifs: Do not update inode size in-place in authenticated mode
        ubifs: Add hashes and HMACs to default filesystem
        ubifs: authentication: Authenticate super block node
        ubifs: Create hash for default LPT
        ubfis: authentication: Authenticate master node
        ubifs: authentication: Authenticate LPT
        ubifs: Authenticate replayed journal
        ubifs: Add auth nodes to garbage collector journal head
        ubifs: Add authentication nodes to journal
        ubifs: authentication: Add hashes to index nodes
        ubifs: Add hashes to the tree node cache
        ubifs: Create functions to embed a HMAC in a node
        ubifs: Add helper functions for authentication support
        ubifs: Add separate functions to init/crc a node
        ubifs: Format changes for authentication support
        ubifs: Store read superblock node
        ubifs: Drop write_node
        ...
      42bd06e9
    • L
      Merge tag 'nfs-for-4.20-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 4710e789
      Linus Torvalds 提交于
      Pull NFS client bugfixes from Trond Myklebust:
       "Highlights include:
      
        Bugfix:
         - Fix build issues on architectures that don't provide 64-bit cmpxchg
      
        Cleanups:
         - Fix a spelling mistake"
      
      * tag 'nfs-for-4.20-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
        NFS: fix spelling mistake, EACCESS -> EACCES
        SUNRPC: Use atomic(64)_t for seq_send(64)
      4710e789
    • L
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 35e74524
      Linus Torvalds 提交于
      Pull more timer updates from Thomas Gleixner:
       "A set of commits for the new C-SKY architecture timers"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        dt-bindings: timer: gx6605s SOC timer
        clocksource/drivers/c-sky: Add gx6605s SOC system timer
        dt-bindings: timer: C-SKY Multi-processor timer
        clocksource/drivers/c-sky: Add C-SKY SMP timer
      35e74524
    • L
      Merge tag 'ntb-4.20' of git://github.com/jonmason/ntb · 04578e84
      Linus Torvalds 提交于
      Pull NTB updates from Jon Mason:
       "Fairly minor changes and bug fixes:
      
        NTB IDT thermal changes and hook into hwmon, ntb_netdev clean-up of
        private struct, and a few bug fixes"
      
      * tag 'ntb-4.20' of git://github.com/jonmason/ntb:
        ntb: idt: Alter the driver info comments
        ntb: idt: Discard temperature sensor IRQ handler
        ntb: idt: Add basic hwmon sysfs interface
        ntb: idt: Alter temperature read method
        ntb_netdev: Simplify remove with client device drvdata
        NTB: transport: Try harder to alloc an aligned MW buffer
        ntb: ntb_transport: Mark expected switch fall-throughs
        ntb: idt: Set PCIe bus address to BARLIMITx
        NTB: ntb_hw_idt: replace IS_ERR_OR_NULL with regular NULL checks
        ntb: intel: fix return value for ndev_vec_mask()
        ntb_netdev: fix sleep time mismatch
      04578e84
  7. 04 11月, 2018 21 次提交