Merge branch 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[linux-2.6-microblaze.git] / arch / mips / Kconfig
index 440614d..2000bb2 100644 (file)
@@ -88,20 +88,41 @@ config MIPS
        select PERF_USE_VMALLOC
        select PCI_MSI_ARCH_FALLBACKS if PCI_MSI
        select RTC_LIB
+       select SET_FS
        select SYSCTL_EXCEPTION_TRACE
        select VIRT_TO_BUS
 
 config MIPS_FIXUP_BIGPHYS_ADDR
        bool
 
+config MIPS_GENERIC
+       bool
+
+config MACH_INGENIC
+       bool
+       select SYS_SUPPORTS_32BIT_KERNEL
+       select SYS_SUPPORTS_LITTLE_ENDIAN
+       select SYS_SUPPORTS_ZBOOT
+       select DMA_NONCOHERENT
+       select IRQ_MIPS_CPU
+       select PINCTRL
+       select GPIOLIB
+       select COMMON_CLK
+       select GENERIC_IRQ_CHIP
+       select BUILTIN_DTB if MIPS_NO_APPENDED_DTB
+       select USE_OF
+       select CPU_SUPPORTS_CPUFREQ
+       select MIPS_EXTERNAL_TIMER
+
 menu "Machine selection"
 
 choice
        prompt "System type"
-       default MIPS_GENERIC
+       default MIPS_GENERIC_KERNEL
 
-config MIPS_GENERIC
+config MIPS_GENERIC_KERNEL
        bool "Generic board-agnostic MIPS kernel"
+       select MIPS_GENERIC
        select BOOT_RAW
        select BUILTIN_DTB
        select CEVT_R4K
@@ -138,6 +159,7 @@ config MIPS_GENERIC
        select SYS_SUPPORTS_MULTITHREADING
        select SYS_SUPPORTS_RELOCATABLE
        select SYS_SUPPORTS_SMARTMIPS
+       select SYS_SUPPORTS_ZBOOT
        select UHI_BOOT
        select USB_EHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
        select USB_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
@@ -390,20 +412,11 @@ config MACH_JAZZ
          Members include the Acer PICA, MIPS Magnum 4000, MIPS Millennium and
          Olivetti M700-10 workstations.
 
-config MACH_INGENIC
+config MACH_INGENIC_SOC
        bool "Ingenic SoC based machines"
-       select SYS_SUPPORTS_32BIT_KERNEL
-       select SYS_SUPPORTS_LITTLE_ENDIAN
+       select MIPS_GENERIC
+       select MACH_INGENIC
        select SYS_SUPPORTS_ZBOOT_UART16550
-       select CPU_SUPPORTS_HUGEPAGES
-       select DMA_NONCOHERENT
-       select IRQ_MIPS_CPU
-       select PINCTRL
-       select GPIOLIB
-       select COMMON_CLK
-       select GENERIC_IRQ_CHIP
-       select BUILTIN_DTB if MIPS_NO_APPENDED_DTB
-       select USE_OF
 
 config LANTIQ
        bool "Lantiq based platforms"
@@ -476,6 +489,7 @@ config MACH_LOONGSON64
        select SYS_SUPPORTS_ZBOOT
        select ZONE_DMA32
        select NUMA
+       select SMP
        select COMMON_CLK
        select USE_OF
        select BUILTIN_DTB
@@ -569,6 +583,7 @@ config MIPS_MALTA
        select SYS_SUPPORTS_VPE_LOADER
        select SYS_SUPPORTS_ZBOOT
        select USE_OF
+       select WAR_ICACHE_REFILLS
        select ZONE_DMA32 if 64BIT
        help
          This enables support for the MIPS Technologies Malta evaluation
@@ -590,19 +605,6 @@ config MACH_VR41XX
        select SYS_SUPPORTS_MIPS16
        select GPIOLIB
 
-config NXP_STB220
-       bool "NXP STB220 board"
-       select SOC_PNX833X
-       help
-         Support for NXP Semiconductors STB220 Development Board.
-
-config NXP_STB225
-       bool "NXP 225 board"
-       select SOC_PNX833X
-       select SOC_PNX8335
-       help
-         Support for NXP Semiconductors STB225 Development Board.
-
 config RALINK
        bool "Ralink based machines"
        select CEVT_R4K
@@ -616,6 +618,7 @@ config RALINK
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_LITTLE_ENDIAN
        select SYS_SUPPORTS_MIPS16
