Linux-MIPS Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3
@ 2020-09-06 19:29 Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 01/15] MIPS: configs: lb60: Fix defconfig not selecting correct board Paul Cercueil
                   ` (15 more replies)
  0 siblings, 16 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

Hi Thomas, list,

Here's a V3 of my patchset that updates the old jz4740 platform code to
work with the generic MIPS board code base.

Noteworthy changes since V2:
- Patch [01/15] is a fix to the LB60's defconfig, which expected a
  symbol to be the default value of an enum, but the default changed in
  kernel 5.7.

- Patch [11/15] has been modified to address the issue with
  cpu-feature-overrides.h being dropped. Now, The Ingenic-specific
  version of the file will be used when building a Ingenic-only kernel,
  otherwise the generic dummy one will be used.

- Patch [13/15] is new, instead of doing code removal + rename in one
  patch in v2, we now do code removal in patch [12/15] and rename in
  [13/15]. It makes more sense to split since we have more files/folders
  (as we keep the cpu-feature-overrides.h header around).

Cheers,
-Paul

Paul Cercueil (15):
  MIPS: configs: lb60: Fix defconfig not selecting correct board
  MIPS: cpu-probe: Set Ingenic's writecombine to _CACHE_CACHABLE_WA
  MIPS: cpu-probe: Mark XBurst CPU as having vtagged caches
  MIPS: cpu-probe: ingenic: Fix broken BUG_ON
  MIPS: Kconfig: add MIPS_GENERIC_KERNEL symbol
  MIPS: generic: Allow boards to set system type
  MIPS: generic: Init command line with fw_init_cmdline()
  MIPS: generic: Support booting with built-in or appended DTB
  MIPS: generic: Add support for zboot
  MIPS: generic: Increase NR_IRQS to 256
  MIPS: generic: Add support for Ingenic SoCs
  MIPS: jz4740: Drop all obsolete files
  MIPS: jz4740: Rename jz4740 folders to ingenic
  MIPS: configs: Regenerate configs of Ingenic boards
  MAINTAINERS: Update paths to Ingenic platform code

 MAINTAINERS                                   |   5 +-
 arch/mips/Kbuild.platforms                    |   1 -
 arch/mips/Kconfig                             |  43 ++++--
 arch/mips/configs/ci20_defconfig              |   4 +-
 arch/mips/configs/cu1000-neo_defconfig        |  15 +-
 arch/mips/configs/cu1830-neo_defconfig        |  15 +-
 arch/mips/configs/gcw0_defconfig              |   2 +-
 arch/mips/configs/qi_lb60_defconfig           |   7 +-
 arch/mips/configs/rs90_defconfig              |   4 +-
 arch/mips/generic/Kconfig                     |   8 +-
 arch/mips/generic/Makefile                    |   1 +
 arch/mips/generic/Platform                    |   4 +
 arch/mips/generic/board-ingenic.c             | 108 +++++++++++++
 arch/mips/generic/init.c                      |  11 +-
 arch/mips/generic/proc.c                      |   5 +
 arch/mips/include/asm/mach-generic/irq.h      |   2 +-
 .../cpu-feature-overrides.h                   |   0
 arch/mips/include/asm/mach-jz4740/irq.h       |  13 --
 arch/mips/include/asm/pgtable-bits.h          |   5 -
 arch/mips/{jz4740 => ingenic}/Kconfig         |  16 +-
 arch/mips/jz4740/Makefile                     |   9 --
 arch/mips/jz4740/Platform                     |   3 -
 arch/mips/jz4740/setup.c                      | 145 ------------------
 arch/mips/kernel/cpu-probe.c                  |   8 +-
 24 files changed, 191 insertions(+), 243 deletions(-)
 create mode 100644 arch/mips/generic/board-ingenic.c
 rename arch/mips/include/asm/{mach-jz4740 => mach-ingenic}/cpu-feature-overrides.h (100%)
 delete mode 100644 arch/mips/include/asm/mach-jz4740/irq.h
 rename arch/mips/{jz4740 => ingenic}/Kconfig (91%)
 delete mode 100644 arch/mips/jz4740/Makefile
 delete mode 100644 arch/mips/jz4740/Platform
 delete mode 100644 arch/mips/jz4740/setup.c

-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 01/15] MIPS: configs: lb60: Fix defconfig not selecting correct board
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 02/15] MIPS: cpu-probe: Set Ingenic's writecombine to _CACHE_CACHABLE_WA Paul Cercueil
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil, stable

Since INGENIC_GENERIC_BOARD was introduced, the JZ4740_QI_LB60 option
is no longer the default, so the symbol has to be selected by the
defconfig, otherwise the kernel built will be for a generic Ingenic
board and won't have the Device Tree blob built-in.

Cc: stable@vger.kernel.org # v5.7
Fixes: 62249209a772 ("MIPS: ingenic: Default to a generic board")
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v3: New patch

 arch/mips/configs/qi_lb60_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/mips/configs/qi_lb60_defconfig b/arch/mips/configs/qi_lb60_defconfig
index 81bfbee72b0c..9c2c183085d1 100644
--- a/arch/mips/configs/qi_lb60_defconfig
+++ b/arch/mips/configs/qi_lb60_defconfig
@@ -8,6 +8,7 @@ CONFIG_EMBEDDED=y
 # CONFIG_COMPAT_BRK is not set
 CONFIG_SLAB=y
 CONFIG_MACH_INGENIC=y
+CONFIG_JZ4740_QI_LB60=y
 CONFIG_HZ_100=y
 # CONFIG_SECCOMP is not set
 CONFIG_MODULES=y
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 02/15] MIPS: cpu-probe: Set Ingenic's writecombine to _CACHE_CACHABLE_WA
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 01/15] MIPS: configs: lb60: Fix defconfig not selecting correct board Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 03/15] MIPS: cpu-probe: Mark XBurst CPU as having vtagged caches Paul Cercueil
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

Previously, in cpu_probe_ingenic(), c->writecombine was set to
_CACHE_UNCACHED_ACCELERATED, but this macro was defined differently when
CONFIG_MACH_INGENIC was set. This made it impossible to support multiple
CPUs.

Address this issue by setting c->writecombine to _CACHE_CACHABLE_WA
directly and removing the dependency on CONFIG_MACH_INGENIC.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2-v3: No change

 arch/mips/include/asm/pgtable-bits.h | 5 -----
 arch/mips/kernel/cpu-probe.c         | 3 ++-
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/arch/mips/include/asm/pgtable-bits.h b/arch/mips/include/asm/pgtable-bits.h
index e26dc41a8a68..2362842ee2b5 100644
--- a/arch/mips/include/asm/pgtable-bits.h
+++ b/arch/mips/include/asm/pgtable-bits.h
@@ -249,11 +249,6 @@ static inline uint64_t pte_to_entrylo(unsigned long pte_val)
 
 #define _CACHE_CACHABLE_NONCOHERENT (5<<_CACHE_SHIFT)
 
-#elif defined(CONFIG_MACH_INGENIC)
-
-/* Ingenic uses the WA bit to achieve write-combine memory writes */
-#define _CACHE_UNCACHED_ACCELERATED (1<<_CACHE_SHIFT)
-
 #endif
 
 #ifndef _CACHE_CACHABLE_NO_WA
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index e2955f1f6316..a18f3611fa5e 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -2169,8 +2169,9 @@ static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)
 
 	/* XBurst®1 with MXU2.0 SIMD ISA */
 	case PRID_IMP_XBURST_REV2:
+		/* Ingenic uses the WA bit to achieve write-combine memory writes */
+		c->writecombine = _CACHE_CACHABLE_WA;
 		c->cputype = CPU_XBURST;
-		c->writecombine = _CACHE_UNCACHED_ACCELERATED;
 		__cpu_name[cpu] = "Ingenic XBurst";
 		break;
 
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 03/15] MIPS: cpu-probe: Mark XBurst CPU as having vtagged caches
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 01/15] MIPS: configs: lb60: Fix defconfig not selecting correct board Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 02/15] MIPS: cpu-probe: Set Ingenic's writecombine to _CACHE_CACHABLE_WA Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 04/15] MIPS: cpu-probe: ingenic: Fix broken BUG_ON Paul Cercueil
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

XBurst CPUs present in Ingenic SoCs have virtually tagged caches,
according to the <cpu-features-override.h> header.

Add that information to cpu_probe_ingenic().

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2-v3: No change

 arch/mips/kernel/cpu-probe.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index a18f3611fa5e..a07e66a6e063 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -2125,6 +2125,9 @@ static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)
 	c->options &= ~MIPS_CPU_COUNTER;
 	BUG_ON(!__builtin_constant_p(cpu_has_counter) || cpu_has_counter);
 
+	/* XBurst has virtually tagged icache */
+	c->icache.flags |= MIPS_CACHE_VTAG;
+
 	switch (c->processor_id & PRID_IMP_MASK) {
 
 	/* XBurst®1 with MXU1.0/MXU1.1 SIMD ISA */
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 04/15] MIPS: cpu-probe: ingenic: Fix broken BUG_ON
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (2 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 03/15] MIPS: cpu-probe: Mark XBurst CPU as having vtagged caches Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 05/15] MIPS: Kconfig: add MIPS_GENERIC_KERNEL symbol Paul Cercueil
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

The previous code was doing:
BUG_ON(!__builtin_constant_p(cpu_has_counter) || cpu_has_counter);

This only worked as the "cpu_has_counter" macro was overridden in
<cpu-feature-overrides.h>. The default "cpu_has_counter" macro is
non-constant, which triggered the BUG_ON() independently of the value
returned by the macro.

What we want to check here, is that *if* the macro was overridden to a
compile-time constant, then must be defined to zero, otherwise it's a
bug.

So the correct check is:
BUG_ON(__builtin_constant_p(cpu_has_counter) && cpu_has_counter);

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2-v3: No change

 arch/mips/kernel/cpu-probe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index a07e66a6e063..6be23f205e74 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -2123,7 +2123,7 @@ static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)
 
 	/* XBurst does not implement the CP0 counter. */
 	c->options &= ~MIPS_CPU_COUNTER;
-	BUG_ON(!__builtin_constant_p(cpu_has_counter) || cpu_has_counter);
+	BUG_ON(__builtin_constant_p(cpu_has_counter) && cpu_has_counter);
 
 	/* XBurst has virtually tagged icache */
 	c->icache.flags |= MIPS_CACHE_VTAG;
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 05/15] MIPS: Kconfig: add MIPS_GENERIC_KERNEL symbol
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (3 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 04/15] MIPS: cpu-probe: ingenic: Fix broken BUG_ON Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 06/15] MIPS: generic: Allow boards to set system type Paul Cercueil
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

The MIPS_GENERIC symbol now won't select any other configuration option.
The MIPS_GENERIC_KERNEL will select all the options that the previous
MIPS_GENERIC option did select, and will select MIPS_GENERIC as well.

The whole point of this, is that it now becomes possible to compile a
kernel for a SoC supported by the arch/mips/generic/ code, without
making that kernel generic itself.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2-v3: No change

 arch/mips/Kconfig         | 8 ++++++--
 arch/mips/generic/Kconfig | 2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 5f4c2d43c073..0c9270ee9081 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -93,14 +93,18 @@ config MIPS
 config MIPS_FIXUP_BIGPHYS_ADDR
 	bool
 
+config MIPS_GENERIC
+	bool
+
 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
diff --git a/arch/mips/generic/Kconfig b/arch/mips/generic/Kconfig
index fd6019802657..5216c850b7e2 100644
--- a/arch/mips/generic/Kconfig
+++ b/arch/mips/generic/Kconfig
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-if MIPS_GENERIC
+if MIPS_GENERIC_KERNEL
 
 config LEGACY_BOARDS
 	bool
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 06/15] MIPS: generic: Allow boards to set system type
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (4 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 05/15] MIPS: Kconfig: add MIPS_GENERIC_KERNEL symbol Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-08 16:27   ` Philippe Mathieu-Daudé
  2020-09-06 19:29 ` [PATCH v3 07/15] MIPS: generic: Init command line with fw_init_cmdline() Paul Cercueil
                   ` (9 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

Check for the (already existing) "system_type" variable in the
get_system_type() function. If non-NULL, return it as the system type.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2: Instead of adding a .get_system_type callback to the mips_machine
    	struct, the boards now simply override the "system_type" variable
    	when they want to set a custom one.
    
    v3: No change

 arch/mips/generic/proc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/mips/generic/proc.c b/arch/mips/generic/proc.c
index 4c992809cc3f..cce2fde219a3 100644
--- a/arch/mips/generic/proc.c
+++ b/arch/mips/generic/proc.c
@@ -8,11 +8,16 @@
 
 #include <asm/bootinfo.h>
 
+char *system_type;
+
 const char *get_system_type(void)
 {
 	const char *str;
 	int err;
 
+	if (system_type)
+		return system_type;
+
 	err = of_property_read_string(of_root, "model", &str);
 	if (!err)
 		return str;
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 07/15] MIPS: generic: Init command line with fw_init_cmdline()
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (5 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 06/15] MIPS: generic: Allow boards to set system type Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB Paul Cercueil
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

The function bootcmdline_init() in arch/mips/kernel/setup.c will
populate the boot_command_line string using the parameters hardcoded in
the kernel, and those provided in the devicetree file. Then, it would
append the content of the arcs_cmdline variable, which is filled by the
board's plat_mem_setup() function.

The plat_mem_setup() function for the generic MIPS board would just copy
the current boot_command_line to arcs_cmdline, which is nonsense for two
reasons:
- the result will be appended to the boot_command_line anyway, so all it
  does is duplicate every single parameter on the command line;
- the code did not perform at all what it's supposed to, which is to
  retrieve the parameters passed by the bootloader.

Fix this by calling fw_init_cmdline() in plat_mem_setup(), which will
properly initialize arcs_cmdline to the parameters passed by the
bootloader.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2: New patch
    
    v3: No change

 arch/mips/generic/init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/mips/generic/init.c b/arch/mips/generic/init.c
index 805d0135a9f4..029f47ea390c 100644
--- a/arch/mips/generic/init.c
+++ b/arch/mips/generic/init.c
@@ -106,7 +106,7 @@ void __init plat_mem_setup(void)
 	if (mach && mach->fixup_fdt)
 		fdt = mach->fixup_fdt(fdt, mach_match_data);
 
-	strlcpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
+	fw_init_cmdline();
 	__dt_setup_arch((void *)fdt);
 }
 
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (6 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 07/15] MIPS: generic: Init command line with fw_init_cmdline() Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-07  7:54   ` Sergei Shtylyov
  2020-09-06 19:29 ` [PATCH v3 09/15] MIPS: generic: Add support for zboot Paul Cercueil
                   ` (7 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

The plat_get_fdt() checked that the kernel was booted using UHI before
reading the 'fw_passed_dtb' variable. However, this variable is also set
when the kernel has been appended, or when it has been built into the
kernel.

Support these usecases by removing the UHI check.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2-v3: No change

 arch/mips/generic/init.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/arch/mips/generic/init.c b/arch/mips/generic/init.c
index 029f47ea390c..66a19337d2ab 100644
--- a/arch/mips/generic/init.c
+++ b/arch/mips/generic/init.c
@@ -39,12 +39,11 @@ void __init *plat_get_fdt(void)
 		/* Already set up */
 		return (void *)fdt;
 
-	if ((fw_arg0 == -2) && !fdt_check_header((void *)fw_passed_dtb)) {
+	if (fw_passed_dtb && !fdt_check_header((void *)fw_passed_dtb)) {
 		/*
-		 * We booted using the UHI boot protocol, so we have been
-		 * provided with the appropriate device tree for the board.
-		 * Make use of it & search for any machine struct based upon
-		 * the root compatible string.
+		 * We have been provided with the appropriate device tree for
+		 * the board. Make use of it & search for any machine struct
+		 * based upon the root compatible string.
 		 */
 		fdt = (void *)fw_passed_dtb;
 
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 09/15] MIPS: generic: Add support for zboot
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (7 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 10/15] MIPS: generic: Increase NR_IRQS to 256 Paul Cercueil
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

There is no reason we can't create compressed kernels here, so select
the option SYS_SUPPORTS_ZBOOT.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2-v3: No change

 arch/mips/Kconfig          | 1 +
 arch/mips/generic/Platform | 1 +
 2 files changed, 2 insertions(+)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 0c9270ee9081..795b33ad4e64 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -141,6 +141,7 @@ config MIPS_GENERIC_KERNEL
 	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
diff --git a/arch/mips/generic/Platform b/arch/mips/generic/Platform
index 53c33cb72974..4cefecf7d14b 100644
--- a/arch/mips/generic/Platform
+++ b/arch/mips/generic/Platform
@@ -10,6 +10,7 @@
 
 cflags-$(CONFIG_MIPS_GENERIC)	+= -I$(srctree)/arch/mips/include/asm/mach-generic
 load-$(CONFIG_MIPS_GENERIC)	+= 0xffffffff80100000
+zload-$(CONFIG_MIPS_GENERIC)	+= 0xffffffff81000000
 all-$(CONFIG_MIPS_GENERIC)	:= vmlinux.gz.itb
 
 its-y					:= vmlinux.its.S
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 10/15] MIPS: generic: Increase NR_IRQS to 256
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (8 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 09/15] MIPS: generic: Add support for zboot Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-07 19:53   ` Thomas Bogendoerfer
  2020-09-06 19:29 ` [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs Paul Cercueil
                   ` (5 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

128 IRQs is not enough to support Ingenic SoCs.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2-v3: No change

 arch/mips/include/asm/mach-generic/irq.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/mips/include/asm/mach-generic/irq.h b/arch/mips/include/asm/mach-generic/irq.h
index 72ac2c202c55..079889ced4f3 100644
--- a/arch/mips/include/asm/mach-generic/irq.h
+++ b/arch/mips/include/asm/mach-generic/irq.h
@@ -9,7 +9,7 @@
 #define __ASM_MACH_GENERIC_IRQ_H
 
 #ifndef NR_IRQS
-#define NR_IRQS 128
+#define NR_IRQS 256
 #endif
 
 #ifdef CONFIG_I8259
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (9 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 10/15] MIPS: generic: Increase NR_IRQS to 256 Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-10-12 14:33   ` Guenter Roeck
  2020-09-06 19:29 ` [PATCH v3 12/15] MIPS: jz4740: Drop all obsolete files Paul Cercueil
                   ` (4 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

Add support for Ingenic SoCs in arch/mips/generic/.

The Kconfig changes are here to ensure that it is possible to compile
either a generic kernel that supports Ingenic SoCs, or a Ingenic-only
kernel, both using the same code base, to avoid duplicated code.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2: Rework the code around "system_type" to match the changes
    	done in the previous patches.
    
    v3: For Ingenic-only kernel builds, we will now also include
        arch/mips/include/mach-jz4740. That way, the
    	cpu-feature-overrides.h functionality is not lost.

 arch/mips/Kbuild.platforms        |   1 -
 arch/mips/Kconfig                 |  32 +++++----
 arch/mips/generic/Kconfig         |   6 ++
 arch/mips/generic/Makefile        |   1 +
 arch/mips/generic/Platform        |   3 +
 arch/mips/generic/board-ingenic.c | 108 ++++++++++++++++++++++++++++++
 arch/mips/jz4740/Kconfig          |  16 +++--
 7 files changed, 149 insertions(+), 18 deletions(-)
 create mode 100644 arch/mips/generic/board-ingenic.c

diff --git a/arch/mips/Kbuild.platforms b/arch/mips/Kbuild.platforms
index af336a274a7a..5483e38b5dc7 100644
--- a/arch/mips/Kbuild.platforms
+++ b/arch/mips/Kbuild.platforms
@@ -13,7 +13,6 @@ platform-$(CONFIG_MIPS_COBALT)		+= cobalt/
 platform-$(CONFIG_MACH_DECSTATION)	+= dec/
 platform-$(CONFIG_MIPS_GENERIC)		+= generic/
 platform-$(CONFIG_MACH_JAZZ)		+= jazz/
-platform-$(CONFIG_MACH_INGENIC)		+= jz4740/
 platform-$(CONFIG_LANTIQ)		+= lantiq/
 platform-$(CONFIG_MACH_LOONGSON2EF)	+= loongson2ef/
 platform-$(CONFIG_MACH_LOONGSON32)	+= loongson32/
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 795b33ad4e64..61e8d32eea1b 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -96,6 +96,23 @@ config MIPS_FIXUP_BIGPHYS_ADDR
 config MIPS_GENERIC
 	bool
 
+config MACH_INGENIC
+	bool
+	select SYS_SUPPORTS_32BIT_KERNEL
+	select SYS_SUPPORTS_LITTLE_ENDIAN
+	select SYS_SUPPORTS_ZBOOT
+	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
+	select CPU_SUPPORTS_CPUFREQ
+	select MIPS_EXTERNAL_TIMER
+
 menu "Machine selection"
 
 choice
@@ -394,20 +411,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"
diff --git a/arch/mips/generic/Kconfig b/arch/mips/generic/Kconfig
index 5216c850b7e2..55d9aed7ced9 100644
--- a/arch/mips/generic/Kconfig
+++ b/arch/mips/generic/Kconfig
@@ -73,6 +73,12 @@ config FIT_IMAGE_FDT_OCELOT
 	  from Microsemi in the FIT kernel image.
 	  This requires u-boot on the platform.
 
+config BOARD_INGENIC
+	bool "Support boards based on Ingenic SoCs"
+	select MACH_INGENIC_GENERIC
+	help
+	  Enable support for boards based on Ingenic SoCs.
+
 config VIRT_BOARD_RANCHU
 	bool "Support Ranchu platform for Android emulator"
 	help
diff --git a/arch/mips/generic/Makefile b/arch/mips/generic/Makefile
index 2384a6b09e4c..e37a59bae0a6 100644
--- a/arch/mips/generic/Makefile
+++ b/arch/mips/generic/Makefile
@@ -11,4 +11,5 @@ obj-y += proc.o
 obj-$(CONFIG_YAMON_DT_SHIM)		+= yamon-dt.o
 obj-$(CONFIG_LEGACY_BOARD_SEAD3)	+= board-sead3.o
 obj-$(CONFIG_LEGACY_BOARD_OCELOT)	+= board-ocelot.o
+obj-$(CONFIG_MACH_INGENIC)			+= board-ingenic.o
 obj-$(CONFIG_VIRT_BOARD_RANCHU)		+= board-ranchu.o
diff --git a/arch/mips/generic/Platform b/arch/mips/generic/Platform
index 4cefecf7d14b..7d511fc28a01 100644
--- a/arch/mips/generic/Platform
+++ b/arch/mips/generic/Platform
@@ -8,7 +8,10 @@
 # option) any later version.
 #
 
+# Note: order matters, keep the asm/mach-generic include last.
+cflags-$(CONFIG_MACH_INGENIC_SOC)	+= -I$(srctree)/arch/mips/include/asm/mach-jz4740
 cflags-$(CONFIG_MIPS_GENERIC)	+= -I$(srctree)/arch/mips/include/asm/mach-generic
+
 load-$(CONFIG_MIPS_GENERIC)	+= 0xffffffff80100000
 zload-$(CONFIG_MIPS_GENERIC)	+= 0xffffffff81000000
 all-$(CONFIG_MIPS_GENERIC)	:= vmlinux.gz.itb
diff --git a/arch/mips/generic/board-ingenic.c b/arch/mips/generic/board-ingenic.c
new file mode 100644
index 000000000000..0d7de8f9713d
--- /dev/null
+++ b/arch/mips/generic/board-ingenic.c
@@ -0,0 +1,108 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Support for Ingenic SoCs
+ *
+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
+ * Copyright (C) 2011, Maarten ter Huurne <maarten@treewalker.org>
+ * Copyright (C) 2020 Paul Cercueil <paul@crapouillou.net>
+ */
+
+#include <linux/of_address.h>
+#include <linux/of_fdt.h>
+#include <linux/pm.h>
+#include <linux/sizes.h>
+#include <linux/suspend.h>
+#include <linux/types.h>
+
+#include <asm/bootinfo.h>
+#include <asm/machine.h>
+#include <asm/reboot.h>
+
+static __init char *ingenic_get_system_type(unsigned long machtype)
+{
+	switch (machtype) {
+	case MACH_INGENIC_X1830:
+		return "X1830";
+	case MACH_INGENIC_X1000:
+		return "X1000";
+	case MACH_INGENIC_JZ4780:
+		return "JZ4780";
+	case MACH_INGENIC_JZ4770:
+		return "JZ4770";
+	case MACH_INGENIC_JZ4725B:
+		return "JZ4725B";
+	default:
+		return "JZ4740";
+	}
+}
+
+static __init const void *ingenic_fixup_fdt(const void *fdt, const void *match_data)
+{
+	/*
+	 * Old devicetree files for the qi,lb60 board did not have a /memory
+	 * node. Hardcode the memory info here.
+	 */
+	if (!fdt_node_check_compatible(fdt, 0, "qi,lb60") &&
+	    fdt_path_offset(fdt, "/memory") < 0)
+		early_init_dt_add_memory_arch(0, SZ_32M);
+
+	mips_machtype = (unsigned long)match_data;
+	system_type = ingenic_get_system_type(mips_machtype);
+
+	return fdt;
+}
+
+static const struct of_device_id ingenic_of_match[] __initconst = {
+	{ .compatible = "ingenic,jz4740", .data = (void *)MACH_INGENIC_JZ4740 },
+	{ .compatible = "ingenic,jz4725b", .data = (void *)MACH_INGENIC_JZ4725B },
+	{ .compatible = "ingenic,jz4770", .data = (void *)MACH_INGENIC_JZ4770 },
+	{ .compatible = "ingenic,jz4780", .data = (void *)MACH_INGENIC_JZ4780 },
+	{ .compatible = "ingenic,x1000", .data = (void *)MACH_INGENIC_X1000 },
+	{ .compatible = "ingenic,x1830", .data = (void *)MACH_INGENIC_X1830 },
+	{}
+};
+
+MIPS_MACHINE(ingenic) = {
+	.matches = ingenic_of_match,
+	.fixup_fdt = ingenic_fixup_fdt,
+};
+
+static void ingenic_wait_instr(void)
+{
+	__asm__(".set push;\n"
+		".set mips3;\n"
+		"wait;\n"
+		".set pop;\n"
+	);
+}
+
+static void ingenic_halt(void)
+{
+	for (;;)
+		ingenic_wait_instr();
+}
+
+static int __maybe_unused ingenic_pm_enter(suspend_state_t state)
+{
+	ingenic_wait_instr();
+
+	return 0;
+}
+
+static const struct platform_suspend_ops ingenic_pm_ops __maybe_unused = {
+	.valid = suspend_valid_only_mem,
+	.enter = ingenic_pm_enter,
+};
+
+static int __init ingenic_pm_init(void)
+{
+	if (boot_cpu_type() == CPU_XBURST) {
+		if (IS_ENABLED(CONFIG_PM_SLEEP))
+			suspend_set_ops(&ingenic_pm_ops);
+		_machine_halt = ingenic_halt;
+	}
+
+	return 0;
+
+}
+late_initcall(ingenic_pm_init);
diff --git a/arch/mips/jz4740/Kconfig b/arch/mips/jz4740/Kconfig
index c2a6fbf8e411..3238e16febd5 100644
--- a/arch/mips/jz4740/Kconfig
+++ b/arch/mips/jz4740/Kconfig
@@ -1,15 +1,21 @@
 # SPDX-License-Identifier: GPL-2.0
+
+config MACH_INGENIC_GENERIC
+	bool
+	select MACH_INGENIC
+	select MACH_JZ4740
+	select MACH_JZ4770
+	select MACH_JZ4780
+	select MACH_X1000
+
 choice
 	prompt "Machine type"
-	depends on MACH_INGENIC
+	depends on MACH_INGENIC_SOC
 	default INGENIC_GENERIC_BOARD
 
 config INGENIC_GENERIC_BOARD
 	bool "Generic board"
-	select MACH_JZ4740
-	select MACH_JZ4770
-	select MACH_JZ4780
-	select MACH_X1000
+	select MACH_INGENIC_GENERIC
 
 config JZ4740_QI_LB60
 	bool "Qi Hardware Ben NanoNote"
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 12/15] MIPS: jz4740: Drop all obsolete files
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (10 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 13/15] MIPS: jz4740: Rename jz4740 folders to ingenic Paul Cercueil
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

Support for Ingenic SoCs is now provided by the arch/mips/generic/ code,
so all files in the arch/mips/jz4740/ folder can dropped, except for the
Kconfig, and the cpu-feature-overrides.h header file.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2: No change
    
    v3: - Don't rename the folder to ingenic, it will be done in a follow-up patch.
        - Don't remove cpu-feature-overrides.h

 arch/mips/include/asm/mach-jz4740/irq.h |  13 ---
 arch/mips/jz4740/Makefile               |   9 --
 arch/mips/jz4740/Platform               |   3 -
 arch/mips/jz4740/setup.c                | 145 ------------------------
 4 files changed, 170 deletions(-)
 delete mode 100644 arch/mips/include/asm/mach-jz4740/irq.h
 delete mode 100644 arch/mips/jz4740/Makefile
 delete mode 100644 arch/mips/jz4740/Platform
 delete mode 100644 arch/mips/jz4740/setup.c

diff --git a/arch/mips/include/asm/mach-jz4740/irq.h b/arch/mips/include/asm/mach-jz4740/irq.h
deleted file mode 100644
index 27c543bd340f..000000000000
--- a/arch/mips/include/asm/mach-jz4740/irq.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- *  Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
- *  JZ4740 IRQ definitions
- */
-
-#ifndef __ASM_MACH_JZ4740_IRQ_H__
-#define __ASM_MACH_JZ4740_IRQ_H__
-
-#define MIPS_CPU_IRQ_BASE 0
-#define NR_IRQS 256
-
-#endif
diff --git a/arch/mips/jz4740/Makefile b/arch/mips/jz4740/Makefile
deleted file mode 100644
index f96c0f5eca44..000000000000
--- a/arch/mips/jz4740/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-#
-# Makefile for the Ingenic JZ4740.
-#
-
-# Object file lists.
-obj-y += setup.o
-
-CFLAGS_setup.o = -I$(src)/../../../scripts/dtc/libfdt
diff --git a/arch/mips/jz4740/Platform b/arch/mips/jz4740/Platform
deleted file mode 100644
index bd35d0621b13..000000000000
--- a/arch/mips/jz4740/Platform
+++ /dev/null
@@ -1,3 +0,0 @@
-cflags-$(CONFIG_MACH_INGENIC)	+= -I$(srctree)/arch/mips/include/asm/mach-jz4740
-load-$(CONFIG_MACH_INGENIC)	+= 0xffffffff80010000
-zload-$(CONFIG_MACH_INGENIC)	+= 0xffffffff81000000
diff --git a/arch/mips/jz4740/setup.c b/arch/mips/jz4740/setup.c
deleted file mode 100644
index 51d906325ce6..000000000000
--- a/arch/mips/jz4740/setup.c
+++ /dev/null
@@ -1,145 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- *  Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
- *  Copyright (C) 2011, Maarten ter Huurne <maarten@treewalker.org>
- *  JZ4740 setup code
- */
-
-#include <linux/clocksource.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/irqchip.h>
-#include <linux/kernel.h>
-#include <linux/libfdt.h>
-#include <linux/of_clk.h>
-#include <linux/of_fdt.h>
-#include <linux/pm.h>
-#include <linux/sizes.h>
-#include <linux/suspend.h>
-
-#include <asm/bootinfo.h>
-#include <asm/fw/fw.h>
-#include <asm/prom.h>
-#include <asm/reboot.h>
-#include <asm/time.h>
-
-static unsigned long __init get_board_mach_type(const void *fdt)
-{
-	if (!fdt_node_check_compatible(fdt, 0, "ingenic,x2000"))
-		return MACH_INGENIC_X2000;
-	if (!fdt_node_check_compatible(fdt, 0, "ingenic,x1830"))
-		return MACH_INGENIC_X1830;
-	if (!fdt_node_check_compatible(fdt, 0, "ingenic,x1000"))
-		return MACH_INGENIC_X1000;
-	if (!fdt_node_check_compatible(fdt, 0, "ingenic,jz4780"))
-		return MACH_INGENIC_JZ4780;
-	if (!fdt_node_check_compatible(fdt, 0, "ingenic,jz4770"))
-		return MACH_INGENIC_JZ4770;
-	if (!fdt_node_check_compatible(fdt, 0, "ingenic,jz4725b"))
-		return MACH_INGENIC_JZ4725B;
-
-	return MACH_INGENIC_JZ4740;
-}
-
-void __init plat_mem_setup(void)
-{
-	void *dtb = (void *)fw_passed_dtb;
-
-	__dt_setup_arch(dtb);
-
-	/*
-	 * Old devicetree files for the qi,lb60 board did not have a /memory
-	 * node. Hardcode the memory info here.
-	 */
-	if (!fdt_node_check_compatible(dtb, 0, "qi,lb60") &&
-	    fdt_path_offset(dtb, "/memory") < 0)
-		early_init_dt_add_memory_arch(0, SZ_32M);
-
-	mips_machtype = get_board_mach_type(dtb);
-}
-
-void __init device_tree_init(void)
-{
-	if (!initial_boot_params)
-		return;
-
-	unflatten_and_copy_device_tree();
-}
-
-const char *get_system_type(void)
-{
-	switch (mips_machtype) {
-	case MACH_INGENIC_X2000:
-		return "X2000";
-	case MACH_INGENIC_X1830:
-		return "X1830";
-	case MACH_INGENIC_X1000:
-		return "X1000";
-	case MACH_INGENIC_JZ4780:
-		return "JZ4780";
-	case MACH_INGENIC_JZ4770:
-		return "JZ4770";
-	case MACH_INGENIC_JZ4725B:
-		return "JZ4725B";
-	default:
-		return "JZ4740";
-	}
-}
-
-void __init arch_init_irq(void)
-{
-	irqchip_init();
-}
-
-void __init plat_time_init(void)
-{
-	of_clk_init(NULL);
-	timer_probe();
-}
-
-void __init prom_init(void)
-{
-	fw_init_cmdline();
-}
-
-void __init prom_free_prom_memory(void)
-{
-}
-
-static void jz4740_wait_instr(void)
-{
-	__asm__(".set push;\n"
-		".set mips3;\n"
-		"wait;\n"
-		".set pop;\n"
-	);
-}
-
-static void jz4740_halt(void)
-{
-	for (;;)
-		jz4740_wait_instr();
-}
-
-static int __maybe_unused jz4740_pm_enter(suspend_state_t state)
-{
-	jz4740_wait_instr();
-
-	return 0;
-}
-
-static const struct platform_suspend_ops jz4740_pm_ops __maybe_unused = {
-	.valid = suspend_valid_only_mem,
-	.enter = jz4740_pm_enter,
-};
-
-static int __init jz4740_pm_init(void)
-{
-	if (IS_ENABLED(CONFIG_PM_SLEEP))
-		suspend_set_ops(&jz4740_pm_ops);
-	_machine_halt = jz4740_halt;
-
-	return 0;
-
-}
-late_initcall(jz4740_pm_init);
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 13/15] MIPS: jz4740: Rename jz4740 folders to ingenic
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (11 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 12/15] MIPS: jz4740: Drop all obsolete files Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 14/15] MIPS: configs: Regenerate configs of Ingenic boards Paul Cercueil
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

Now that all the jz4740 platform code has been removed, and we're left
with only a Kconfig and the cpu-feature-overrides.h file, finalize the
cleanup process by renaming the jz4740 and include/mach-jz4740 folders
to ingenic and include/mach-ingenic.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v3: New patch

 arch/mips/Kconfig                                               | 2 +-
 arch/mips/generic/Platform                                      | 2 +-
 .../asm/{mach-jz4740 => mach-ingenic}/cpu-feature-overrides.h   | 0
 arch/mips/{jz4740 => ingenic}/Kconfig                           | 0
 4 files changed, 2 insertions(+), 2 deletions(-)
 rename arch/mips/include/asm/{mach-jz4740 => mach-ingenic}/cpu-feature-overrides.h (100%)
 rename arch/mips/{jz4740 => ingenic}/Kconfig (100%)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 61e8d32eea1b..0e2895423c80 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1024,8 +1024,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"
diff --git a/arch/mips/generic/Platform b/arch/mips/generic/Platform
index 7d511fc28a01..f8ef2f9d107e 100644
--- a/arch/mips/generic/Platform
+++ b/arch/mips/generic/Platform
@@ -9,7 +9,7 @@
 #
 
 # Note: order matters, keep the asm/mach-generic include last.
-cflags-$(CONFIG_MACH_INGENIC_SOC)	+= -I$(srctree)/arch/mips/include/asm/mach-jz4740
+cflags-$(CONFIG_MACH_INGENIC_SOC)	+= -I$(srctree)/arch/mips/include/asm/mach-ingenic
 cflags-$(CONFIG_MIPS_GENERIC)	+= -I$(srctree)/arch/mips/include/asm/mach-generic
 
 load-$(CONFIG_MIPS_GENERIC)	+= 0xffffffff80100000
diff --git a/arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h b/arch/mips/include/asm/mach-ingenic/cpu-feature-overrides.h
similarity index 100%
rename from arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h
rename to arch/mips/include/asm/mach-ingenic/cpu-feature-overrides.h
diff --git a/arch/mips/jz4740/Kconfig b/arch/mips/ingenic/Kconfig
similarity index 100%
rename from arch/mips/jz4740/Kconfig
rename to arch/mips/ingenic/Kconfig
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 14/15] MIPS: configs: Regenerate configs of Ingenic boards
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (12 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 13/15] MIPS: jz4740: Rename jz4740 folders to ingenic Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-06 19:29 ` [PATCH v3 15/15] MAINTAINERS: Update paths to Ingenic platform code Paul Cercueil
  2020-09-18 14:40 ` [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Thomas Bogendoerfer
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

For each board the MACH_INGENIC_SOC option was selected instead of
MACH_INGENIC. Nothing else was changed in the menuconfig.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2: Update cu1830-neo board config as well.
    
    v3: Adapt patch on top so that it applies on top of patch 1

 arch/mips/configs/ci20_defconfig       |  4 ++--
 arch/mips/configs/cu1000-neo_defconfig | 15 ++-------------
 arch/mips/configs/cu1830-neo_defconfig | 15 ++-------------
 arch/mips/configs/gcw0_defconfig       |  2 +-
 arch/mips/configs/qi_lb60_defconfig    |  6 ++----
 arch/mips/configs/rs90_defconfig       |  4 ++--
 6 files changed, 11 insertions(+), 35 deletions(-)

diff --git a/arch/mips/configs/ci20_defconfig b/arch/mips/configs/ci20_defconfig
index 0a46199fdc3f..052c5ad0f2b1 100644
--- a/arch/mips/configs/ci20_defconfig
+++ b/arch/mips/configs/ci20_defconfig
@@ -22,7 +22,7 @@ CONFIG_EMBEDDED=y
 # CONFIG_VM_EVENT_COUNTERS is not set
 # CONFIG_COMPAT_BRK is not set
 CONFIG_SLAB=y
-CONFIG_MACH_INGENIC=y
+CONFIG_MACH_INGENIC_SOC=y
 CONFIG_JZ4780_CI20=y
 CONFIG_HIGHMEM=y
 CONFIG_HZ_100=y
@@ -42,7 +42,7 @@ CONFIG_IP_PNP_DHCP=y
 # CONFIG_IPV6 is not set
 # CONFIG_WIRELESS is not set
 CONFIG_DEVTMPFS=y
-# CONFIG_FW_LOADER is not set
+CONFIG_FW_LOADER=m
 # CONFIG_ALLOW_DEV_COREDUMP is not set
 CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
diff --git a/arch/mips/configs/cu1000-neo_defconfig b/arch/mips/configs/cu1000-neo_defconfig
index e924c817f73d..55d0690a3ffe 100644
--- a/arch/mips/configs/cu1000-neo_defconfig
+++ b/arch/mips/configs/cu1000-neo_defconfig
@@ -1,5 +1,3 @@
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_KERNEL_GZIP=y
 CONFIG_SYSVIPC=y
 CONFIG_NO_HZ_IDLE=y
 CONFIG_HIGH_RES_TIMERS=y
@@ -9,7 +7,6 @@ CONFIG_IKCONFIG_PROC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_CGROUPS=y
 CONFIG_MEMCG=y
-CONFIG_MEMCG_KMEM=y
 CONFIG_CGROUP_SCHED=y
 CONFIG_CGROUP_FREEZER=y
 CONFIG_CGROUP_DEVICE=y
@@ -22,7 +19,7 @@ CONFIG_EMBEDDED=y
 # CONFIG_VM_EVENT_COUNTERS is not set
 # CONFIG_COMPAT_BRK is not set
 CONFIG_SLAB=y
-CONFIG_MACH_INGENIC=y
+CONFIG_MACH_INGENIC_SOC=y
 CONFIG_X1000_CU1000_NEO=y
 CONFIG_HIGHMEM=y
 CONFIG_HZ_100=y
@@ -31,7 +28,6 @@ CONFIG_HZ_100=y
 # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
 # CONFIG_COMPACTION is not set
 CONFIG_CMA=y
-CONFIG_CMA_AREAS=7
 CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
@@ -40,19 +36,16 @@ CONFIG_CFG80211=y
 CONFIG_UEVENT_HELPER=y
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_DEVTMPFS=y
-# CONFIG_FW_LOADER is not set
 # CONFIG_ALLOW_DEV_COREDUMP is not set
 CONFIG_NETDEVICES=y
 CONFIG_STMMAC_ETH=y
 CONFIG_SMSC_PHY=y
 CONFIG_BRCMFMAC=y
-# CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_KEYBOARD is not set
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_SERIO is not set
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_LEGACY_PTY_COUNT=2
-CONFIG_SERIAL_EARLYCON=y
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
 CONFIG_SERIAL_8250_NR_UARTS=3
@@ -66,8 +59,6 @@ CONFIG_GPIO_SYSFS=y
 CONFIG_SENSORS_ADS7828=y
 CONFIG_WATCHDOG=y
 CONFIG_JZ4740_WDT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
 # CONFIG_VGA_CONSOLE is not set
 # CONFIG_HID is not set
 # CONFIG_USB_SUPPORT is not set
@@ -82,8 +73,6 @@ CONFIG_RTC_DRV_JZ4740=y
 CONFIG_DMADEVICES=y
 CONFIG_DMA_JZ4780=y
 # CONFIG_IOMMU_SUPPORT is not set
-CONFIG_NVMEM=y
-CONFIG_NVMEM_SYSFS=y
 CONFIG_EXT4_FS=y
 # CONFIG_DNOTIFY is not set
 CONFIG_AUTOFS_FS=y
@@ -108,8 +97,8 @@ CONFIG_CONSOLE_LOGLEVEL_QUIET=15
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
 CONFIG_DEBUG_INFO=y
 CONFIG_STRIP_ASM_SYMS=y
-CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_FS=y
 CONFIG_PANIC_ON_OOPS=y
 CONFIG_PANIC_TIMEOUT=10
 # CONFIG_SCHED_DEBUG is not set
diff --git a/arch/mips/configs/cu1830-neo_defconfig b/arch/mips/configs/cu1830-neo_defconfig
index cbfb62900273..e7064851a47a 100644
--- a/arch/mips/configs/cu1830-neo_defconfig
+++ b/arch/mips/configs/cu1830-neo_defconfig
@@ -1,5 +1,3 @@
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_KERNEL_GZIP=y
 CONFIG_SYSVIPC=y
 CONFIG_NO_HZ_IDLE=y
 CONFIG_HIGH_RES_TIMERS=y
@@ -9,7 +7,6 @@ CONFIG_IKCONFIG_PROC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_CGROUPS=y
 CONFIG_MEMCG=y
-CONFIG_MEMCG_KMEM=y
 CONFIG_CGROUP_SCHED=y
 CONFIG_CGROUP_FREEZER=y
 CONFIG_CGROUP_DEVICE=y
@@ -22,7 +19,7 @@ CONFIG_EMBEDDED=y
 # CONFIG_VM_EVENT_COUNTERS is not set
 # CONFIG_COMPAT_BRK is not set
 CONFIG_SLAB=y
-CONFIG_MACH_INGENIC=y
+CONFIG_MACH_INGENIC_SOC=y
 CONFIG_X1830_CU1830_NEO=y
 CONFIG_HIGHMEM=y
 CONFIG_HZ_100=y
@@ -31,7 +28,6 @@ CONFIG_HZ_100=y
 # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
 # CONFIG_COMPACTION is not set
 CONFIG_CMA=y
-CONFIG_CMA_AREAS=7
 CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
@@ -40,7 +36,6 @@ CONFIG_CFG80211=y
 CONFIG_UEVENT_HELPER=y
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_DEVTMPFS=y
-# CONFIG_FW_LOADER is not set
 # CONFIG_ALLOW_DEV_COREDUMP is not set
 CONFIG_MD=y
 CONFIG_BLK_DEV_MD=y
@@ -49,13 +44,11 @@ CONFIG_NETDEVICES=y
 CONFIG_STMMAC_ETH=y
 CONFIG_ICPLUS_PHY=y
 CONFIG_BRCMFMAC=y
-# CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_KEYBOARD is not set
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_SERIO is not set
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_LEGACY_PTY_COUNT=2
-CONFIG_SERIAL_EARLYCON=y
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
 CONFIG_SERIAL_8250_NR_UARTS=2
@@ -69,8 +62,6 @@ CONFIG_GPIO_SYSFS=y
 CONFIG_SENSORS_ADS7828=y
 CONFIG_WATCHDOG=y
 CONFIG_JZ4740_WDT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
 # CONFIG_VGA_CONSOLE is not set
 # CONFIG_HID is not set
 # CONFIG_USB_SUPPORT is not set
@@ -85,8 +76,6 @@ CONFIG_RTC_DRV_JZ4740=y
 CONFIG_DMADEVICES=y
 CONFIG_DMA_JZ4780=y
 # CONFIG_IOMMU_SUPPORT is not set
-CONFIG_NVMEM=y
-CONFIG_NVMEM_SYSFS=y
 CONFIG_EXT4_FS=y
 # CONFIG_DNOTIFY is not set
 CONFIG_AUTOFS_FS=y
@@ -111,8 +100,8 @@ CONFIG_CONSOLE_LOGLEVEL_QUIET=15
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
 CONFIG_DEBUG_INFO=y
 CONFIG_STRIP_ASM_SYMS=y
-CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_FS=y
 CONFIG_PANIC_ON_OOPS=y
 CONFIG_PANIC_TIMEOUT=10
 # CONFIG_SCHED_DEBUG is not set
diff --git a/arch/mips/configs/gcw0_defconfig b/arch/mips/configs/gcw0_defconfig
index 4994749b9eaa..7e28a4fe9d84 100644
--- a/arch/mips/configs/gcw0_defconfig
+++ b/arch/mips/configs/gcw0_defconfig
@@ -4,7 +4,7 @@ CONFIG_HIGH_RES_TIMERS=y
 CONFIG_PREEMPT_VOLUNTARY=y
 CONFIG_EMBEDDED=y
 CONFIG_PROFILING=y
-CONFIG_MACH_INGENIC=y
+CONFIG_MACH_INGENIC_SOC=y
 CONFIG_JZ4770_GCW0=y
 CONFIG_HIGHMEM=y
 # CONFIG_SECCOMP is not set
diff --git a/arch/mips/configs/qi_lb60_defconfig b/arch/mips/configs/qi_lb60_defconfig
index 9c2c183085d1..b4448d0876d5 100644
--- a/arch/mips/configs/qi_lb60_defconfig
+++ b/arch/mips/configs/qi_lb60_defconfig
@@ -7,7 +7,7 @@ CONFIG_EMBEDDED=y
 # CONFIG_VM_EVENT_COUNTERS is not set
 # CONFIG_COMPAT_BRK is not set
 CONFIG_SLAB=y
-CONFIG_MACH_INGENIC=y
+CONFIG_MACH_INGENIC_SOC=y
 CONFIG_JZ4740_QI_LB60=y
 CONFIG_HZ_100=y
 # CONFIG_SECCOMP is not set
@@ -73,9 +73,7 @@ CONFIG_DRM=y
 CONFIG_DRM_FBDEV_OVERALLOC=200
 CONFIG_DRM_PANEL_SIMPLE=y
 CONFIG_DRM_INGENIC=y
-# CONFIG_LCD_CLASS_DEVICE is not set
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_GENERIC is not set
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_LOGO=y
@@ -171,9 +169,9 @@ CONFIG_PRINTK_TIME=y
 CONFIG_DEBUG_INFO=y
 CONFIG_STRIP_ASM_SYMS=y
 CONFIG_READABLE_ASM=y
+CONFIG_KGDB=y
 CONFIG_DEBUG_KMEMLEAK=y
 CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DEBUG_STACKOVERFLOW=y
 CONFIG_PANIC_ON_OOPS=y
 # CONFIG_FTRACE is not set
-CONFIG_KGDB=y
diff --git a/arch/mips/configs/rs90_defconfig b/arch/mips/configs/rs90_defconfig
index de6752051ecc..dfbb9fed9a42 100644
--- a/arch/mips/configs/rs90_defconfig
+++ b/arch/mips/configs/rs90_defconfig
@@ -19,7 +19,7 @@ CONFIG_EMBEDDED=y
 # CONFIG_PERF_EVENTS is not set
 CONFIG_SLAB=y
 CONFIG_PROFILING=y
-CONFIG_MACH_INGENIC=y
+CONFIG_MACH_INGENIC_SOC=y
 CONFIG_JZ4740_RS90=y
 CONFIG_PAGE_SIZE_16KB=y
 CONFIG_HZ_100=y
@@ -80,8 +80,8 @@ CONFIG_KEYBOARD_GPIO=y
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_SERIO is not set
 CONFIG_LEGACY_PTY_COUNT=2
-# CONFIG_DEVMEM is not set
 # CONFIG_HW_RANDOM is not set
+# CONFIG_DEVMEM is not set
 # CONFIG_I2C_COMPAT is not set
 # CONFIG_I2C_HELPER_AUTO is not set
 CONFIG_POWER_SUPPLY=y
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v3 15/15] MAINTAINERS: Update paths to Ingenic platform code
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (13 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 14/15] MIPS: configs: Regenerate configs of Ingenic boards Paul Cercueil
@ 2020-09-06 19:29 ` Paul Cercueil
  2020-09-18 14:40 ` [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Thomas Bogendoerfer
  15 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-06 19:29 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips, Paul Cercueil

Support for Ingenic chips has been moved to the generic MIPS platform.
Update the paths accordingly.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---

Notes:
    v2: No change
    
    v3: Add arch/mips/include/asm/mach-ingenic/ path too

 MAINTAINERS | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index deaafb617361..52ce4a1beede 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8595,8 +8595,9 @@ INGENIC JZ47xx SoCs
 M:	Paul Cercueil <paul@crapouillou.net>
 S:	Maintained
 F:	arch/mips/boot/dts/ingenic/
-F:	arch/mips/include/asm/mach-jz4740/
-F:	arch/mips/jz4740/
+F:	arch/mips/generic/board-ingenic.c
+F:	arch/mips/include/asm/mach-ingenic/
+F:	arch/mips/ingenic/Kconfig
 F:	drivers/clk/ingenic/
 F:	drivers/dma/dma-jz4780.c
 F:	drivers/gpu/drm/ingenic/
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB
  2020-09-06 19:29 ` [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB Paul Cercueil
@ 2020-09-07  7:54   ` Sergei Shtylyov
  2020-09-07 12:39     ` Paul Cercueil
  0 siblings, 1 reply; 27+ messages in thread
From: Sergei Shtylyov @ 2020-09-07  7:54 UTC (permalink / raw)
  To: Paul Cercueil, Thomas Bogendoerfer
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips

On 06.09.2020 22:29, Paul Cercueil wrote:

> The plat_get_fdt() checked that the kernel was booted using UHI before
> reading the 'fw_passed_dtb' variable. However, this variable is also set
> when the kernel has been appended, or when it has been built into the

    You haven't fixed s/kernel/DT/ here... :-/

> kernel.
> 
> Support these usecases by removing the UHI check.
> 
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
[...]

MBR, Sergei

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB
  2020-09-07  7:54   ` Sergei Shtylyov
@ 2020-09-07 12:39     ` Paul Cercueil
  0 siblings, 0 replies; 27+ messages in thread
From: Paul Cercueil @ 2020-09-07 12:39 UTC (permalink / raw)
  To: Sergei Shtylyov
  Cc: Thomas Bogendoerfer, Maciej W . Rozycki, Paul Burton,
	Zhou Yanjie, od, linux-kernel, linux-mips



Le lun. 7 sept. 2020 à 10:54, Sergei Shtylyov 
<sergei.shtylyov@gmail.com> a écrit :
> On 06.09.2020 22:29, Paul Cercueil wrote:
> 
>> The plat_get_fdt() checked that the kernel was booted using UHI 
>> before
>> reading the 'fw_passed_dtb' variable. However, this variable is also 
>> set
>> when the kernel has been appended, or when it has been built into the
> 
>    You haven't fixed s/kernel/DT/ here... :-/

Dammit. Sorry about that.

-Paul

> 
>> kernel.
>> 
>> Support these usecases by removing the UHI check.
>> 
>> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> [...]
> 
> MBR, Sergei



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 10/15] MIPS: generic: Increase NR_IRQS to 256
  2020-09-06 19:29 ` [PATCH v3 10/15] MIPS: generic: Increase NR_IRQS to 256 Paul Cercueil
@ 2020-09-07 19:53   ` Thomas Bogendoerfer
  0 siblings, 0 replies; 27+ messages in thread
From: Thomas Bogendoerfer @ 2020-09-07 19:53 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips

On Sun, Sep 06, 2020 at 09:29:30PM +0200, Paul Cercueil wrote:
> 128 IRQs is not enough to support Ingenic SoCs.
> 
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> ---
> 
> Notes:
>     v2-v3: No change
> 
>  arch/mips/include/asm/mach-generic/irq.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/mips/include/asm/mach-generic/irq.h b/arch/mips/include/asm/mach-generic/irq.h
> index 72ac2c202c55..079889ced4f3 100644
> --- a/arch/mips/include/asm/mach-generic/irq.h
> +++ b/arch/mips/include/asm/mach-generic/irq.h
> @@ -9,7 +9,7 @@
>  #define __ASM_MACH_GENERIC_IRQ_H
>  
>  #ifndef NR_IRQS
> -#define NR_IRQS 128
> +#define NR_IRQS 256
>  #endif

this will increase NR_IRQS for all platforms, which don't override
NR_IRQS in their mach-XXX directory. Size of the data segment increases
by 18464 bytes for a 32bit kernel and 33792 for a 64bit kernel. I would
take this change as this allows to remove a few more mach-*/irq.h files.
And if a platform needs save every byte it finds, we can add a irq.h file
for that. An even nicer way would be to make NR_IRQS selectable via Kconfig.
Something like "select NR_IRQS 51" would be quite handy for that...

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 06/15] MIPS: generic: Allow boards to set system type
  2020-09-06 19:29 ` [PATCH v3 06/15] MIPS: generic: Allow boards to set system type Paul Cercueil
@ 2020-09-08 16:27   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-09-08 16:27 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Thomas Bogendoerfer, Maciej W . Rozycki, Paul Burton,
	Zhou Yanjie, od, open list, open list:BROADCOM NVRAM DRIVER

On Sun, Sep 6, 2020 at 9:31 PM Paul Cercueil <paul@crapouillou.net> wrote:
>
> Check for the (already existing) "system_type" variable in the
> get_system_type() function. If non-NULL, return it as the system type.

Nitpick: It is not already "existing", simply declared in asm/bootinfo.h.

>
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> ---
>
> Notes:
>     v2: Instead of adding a .get_system_type callback to the mips_machine
>         struct, the boards now simply override the "system_type" variable
>         when they want to set a custom one.
>
>     v3: No change
>
>  arch/mips/generic/proc.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/arch/mips/generic/proc.c b/arch/mips/generic/proc.c
> index 4c992809cc3f..cce2fde219a3 100644
> --- a/arch/mips/generic/proc.c
> +++ b/arch/mips/generic/proc.c
> @@ -8,11 +8,16 @@
>
>  #include <asm/bootinfo.h>
>
> +char *system_type;
> +
>  const char *get_system_type(void)
>  {
>         const char *str;
>         int err;
>
> +       if (system_type)
> +               return system_type;
> +
>         err = of_property_read_string(of_root, "model", &str);
>         if (!err)
>                 return str;
> --
> 2.28.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3
  2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
                   ` (14 preceding siblings ...)
  2020-09-06 19:29 ` [PATCH v3 15/15] MAINTAINERS: Update paths to Ingenic platform code Paul Cercueil
@ 2020-09-18 14:40 ` Thomas Bogendoerfer
  15 siblings, 0 replies; 27+ messages in thread
