diff for duplicates of <54BF8F8C.4090209@gentoo.org> diff --git a/a/1.txt b/N1/1.txt index 8a761f8..6400921 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -7,187 +7,3 @@ On 01/19/2015 03:56, Joshua Kinard wrote: > instructions, which are considered deprecated in current MIPS implementations. > Only R10000 systems with R2.6 and lower CPUs require branch-likely to work > around a known hardware errata item. - -From the R16000 discussion, it appears I missed the bits in __get_cpu_type, so -ignore this patch for now. I'll send another when I account for that function, -and double check I didn't miss any other R10K areas. - ---J - - - -> Verified on both an SGI Onyx2 and an SGI Octane. -> -> Signed-off-by: Joshua Kinard <kumba@gentoo.org> -> --- -> arch/mips/Kconfig | 18 +++++++++++++++++- -> arch/mips/Makefile | 3 +++ -> arch/mips/include/asm/hazards.h | 3 ++- -> arch/mips/include/asm/mach-ip27/war.h | 7 ++++++- -> arch/mips/include/asm/module.h | 2 ++ -> arch/mips/sgi-ip27/Platform | 15 ++++++++------- -> arch/mips/sgi-ip32/Platform | 2 ++ -> drivers/video/fbdev/gbefb.c | 2 +- -> 8 files changed, 41 insertions(+), 11 deletions(-) -> -> linux-mips-split-r10k-family.patch -> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig -> index 73983e1..b526133 100644 -> --- a/arch/mips/Kconfig -> +++ b/arch/mips/Kconfig -> @@ -551,6 +551,7 @@ config SGI_IP27 -> select HW_HAS_PCI -> select NR_CPUS_DEFAULT_64 -> select SYS_HAS_CPU_R10000 -> + select SYS_HAS_CPU_R12K_R14K_R16K -> select SYS_SUPPORTS_64BIT_KERNEL -> select SYS_SUPPORTS_BIG_ENDIAN -> select SYS_SUPPORTS_NUMA -> @@ -612,6 +613,7 @@ config SGI_IP32 -> select RM7000_CPU_SCACHE -> select SYS_HAS_CPU_R5000 -> select SYS_HAS_CPU_R10000 if BROKEN -> + select SYS_HAS_CPU_R12K_R14K_R16K if BROKEN -> select SYS_HAS_CPU_RM7000 -> select SYS_HAS_CPU_NEVADA -> select SYS_SUPPORTS_64BIT_KERNEL -> @@ -1456,7 +1458,18 @@ config CPU_R10000 -> select CPU_SUPPORTS_HIGHMEM -> select CPU_SUPPORTS_HUGEPAGES -> help -> - MIPS Technologies R10000-series processors. -> + MIPS Technologies R10000 processor. -> + -> +config CPU_R12K_R14K_R16K -> + bool "R12k/R14k/R16k" -> + depends on SYS_HAS_CPU_R12K_R14K_R16K -> + select CPU_HAS_PREFETCH -> + select CPU_SUPPORTS_32BIT_KERNEL -> + select CPU_SUPPORTS_64BIT_KERNEL -> + select CPU_SUPPORTS_HIGHMEM -> + select CPU_SUPPORTS_HUGEPAGES -> + help -> + MIPS Technologies R12k/R14k/R16k-series processors. -> -> config CPU_RM7000 -> bool "RM7000" -> @@ -1704,6 +1717,9 @@ config SYS_HAS_CPU_R8000 -> config SYS_HAS_CPU_R10000 -> bool -> -> +config SYS_HAS_CPU_R12K_R14K_R16K -> + bool -> + -> config SYS_HAS_CPU_RM7000 -> bool -> -> diff --git a/arch/mips/Makefile b/arch/mips/Makefile -> index 37fce70..abccbb2 100644 -> --- a/arch/mips/Makefile -> +++ b/arch/mips/Makefile -> @@ -176,6 +176,9 @@ cflags-$(CONFIG_CPU_SB1) += $(call cc-option,-mno-mips3d) -> cflags-$(CONFIG_CPU_R8000) += -march=r8000 -Wa,--trap -> cflags-$(CONFIG_CPU_R10000) += $(call cc-option,-march=r10000,-march=r8000) \ -> -Wa,--trap -> +cflags-$(CONFIG_CPU_R12K_R14K_R16K) += $(call cc-option,-march=r12000,-march=r8000) \ -> + $(call cc-option,-mno-fix-r10000,) \ -> + -Wa,--trap -> cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += $(call cc-option,-march=octeon) -Wa,--trap -> ifeq (,$(findstring march=octeon, $(cflags-$(CONFIG_CPU_CAVIUM_OCTEON)))) -> cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += -Wa,-march=octeon -> diff --git a/arch/mips/include/asm/hazards.h b/arch/mips/include/asm/hazards.h -> index e3ee92d..0b565e5 100644 -> --- a/arch/mips/include/asm/hazards.h -> +++ b/arch/mips/include/asm/hazards.h -> @@ -138,7 +138,8 @@ do { \ -> -> #elif defined(CONFIG_MIPS_ALCHEMY) || defined(CONFIG_CPU_CAVIUM_OCTEON) || \ -> defined(CONFIG_CPU_LOONGSON2) || defined(CONFIG_CPU_R10000) || \ -> - defined(CONFIG_CPU_R5500) || defined(CONFIG_CPU_XLR) -> + defined(CONFIG_CPU_R12K_R14K_R16K) || defined(CONFIG_CPU_R5500) || \ -> + defined(CONFIG_CPU_XLR) -> -> /* -> * R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer. -> diff --git a/arch/mips/include/asm/mach-ip27/war.h b/arch/mips/include/asm/mach-ip27/war.h -> index 4ee0e4b..e901a81 100644 -> --- a/arch/mips/include/asm/mach-ip27/war.h -> +++ b/arch/mips/include/asm/mach-ip27/war.h -> @@ -18,7 +18,12 @@ -> #define MIPS_CACHE_SYNC_WAR 0 -> #define TX49XX_ICACHE_INDEX_INV_WAR 0 -> #define ICACHE_REFILLS_WORKAROUND_WAR 0 -> -#define R10000_LLSC_WAR 1 -> #define MIPS34K_MISSED_ITLB_WAR 0 -> -> +#ifdef CONFIG_CPU_R10000 -> +#define R10000_LLSC_WAR 1 -> +#else -> +#define R10000_LLSC_WAR 0 -> +#endif -> + -> #endif /* __ASM_MIPS_MACH_IP27_WAR_H */ -> diff --git a/arch/mips/include/asm/module.h b/arch/mips/include/asm/module.h -> index 800fe57..394dee4 100644 -> --- a/arch/mips/include/asm/module.h -> +++ b/arch/mips/include/asm/module.h -> @@ -118,6 +118,8 @@ search_module_dbetables(unsigned long addr) -> #define MODULE_PROC_FAMILY "R8000 " -> #elif defined CONFIG_CPU_R10000 -> #define MODULE_PROC_FAMILY "R10000 " -> +#elif defined CONFIG_CPU_R12K_R14K_R16K -> +#define MODULE_PROC_FAMILY "R12K/R14K/R16K " -> #elif defined CONFIG_CPU_RM7000 -> #define MODULE_PROC_FAMILY "RM7000 " -> #elif defined CONFIG_CPU_SB1 -> diff --git a/arch/mips/sgi-ip27/Platform b/arch/mips/sgi-ip27/Platform -> index 1fb9c2e..4ad7060 100644 -> --- a/arch/mips/sgi-ip27/Platform -> +++ b/arch/mips/sgi-ip27/Platform -> @@ -6,14 +6,15 @@ -> # be 16kb aligned or the handling of the current variable will break. -> # -> ifdef CONFIG_SGI_IP27 -> -platform-$(CONFIG_SGI_IP27) += sgi-ip27/ -> -cflags-$(CONFIG_SGI_IP27) += -I$(srctree)/arch/mips/include/asm/mach-ip27 -> +platform-$(CONFIG_SGI_IP27) += sgi-ip27/ -> +cflags-$(CONFIG_SGI_IP27) += -I$(srctree)/arch/mips/include/asm/mach-ip27 -> +cflags-$(CONFIG_CPU_R12K_R14K_R16K) += -mno-fix-r10000 -> ifdef CONFIG_MAPPED_KERNEL -> -load-$(CONFIG_SGI_IP27) += 0xc00000004001c000 -> -OBJCOPYFLAGS := --change-addresses=0x3fffffff80000000 -> -dataoffset-$(CONFIG_SGI_IP27) += 0x01000000 -> +load-$(CONFIG_SGI_IP27) += 0xc00000004001c000 -> +OBJCOPYFLAGS := --change-addresses=0x3fffffff80000000 -> +dataoffset-$(CONFIG_SGI_IP27) += 0x01000000 -> else -> -load-$(CONFIG_SGI_IP27) += 0xa80000000001c000 -> -OBJCOPYFLAGS := --change-addresses=0x57ffffff80000000 -> +load-$(CONFIG_SGI_IP27) += 0xa80000000001c000 -> +OBJCOPYFLAGS := --change-addresses=0x57ffffff80000000 -> endif -> endif -> diff --git a/arch/mips/sgi-ip32/Platform b/arch/mips/sgi-ip32/Platform -> index 0fea556..5899305 100644 -> --- a/arch/mips/sgi-ip32/Platform -> +++ b/arch/mips/sgi-ip32/Platform -> @@ -8,4 +8,6 @@ -> # -> platform-$(CONFIG_SGI_IP32) += sgi-ip32/ -> cflags-$(CONFIG_SGI_IP32) += -I$(srctree)/arch/mips/include/asm/mach-ip32 -> +cflags-$(CONFIG_CPU_R10000) += -mr10k-cache-barrier=load-store -> +cflags-$(CONFIG_CPU_R12K_R14K_R16K) += -mno-fix-r10000 -mr10k-cache-barrier=load-store -> load-$(CONFIG_SGI_IP32) += 0xffffffff80004000 -> diff --git a/drivers/video/fbdev/gbefb.c b/drivers/video/fbdev/gbefb.c -> index 6d9ef39..c5dc991 100644 -> --- a/drivers/video/fbdev/gbefb.c -> +++ b/drivers/video/fbdev/gbefb.c -> @@ -47,7 +47,7 @@ struct gbefb_par { -> -> /* macro for fastest write-though access to the framebuffer */ -> #ifdef CONFIG_MIPS -> -#ifdef CONFIG_CPU_R10000 -> +#if defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_R12K_R14K_R16K) -> #define pgprot_fb(_prot) (((_prot) & (~_CACHE_MASK)) | _CACHE_UNCACHED_ACCELERATED) -> #else -> #define pgprot_fb(_prot) (((_prot) & (~_CACHE_MASK)) | _CACHE_CACHABLE_NO_WA) diff --git a/a/content_digest b/N1/content_digest index a5bc9b7..a4bdde2 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -14,190 +14,6 @@ "> and greater. This allows the kernel to build without branch-likely\n" "> instructions, which are considered deprecated in current MIPS implementations.\n" "> Only R10000 systems with R2.6 and lower CPUs require branch-likely to work\n" - "> around a known hardware errata item.\n" - "\n" - "From the R16000 discussion, it appears I missed the bits in __get_cpu_type, so\n" - "ignore this patch for now. I'll send another when I account for that function,\n" - "and double check I didn't miss any other R10K areas.\n" - "\n" - "--J\n" - "\n" - "\n" - "\n" - "> Verified on both an SGI Onyx2 and an SGI Octane.\n" - "> \n" - "> Signed-off-by: Joshua Kinard <kumba@gentoo.org>\n" - "> ---\n" - "> arch/mips/Kconfig | 18 +++++++++++++++++-\n" - "> arch/mips/Makefile | 3 +++\n" - "> arch/mips/include/asm/hazards.h | 3 ++-\n" - "> arch/mips/include/asm/mach-ip27/war.h | 7 ++++++-\n" - "> arch/mips/include/asm/module.h | 2 ++\n" - "> arch/mips/sgi-ip27/Platform | 15 ++++++++-------\n" - "> arch/mips/sgi-ip32/Platform | 2 ++\n" - "> drivers/video/fbdev/gbefb.c | 2 +-\n" - "> 8 files changed, 41 insertions(+), 11 deletions(-)\n" - "> \n" - "> linux-mips-split-r10k-family.patch\n" - "> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig\n" - "> index 73983e1..b526133 100644\n" - "> --- a/arch/mips/Kconfig\n" - "> +++ b/arch/mips/Kconfig\n" - "> @@ -551,6 +551,7 @@ config SGI_IP27\n" - "> \tselect HW_HAS_PCI\n" - "> \tselect NR_CPUS_DEFAULT_64\n" - "> \tselect SYS_HAS_CPU_R10000\n" - "> +\tselect SYS_HAS_CPU_R12K_R14K_R16K\n" - "> \tselect SYS_SUPPORTS_64BIT_KERNEL\n" - "> \tselect SYS_SUPPORTS_BIG_ENDIAN\n" - "> \tselect SYS_SUPPORTS_NUMA\n" - "> @@ -612,6 +613,7 @@ config SGI_IP32\n" - "> \tselect RM7000_CPU_SCACHE\n" - "> \tselect SYS_HAS_CPU_R5000\n" - "> \tselect SYS_HAS_CPU_R10000 if BROKEN\n" - "> +\tselect SYS_HAS_CPU_R12K_R14K_R16K if BROKEN\n" - "> \tselect SYS_HAS_CPU_RM7000\n" - "> \tselect SYS_HAS_CPU_NEVADA\n" - "> \tselect SYS_SUPPORTS_64BIT_KERNEL\n" - "> @@ -1456,7 +1458,18 @@ config CPU_R10000\n" - "> \tselect CPU_SUPPORTS_HIGHMEM\n" - "> \tselect CPU_SUPPORTS_HUGEPAGES\n" - "> \thelp\n" - "> -\t MIPS Technologies R10000-series processors.\n" - "> +\t MIPS Technologies R10000 processor.\n" - "> +\n" - "> +config CPU_R12K_R14K_R16K\n" - "> +\tbool \"R12k/R14k/R16k\"\n" - "> +\tdepends on SYS_HAS_CPU_R12K_R14K_R16K\n" - "> +\tselect CPU_HAS_PREFETCH\n" - "> +\tselect CPU_SUPPORTS_32BIT_KERNEL\n" - "> +\tselect CPU_SUPPORTS_64BIT_KERNEL\n" - "> +\tselect CPU_SUPPORTS_HIGHMEM\n" - "> +\tselect CPU_SUPPORTS_HUGEPAGES\n" - "> +\thelp\n" - "> +\t MIPS Technologies R12k/R14k/R16k-series processors.\n" - "> \n" - "> config CPU_RM7000\n" - "> \tbool \"RM7000\"\n" - "> @@ -1704,6 +1717,9 @@ config SYS_HAS_CPU_R8000\n" - "> config SYS_HAS_CPU_R10000\n" - "> \tbool\n" - "> \n" - "> +config SYS_HAS_CPU_R12K_R14K_R16K\n" - "> +\tbool\n" - "> +\n" - "> config SYS_HAS_CPU_RM7000\n" - "> \tbool\n" - "> \n" - "> diff --git a/arch/mips/Makefile b/arch/mips/Makefile\n" - "> index 37fce70..abccbb2 100644\n" - "> --- a/arch/mips/Makefile\n" - "> +++ b/arch/mips/Makefile\n" - "> @@ -176,6 +176,9 @@ cflags-$(CONFIG_CPU_SB1)\t+= $(call cc-option,-mno-mips3d)\n" - "> cflags-$(CONFIG_CPU_R8000)\t+= -march=r8000 -Wa,--trap\n" - "> cflags-$(CONFIG_CPU_R10000)\t+= $(call cc-option,-march=r10000,-march=r8000) \\\n" - "> \t\t\t-Wa,--trap\n" - "> +cflags-$(CONFIG_CPU_R12K_R14K_R16K)\t+= $(call cc-option,-march=r12000,-march=r8000) \\\n" - "> +\t\t\t$(call cc-option,-mno-fix-r10000,) \\\n" - "> +\t\t\t-Wa,--trap\n" - "> cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += $(call cc-option,-march=octeon) -Wa,--trap\n" - "> ifeq (,$(findstring march=octeon, $(cflags-$(CONFIG_CPU_CAVIUM_OCTEON))))\n" - "> cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += -Wa,-march=octeon\n" - "> diff --git a/arch/mips/include/asm/hazards.h b/arch/mips/include/asm/hazards.h\n" - "> index e3ee92d..0b565e5 100644\n" - "> --- a/arch/mips/include/asm/hazards.h\n" - "> +++ b/arch/mips/include/asm/hazards.h\n" - "> @@ -138,7 +138,8 @@ do {\t\t\t\t\t\t\t\t\t\\\n" - "> \n" - "> #elif defined(CONFIG_MIPS_ALCHEMY) || defined(CONFIG_CPU_CAVIUM_OCTEON) || \\\n" - "> \tdefined(CONFIG_CPU_LOONGSON2) || defined(CONFIG_CPU_R10000) || \\\n" - "> -\tdefined(CONFIG_CPU_R5500) || defined(CONFIG_CPU_XLR)\n" - "> +\tdefined(CONFIG_CPU_R12K_R14K_R16K) || defined(CONFIG_CPU_R5500) || \\\n" - "> +\tdefined(CONFIG_CPU_XLR)\n" - "> \n" - "> /*\n" - "> * R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer.\n" - "> diff --git a/arch/mips/include/asm/mach-ip27/war.h b/arch/mips/include/asm/mach-ip27/war.h\n" - "> index 4ee0e4b..e901a81 100644\n" - "> --- a/arch/mips/include/asm/mach-ip27/war.h\n" - "> +++ b/arch/mips/include/asm/mach-ip27/war.h\n" - "> @@ -18,7 +18,12 @@\n" - "> #define MIPS_CACHE_SYNC_WAR\t\t0\n" - "> #define TX49XX_ICACHE_INDEX_INV_WAR\t0\n" - "> #define ICACHE_REFILLS_WORKAROUND_WAR\t0\n" - "> -#define R10000_LLSC_WAR\t\t\t1\n" - "> #define MIPS34K_MISSED_ITLB_WAR\t\t0\n" - "> \n" - "> +#ifdef CONFIG_CPU_R10000\n" - "> +#define R10000_LLSC_WAR\t\t\t1\n" - "> +#else\n" - "> +#define R10000_LLSC_WAR\t\t\t0\n" - "> +#endif\n" - "> +\n" - "> #endif /* __ASM_MIPS_MACH_IP27_WAR_H */\n" - "> diff --git a/arch/mips/include/asm/module.h b/arch/mips/include/asm/module.h\n" - "> index 800fe57..394dee4 100644\n" - "> --- a/arch/mips/include/asm/module.h\n" - "> +++ b/arch/mips/include/asm/module.h\n" - "> @@ -118,6 +118,8 @@ search_module_dbetables(unsigned long addr)\n" - "> #define MODULE_PROC_FAMILY \"R8000 \"\n" - "> #elif defined CONFIG_CPU_R10000\n" - "> #define MODULE_PROC_FAMILY \"R10000 \"\n" - "> +#elif defined CONFIG_CPU_R12K_R14K_R16K\n" - "> +#define MODULE_PROC_FAMILY \"R12K/R14K/R16K \"\n" - "> #elif defined CONFIG_CPU_RM7000\n" - "> #define MODULE_PROC_FAMILY \"RM7000 \"\n" - "> #elif defined CONFIG_CPU_SB1\n" - "> diff --git a/arch/mips/sgi-ip27/Platform b/arch/mips/sgi-ip27/Platform\n" - "> index 1fb9c2e..4ad7060 100644\n" - "> --- a/arch/mips/sgi-ip27/Platform\n" - "> +++ b/arch/mips/sgi-ip27/Platform\n" - "> @@ -6,14 +6,15 @@\n" - "> # be 16kb aligned or the handling of the current variable will break.\n" - "> #\n" - "> ifdef CONFIG_SGI_IP27\n" - "> -platform-$(CONFIG_SGI_IP27)\t+= sgi-ip27/\n" - "> -cflags-$(CONFIG_SGI_IP27)\t+= -I$(srctree)/arch/mips/include/asm/mach-ip27\n" - "> +platform-$(CONFIG_SGI_IP27)\t\t+= sgi-ip27/\n" - "> +cflags-$(CONFIG_SGI_IP27)\t\t+= -I$(srctree)/arch/mips/include/asm/mach-ip27\n" - "> +cflags-$(CONFIG_CPU_R12K_R14K_R16K)\t+= -mno-fix-r10000\n" - "> ifdef CONFIG_MAPPED_KERNEL\n" - "> -load-$(CONFIG_SGI_IP27)\t\t+= 0xc00000004001c000\n" - "> -OBJCOPYFLAGS\t\t\t:= --change-addresses=0x3fffffff80000000\n" - "> -dataoffset-$(CONFIG_SGI_IP27)\t+= 0x01000000\n" - "> +load-$(CONFIG_SGI_IP27)\t\t\t+= 0xc00000004001c000\n" - "> +OBJCOPYFLAGS\t\t\t\t:= --change-addresses=0x3fffffff80000000\n" - "> +dataoffset-$(CONFIG_SGI_IP27)\t\t+= 0x01000000\n" - "> else\n" - "> -load-$(CONFIG_SGI_IP27)\t\t+= 0xa80000000001c000\n" - "> -OBJCOPYFLAGS\t\t\t:= --change-addresses=0x57ffffff80000000\n" - "> +load-$(CONFIG_SGI_IP27)\t\t\t+= 0xa80000000001c000\n" - "> +OBJCOPYFLAGS\t\t\t\t:= --change-addresses=0x57ffffff80000000\n" - "> endif\n" - "> endif\n" - "> diff --git a/arch/mips/sgi-ip32/Platform b/arch/mips/sgi-ip32/Platform\n" - "> index 0fea556..5899305 100644\n" - "> --- a/arch/mips/sgi-ip32/Platform\n" - "> +++ b/arch/mips/sgi-ip32/Platform\n" - "> @@ -8,4 +8,6 @@\n" - "> #\n" - "> platform-$(CONFIG_SGI_IP32)\t+= sgi-ip32/\n" - "> cflags-$(CONFIG_SGI_IP32)\t+= -I$(srctree)/arch/mips/include/asm/mach-ip32\n" - "> +cflags-$(CONFIG_CPU_R10000)\t\t+= -mr10k-cache-barrier=load-store\n" - "> +cflags-$(CONFIG_CPU_R12K_R14K_R16K)\t+= -mno-fix-r10000 -mr10k-cache-barrier=load-store\n" - "> load-$(CONFIG_SGI_IP32)\t\t+= 0xffffffff80004000\n" - "> diff --git a/drivers/video/fbdev/gbefb.c b/drivers/video/fbdev/gbefb.c\n" - "> index 6d9ef39..c5dc991 100644\n" - "> --- a/drivers/video/fbdev/gbefb.c\n" - "> +++ b/drivers/video/fbdev/gbefb.c\n" - "> @@ -47,7 +47,7 @@ struct gbefb_par {\n" - "> \n" - "> /* macro for fastest write-though access to the framebuffer */\n" - "> #ifdef CONFIG_MIPS\n" - "> -#ifdef CONFIG_CPU_R10000\n" - "> +#if defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_R12K_R14K_R16K)\n" - "> #define pgprot_fb(_prot) (((_prot) & (~_CACHE_MASK)) | _CACHE_UNCACHED_ACCELERATED)\n" - "> #else\n" - > #define pgprot_fb(_prot) (((_prot) & (~_CACHE_MASK)) | _CACHE_CACHABLE_NO_WA) + > around a known hardware errata item. -b68a50153267be0b8313d69f20814278826e655736d0a65231890ee0ac9cbe98 +0e1feb0b698df1c8d1ecf580ec8329c2b83ad335e42f0364cf9d6acb2289d15b
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.