Re: [PATCH 00/13] MIPS: Convert Ingenic to a generic board

From: Zhou Yanjie
Date: Fri Aug 07 2020 - 13:20:20 EST


Hi Paul,

在 2020/8/8 上午12:45, Paul Cercueil 写道:
Hi Zhou,

Le sam. 8 août 2020 à 0:23, Zhou Yanjie <zhouyanjie@xxxxxxxxxxxxxx> a écrit :
Hi Paul,

I'm not too sure if remove "cpu-feature-overrides.h" will cause some problems for X2000, because according to my current test on X2000, I found that it is somewhat different from the SoCs using XBurst1 CPU core, with the kernel source code provided by Ingenic, for example, we must configure "#define cpu_has_tlbinv 1" in "cpu-feature-overrides.h" to make the X2000 work normally, otherwise the kernel will get stuck. And X2000's interrupt controller has also been redesigned. If these differences make it impossible to share code, should we set a subdirectory of "xburst" and "xburst2" in "arch/mips/ingenic"? (I am just worried about this situation, so far I have not been able to successfully run the mainline kernel on X2000).

The <cpu-feature-overrides.h> is kind of a hack, to hardcode settings in case the CPU is not properly detected. The cpu-probe.c should be able to auto-detect these settings, including the inverted TLB that the X2000 has, reading from the CPU config registers ("TLB INV" info should be in config4). Right now cpu_probe_ingenic() doesn't read config4 (not present on older SoCs) but that's trivial to add.

As for your other question, I don't see any reason why we wouldn't be able to support the X2000 aside the others in a generic kernel, so don't worry :)

OK, this is good news for me.


Cheers,
-Paul


I have added some related engineers from Ingenic to CC

Thanks and best regards!

在 2020/8/4 上午1:01, Paul Cercueil 写道:
Hi Thomas & list,

Here is a set of patches for 5.10 (no rush) to move Ingenic support from
arch/mips/jz4740/ to arch/mips/generic/.

There are some Kconfig changes that I think should be reviewed in detail
to avoid breakages elsewhere. The idea behind these changes is to allow
the Ingenic "generic" code to be built in a non-generic kernel, since
generic kernels bring lots of dependencies which result in a +7% size
increase.

Support for booting the generic kernel with a built-in and/or appended
devicetree, as well as support for compressed (vmlinuz) kernels, has
been added as well.

Cheers,
-Paul

Paul Cercueil (13):
   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: machine: Add get_system_type callback
   MIPS: generic: Call the machine's .get_system_type callback if
     provided
   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 folder
   MIPS: configs: Regenerate configs of Ingenic boards
   MAINTAINERS: Update paths to Ingenic platform code

  MAINTAINERS                                   |   4 +-
  arch/mips/Kbuild.platforms                    |   1 -
  arch/mips/Kconfig                             |  43 ++++--
  arch/mips/configs/ci20_defconfig              |   4 +-
  arch/mips/configs/cu1000-neo_defconfig        |  16 +-
  arch/mips/configs/gcw0_defconfig              |   2 +-
  arch/mips/configs/qi_lb60_defconfig           |   5 +-
  arch/mips/configs/rs90_defconfig              |   4 +-
  arch/mips/generic/Kconfig                     |   8 +-
  arch/mips/generic/Makefile                    |   2 +-
  arch/mips/generic/Platform                    |   1 +
  arch/mips/generic/board-ingenic.c             | 108 +++++++++++++
  arch/mips/generic/init.c                      |  28 +++-
  arch/mips/generic/proc.c                      |  25 ---
  arch/mips/include/asm/mach-generic/irq.h      |   2 +-
  .../asm/mach-jz4740/cpu-feature-overrides.h   |  50 ------
  arch/mips/include/asm/mach-jz4740/irq.h       |  13 --
  arch/mips/include/asm/machine.h               |   1 +
  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, 198 insertions(+), 305 deletions(-)
  create mode 100644 arch/mips/generic/board-ingenic.c
  delete mode 100644 arch/mips/generic/proc.c
  delete mode 100644 arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h
  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