From: Thomas Bogendoerfer @ 2020-09-18 14:40 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od, linux-kernel,
	linux-mips

On Sun, Sep 06, 2020 at 09:29:20PM +0200, Paul Cercueil wrote:
> Hi Thomas, list,
> 
> Here's a V3 of my patchset that updates the old jz4740 platform code to
> work with the generic MIPS board code base.
> 
> Noteworthy changes since V2:
> - Patch [01/15] is a fix to the LB60's defconfig, which expected a
>   symbol to be the default value of an enum, but the default changed in
>   kernel 5.7.
> 
> - Patch [11/15] has been modified to address the issue with
>   cpu-feature-overrides.h being dropped. Now, The Ingenic-specific
>   version of the file will be used when building a Ingenic-only kernel,
>   otherwise the generic dummy one will be used.
> 
> - Patch [13/15] is new, instead of doing code removal + rename in one
>   patch in v2, we now do code removal in patch [12/15] and rename in
>   [13/15]. It makes more sense to split since we have more files/folders
>   (as we keep the cpu-feature-overrides.h header around).
> 
> Cheers,
> -Paul
> 
> Paul Cercueil (15):
>   MIPS: configs: lb60: Fix defconfig not selecting correct board
>   MIPS: cpu-probe: Set Ingenic's writecombine to _CACHE_CACHABLE_WA
>   MIPS: cpu-probe: Mark XBurst CPU as having vtagged caches
>   MIPS: cpu-probe: ingenic: Fix broken BUG_ON
>   MIPS: Kconfig: add MIPS_GENERIC_KERNEL symbol
>   MIPS: generic: Allow boards to set system type
>   MIPS: generic: Init command line with fw_init_cmdline()
>   MIPS: generic: Support booting with built-in or appended DTB
>   MIPS: generic: Add support for zboot
>   MIPS: generic: Increase NR_IRQS to 256
>   MIPS: generic: Add support for Ingenic SoCs
>   MIPS: jz4740: Drop all obsolete files
>   MIPS: jz4740: Rename jz4740 folders to ingenic
>   MIPS: configs: Regenerate configs of Ingenic boards
>   MAINTAINERS: Update paths to Ingenic platform code
> 
>  MAINTAINERS                                   |   5 +-
>  arch/mips/Kbuild.platforms                    |   1 -
>  arch/mips/Kconfig                             |  43 ++++--
>  arch/mips/configs/ci20_defconfig              |   4 +-
>  arch/mips/configs/cu1000-neo_defconfig        |  15 +-
>  arch/mips/configs/cu1830-neo_defconfig        |  15 +-
>  arch/mips/configs/gcw0_defconfig              |   2 +-
>  arch/mips/configs/qi_lb60_defconfig           |   7 +-
>  arch/mips/configs/rs90_defconfig              |   4 +-
>  arch/mips/generic/Kconfig                     |   8 +-
>  arch/mips/generic/Makefile                    |   1 +
>  arch/mips/generic/Platform                    |   4 +
>  arch/mips/generic/board-ingenic.c             | 108 +++++++++++++
>  arch/mips/generic/init.c                      |  11 +-
>  arch/mips/generic/proc.c                      |   5 +
>  arch/mips/include/asm/mach-generic/irq.h      |   2 +-
>  .../cpu-feature-overrides.h                   |   0
>  arch/mips/include/asm/mach-jz4740/irq.h       |  13 --
>  arch/mips/include/asm/pgtable-bits.h          |   5 -
>  arch/mips/{jz4740 => ingenic}/Kconfig         |  16 +-
>  arch/mips/jz4740/Makefile                     |   9 --
>  arch/mips/jz4740/Platform                     |   3 -
>  arch/mips/jz4740/setup.c                      | 145 ------------------
>  arch/mips/kernel/cpu-probe.c                  |   8 +-
>  24 files changed, 191 insertions(+), 243 deletions(-)
>  create mode 100644 arch/mips/generic/board-ingenic.c
>  rename arch/mips/include/asm/{mach-jz4740 => mach-ingenic}/cpu-feature-overrides.h (100%)
>  delete mode 100644 arch/mips/include/asm/mach-jz4740/irq.h
>  rename arch/mips/{jz4740 => ingenic}/Kconfig (91%)
>  delete mode 100644 arch/mips/jz4740/Makefile
>  delete mode 100644 arch/mips/jz4740/Platform
>  delete mode 100644 arch/mips/jz4740/setup.c

