2020-09-06 19:30:46

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3

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


2020-09-06 19:30:54

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 01/15] MIPS: configs: lb60: Fix defconfig not selecting correct board

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: [email protected] # v5.7
Fixes: 62249209a772 ("MIPS: ingenic: Default to a generic board")
Signed-off-by: Paul Cercueil <[email protected]>
---

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

2020-09-06 19:31:26

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 02/15] MIPS: cpu-probe: Set Ingenic's writecombine to _CACHE_CACHABLE_WA

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 <[email protected]>
---

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

2020-09-06 19:31:37

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 03/15] MIPS: cpu-probe: Mark XBurst CPU as having vtagged caches

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 <[email protected]>
---

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

2020-09-06 19:31:52

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 04/15] MIPS: cpu-probe: ingenic: Fix broken BUG_ON

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 <[email protected]>
---

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

2020-09-06 19:32:00

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 05/15] MIPS: Kconfig: add MIPS_GENERIC_KERNEL symbol

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 <[email protected]>
---

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

2020-09-06 19:32:16

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 06/15] MIPS: generic: Allow boards to set system type

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 <[email protected]>
---

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

2020-09-06 19:32:37

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB

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 <[email protected]>
---

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

2020-09-06 19:32:49

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 09/15] MIPS: generic: Add support for zboot

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

Signed-off-by: Paul Cercueil <[email protected]>
---

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

2020-09-06 19:32:54

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 10/15] MIPS: generic: Increase NR_IRQS to 256

128 IRQs is not enough to support Ingenic SoCs.

Signed-off-by: Paul Cercueil <[email protected]>
---

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

2020-09-06 19:33:04

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs

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 <[email protected]>
---

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 <[email protected]>
+ * Copyright (C) 2011, Maarten ter Huurne <[email protected]>
+ * Copyright (C) 2020 Paul Cercueil <[email protected]>
+ */
+
+#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

2020-09-06 19:33:22

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 12/15] MIPS: jz4740: Drop all obsolete files

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 <[email protected]>
---

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 <[email protected]>
- * 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 <[email protected]>
- * Copyright (C) 2011, Maarten ter Huurne <[email protected]>
- * 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

2020-09-06 19:33:45

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 14/15] MIPS: configs: Regenerate configs of Ingenic boards

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 <[email protected]>
---

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

2020-09-06 19:33:57

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 15/15] MAINTAINERS: Update paths to Ingenic platform code

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

Signed-off-by: Paul Cercueil <[email protected]>
---

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 <[email protected]>
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

2020-09-06 19:34:27

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 07/15] MIPS: generic: Init command line with fw_init_cmdline()

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 <[email protected]>
---

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

2020-09-06 19:35:28

by Paul Cercueil

[permalink] [raw]
Subject: [PATCH v3 13/15] MIPS: jz4740: Rename jz4740 folders to ingenic

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 <[email protected]>
---

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

2020-09-07 07:56:19

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB

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 <[email protected]>
[...]

MBR, Sergei

2020-09-07 12:46:45

by Paul Cercueil

[permalink] [raw]
Subject: Re: [PATCH v3 08/15] MIPS: generic: Support booting with built-in or appended DTB



Le lun. 7 sept. 2020 ? 10:54, Sergei Shtylyov
<[email protected]> 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 <[email protected]>
> [...]
>
> MBR, Sergei


2020-09-07 20:07:15

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH v3 10/15] MIPS: generic: Increase NR_IRQS to 256

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 <[email protected]>
> ---
>
> 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 ]

2020-09-08 16:32:55

by Philippe Mathieu-Daudé

[permalink] [raw]
Subject: Re: [PATCH v3 06/15] MIPS: generic: Allow boards to set system type

On Sun, Sep 6, 2020 at 9:31 PM Paul Cercueil <[email protected]> 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 <[email protected]>
> ---
>
> 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
>

2020-09-18 14:42:47

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH v3 00/15] MIPS: Convert Ingenic to a generic board v3

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 ]

2020-10-12 15:03:36

by Paul Cercueil

[permalink] [raw]
Subject: Re: [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs

Hi Guenter,

Le lun. 12 oct. 2020 ? 7:33, Guenter Roeck <[email protected]> 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 <[email protected]>
>
> 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


2020-10-12 18:30:08

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs

On Mon, Oct 12, 2020 at 04:59:01PM +0200, Paul Cercueil wrote:
> Hi Guenter,
>
> Le lun. 12 oct. 2020 ? 7:33, Guenter Roeck <[email protected]> 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 <[email protected]>
> >
> > 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
>
>

2020-10-13 05:10:51

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v3 11/15] MIPS: generic: Add support for Ingenic SoCs

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 <[email protected]>

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