+       select SYS_SUPPORTS_ZBOOT
        select SYS_HAS_EARLY_PRINTK
        select CLKDEV_LOOKUP
        select ARCH_HAS_RESET_CONTROLLER
@@ -652,6 +655,9 @@ config SGI_IP22
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_64BIT_KERNEL
        select SYS_SUPPORTS_BIG_ENDIAN
+       select WAR_R4600_V1_INDEX_ICACHEOP
+       select WAR_R4600_V1_HIT_CACHEOP
+       select WAR_R4600_V2_HIT_CACHEOP
        select MIPS_L1_CACHE_SHIFT_7
        help
          This are the SGI Indy, Challenge S and Indigo2, as well as certain
@@ -679,6 +685,7 @@ config SGI_IP27
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_NUMA
        select SYS_SUPPORTS_SMP
+       select WAR_R10000_LLSC
        select MIPS_L1_CACHE_SHIFT_7
        select NUMA
        help
@@ -714,6 +721,7 @@ config SGI_IP28
        select SYS_HAS_EARLY_PRINTK
        select SYS_SUPPORTS_64BIT_KERNEL
        select SYS_SUPPORTS_BIG_ENDIAN
+       select WAR_R10000_LLSC
        select MIPS_L1_CACHE_SHIFT_7
        help
          This is the SGI Indigo2 with R10000 processor.  To compile a Linux
@@ -740,6 +748,7 @@ config SGI_IP30
        select SYS_SUPPORTS_64BIT_KERNEL
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_SMP
+       select WAR_R10000_LLSC
        select MIPS_L1_CACHE_SHIFT_7
        select ARC_MEMORY
        help
@@ -767,6 +776,7 @@ config SGI_IP32
        select SYS_HAS_CPU_NEVADA
        select SYS_SUPPORTS_64BIT_KERNEL
        select SYS_SUPPORTS_BIG_ENDIAN
+       select WAR_ICACHE_REFILLS
        help
          If you want this kernel to run on SGI O2 workstation, say Y here.
 
@@ -890,6 +900,7 @@ config SNI_RM
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_HIGHMEM
        select SYS_SUPPORTS_LITTLE_ENDIAN
+       select WAR_R4600_V2_HIT_CACHEOP
        help
          The SNI RM200/300/400 are MIPS-based machines manufactured by
          Siemens Nixdorf Informationssysteme (SNI), parent company of Pyramid
@@ -901,6 +912,7 @@ config MACH_TX39XX
 
 config MACH_TX49XX
        bool "Toshiba TX49 series based machines"
+       select WAR_TX49XX_ICACHE_INDEX_INV
 
 config MIKROTIK_RB532
        bool "Mikrotik RB532 boards"
@@ -1026,8 +1038,8 @@ source "arch/mips/bcm47xx/Kconfig"
 source "arch/mips/bcm63xx/Kconfig"
 source "arch/mips/bmips/Kconfig"
 source "arch/mips/generic/Kconfig"
+source "arch/mips/ingenic/Kconfig"
 source "arch/mips/jazz/Kconfig"
-source "arch/mips/jz4740/Kconfig"
 source "arch/mips/lantiq/Kconfig"
 source "arch/mips/pic32/Kconfig"
 source "arch/mips/pistachio/Kconfig"
@@ -1136,7 +1148,6 @@ config DMA_NONCOHERENT
        select ARCH_HAS_SYNC_DMA_FOR_DEVICE
        select ARCH_HAS_DMA_SET_UNCACHED
        select DMA_NONCOHERENT_MMAP
-       select DMA_NONCOHERENT_CACHE_SYNC
        select NEED_DMA_MAP_STATE
 
 config SYS_HAS_EARLY_PRINTK
@@ -1268,23 +1279,6 @@ config PCI_XTALK_BRIDGE
 config NO_EXCEPT_FILL
        bool
 
-config SOC_PNX833X
-       bool
-       select CEVT_R4K
-       select CSRC_R4K
-       select IRQ_MIPS_CPU
-       select DMA_NONCOHERENT
-       select SYS_HAS_CPU_MIPS32_R2
-       select SYS_SUPPORTS_32BIT_KERNEL
-       select SYS_SUPPORTS_LITTLE_ENDIAN
-       select SYS_SUPPORTS_BIG_ENDIAN
-       select SYS_SUPPORTS_MIPS16
-       select CPU_MIPSR2_IRQ_VI
-
-config SOC_PNX8335
-       bool
-       select SOC_PNX833X
-
 config MIPS_SPRAM
        bool
 