series applied to mips-next.

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs
  2020-09-06 19:29 ` [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs Paul Cercueil
@ 2020-10-12 14:33   ` Guenter Roeck
  2020-10-12 14:59     ` Paul Cercueil
  2020-10-12 19:27     ` [PATCH] MIPS: ingenic: Remove CPU_SUPPORTS_HUGEPAGES Paul Cercueil
  0 siblings, 2 replies; 27+ messages in thread
From: Guenter Roeck @ 2020-10-12 14:33 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Thomas Bogendoerfer, Maciej W . Rozycki, Paul Burton,
	Zhou Yanjie, od, linux-kernel, linux-mips

On Sun, Sep 06, 2020 at 09:29:31PM +0200, Paul Cercueil wrote:
> Add support for Ingenic SoCs in arch/mips/generic/.
> 
> The Kconfig changes are here to ensure that it is possible to compile
> either a generic kernel that supports Ingenic SoCs, or a Ingenic-only
> kernel, both using the same code base, to avoid duplicated code.
> 
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>

This patch results in the following build error (mips:allmodconfig).

In file included from <command-line>:
arch/mips/mm/init.c: In function 'mem_init':
include/linux/compiler_types.h:319:38: error: call to '__compiletime_assert_331'
	declared with attribute error: BUILD_BUG_ON failed:
		IS_ENABLED(CONFIG_32BIT) && (_PFN_SHIFT > PAGE_SHIFT)

