1. 24 10月, 2021 1 次提交
  2. 13 2月, 2021 2 次提交
  3. 22 1月, 2021 1 次提交
  4. 08 1月, 2021 1 次提交
  5. 14 12月, 2020 1 次提交
  6. 19 11月, 2020 1 次提交
    • T
      MIPS: Loongson64: Fix wrong scache size when execute lscpu · 91c7a7e0
      Tiezhu Yang 提交于
      As the user manual and code comment said, Loongson-3 has 4-scache banks,
      while Loongson-2K has only 2 banks, so we should multiply the number of
      scache banks, this multiply operation should be done by c->scache.sets
      instead of scache_size, otherwise we will get the wrong scache size when
      execute lscpu. For example, the scache size should be 8192K instead of
      2048K on the Loongson 3A3000 and 3A4000 platform, we can see the related
      info in the following boot message:
      
      [loongson@linux ~]$ dmesg | grep "Unified secondary cache"
      [    0.000000] Unified secondary cache 8192kB 16-way, linesize 64 bytes.
      [    4.061909] Unified secondary cache 8192kB 16-way, linesize 64 bytes.
      [    4.125629] Unified secondary cache 8192kB 16-way, linesize 64 bytes.
      [    4.188379] Unified secondary cache 8192kB 16-way, linesize 64 bytes.
      
      E.g. without this patch:
      
      [loongson@linux ~]$ cat /sys/devices/system/cpu/cpu*/cache/index2/size
      2048K
      2048K
      2048K
      2048K
      [loongson@linux ~]$ lscpu | grep "L2 cache"
      L2 cache:              2048K
      
      With this patch:
      
      [loongson@linux ~]$ cat /sys/devices/system/cpu/cpu*/cache/index2/size
      8192K
      8192K
      8192K
      8192K
      [loongson@linux ~]$ lscpu | grep "L2 cache"
      L2 cache:              8192K
      Signed-off-by: NTiezhu Yang <yangtiezhu@loongson.cn>
      Signed-off-by: NThomas Bogendoerfer <tsbogend@alpha.franken.de>
      91c7a7e0
  7. 08 9月, 2020 4 次提交
  8. 21 8月, 2020 1 次提交
  9. 08 7月, 2020 1 次提交
  10. 10 6月, 2020 2 次提交
    • M
      mm: pgtable: add shortcuts for accessing kernel PMD and PTE · e05c7b1f
      Mike Rapoport 提交于
      The powerpc 32-bit implementation of pgtable has nice shortcuts for
      accessing kernel PMD and PTE for a given virtual address.  Make these
      helpers available for all architectures.
      
      [rppt@linux.ibm.com: microblaze: fix page table traversal in setup_rt_frame()]
        Link: http://lkml.kernel.org/r/20200518191511.GD1118872@kernel.org
      [akpm@linux-foundation.org: s/pmd_ptr_k/pmd_off_k/ in various powerpc places]
      Signed-off-by: NMike Rapoport <rppt@linux.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Brian Cain <bcain@codeaurora.org>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Chris Zankel <chris@zankel.net>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Greentime Hu <green.hu@gmail.com>
      Cc: Greg Ungerer <gerg@linux-m68k.org>
      Cc: Guan Xuetao <gxt@pku.edu.cn>
      Cc: Guo Ren <guoren@kernel.org>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Helge Deller <deller@gmx.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Ley Foon Tan <ley.foon.tan@intel.com>
      Cc: Mark Salter <msalter@redhat.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Matt Turner <mattst88@gmail.com>
      Cc: Max Filippov <jcmvbkbc@gmail.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Michal Simek <monstr@monstr.eu>
      Cc: Nick Hu <nickhu@andestech.com>
      Cc: Paul Walmsley <paul.walmsley@sifive.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Rich Felker <dalias@libc.org>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Stafford Horne <shorne@gmail.com>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Vincent Chen <deanbo422@gmail.com>
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Link: http://lkml.kernel.org/r/20200514170327.31389-9-rppt@kernel.orgSigned-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e05c7b1f
    • M
      mm: don't include asm/pgtable.h if linux/mm.h is already included · e31cf2f4
      Mike Rapoport 提交于
      Patch series "mm: consolidate definitions of page table accessors", v2.
      
      The low level page table accessors (pXY_index(), pXY_offset()) are
      duplicated across all architectures and sometimes more than once.  For
      instance, we have 31 definition of pgd_offset() for 25 supported
      architectures.
      
      Most of these definitions are actually identical and typically it boils
      down to, e.g.
      
      static inline unsigned long pmd_index(unsigned long address)
      {
              return (address >> PMD_SHIFT) & (PTRS_PER_PMD - 1);
      }
      
      static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
      {
              return (pmd_t *)pud_page_vaddr(*pud) + pmd_index(address);
      }
      
      These definitions can be shared among 90% of the arches provided
      XYZ_SHIFT, PTRS_PER_XYZ and xyz_page_vaddr() are defined.
      
      For architectures that really need a custom version there is always
      possibility to override the generic version with the usual ifdefs magic.
      
      These patches introduce include/linux/pgtable.h that replaces
      include/asm-generic/pgtable.h and add the definitions of the page table
      accessors to the new header.
      
      This patch (of 12):
      
      The linux/mm.h header includes <asm/pgtable.h> to allow inlining of the
      functions involving page table manipulations, e.g.  pte_alloc() and
      pmd_alloc().  So, there is no point to explicitly include <asm/pgtable.h>
      in the files that include <linux/mm.h>.
      
      The include statements in such cases are remove with a simple loop:
      
      	for f in $(git grep -l "include <linux/mm.h>") ; do
      		sed -i -e '/include <asm\/pgtable.h>/ d' $f
      	done
      Signed-off-by: NMike Rapoport <rppt@linux.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Brian Cain <bcain@codeaurora.org>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Chris Zankel <chris@zankel.net>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Greentime Hu <green.hu@gmail.com>
      Cc: Greg Ungerer <gerg@linux-m68k.org>
      Cc: Guan Xuetao <gxt@pku.edu.cn>
      Cc: Guo Ren <guoren@kernel.org>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Helge Deller <deller@gmx.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Ley Foon Tan <ley.foon.tan@intel.com>
      Cc: Mark Salter <msalter@redhat.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Matt Turner <mattst88@gmail.com>
      Cc: Max Filippov <jcmvbkbc@gmail.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Michal Simek <monstr@monstr.eu>
      Cc: Mike Rapoport <rppt@kernel.org>
      Cc: Nick Hu <nickhu@andestech.com>
      Cc: Paul Walmsley <paul.walmsley@sifive.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Rich Felker <dalias@libc.org>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Stafford Horne <shorne@gmail.com>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Vincent Chen <deanbo422@gmail.com>
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Link: http://lkml.kernel.org/r/20200514170327.31389-1-rppt@kernel.org
      Link: http://lkml.kernel.org/r/20200514170327.31389-2-rppt@kernel.orgSigned-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e31cf2f4
  11. 24 5月, 2020 1 次提交
    • H
      MIPS: Tidy up CP0.Config6 bits definition · 8267e78f
      Huacai Chen 提交于
      CP0.Config6 is a Vendor-defined register whose bits definitions are
      different from one to another. Recently, Xuerui's Loongson-3 patch and
      Serge's P5600 patch make the definitions inconsistency and unclear.
      
      To make life easy, this patch tidy the definition up:
      1, Add a _MTI_ infix for proAptiv/P5600 feature bits;
      2, Add a _LOONGSON_ infix for Loongson-3 feature bits;
      3, Add bit6/bit7 definition for Loongson-3 which will be used later.
      
      All existing users of these macros are updated.
      
      Cc: WANG Xuerui <git@xen0n.name>
      Cc: Serge Semin <Sergey.Semin@baikalelectronics.ru>
      Signed-off-by: NHuacai Chen <chenhc@lemote.com>
      Signed-off-by: NThomas Bogendoerfer <tsbogend@alpha.franken.de>
      8267e78f
  12. 22 5月, 2020 1 次提交
    • S
      mips: Add MIPS Release 5 support · ab7c01fd
      Serge Semin 提交于
      There are five MIPS32/64 architecture releases currently available:
      from 1 to 6 except fourth one, which was intentionally skipped.
      Three of them can be called as major: 1st, 2nd and 6th, that not only
      have some system level alterations, but also introduced significant
      core/ISA level updates. The rest of the MIPS architecture releases are
      minor.
      
      Even though they don't have as much ISA/system/core level changes
      as the major ones with respect to the previous releases, they still
      provide a set of updates (I'd say they were intended to be the
      intermediate releases before a major one) that might be useful for the
      kernel and user-level code, when activated by the kernel or compiler.
      In particular the following features were introduced or ended up being
      available at/after MIPS32/64 Release 5 architecture:
      + the last release of the misaligned memory access instructions,
      + virtualisation - VZ ASE - is optional component of the arch,
      + SIMD - MSA ASE - is optional component of the arch,
      + DSP ASE is optional component of the arch,
      + CP0.Status.FR=1 for CP1.FIR.F64=1 (pure 64-bit FPU general registers)
        must be available if FPU is implemented,
      + CP1.FIR.Has2008 support is required so CP1.FCSR.{ABS2008,NAN2008} bits
        are available.
      + UFR/UNFR aliases to access CP0.Status.FR from user-space by means of
        ctc1/cfc1 instructions (enabled by CP0.Config5.UFR),
      + CP0.COnfig5.LLB=1 and eretnc instruction are implemented to without
        accidentally clearing LL-bit when returning from an interrupt,
        exception, or error trap,
      + XPA feature together with extended versions of CPx registers is
        introduced, which needs to have mfhc0/mthc0 instructions available.
      
      So due to these changes GNU GCC provides an extended instructions set
      support for MIPS32/64 Release 5 by default like eretnc/mfhc0/mthc0. Even
      though the architecture alteration isn't that big, it still worth to be
      taken into account by the kernel software. Finally we can't deny that
      some optimization/limitations might be found in future and implemented
      on some level in kernel or compiler. In this case having even
      intermediate MIPS architecture releases support would be more than
      useful.
      
      So the most of the changes provided by this commit can be split into
      either compile- or runtime configs related. The compile-time related
      changes are caused by adding the new CONFIG_CPU_MIPS32_R5/CONFIG_CPU_MIPSR5
      configs and concern the code activating MIPSR2 or MIPSR6 already
      implemented features (like eretnc/LLbit, mthc0/mfhc0). In addition
      CPU_HAS_MSA can be now freely enabled for MIPS32/64 release 5 based
      platforms as this is done for CPU_MIPS32_R6 CPUs. The runtime changes
      concerns the features which are handled with respect to the MIPS ISA
      revision detected at run-time by means of CP0.Config.{AT,AR} bits. Alas
      these fields can be used to detect either r1 or r2 or r6 releases.
      But since we know which CPUs in fact support the R5 arch, we can manually
      set MIPS_CPU_ISA_M32R5/MIPS_CPU_ISA_M64R5 bit of c->isa_level and then
      use cpu_has_mips32r5/cpu_has_mips64r5 where it's appropriate.
      
      Since XPA/EVA provide too complex alterationss and to have them used with
      MIPS32 Release 2 charged kernels (for compatibility with current platform
      configs) they are left to be setup as a separate kernel configs.
      Co-developed-by: NAlexey Malahov <Alexey.Malahov@baikalelectronics.ru>
      Signed-off-by: NAlexey Malahov <Alexey.Malahov@baikalelectronics.ru>
      Signed-off-by: NSerge Semin <Sergey.Semin@baikalelectronics.ru>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Paul Burton <paulburton@kernel.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: devicetree@vger.kernel.org
      Signed-off-by: NThomas Bogendoerfer <tsbogend@alpha.franken.de>
      ab7c01fd
  13. 07 5月, 2020 1 次提交
  14. 27 4月, 2020 1 次提交
  15. 26 4月, 2020 1 次提交
  16. 16 3月, 2020 1 次提交
  17. 28 2月, 2020 1 次提交
  18. 23 11月, 2019 1 次提交
  19. 01 11月, 2019 1 次提交
  20. 10 10月, 2019 1 次提交
    • P
      MIPS: Provide unroll() macro, use it for cache ops · 6baaeada
      Paul Burton 提交于
      Currently we have a lot of duplication in asm/r4kcache.h to handle
      manually unrolling loops of cache ops for various line sizes, and we
      have to explicitly handle the difference in cache op immediate width
      between MIPSr6 & earlier ISA revisions with further duplication.
      
      Introduce an unroll() macro in asm/unroll.h which expands to a switch
      statement which is used to call a function or expand a preprocessor
      macro a compile-time constant number of times in a row - effectively
      explicitly unrolling a loop. We make use of this here to remove the
      cache op duplication & will use it further in later patches.
      
      A nice side effect of this is that calculating the cache op offset
      immediate is now the compiler's responsibility, so we're no longer
      sensitive to the width change of that immediate in MIPSr6 & will be
      similarly agnostic to immediate width in any future supported ISA.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Cc: linux-mips@vger.kernel.org
      6baaeada
  21. 08 10月, 2019 1 次提交
    • H
      MIPS: Loongson: Add Loongson-3A R4 basic support · 7507445b
      Huacai Chen 提交于
      All Loongson-3 CPU family:
      
      Code-name         Brand-name       PRId
      Loongson-3A R1    Loongson-3A1000  0x6305
      Loongson-3A R2    Loongson-3A2000  0x6308
      Loongson-3A R2.1  Loongson-3A2000  0x630c
      Loongson-3A R3    Loongson-3A3000  0x6309
      Loongson-3A R3.1  Loongson-3A3000  0x630d
      Loongson-3A R4    Loongson-3A4000  0xc000
      Loongson-3B R1    Loongson-3B1000  0x6306
      Loongson-3B R2    Loongson-3B1500  0x6307
      
      Features of R4 revision of Loongson-3A:
      
        - All R2/R3 features, including SFB, V-Cache, FTLB, RIXI, DSP, etc.
        - Support variable ASID bits.
        - Support MSA and VZ extensions.
        - Support CPUCFG (CPU config) and CSR (Control and Status Register)
            extensions.
        - 64 entries of VTLB (classic TLB), 2048 entries of FTLB (8-way
            set-associative).
      
      Now 64-bit Loongson processors has three types of PRID.IMP: 0x6300 is
      the classic one so we call it PRID_IMP_LOONGSON_64C (e.g., Loongson-2E/
      2F/3A1000/3B1000/3B1500/3A2000/3A3000), 0x6100 is for some processors
      which has reduced capabilities so we call it PRID_IMP_LOONGSON_64R
      (e.g., Loongson-2K), 0xc000 is supposed to cover all new processors in
      general (e.g., Loongson-3A4000+) so we call it PRID_IMP_LOONGSON_64G.
      Signed-off-by: NHuacai Chen <chenhc@lemote.com>
      Signed-off-by: NJiaxun Yang <jiaxun.yang@flygoat.com>
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: James Hogan <jhogan@kernel.org>
      Cc: linux-mips@linux-mips.org
      Cc: linux-mips@vger.kernel.org
      Cc: Fuxin Zhang <zhangfx@lemote.com>
      Cc: Zhangjin Wu <wuzhangjin@gmail.com>
      Cc: Huacai Chen <chenhuacai@gmail.com>
      7507445b
  22. 24 7月, 2019 2 次提交
  23. 08 2月, 2019 1 次提交
  24. 05 2月, 2019 3 次提交
    • P
      MIPS: MemoryMapID (MMID) Support · c8790d65
      Paul Burton 提交于
      Introduce support for using MemoryMapIDs (MMIDs) as an alternative to
      Address Space IDs (ASIDs). The major difference between the two is that
      MMIDs are global - ie. an MMID uniquely identifies an address space
      across all coherent CPUs. In contrast ASIDs are non-global per-CPU IDs,
      wherein each address space is allocated a separate ASID for each CPU
      upon which it is used. This global namespace allows a new GINVT
      instruction be used to globally invalidate TLB entries associated with a
      particular MMID across all coherent CPUs in the system, removing the
      need for IPIs to invalidate entries with separate ASIDs on each CPU.
      
      The allocation scheme used here is largely borrowed from arm64 (see
      arch/arm64/mm/context.c). In essence we maintain a bitmap to track
      available MMIDs, and MMIDs in active use at the time of a rollover to a
      new MMID version are preserved in the new version. The allocation scheme
      requires efficient 64 bit atomics in order to perform reasonably, so
      this support depends upon CONFIG_GENERIC_ATOMIC64=n (ie. currently it
      will only be included in MIPS64 kernels).
      
      The first, and currently only, available CPU with support for MMIDs is
      the MIPS I6500. This CPU supports 16 bit MMIDs, and so for now we cap
      our MMIDs to 16 bits wide in order to prevent the bitmap growing to
      absurd sizes if any future CPU does implement 32 bit MMIDs as the
      architecture manuals suggest is recommended.
      
      When MMIDs are in use we also make use of GINVT instruction which is
      available due to the global nature of MMIDs. By executing a sequence of
      GINVT & SYNC 0x14 instructions we can avoid the overhead of an IPI to
      each remote CPU in many cases. One complication is that GINVT will
      invalidate wired entries (in all cases apart from type 0, which targets
      the entire TLB). In order to avoid GINVT invalidating any wired TLB
      entries we set up, we make sure to create those entries using a reserved
      MMID (0) that we never associate with any address space.
      
      Also of note is that KVM will require further work in order to support
      MMIDs & GINVT, since KVM is involved in allocating IDs for guests & in
      configuring the MMU. That work is not part of this patch, so for now
      when MMIDs are in use KVM is disabled.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Cc: linux-mips@vger.kernel.org
      c8790d65
    • P
      MIPS: mm: Consolidate drop_mmu_context() has-ASID checks · c9b2a3dc
      Paul Burton 提交于
      If an mm does not have an ASID on the local CPU then drop_mmu_context()
      is always redundant, since there's no context to "drop". Various callers
      of drop_mmu_context() check whether the mm has been allocated an ASID
      before making the call. Move that check into drop_mmu_context() and
      remove it from callers to simplify them.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Cc: linux-mips@vger.kernel.org
      c9b2a3dc
    • P
      MIPS: mm: Remove redundant drop_mmu_context() cpu argument · 9a27324f
      Paul Burton 提交于
      The drop_mmu_context() function accepts a cpu argument, but it
      implicitly expects that this is always equal to smp_processor_id() by
      allocating & configuring an ASID on the local CPU when the mm is active
      on the CPU indicated by the cpu argument.
      
      All callers do provide the value of smp_processor_id() to the cpu
      argument.
      
      Remove the redundant argument and have drop_mmu_context() call
      smp_processor_id() itself, making it clearer that the cpu variable
      always represents the local CPU.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Cc: linux-mips@vger.kernel.org
      9a27324f
  25. 04 12月, 2018 1 次提交
    • M
      mips: annotate implicit fall throughs · 69095e39
      Mathieu Malaterre 提交于
      There is a plan to build the kernel with -Wimplicit-fallthrough and
      these places in the code produced warnings. Fix them up.
      
      This patch produces no change in behaviour, but should be reviewed in
      case these are actually bugs not intentional fallthoughs.
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Cc: Kees Cook <keescook@google.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: James Hogan <jhogan@kernel.org>
      Cc: linux-mips@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      69095e39
  26. 21 11月, 2018 1 次提交
    • H
      MIPS: c-r4k: Add r4k_blast_scache_node for Loongson-3 · bb53fdf3
      Huacai Chen 提交于
      For multi-node Loongson-3 (NUMA configuration), r4k_blast_scache() can
      only flush Node-0's scache. So we add r4k_blast_scache_node() by using
      (CAC_BASE | (node_id << NODE_ADDRSPACE_SHIFT)) instead of CKSEG0 as the
      start address.
      Signed-off-by: NHuacai Chen <chenhc@lemote.com>
      [paul.burton@mips.com: Include asm/mmzone.h from asm/r4kcache.h for
      		       nid_to_addrbase(). Add asm/mach-generic/mmzone.h
      		       to allow inclusion for all platforms.]
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Patchwork: https://patchwork.linux-mips.org/patch/21129/
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: James Hogan <james.hogan@mips.com>
      Cc: Steven J . Hill <Steven.Hill@cavium.com>
      Cc: linux-mips@linux-mips.org
      Cc: Fuxin Zhang <zhangfx@lemote.com>
      Cc: Zhangjin Wu <wuzhangjin@gmail.com>
      Cc: <stable@vger.kernel.org> # 3.15+
      bb53fdf3
  27. 20 11月, 2018 1 次提交
    • H
      MIPS: Loongson: Add Loongson-3A R2.1 basic support · f3ade253
      Huacai Chen 提交于
      Loongson-3A R2.1 is the bugfix revision of Loongson-3A R2.
      
      All Loongson-3 CPU family:
      
      Code-name         Brand-name       PRId
      Loongson-3A R1    Loongson-3A1000  0x6305
      Loongson-3A R2    Loongson-3A2000  0x6308
      Loongson-3A R2.1  Loongson-3A2000  0x630c
      Loongson-3A R3    Loongson-3A3000  0x6309
      Loongson-3A R3.1  Loongson-3A3000  0x630d
      Loongson-3B R1    Loongson-3B1000  0x6306
      Loongson-3B R2    Loongson-3B1500  0x6307
      Signed-off-by: NHuacai Chen <chenhc@lemote.com>
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Patchwork: https://patchwork.linux-mips.org/patch/21128/
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: James Hogan <james.hogan@mips.com>
      Cc: Steven J . Hill <Steven.Hill@cavium.com>
      Cc: linux-mips@linux-mips.org
      Cc: Fuxin Zhang <zhangfx@lemote.com>
      Cc: Zhangjin Wu <wuzhangjin@gmail.com>
      f3ade253
  28. 20 9月, 2018 1 次提交
  29. 27 7月, 2018 1 次提交
  30. 25 6月, 2018 2 次提交
    • P
      MIPS: Set MIPS_IC_SNOOPS_REMOTE for systems with CM · d1c5872c
      Paul Burton 提交于
      In systems that include a MIPS Coherency Manager, the icache always
      fills from a cache which is coherent across all CPUs. In I6400 & I6500
      systems the icache fills from the dcache which is coherent across all
      CPUs. In all other CM-based systems the icache fills from the L2 cache
      which is shared between all cores.
      
      This means that an icache will always see stores from remote CPUs
      without needing to write them back any further than that L2, which is
      what the cpu_icache_snoops_remote_store feature is used to test. In
      order for it to return 1 without needing a per-platform override (which
      is what Malta has relied upon so far) set the MIPS_IC_SNOOPS_REMOTE flag
      when a CM is present.
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/16200/
      d1c5872c
    • C
      MIPS: simplify CONFIG_DMA_NONCOHERENT ifdefs · 972dc3b7
      Christoph Hellwig 提交于
      CONFIG_DMA_MAYBE_COHERENT already selects CONFIG_DMA_NONCOHERENT, so we
      can remove the extra conditions.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NPaul Burton <paul.burton@mips.com>
      Patchwork: https://patchwork.linux-mips.org/patch/19529/Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: David Daney <david.daney@cavium.com>
      Cc: Kevin Cernekee <cernekee@gmail.com>
      Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
      Cc: Tom Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Huacai Chen <chenhc@lemote.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: linux-mips@linux-mips.org
      972dc3b7
  31. 15 5月, 2018 1 次提交
    • N
      MIPS: c-r4k: Fix data corruption related to cache coherence · 55a2aa08
      NeilBrown 提交于
      When DMA will be performed to a MIPS32 1004K CPS, the L1-cache for the
      range needs to be flushed and invalidated first.
      The code currently takes one of two approaches.
      1/ If the range is less than the size of the dcache, then HIT type
         requests flush/invalidate cache lines for the particular addresses.
         HIT-type requests a globalised by the CPS so this is safe on SMP.
      
      2/ If the range is larger than the size of dcache, then INDEX type
         requests flush/invalidate the whole cache. INDEX type requests affect
         the local cache only. CPS does not propagate them in any way. So this
         invalidation is not safe on SMP CPS systems.
      
      Data corruption due to '2' can quite easily be demonstrated by
      repeatedly "echo 3 > /proc/sys/vm/drop_caches" and then sha1sum a file
      that is several times the size of available memory. Dropping caches
      means that large contiguous extents (large than dcache) are more likely.
      
      This was not a problem before Linux-4.8 because option 2 was never used
      if CONFIG_MIPS_CPS was defined. The commit which removed that apparently
      didn't appreciate the full consequence of the change.
      
      We could, in theory, globalize the INDEX based flush by sending an IPI
      to other cores. These cache invalidation routines can be called with
      interrupts disabled and synchronous IPI require interrupts to be
      enabled. Asynchronous IPI may not trigger writeback soon enough. So we
      cannot use IPI in practice.
      
      We can already test if IPI would be needed for an INDEX operation with
      r4k_op_needs_ipi(R4K_INDEX). If this is true then we mustn't try the
      INDEX approach as we cannot use IPI. If this is false (e.g. when there
      is only one core and hence one L1 cache) then it is safe to use the
      INDEX approach without IPI.
      
      This patch avoids options 2 if r4k_op_needs_ipi(R4K_INDEX), and so
      eliminates the corruption.
      
      Fixes: c00ab489 ("MIPS: Remove cpu_has_safe_index_cacheops")
      Signed-off-by: NNeilBrown <neil@brown.name>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul Burton <paul.burton@mips.com>
      Cc: linux-mips@linux-mips.org
      Cc: <stable@vger.kernel.org> # 4.8+
      Patchwork: https://patchwork.linux-mips.org/patch/19259/Signed-off-by: NJames Hogan <jhogan@kernel.org>
      55a2aa08