@@ -1621,7 +1615,6 @@ config CPU_P5600
        select CPU_SUPPORTS_32BIT_KERNEL
        select CPU_SUPPORTS_HIGHMEM
        select CPU_SUPPORTS_MSA
-       select CPU_SUPPORTS_UNCACHED_ACCELERATED
        select CPU_SUPPORTS_CPUFREQ
        select CPU_MIPSR2_IRQ_VI
        select CPU_MIPSR2_IRQ_EI
@@ -1892,6 +1885,7 @@ config SYS_SUPPORTS_ZBOOT
        select HAVE_KERNEL_LZMA
        select HAVE_KERNEL_LZO
        select HAVE_KERNEL_XZ
+       select HAVE_KERNEL_ZSTD
 
 config SYS_SUPPORTS_ZBOOT_UART16550
        bool
@@ -2273,7 +2267,7 @@ config FORCE_MAX_ZONEORDER
        default "13" if MIPS_HUGE_TLB_SUPPORT && PAGE_SIZE_32KB
        range 12 64 if MIPS_HUGE_TLB_SUPPORT && PAGE_SIZE_16KB
        default "12" if MIPS_HUGE_TLB_SUPPORT && PAGE_SIZE_16KB
-       range 11 64
+       range 0 64
        default "11"
        help
          The kernel memory allocator divides physically contiguous memory
@@ -2639,6 +2633,76 @@ config MIPS_ASID_BITS_VARIABLE
 config MIPS_CRC_SUPPORT
        bool
 
+# R4600 erratum.  Due to the lack of errata information the exact
+# technical details aren't known.  I've experimentally found that disabling
+# interrupts during indexed I-cache flushes seems to be sufficient to deal
+# with the issue.
+config WAR_R4600_V1_INDEX_ICACHEOP
+       bool
+
+# Pleasures of the R4600 V1.x.  Cite from the IDT R4600 V1.7 errata:
+#
+#  18. The CACHE instructions Hit_Writeback_Invalidate_D, Hit_Writeback_D,
+#      Hit_Invalidate_D and Create_Dirty_Excl_D should only be
+#      executed if there is no other dcache activity. If the dcache is
+#      accessed for another instruction immeidately preceding when these
+#      cache instructions are executing, it is possible that the dcache
+#      tag match outputs used by these cache instructions will be
+#      incorrect. These cache instructions should be preceded by at least
+#      four instructions that are not any kind of load or store
+#      instruction.
+#
+#      This is not allowed:    lw
+#                              nop
+#                              nop
+#                              nop
+#                              cache       Hit_Writeback_Invalidate_D
+#
+#      This is allowed:        lw
+#                              nop
+#                              nop
+#                              nop
+#                              nop
+#                              cache       Hit_Writeback_Invalidate_D
+config WAR_R4600_V1_HIT_CACHEOP
+       bool
+
+# Writeback and invalidate the primary cache dcache before DMA.
+#
+# R4600 v2.0 bug: "The CACHE instructions Hit_Writeback_Inv_D,
+# Hit_Writeback_D, Hit_Invalidate_D and Create_Dirty_Exclusive_D will only
+# operate correctly if the internal data cache refill buffer is empty.  These
+# CACHE instructions should be separated from any potential data cache miss
+# by a load instruction to an uncached address to empty the response buffer."
+# (Revision 2.0 device errata from IDT available on https://www.idt.com/
+# in .pdf format.)
+config WAR_R4600_V2_HIT_CACHEOP
+       bool
+
+# From TX49/H2 manual: "If the instruction (i.e. CACHE) is issued for
+# the line which this instruction itself exists, the following
+# operation is not guaranteed."
+#
+# Workaround: do two phase flushing for Index_Invalidate_I
+config WAR_TX49XX_ICACHE_INDEX_INV
+       bool
+
+# The RM7000 processors and the E9000 cores have a bug (though PMC-Sierra
+# opposes it being called that) where invalid instructions in the same
+# I-cache line worth of instructions being fetched may case spurious
+# exceptions.
+config WAR_ICACHE_REFILLS
+       bool
+
+# On the R10000 up to version 2.6 (not sure about 2.7) there is a bug that
+# may cause ll / sc and lld / scd sequences to execute non-atomically.
+config WAR_R10000_LLSC
+       bool
+
+# 34K core erratum: "Problems Executing the TLBR Instruction"
+config WAR_MIPS34K_MISSED_ITLB
+       bool
+
 #
 # - Highmem only makes sense for the 32-bit kernel.
 # - The current highmem code will only work properly on physically indexed