Bisect log attached.

Guenter

---
# bad: [d67bc7812221606e1886620a357b13f906814af7] Add linux-next specific files for 20201009
# good: [549738f15da0e5a00275977623be199fbbf7df50] Linux 5.9-rc8
git bisect start 'HEAD' 'v5.9-rc8'
# bad: [b71be15b496cc71a3434a198fc1a1b9e08af6c57] Merge remote-tracking branch 'bpf-next/master' into master
git bisect bad b71be15b496cc71a3434a198fc1a1b9e08af6c57
# bad: [6be11f939f380ef14bc94242cb0262197ce2a054] Merge remote-tracking branch 'i2c/i2c/for-next' into master
git bisect bad 6be11f939f380ef14bc94242cb0262197ce2a054
# good: [c03a115d8ad8a87b6d275c3c91c13bc111217bf6] Merge remote-tracking branch 'samsung-krzk/for-next' into master
git bisect good c03a115d8ad8a87b6d275c3c91c13bc111217bf6
# bad: [bdd0ef71b0d7d6a8f1d59af57dc73d19ddc26ad0] Merge remote-tracking branch 'f2fs/dev' into master
git bisect bad bdd0ef71b0d7d6a8f1d59af57dc73d19ddc26ad0
# bad: [0c4bd40a7ccd06122c1942f525b714abcd9efe36] Merge remote-tracking branch 'powerpc/next' into master
git bisect bad 0c4bd40a7ccd06122c1942f525b714abcd9efe36
# bad: [744d2c114d58c11fd76d572021d7ef3c55a1a225] Merge remote-tracking branch 'nds32/next' into master
git bisect bad 744d2c114d58c11fd76d572021d7ef3c55a1a225
# good: [1e9f9330cea616f9f2baf8144f049e4b405715dd] Merge remote-tracking branch 'csky/linux-next' into master
git bisect good 1e9f9330cea616f9f2baf8144f049e4b405715dd
# bad: [b350041e6f23a71f63f1eee6d939c846838e7e25] MIPS: alchemy: remove unused ALCHEMY_GPIOINT_AU1000
git bisect bad b350041e6f23a71f63f1eee6d939c846838e7e25
# good: [43df4eb2fc9511e09c66252c3fec4f8933a77c73] MIPS: Replace SIBYTE_1956_WAR by CONFIG_SB1_PASS_2_WORKAROUNDS
git bisect good 43df4eb2fc9511e09c66252c3fec4f8933a77c73
# good: [13a0ea28e8c698cc0d600fdeed8da3e4d478b97e] MIPS: generic: Init command line with fw_init_cmdline()
git bisect good 13a0ea28e8c698cc0d600fdeed8da3e4d478b97e
# bad: [d41afc398fbc9dfb8c40b951e97a7f0283346c6a] MAINTAINERS: Update paths to Ingenic platform code
git bisect bad d41afc398fbc9dfb8c40b951e97a7f0283346c6a
# bad: [f0f4a753079c636d5d43a102edbde0dad1e7de51] MIPS: generic: Add support for Ingenic SoCs
git bisect bad f0f4a753079c636d5d43a102edbde0dad1e7de51
# good: [c3e2ee657418f4f2bff1269c0550f8135ed0c927] MIPS: generic: Add support for zboot
git bisect good c3e2ee657418f4f2bff1269c0550f8135ed0c927
# good: [02bd530f888c6d6ba4995c3afcd10f87c136f173] MIPS: generic: Increase NR_IRQS to 256
git bisect good 02bd530f888c6d6ba4995c3afcd10f87c136f173
# first bad commit: [f0f4a753079c636d5d43a102edbde0dad1e7de51] MIPS: generic: Add support for Ingenic SoCs

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs
  2020-10-12 14:33   ` Guenter Roeck
@ 2020-10-12 14:59     ` Paul Cercueil
  2020-10-12 18:26       ` Guenter Roeck
  2020-10-12 19:27     ` [PATCH] MIPS: ingenic: Remove CPU_SUPPORTS_HUGEPAGES Paul Cercueil
  1 sibling, 1 reply; 27+ messages in thread
From: Paul Cercueil @ 2020-10-12 14:59 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Thomas Bogendoerfer, Maciej W . Rozycki, Paul Burton,
	Zhou Yanjie, od, linux-kernel, linux-mips

Hi Guenter,

Le lun. 12 oct. 2020 à 7:33, Guenter Roeck <linux@roeck-us.net> a 
écrit :
> On Sun, Sep 06, 2020 at 09:29:31PM +0200, Paul Cercueil wrote:
>>  Add support for Ingenic SoCs in arch/mips/generic/.
>> 
>>  The Kconfig changes are here to ensure that it is possible to 
>> compile
>>  either a generic kernel that supports Ingenic SoCs, or a 
>> Ingenic-only
>>  kernel, both using the same code base, to avoid duplicated code.
>> 
>>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> 
> This patch results in the following build error (mips:allmodconfig).
> 
> In file included from <command-line>:
> arch/mips/mm/init.c: In function 'mem_init':
> include/linux/compiler_types.h:319:38: error: call to 
> '__compiletime_assert_331'
> 	declared with attribute error: BUILD_BUG_ON failed:
> 		IS_ENABLED(CONFIG_32BIT) && (_PFN_SHIFT > PAGE_SHIFT)
> 
> Bisect log attached.

This doesn't seem to be something that was added with this patch. This 
COMPILE_BUG_ON() has been here for quite some time... I'm not sure why 
it triggers now.

The mips:allmodconfig works here as long as I switch to 
CPU_LITTLE_ENDIAN (no big-endian compiler). But I'm at a different 
HEAD, and I can't find commit d67bc7812221606e1886620a357b13f906814af7 
anywhere, in which repo is that found?

Cheers,
-Paul

> ---
> # bad: [d67bc7812221606e1886620a357b13f906814af7] Add linux-next 
> specific files for 20201009
> # good: [549738f15da0e5a00275977623be199fbbf7df50] Linux 5.9-rc8
> git bisect start 'HEAD' 'v5.9-rc8'
> # bad: [b71be15b496cc71a3434a198fc1a1b9e08af6c57] Merge 
> remote-tracking branch 'bpf-next/master' into master
> git bisect bad b71be15b496cc71a3434a198fc1a1b9e08af6c57
> # bad: [6be11f939f380ef14bc94242cb0262197ce2a054] Merge 
> remote-tracking branch 'i2c/i2c/for-next' into master
> git bisect bad 6be11f939f380ef14bc94242cb0262197ce2a054
> # good: [c03a115d8ad8a87b6d275c3c91c13bc111217bf6] Merge 
> remote-tracking branch 'samsung-krzk/for-next' into master
> git bisect good c03a115d8ad8a87b6d275c3c91c13bc111217bf6
> # bad: [bdd0ef71b0d7d6a8f1d59af57dc73d19ddc26ad0] Merge 
> remote-tracking branch 'f2fs/dev' into master
> git bisect bad bdd0ef71b0d7d6a8f1d59af57dc73d19ddc26ad0
> # bad: [0c4bd40a7ccd06122c1942f525b714abcd9efe36] Merge 
> remote-tracking branch 'powerpc/next' into master
> git bisect bad 0c4bd40a7ccd06122c1942f525b714abcd9efe36
> # bad: [744d2c114d58c11fd76d572021d7ef3c55a1a225] Merge 
> remote-tracking branch 'nds32/next' into master
> git bisect bad 744d2c114d58c11fd76d572021d7ef3c55a1a225
> # good: [1e9f9330cea616f9f2baf8144f049e4b405715dd] Merge 
> remote-tracking branch 'csky/linux-next' into master
> git bisect good 1e9f9330cea616f9f2baf8144f049e4b405715dd
> # bad: [b350041e6f23a71f63f1eee6d939c846838e7e25] MIPS: alchemy: 
> remove unused ALCHEMY_GPIOINT_AU1000
> git bisect bad b350041e6f23a71f63f1eee6d939c846838e7e25
> # good: [43df4eb2fc9511e09c66252c3fec4f8933a77c73] MIPS: Replace 
> SIBYTE_1956_WAR by CONFIG_SB1_PASS_2_WORKAROUNDS
> git bisect good 43df4eb2fc9511e09c66252c3fec4f8933a77c73
> # good: [13a0ea28e8c698cc0d600fdeed8da3e4d478b97e] MIPS: generic: 
> Init command line with fw_init_cmdline()
> git bisect good 13a0ea28e8c698cc0d600fdeed8da3e4d478b97e
> # bad: [d41afc398fbc9dfb8c40b951e97a7f0283346c6a] MAINTAINERS: Update 
> paths to Ingenic platform code
> git bisect bad d41afc398fbc9dfb8c40b951e97a7f0283346c6a
> # bad: [f0f4a753079c636d5d43a102edbde0dad1e7de51] MIPS: generic: Add 
> support for Ingenic SoCs
> git bisect bad f0f4a753079c636d5d43a102edbde0dad1e7de51
> # good: [c3e2ee657418f4f2bff1269c0550f8135ed0c927] MIPS: generic: Add 
> support for zboot
> git bisect good c3e2ee657418f4f2bff1269c0550f8135ed0c927
> # good: [02bd530f888c6d6ba4995c3afcd10f87c136f173] MIPS: generic: 
> Increase NR_IRQS to 256
> git bisect good 02bd530f888c6d6ba4995c3afcd10f87c136f173
> # first bad commit: [f0f4a753079c636d5d43a102edbde0dad1e7de51] MIPS: 
> generic: Add support for Ingenic SoCs



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs
  2020-10-12 14:59     ` Paul Cercueil
@ 2020-10-12 18:26       ` Guenter Roeck
  0 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2020-10-12 18:26 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Thomas Bogendoerfer, Maciej W . Rozycki, Paul Burton,
	Zhou Yanjie, od, linux-kernel, linux-mips

On Mon, Oct 12, 2020 at 04:59:01PM +0200, Paul Cercueil wrote:
> Hi Guenter,
> 
> Le lun. 12 oct. 2020 à 7:33, Guenter Roeck <linux@roeck-us.net> a écrit :
> > On Sun, Sep 06, 2020 at 09:29:31PM +0200, Paul Cercueil wrote:
> > >  Add support for Ingenic SoCs in arch/mips/generic/.
> > > 
> > >  The Kconfig changes are here to ensure that it is possible to
> > > compile
> > >  either a generic kernel that supports Ingenic SoCs, or a
> > > Ingenic-only
> > >  kernel, both using the same code base, to avoid duplicated code.
> > > 
> > >  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> > 
> > This patch results in the following build error (mips:allmodconfig).
> > 
> > In file included from <command-line>:
> > arch/mips/mm/init.c: In function 'mem_init':
> > include/linux/compiler_types.h:319:38: error: call to
> > '__compiletime_assert_331'
> > 	declared with attribute error: BUILD_BUG_ON failed:
> > 		IS_ENABLED(CONFIG_32BIT) && (_PFN_SHIFT > PAGE_SHIFT)
> > 
> > Bisect log attached.
> 
> This doesn't seem to be something that was added with this patch. This
> COMPILE_BUG_ON() has been here for quite some time... I'm not sure why it
> triggers now.
> 
Reverting the offending patch from next-20201009 fixes the problem
(after fixing a context conflict).

> The mips:allmodconfig works here as long as I switch to CPU_LITTLE_ENDIAN
> (no big-endian compiler). But I'm at a different HEAD, and I can't find
> commit d67bc7812221606e1886620a357b13f906814af7 anywhere, in which repo is
> that found?
> 

d67bc7812221606e1886620a357b13f906814af7 is the tip of next-20201009.

The key difference is that the code in linux-next sets
CONFIG_CPU_SUPPORTS_HUGEPAGES=y and enables CONFIG_MIPS_HUGE_TLB_SUPPORT.
This was not previously the case, and was added/enabled with your patch.
As result, _CACHE_SHIFT and with it _PFN_SHIFT is one larger than in
mainline, which seems sufficient to trigger the problem.

Underlying change is that CONFIG_MACH_INGENIC was not set with
mips:allmodconfig prior to your patch, but it is now set.

Guenter

> Cheers,
> -Paul
> 
> > ---
> > # bad: [d67bc7812221606e1886620a357b13f906814af7] Add linux-next
> > specific files for 20201009
> > # good: [549738f15da0e5a00275977623be199fbbf7df50] Linux 5.9-rc8
> > git bisect start 'HEAD' 'v5.9-rc8'
> > # bad: [b71be15b496cc71a3434a198fc1a1b9e08af6c57] Merge remote-tracking
> > branch 'bpf-next/master' into master
> > git bisect bad b71be15b496cc71a3434a198fc1a1b9e08af6c57
> > # bad: [6be11f939f380ef14bc94242cb0262197ce2a054] Merge remote-tracking
> > branch 'i2c/i2c/for-next' into master
> > git bisect bad 6be11f939f380ef14bc94242cb0262197ce2a054
> > # good: [c03a115d8ad8a87b6d275c3c91c13bc111217bf6] Merge remote-tracking
> > branch 'samsung-krzk/for-next' into master
> > git bisect good c03a115d8ad8a87b6d275c3c91c13bc111217bf6
> > # bad: [bdd0ef71b0d7d6a8f1d59af57dc73d19ddc26ad0] Merge remote-tracking
> > branch 'f2fs/dev' into master
> > git bisect bad bdd0ef71b0d7d6a8f1d59af57dc73d19ddc26ad0
> > # bad: [0c4bd40a7ccd06122c1942f525b714abcd9efe36] Merge remote-tracking
> > branch 'powerpc/next' into master
> > git bisect bad 0c4bd40a7ccd06122c1942f525b714abcd9efe36
> > # bad: [744d2c114d58c11fd76d572021d7ef3c55a1a225] Merge remote-tracking
> > branch 'nds32/next' into master
> > git bisect bad 744d2c114d58c11fd76d572021d7ef3c55a1a225
> > # good: [1e9f9330cea616f9f2baf8144f049e4b405715dd] Merge remote-tracking
> > branch 'csky/linux-next' into master
> > git bisect good 1e9f9330cea616f9f2baf8144f049e4b405715dd
> > # bad: [b350041e6f23a71f63f1eee6d939c846838e7e25] MIPS: alchemy: remove
> > unused ALCHEMY_GPIOINT_AU1000
> > git bisect bad b350041e6f23a71f63f1eee6d939c846838e7e25
> > # good: [43df4eb2fc9511e09c66252c3fec4f8933a77c73] MIPS: Replace
> > SIBYTE_1956_WAR by CONFIG_SB1_PASS_2_WORKAROUNDS
> > git bisect good 43df4eb2fc9511e09c66252c3fec4f8933a77c73
> > # good: [13a0ea28e8c698cc0d600fdeed8da3e4d478b97e] MIPS: generic: Init
> > command line with fw_init_cmdline()
> > git bisect good 13a0ea28e8c698cc0d600fdeed8da3e4d478b97e
> > # bad: [d41afc398fbc9dfb8c40b951e97a7f0283346c6a] MAINTAINERS: Update
> > paths to Ingenic platform code
> > git bisect bad d41afc398fbc9dfb8c40b951e97a7f0283346c6a
> > # bad: [f0f4a753079c636d5d43a102edbde0dad1e7de51] MIPS: generic: Add
> > support for Ingenic SoCs
> > git bisect bad f0f4a753079c636d5d43a102edbde0dad1e7de51
> > # good: [c3e2ee657418f4f2bff1269c0550f8135ed0c927] MIPS: generic: Add
> > support for zboot
> > git bisect good c3e2ee657418f4f2bff1269c0550f8135ed0c927
> > # good: [02bd530f888c6d6ba4995c3afcd10f87c136f173] MIPS: generic:
> > Increase NR_IRQS to 256
> > git bisect good 02bd530f888c6d6ba4995c3afcd10f87c136f173
> > # first bad commit: [f0f4a753079c636d5d43a102edbde0dad1e7de51] MIPS:
> > generic: Add support for Ingenic SoCs
> 
> 

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] MIPS: ingenic: Remove CPU_SUPPORTS_HUGEPAGES
  2020-10-12 14:33   ` Guenter Roeck
  2020-10-12 14:59     ` Paul Cercueil
@ 2020-10-12 19:27     ` Paul Cercueil
  2020-10-13  9:31       ` Thomas Bogendoerfer
  1 sibling, 1 reply; 27+ messages in thread
From: Paul Cercueil @ 2020-10-12 19:27 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Thomas Bogendoerfer, Maciej W . Rozycki, Paul Burton,
	Zhou Yanjie, od, linux-kernel, linux-mips, Paul Cercueil

While it is true that Ingenic SoCs support huge pages, we cannot use
them yet as PTEs don't have any single bit that is free. Right now,
having that symbol only causes build errors, so remove it until the
situation with PTEs is resolved.

Fixes: f0f4a753079c ("MIPS: generic: Add support for Ingenic SoCs")
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 arch/mips/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index f52fa211a4cf..29bad5bd3e70 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -103,7 +103,6 @@ config MACH_INGENIC
 	select SYS_SUPPORTS_32BIT_KERNEL
 	select SYS_SUPPORTS_LITTLE_ENDIAN
 	select SYS_SUPPORTS_ZBOOT
-	select CPU_SUPPORTS_HUGEPAGES
 	select DMA_NONCOHERENT
 	select IRQ_MIPS_CPU
 	select PINCTRL
-- 
2.28.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] MIPS: ingenic: Remove CPU_SUPPORTS_HUGEPAGES
  2020-10-12 19:27     ` [PATCH] MIPS: ingenic: Remove CPU_SUPPORTS_HUGEPAGES Paul Cercueil
@ 2020-10-13  9:31       ` Thomas Bogendoerfer
  0 siblings, 0 replies; 27+ messages in thread
From: Thomas Bogendoerfer @ 2020-10-13  9:31 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Guenter Roeck, Maciej W . Rozycki, Paul Burton, Zhou Yanjie, od,
	linux-kernel, linux-mips

On Mon, Oct 12, 2020 at 09:27:39PM +0200, Paul Cercueil wrote:
> While it is true that Ingenic SoCs support huge pages, we cannot use
> them yet as PTEs don't have any single bit that is free. Right now,
> having that symbol only causes build errors, so remove it until the
> situation with PTEs is resolved.
> 
> Fixes: f0f4a753079c ("MIPS: generic: Add support for Ingenic SoCs")
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> ---
>  arch/mips/Kconfig | 1 -
>  1 file changed, 1 deletion(-)

applied to mips-next.

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] MIPS: ingenic: Remove CPU_SUPPORTS_HUGEPAGES
@ 2020-10-12 19:37 Guenter Roeck
  0 siblings, 0 replies; 27+ messages in thread
From: Guenter Roeck @ 2020-10-12 19:37 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Thomas Bogendoerfer, Maciej W . Rozycki, Paul Burton,
	Zhou Yanjie, od, linux-kernel, linux-mips

On Mon, Oct 12, 2020 at 09:27:39PM +0200, Paul Cercueil wrote:
> While it is true that Ingenic SoCs support huge pages, we cannot use
> them yet as PTEs don't have any single bit that is free. Right now,
> having that symbol only causes build errors, so remove it until the
> situation with PTEs is resolved.
> 
> Fixes: f0f4a753079c ("MIPS: generic: Add support for Ingenic SoCs")
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  arch/mips/Kconfig | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index f52fa211a4cf..29bad5bd3e70 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -103,7 +103,6 @@ config MACH_INGENIC
>  	select SYS_SUPPORTS_32BIT_KERNEL
>  	select SYS_SUPPORTS_LITTLE_ENDIAN
>  	select SYS_SUPPORTS_ZBOOT
> -	select CPU_SUPPORTS_HUGEPAGES
>  	select DMA_NONCOHERENT
>  	select IRQ_MIPS_CPU
>  	select PINCTRL
> -- 
> 2.28.0
> 

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, back to index

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-06 19:29 [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 01/15] MIPS: configs: lb60: Fix defconfig not selecting correct board Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 02/15] MIPS: cpu-probe: Set Ingenic's writecombine to _CACHE_CACHABLE_WA Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 03/15] MIPS: cpu-probe: Mark XBurst CPU as having vtagged caches Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 04/15] MIPS: cpu-probe: ingenic: Fix broken BUG_ON Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 05/15] MIPS: Kconfig: add MIPS_GENERIC_KERNEL symbol Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 06/15] MIPS: generic: Allow boards to set system type Paul Cercueil
2020-09-08 16:27   ` Philippe Mathieu-Daudé
2020-09-06 19:29 ` [PATCH v3 07/15] MIPS: generic: Init command line with fw_init_cmdline() Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB Paul Cercueil
2020-09-07  7:54   ` Sergei Shtylyov
2020-09-07 12:39     ` Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 09/15] MIPS: generic: Add support for zboot Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 10/15] MIPS: generic: Increase NR_IRQS to 256 Paul Cercueil
2020-09-07 19:53   ` Thomas Bogendoerfer
2020-09-06 19:29 ` [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs Paul Cercueil
2020-10-12 14:33   ` Guenter Roeck
2020-10-12 14:59     ` Paul Cercueil
2020-10-12 18:26       ` Guenter Roeck
2020-10-12 19:27     ` [PATCH] MIPS: ingenic: Remove CPU_SUPPORTS_HUGEPAGES Paul Cercueil
2020-10-13  9:31       ` Thomas Bogendoerfer
2020-09-06 19:29 ` [PATCH v3 12/15] MIPS: jz4740: Drop all obsolete files Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 13/15] MIPS: jz4740: Rename jz4740 folders to ingenic Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 14/15] MIPS: configs: Regenerate configs of Ingenic boards Paul Cercueil
2020-09-06 19:29 ` [PATCH v3 15/15] MAINTAINERS: Update paths to Ingenic platform code Paul Cercueil
2020-09-18 14:40 ` [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3 Thomas Bogendoerfer
2020-10-12 19:37 [PATCH] MIPS: ingenic: Remove CPU_SUPPORTS_HUGEPAGES Guenter Roeck

Linux-MIPS Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-mips/0 linux-mips/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-mips linux-mips/ https://lore.kernel.org/linux-mips \
		linux-mips@vger.kernel.org
	public-inbox-index linux-mips

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-mips


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git