[RFC PATCH v3 00/37] Upstream kvx Linux port

ysionneau@kalrayinc.com posted 37 patches 1 year, 1 month ago
Documentation/arch/index.rst                  |    1 +
Documentation/arch/kvx/index.rst              |   17 +
Documentation/arch/kvx/kvx-exceptions.rst     |  258 +
Documentation/arch/kvx/kvx-iommu.rst          |  191 +
Documentation/arch/kvx/kvx-mmu.rst            |  256 +
Documentation/arch/kvx/kvx-smp.rst            |   41 +
Documentation/arch/kvx/kvx.rst                |  273 +
.../clock/kalray,coolidge-dsu-clock.yaml      |   39 +
.../kalray,coolidge-apic-gic.yaml             |   87 +
.../kalray,coolidge-apic-mailbox.yaml         |   90 +
.../kalray,coolidge-ipi-ctrl.yaml             |   79 +
.../kalray,coolidge-itgen.yaml                |   55 +
.../kalray,kv3-1-intc.yaml                    |   54 +
.../devicetree/bindings/kalray/cpus.yaml      |  105 +
.../devicetree/bindings/kalray/kalray.yaml    |   22 +
.../soc/kvx/kalray,coolidge-pwr-ctrl.yaml     |   37 +
.../bindings/timer/kalray,kv3-1-timer.yaml    |   57 +
.../devicetree/bindings/vendor-prefixes.yaml  |    2 +
arch/kvx/Kconfig                              |  226 +
arch/kvx/Kconfig.debug                        |   60 +
arch/kvx/Makefile                             |   47 +
arch/kvx/boot/dts/Makefile                    |    1 +
arch/kvx/boot/dts/coolidge-qemu.dts           |  444 ++
arch/kvx/configs/defconfig                    |  130 +
arch/kvx/include/asm/Kbuild                   |   20 +
arch/kvx/include/asm/asm-prototypes.h         |   14 +
arch/kvx/include/asm/atomic.h                 |  119 +
arch/kvx/include/asm/barrier.h                |   15 +
arch/kvx/include/asm/bitops.h                 |  118 +
arch/kvx/include/asm/bitrev.h                 |   32 +
arch/kvx/include/asm/break_hook.h             |   69 +
arch/kvx/include/asm/bug.h                    |   67 +
arch/kvx/include/asm/cache.h                  |   44 +
arch/kvx/include/asm/cacheflush.h             |  158 +
arch/kvx/include/asm/clocksource.h            |   17 +
arch/kvx/include/asm/cmpxchg.h                |  170 +
arch/kvx/include/asm/cpuinfo.h                |    7 +
arch/kvx/include/asm/current.h                |   22 +
arch/kvx/include/asm/debug.h                  |   36 +
arch/kvx/include/asm/elf.h                    |  156 +
arch/kvx/include/asm/entry-common.h           |   52 +
arch/kvx/include/asm/fixmap.h                 |   47 +
arch/kvx/include/asm/futex.h                  |  140 +
arch/kvx/include/asm/hugetlb.h                |   36 +
arch/kvx/include/asm/hw_irq.h                 |   14 +
arch/kvx/include/asm/insns.h                  |   16 +
arch/kvx/include/asm/insns_defs.h             |  185 +
arch/kvx/include/asm/io.h                     |   34 +
arch/kvx/include/asm/ipi.h                    |   16 +
arch/kvx/include/asm/irqflags.h               |   58 +
arch/kvx/include/asm/linkage.h                |   13 +
arch/kvx/include/asm/mem_map.h                |   44 +
arch/kvx/include/asm/mmu.h                    |  289 +
arch/kvx/include/asm/mmu_context.h            |  156 +
arch/kvx/include/asm/mmu_stats.h              |   38 +
arch/kvx/include/asm/page.h                   |  172 +
arch/kvx/include/asm/page_size.h              |   29 +
arch/kvx/include/asm/pci.h                    |   36 +
arch/kvx/include/asm/pgalloc.h                |   70 +
arch/kvx/include/asm/pgtable-bits.h           |  105 +
arch/kvx/include/asm/pgtable.h                |  468 ++
arch/kvx/include/asm/privilege.h              |  211 +
arch/kvx/include/asm/processor.h              |  176 +
arch/kvx/include/asm/ptrace.h                 |  217 +
arch/kvx/include/asm/pwr_ctrl.h               |   57 +
arch/kvx/include/asm/seccomp.h                |   14 +
arch/kvx/include/asm/sections.h               |   17 +
arch/kvx/include/asm/setup.h                  |   34 +
arch/kvx/include/asm/sfr.h                    |  107 +
arch/kvx/include/asm/sfr_defs.h               | 5028 +++++++++++++++++
arch/kvx/include/asm/smp.h                    |   63 +
arch/kvx/include/asm/sparsemem.h              |   15 +
arch/kvx/include/asm/spinlock.h               |   16 +
arch/kvx/include/asm/spinlock_types.h         |   17 +
arch/kvx/include/asm/stackprotector.h         |   47 +
arch/kvx/include/asm/stacktrace.h             |   46 +
arch/kvx/include/asm/string.h                 |   20 +
arch/kvx/include/asm/swab.h                   |   48 +
arch/kvx/include/asm/switch_to.h              |   18 +
arch/kvx/include/asm/symbols.h                |   16 +
arch/kvx/include/asm/sys_arch.h               |   51 +
arch/kvx/include/asm/syscall.h                |  112 +
arch/kvx/include/asm/syscalls.h               |   19 +
arch/kvx/include/asm/thread_info.h            |   72 +
arch/kvx/include/asm/timex.h                  |   20 +
arch/kvx/include/asm/tlb.h                    |   24 +
arch/kvx/include/asm/tlb_defs.h               |  132 +
arch/kvx/include/asm/tlbflush.h               |   60 +
arch/kvx/include/asm/traps.h                  |   79 +
arch/kvx/include/asm/types.h                  |   12 +
arch/kvx/include/asm/uaccess.h                |  317 ++
arch/kvx/include/asm/unistd.h                 |   11 +
arch/kvx/include/asm/vermagic.h               |   12 +
arch/kvx/include/asm/vmalloc.h                |   10 +
arch/kvx/include/uapi/asm/Kbuild              |    1 +
arch/kvx/include/uapi/asm/bitsperlong.h       |   14 +
arch/kvx/include/uapi/asm/byteorder.h         |   12 +
arch/kvx/include/uapi/asm/cachectl.h          |   25 +
arch/kvx/include/uapi/asm/ptrace.h            |  114 +
arch/kvx/include/uapi/asm/sigcontext.h        |   16 +
arch/kvx/include/uapi/asm/unistd.h            |   13 +
arch/kvx/kernel/Makefile                      |   15 +
arch/kvx/kernel/asm-offsets.c                 |  155 +
arch/kvx/kernel/break_hook.c                  |   76 +
arch/kvx/kernel/common.c                      |   11 +
arch/kvx/kernel/cpu.c                         |   24 +
arch/kvx/kernel/cpuinfo.c                     |   95 +
arch/kvx/kernel/dame_handler.c                |  113 +
arch/kvx/kernel/debug.c                       |   54 +
arch/kvx/kernel/entry.S                       | 1208 ++++
arch/kvx/kernel/head.S                        |  580 ++
arch/kvx/kernel/insns.c                       |  166 +
arch/kvx/kernel/io.c                          |   96 +
arch/kvx/kernel/irq.c                         |   52 +
arch/kvx/kernel/kvx_ksyms.c                   |   18 +
arch/kvx/kernel/module.c                      |  148 +
arch/kvx/kernel/process.c                     |  195 +
arch/kvx/kernel/prom.c                        |   26 +
arch/kvx/kernel/ptrace.c                      |  233 +
arch/kvx/kernel/reset.c                       |   37 +
arch/kvx/kernel/setup.c                       |  181 +
arch/kvx/kernel/signal.c                      |  252 +
arch/kvx/kernel/smp.c                         |   83 +
arch/kvx/kernel/smpboot.c                     |  146 +
arch/kvx/kernel/stacktrace.c                  |  177 +
arch/kvx/kernel/sys_kvx.c                     |   58 +
arch/kvx/kernel/syscall_table.c               |   19 +
arch/kvx/kernel/time.c                        |  242 +
arch/kvx/kernel/traps.c                       |  278 +
arch/kvx/kernel/vdso.c                        |   87 +
arch/kvx/kernel/vmlinux.lds.S                 |  150 +
arch/kvx/lib/Makefile                         |    6 +
arch/kvx/lib/clear_page.S                     |   40 +
arch/kvx/lib/copy_page.S                      |   90 +
arch/kvx/lib/delay.c                          |   40 +
arch/kvx/lib/div.c                            |  198 +
arch/kvx/lib/libgcc.h                         |   25 +
arch/kvx/lib/memcpy.c                         |   72 +
arch/kvx/lib/memset.S                         |  216 +
arch/kvx/lib/strlen.S                         |  122 +
arch/kvx/lib/usercopy.S                       |   90 +
arch/kvx/mm/Makefile                          |    8 +
arch/kvx/mm/cacheflush.c                      |  158 +
arch/kvx/mm/dma-mapping.c                     |   83 +
arch/kvx/mm/extable.c                         |   24 +
arch/kvx/mm/fault.c                           |  270 +
arch/kvx/mm/init.c                            |  297 +
arch/kvx/mm/mmap.c                            |   31 +
arch/kvx/mm/mmu.c                             |  202 +
arch/kvx/mm/mmu_stats.c                       |   94 +
arch/kvx/mm/tlb.c                             |  445 ++
drivers/irqchip/Kconfig                       |   31 +
drivers/irqchip/Makefile                      |    5 +
drivers/irqchip/irq-kvx-apic-gic.c            |  356 ++
drivers/irqchip/irq-kvx-apic-mailbox.c        |  480 ++
drivers/irqchip/irq-kvx-core-intc.c           |  117 +
drivers/irqchip/irq-kvx-ipi-ctrl.c            |  143 +
drivers/irqchip/irq-kvx-itgen.c               |  234 +
drivers/soc/Kconfig                           |    1 +
drivers/soc/Makefile                          |    1 +
drivers/soc/kvx/Kconfig                       |   10 +
drivers/soc/kvx/Makefile                      |    2 +
drivers/soc/kvx/coolidge_pwr_ctrl.c           |   84 +
include/linux/cpuhotplug.h                    |    2 +
include/uapi/linux/audit.h                    |    1 +
include/uapi/linux/elf-em.h                   |    1 +
include/uapi/linux/elf.h                      |    1 +
tools/include/uapi/asm/bitsperlong.h          |    2 +
168 files changed, 21904 insertions(+)
create mode 100644 Documentation/arch/kvx/index.rst
create mode 100644 Documentation/arch/kvx/kvx-exceptions.rst
create mode 100644 Documentation/arch/kvx/kvx-iommu.rst
create mode 100644 Documentation/arch/kvx/kvx-mmu.rst
create mode 100644 Documentation/arch/kvx/kvx-smp.rst
create mode 100644 Documentation/arch/kvx/kvx.rst
create mode 100644 Documentation/devicetree/bindings/clock/kalray,coolidge-dsu-clock.yaml
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,coolidge-apic-gic.yaml
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,coolidge-apic-mailbox.yaml
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,coolidge-ipi-ctrl.yaml
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,coolidge-itgen.yaml
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,kv3-1-intc.yaml
create mode 100644 Documentation/devicetree/bindings/kalray/cpus.yaml
create mode 100644 Documentation/devicetree/bindings/kalray/kalray.yaml
create mode 100644 Documentation/devicetree/bindings/soc/kvx/kalray,coolidge-pwr-ctrl.yaml
create mode 100644 Documentation/devicetree/bindings/timer/kalray,kv3-1-timer.yaml
create mode 100644 arch/kvx/Kconfig
create mode 100644 arch/kvx/Kconfig.debug
create mode 100644 arch/kvx/Makefile
create mode 100644 arch/kvx/boot/dts/Makefile
create mode 100644 arch/kvx/boot/dts/coolidge-qemu.dts
create mode 100644 arch/kvx/configs/defconfig
create mode 100644 arch/kvx/include/asm/Kbuild
create mode 100644 arch/kvx/include/asm/asm-prototypes.h
create mode 100644 arch/kvx/include/asm/atomic.h
create mode 100644 arch/kvx/include/asm/barrier.h
create mode 100644 arch/kvx/include/asm/bitops.h
create mode 100644 arch/kvx/include/asm/bitrev.h
create mode 100644 arch/kvx/include/asm/break_hook.h
create mode 100644 arch/kvx/include/asm/bug.h
create mode 100644 arch/kvx/include/asm/cache.h
create mode 100644 arch/kvx/include/asm/cacheflush.h
create mode 100644 arch/kvx/include/asm/clocksource.h
create mode 100644 arch/kvx/include/asm/cmpxchg.h
create mode 100644 arch/kvx/include/asm/cpuinfo.h
create mode 100644 arch/kvx/include/asm/current.h
create mode 100644 arch/kvx/include/asm/debug.h
create mode 100644 arch/kvx/include/asm/elf.h
create mode 100644 arch/kvx/include/asm/entry-common.h
create mode 100644 arch/kvx/include/asm/fixmap.h
create mode 100644 arch/kvx/include/asm/futex.h
create mode 100644 arch/kvx/include/asm/hugetlb.h
create mode 100644 arch/kvx/include/asm/hw_irq.h
create mode 100644 arch/kvx/include/asm/insns.h
create mode 100644 arch/kvx/include/asm/insns_defs.h
create mode 100644 arch/kvx/include/asm/io.h
create mode 100644 arch/kvx/include/asm/ipi.h
create mode 100644 arch/kvx/include/asm/irqflags.h
create mode 100644 arch/kvx/include/asm/linkage.h
create mode 100644 arch/kvx/include/asm/mem_map.h
create mode 100644 arch/kvx/include/asm/mmu.h
create mode 100644 arch/kvx/include/asm/mmu_context.h
create mode 100644 arch/kvx/include/asm/mmu_stats.h
create mode 100644 arch/kvx/include/asm/page.h
create mode 100644 arch/kvx/include/asm/page_size.h
create mode 100644 arch/kvx/include/asm/pci.h
create mode 100644 arch/kvx/include/asm/pgalloc.h
create mode 100644 arch/kvx/include/asm/pgtable-bits.h
create mode 100644 arch/kvx/include/asm/pgtable.h
create mode 100644 arch/kvx/include/asm/privilege.h
create mode 100644 arch/kvx/include/asm/processor.h
create mode 100644 arch/kvx/include/asm/ptrace.h
create mode 100644 arch/kvx/include/asm/pwr_ctrl.h
create mode 100644 arch/kvx/include/asm/seccomp.h
create mode 100644 arch/kvx/include/asm/sections.h
create mode 100644 arch/kvx/include/asm/setup.h
create mode 100644 arch/kvx/include/asm/sfr.h
create mode 100644 arch/kvx/include/asm/sfr_defs.h
create mode 100644 arch/kvx/include/asm/smp.h
create mode 100644 arch/kvx/include/asm/sparsemem.h
create mode 100644 arch/kvx/include/asm/spinlock.h
create mode 100644 arch/kvx/include/asm/spinlock_types.h
create mode 100644 arch/kvx/include/asm/stackprotector.h
create mode 100644 arch/kvx/include/asm/stacktrace.h
create mode 100644 arch/kvx/include/asm/string.h
create mode 100644 arch/kvx/include/asm/swab.h
create mode 100644 arch/kvx/include/asm/switch_to.h
create mode 100644 arch/kvx/include/asm/symbols.h
create mode 100644 arch/kvx/include/asm/sys_arch.h
create mode 100644 arch/kvx/include/asm/syscall.h
create mode 100644 arch/kvx/include/asm/syscalls.h
create mode 100644 arch/kvx/include/asm/thread_info.h
create mode 100644 arch/kvx/include/asm/timex.h
create mode 100644 arch/kvx/include/asm/tlb.h
create mode 100644 arch/kvx/include/asm/tlb_defs.h
create mode 100644 arch/kvx/include/asm/tlbflush.h
create mode 100644 arch/kvx/include/asm/traps.h
create mode 100644 arch/kvx/include/asm/types.h
create mode 100644 arch/kvx/include/asm/uaccess.h
create mode 100644 arch/kvx/include/asm/unistd.h
create mode 100644 arch/kvx/include/asm/vermagic.h
create mode 100644 arch/kvx/include/asm/vmalloc.h
create mode 100644 arch/kvx/include/uapi/asm/Kbuild
create mode 100644 arch/kvx/include/uapi/asm/bitsperlong.h
create mode 100644 arch/kvx/include/uapi/asm/byteorder.h
create mode 100644 arch/kvx/include/uapi/asm/cachectl.h
create mode 100644 arch/kvx/include/uapi/asm/ptrace.h
create mode 100644 arch/kvx/include/uapi/asm/sigcontext.h
create mode 100644 arch/kvx/include/uapi/asm/unistd.h
create mode 100644 arch/kvx/kernel/Makefile
create mode 100644 arch/kvx/kernel/asm-offsets.c
create mode 100644 arch/kvx/kernel/break_hook.c
create mode 100644 arch/kvx/kernel/common.c
create mode 100644 arch/kvx/kernel/cpu.c
create mode 100644 arch/kvx/kernel/cpuinfo.c
create mode 100644 arch/kvx/kernel/dame_handler.c
create mode 100644 arch/kvx/kernel/debug.c
create mode 100644 arch/kvx/kernel/entry.S
create mode 100644 arch/kvx/kernel/head.S
create mode 100644 arch/kvx/kernel/insns.c
create mode 100644 arch/kvx/kernel/io.c
create mode 100644 arch/kvx/kernel/irq.c
create mode 100644 arch/kvx/kernel/kvx_ksyms.c
create mode 100644 arch/kvx/kernel/module.c
create mode 100644 arch/kvx/kernel/process.c
create mode 100644 arch/kvx/kernel/prom.c
create mode 100644 arch/kvx/kernel/ptrace.c
create mode 100644 arch/kvx/kernel/reset.c
create mode 100644 arch/kvx/kernel/setup.c
create mode 100644 arch/kvx/kernel/signal.c
create mode 100644 arch/kvx/kernel/smp.c
create mode 100644 arch/kvx/kernel/smpboot.c
create mode 100644 arch/kvx/kernel/stacktrace.c
create mode 100644 arch/kvx/kernel/sys_kvx.c
create mode 100644 arch/kvx/kernel/syscall_table.c
create mode 100644 arch/kvx/kernel/time.c
create mode 100644 arch/kvx/kernel/traps.c
create mode 100644 arch/kvx/kernel/vdso.c
create mode 100644 arch/kvx/kernel/vmlinux.lds.S
create mode 100644 arch/kvx/lib/Makefile
create mode 100644 arch/kvx/lib/clear_page.S
create mode 100644 arch/kvx/lib/copy_page.S
create mode 100644 arch/kvx/lib/delay.c
create mode 100644 arch/kvx/lib/div.c
create mode 100644 arch/kvx/lib/libgcc.h
create mode 100644 arch/kvx/lib/memcpy.c
create mode 100644 arch/kvx/lib/memset.S
create mode 100644 arch/kvx/lib/strlen.S
create mode 100644 arch/kvx/lib/usercopy.S
create mode 100644 arch/kvx/mm/Makefile
create mode 100644 arch/kvx/mm/cacheflush.c
create mode 100644 arch/kvx/mm/dma-mapping.c
create mode 100644 arch/kvx/mm/extable.c
create mode 100644 arch/kvx/mm/fault.c
create mode 100644 arch/kvx/mm/init.c
create mode 100644 arch/kvx/mm/mmap.c
create mode 100644 arch/kvx/mm/mmu.c
create mode 100644 arch/kvx/mm/mmu_stats.c
create mode 100644 arch/kvx/mm/tlb.c
create mode 100644 drivers/irqchip/irq-kvx-apic-gic.c
create mode 100644 drivers/irqchip/irq-kvx-apic-mailbox.c
create mode 100644 drivers/irqchip/irq-kvx-core-intc.c
create mode 100644 drivers/irqchip/irq-kvx-ipi-ctrl.c
create mode 100644 drivers/irqchip/irq-kvx-itgen.c
create mode 100644 drivers/soc/kvx/Kconfig
create mode 100644 drivers/soc/kvx/Makefile
create mode 100644 drivers/soc/kvx/coolidge_pwr_ctrl.c
[RFC PATCH v3 00/37] Upstream kvx Linux port
Posted by ysionneau@kalrayinc.com 1 year, 1 month ago
From: Yann Sionneau <ysionneau@kalrayinc.com>

This patch series adds support for the kv3-1 CPU architecture of the kvx family
found in the Coolidge (aka MPPA3-80) SoC of Kalray.

This is an RFC, since kvx support is not yet upstreamed into gcc,
therefore this patch series cannot be merged into Linux for now.

The goal is to have preliminary reviews and to fix problems early.

The Kalray VLIW processor family (kvx) has the following features:
* 32/64 bits execution mode
* 6-issue VLIW architecture
* 64 x 64bits general purpose registers
* SIMD instructions
* little-endian
* deep learning co-processor

Kalray kv3-1 core, third of the kvx family, is embedded in Kalray
Coolidge SoC currently used on K200 and K200-LP boards.

The Coolidge SoC contains 5 clusters, each made of:
* 4MiB of on-chip memory (SMEM)
* 1 dedicated safety/security core (kv3-1 core).
* 16 PEs (Processing Elements) (kv3-1 cores).
* 16 Co-processors (one per PE)
* 2 Crypto accelerators

Coolidge SoC features:
* 5 Clusters
* 2 100G Ethernet controllers
* 8 PCIe GEN4 controllers (Root Complex and Endpoint capable)
* 2 USB 2.0 controllers
* 1 Octal SPI-NOR flash controller
* 1 eMMC controller
* 3 Quad SPI controllers
* 6 UART
* 5 I2C controllers (3 of which are SMBus capable)
* 4 CAN controllers
* 1 OTP memory

A kvx toolchain (kvx-elf-) can be built using:
# install dependencies: texinfo bison flex libgmp-dev libmpc-dev libmpfr-dev
$ git clone https://github.com/kalray/build-scripts
$ cd build-scripts
$ source refs/5.0.0.refs
$ ./build-kvx-xgcc.sh output

The kvx toolchain will be installed in the "output" directory.

You can also find prebuilt toolchains at: https://github.com/kalray/build-scripts/releases/tag/v5.0.0
They are built for Ubuntu 20.04 and 22.04.

A buildroot image (kernel+rootfs), dtb and toolchain can be built using:
$ git clone -b coolidge-for-upstream-v3 https://github.com/kalray/buildroot
$ cd buildroot
$ make O=build_kvx kvx_defconfig
$ make O=build_kvx

The vmlinux image and coolidge-qemu.dtb can be found in buildroot/build_kvx/images/.

If you are just interested in building the Linux kernel with no rootfs you can
just do this with the kvx-elf- toolchain:
$ make ARCH=kvx O=build_kvx CROSS_COMPILE=kvx-elf- defconfig
$ make ARCH=kvx O=build_kvx CROSS_COMPILE=kvx-elf- -j$(($(nproc) + 1))

The vmlinux ELF can be run with qemu by doing:
# install dependencies: ninja pkg-config libglib-2.0-dev cmake libfdt-dev libpixman-1-dev zlib1g-dev
$ git clone https://github.com/kalray/qemu-builder
$ cd qemu-builder
$ git submodule update --init
$ make -j$(($(nproc) + 1))
$ ./qemu-system-kvx -m 2g -nographic -kernel <path/to/vmlinux> -dtb <path/to/coolidge-qemu.dtb>

V2 -> V3:
 - Rebase on v6.10
 - upstream binutils now has kvx support, still need to upstream gcc support
 - Address general reviewer comments
 - Added dt-bindings for all drivers
 - Fixed dt & bindings to pass dt schema checks
 - Switched to generic entry
 - Adapted IPI handling code (moved IPI driver to drivers/soc/)
 - Moved pwr-ctrl driver to drivers/irqchip
 - Removed libgcc dependency
 - Removed legacy syscalls support

V1 -> V2:
 - Rebase on 6.1.6
 - Removed features that are non-necessary for basic port to boot: kgdb, l2 cache driver, jump label, ftrace, hw breakpoints, gdb python helpers and perf monitors
 - Split dt bindings in separate patches
 - Split irqchip drivers: 1 driver == 1 patch
 - Fixed typos in arch/kvx/Kconfig
 - Rewrote ASM atomic helpers in C using builtins
 - Documentation has been rewritten in RST format and included in documentation build system
 - Renamed default_defconfig to defconfig
 - Removed arch-specific __access_ok to use generic code
 - Fixed make clean issue caused by LIBGCC definition in arch/kvx/Makefile

Note that all remarks on V2 patchset are not addressed yet. We still need to polish the documentation for instance.

Julian Vetter (1):
  Add Kalray Inc. to the list of vendor-prefixes.yaml

Yann Sionneau (36):
  Documentation: kvx: Add basic documentation
  dt-bindings: soc: kvx: Add binding for kalray,coolidge-pwr-ctrl
  dt-bindings: Add binding for kalray,kv3-1-intc
  dt-bindings: Add binding for kalray,coolidge-apic-gic
  dt-bindings: Add binding for kalray,coolidge-apic-mailbox
  dt-bindings: Add binding for kalray,coolidge-itgen
  dt-bindings: Add binding for kalray,coolidge-ipi-ctrl
  dt-bindings: Add binding for kalray,coolidge-dsu-clock
  dt-bindings: Add binding for kalray,kv3-1-timer
  dt-bindings: kalray: Add CPU bindings for Kalray kvx
  dt-bindings: kalray: Add Kalray SoC board compatibles
  kvx: Add ELF-related definitions
  kvx: Add build infrastructure
  kvx: Add CPU definition headers
  kvx: Add atomic/locking headers
  kvx: Add other common headers
  kvx: Add boot and setup routines
  kvx: Add exception/interrupt handling
  irqchip: Add irq-kvx-apic-gic driver
  irqchip: Add irq-kvx-itgen driver
  irqchip: Add irq-kvx-apic-mailbox driver
  irqchip: Add kvx-core-intc core interrupt controller driver
  kvx: Add process management
  kvx: Add memory management
  kvx: Add system call support
  kvx: Add signal handling support
  kvx: Add ELF relocations and module support
  kvx: Add misc common routines
  kvx: Add some library functions
  kvx: Add multi-processor (SMP) support
  kvx: Add kvx default config file
  kvx: Add debugging related support
  kvx: Add support for cpuinfo
  kvx: Add power controller driver
  kvx: Add IPI driver
  kvx: dts: DeviceTree for qemu emulated Coolidge SoC

 Documentation/arch/index.rst                  |    1 +
 Documentation/arch/kvx/index.rst              |   17 +
 Documentation/arch/kvx/kvx-exceptions.rst     |  258 +
 Documentation/arch/kvx/kvx-iommu.rst          |  191 +
 Documentation/arch/kvx/kvx-mmu.rst            |  256 +
 Documentation/arch/kvx/kvx-smp.rst            |   41 +
 Documentation/arch/kvx/kvx.rst                |  273 +
 .../clock/kalray,coolidge-dsu-clock.yaml      |   39 +
 .../kalray,coolidge-apic-gic.yaml             |   87 +
 .../kalray,coolidge-apic-mailbox.yaml         |   90 +
 .../kalray,coolidge-ipi-ctrl.yaml             |   79 +
 .../kalray,coolidge-itgen.yaml                |   55 +
 .../kalray,kv3-1-intc.yaml                    |   54 +
 .../devicetree/bindings/kalray/cpus.yaml      |  105 +
 .../devicetree/bindings/kalray/kalray.yaml    |   22 +
 .../soc/kvx/kalray,coolidge-pwr-ctrl.yaml     |   37 +
 .../bindings/timer/kalray,kv3-1-timer.yaml    |   57 +
 .../devicetree/bindings/vendor-prefixes.yaml  |    2 +
 arch/kvx/Kconfig                              |  226 +
 arch/kvx/Kconfig.debug                        |   60 +
 arch/kvx/Makefile                             |   47 +
 arch/kvx/boot/dts/Makefile                    |    1 +
 arch/kvx/boot/dts/coolidge-qemu.dts           |  444 ++
 arch/kvx/configs/defconfig                    |  130 +
 arch/kvx/include/asm/Kbuild                   |   20 +
 arch/kvx/include/asm/asm-prototypes.h         |   14 +
 arch/kvx/include/asm/atomic.h                 |  119 +
 arch/kvx/include/asm/barrier.h                |   15 +
 arch/kvx/include/asm/bitops.h                 |  118 +
 arch/kvx/include/asm/bitrev.h                 |   32 +
 arch/kvx/include/asm/break_hook.h             |   69 +
 arch/kvx/include/asm/bug.h                    |   67 +
 arch/kvx/include/asm/cache.h                  |   44 +
 arch/kvx/include/asm/cacheflush.h             |  158 +
 arch/kvx/include/asm/clocksource.h            |   17 +
 arch/kvx/include/asm/cmpxchg.h                |  170 +
 arch/kvx/include/asm/cpuinfo.h                |    7 +
 arch/kvx/include/asm/current.h                |   22 +
 arch/kvx/include/asm/debug.h                  |   36 +
 arch/kvx/include/asm/elf.h                    |  156 +
 arch/kvx/include/asm/entry-common.h           |   52 +
 arch/kvx/include/asm/fixmap.h                 |   47 +
 arch/kvx/include/asm/futex.h                  |  140 +
 arch/kvx/include/asm/hugetlb.h                |   36 +
 arch/kvx/include/asm/hw_irq.h                 |   14 +
 arch/kvx/include/asm/insns.h                  |   16 +
 arch/kvx/include/asm/insns_defs.h             |  185 +
 arch/kvx/include/asm/io.h                     |   34 +
 arch/kvx/include/asm/ipi.h                    |   16 +
 arch/kvx/include/asm/irqflags.h               |   58 +
 arch/kvx/include/asm/linkage.h                |   13 +
 arch/kvx/include/asm/mem_map.h                |   44 +
 arch/kvx/include/asm/mmu.h                    |  289 +
 arch/kvx/include/asm/mmu_context.h            |  156 +
 arch/kvx/include/asm/mmu_stats.h              |   38 +
 arch/kvx/include/asm/page.h                   |  172 +
 arch/kvx/include/asm/page_size.h              |   29 +
 arch/kvx/include/asm/pci.h                    |   36 +
 arch/kvx/include/asm/pgalloc.h                |   70 +
 arch/kvx/include/asm/pgtable-bits.h           |  105 +
 arch/kvx/include/asm/pgtable.h                |  468 ++
 arch/kvx/include/asm/privilege.h              |  211 +
 arch/kvx/include/asm/processor.h              |  176 +
 arch/kvx/include/asm/ptrace.h                 |  217 +
 arch/kvx/include/asm/pwr_ctrl.h               |   57 +
 arch/kvx/include/asm/seccomp.h                |   14 +
 arch/kvx/include/asm/sections.h               |   17 +
 arch/kvx/include/asm/setup.h                  |   34 +
 arch/kvx/include/asm/sfr.h                    |  107 +
 arch/kvx/include/asm/sfr_defs.h               | 5028 +++++++++++++++++
 arch/kvx/include/asm/smp.h                    |   63 +
 arch/kvx/include/asm/sparsemem.h              |   15 +
 arch/kvx/include/asm/spinlock.h               |   16 +
 arch/kvx/include/asm/spinlock_types.h         |   17 +
 arch/kvx/include/asm/stackprotector.h         |   47 +
 arch/kvx/include/asm/stacktrace.h             |   46 +
 arch/kvx/include/asm/string.h                 |   20 +
 arch/kvx/include/asm/swab.h                   |   48 +
 arch/kvx/include/asm/switch_to.h              |   18 +
 arch/kvx/include/asm/symbols.h                |   16 +
 arch/kvx/include/asm/sys_arch.h               |   51 +
 arch/kvx/include/asm/syscall.h                |  112 +
 arch/kvx/include/asm/syscalls.h               |   19 +
 arch/kvx/include/asm/thread_info.h            |   72 +
 arch/kvx/include/asm/timex.h                  |   20 +
 arch/kvx/include/asm/tlb.h                    |   24 +
 arch/kvx/include/asm/tlb_defs.h               |  132 +
 arch/kvx/include/asm/tlbflush.h               |   60 +
 arch/kvx/include/asm/traps.h                  |   79 +
 arch/kvx/include/asm/types.h                  |   12 +
 arch/kvx/include/asm/uaccess.h                |  317 ++
 arch/kvx/include/asm/unistd.h                 |   11 +
 arch/kvx/include/asm/vermagic.h               |   12 +
 arch/kvx/include/asm/vmalloc.h                |   10 +
 arch/kvx/include/uapi/asm/Kbuild              |    1 +
 arch/kvx/include/uapi/asm/bitsperlong.h       |   14 +
 arch/kvx/include/uapi/asm/byteorder.h         |   12 +
 arch/kvx/include/uapi/asm/cachectl.h          |   25 +
 arch/kvx/include/uapi/asm/ptrace.h            |  114 +
 arch/kvx/include/uapi/asm/sigcontext.h        |   16 +
 arch/kvx/include/uapi/asm/unistd.h            |   13 +
 arch/kvx/kernel/Makefile                      |   15 +
 arch/kvx/kernel/asm-offsets.c                 |  155 +
 arch/kvx/kernel/break_hook.c                  |   76 +
 arch/kvx/kernel/common.c                      |   11 +
 arch/kvx/kernel/cpu.c                         |   24 +
 arch/kvx/kernel/cpuinfo.c                     |   95 +
 arch/kvx/kernel/dame_handler.c                |  113 +
 arch/kvx/kernel/debug.c                       |   54 +
 arch/kvx/kernel/entry.S                       | 1208 ++++
 arch/kvx/kernel/head.S                        |  580 ++
 arch/kvx/kernel/insns.c                       |  166 +
 arch/kvx/kernel/io.c                          |   96 +
 arch/kvx/kernel/irq.c                         |   52 +
 arch/kvx/kernel/kvx_ksyms.c                   |   18 +
 arch/kvx/kernel/module.c                      |  148 +
 arch/kvx/kernel/process.c                     |  195 +
 arch/kvx/kernel/prom.c                        |   26 +
 arch/kvx/kernel/ptrace.c                      |  233 +
 arch/kvx/kernel/reset.c                       |   37 +
 arch/kvx/kernel/setup.c                       |  181 +
 arch/kvx/kernel/signal.c                      |  252 +
 arch/kvx/kernel/smp.c                         |   83 +
 arch/kvx/kernel/smpboot.c                     |  146 +
 arch/kvx/kernel/stacktrace.c                  |  177 +
 arch/kvx/kernel/sys_kvx.c                     |   58 +
 arch/kvx/kernel/syscall_table.c               |   19 +
 arch/kvx/kernel/time.c                        |  242 +
 arch/kvx/kernel/traps.c                       |  278 +
 arch/kvx/kernel/vdso.c                        |   87 +
 arch/kvx/kernel/vmlinux.lds.S                 |  150 +
 arch/kvx/lib/Makefile                         |    6 +
 arch/kvx/lib/clear_page.S                     |   40 +
 arch/kvx/lib/copy_page.S                      |   90 +
 arch/kvx/lib/delay.c                          |   40 +
 arch/kvx/lib/div.c                            |  198 +
 arch/kvx/lib/libgcc.h                         |   25 +
 arch/kvx/lib/memcpy.c                         |   72 +
 arch/kvx/lib/memset.S                         |  216 +
 arch/kvx/lib/strlen.S                         |  122 +
 arch/kvx/lib/usercopy.S                       |   90 +
 arch/kvx/mm/Makefile                          |    8 +
 arch/kvx/mm/cacheflush.c                      |  158 +
 arch/kvx/mm/dma-mapping.c                     |   83 +
 arch/kvx/mm/extable.c                         |   24 +
 arch/kvx/mm/fault.c                           |  270 +
 arch/kvx/mm/init.c                            |  297 +
 arch/kvx/mm/mmap.c                            |   31 +
 arch/kvx/mm/mmu.c                             |  202 +
 arch/kvx/mm/mmu_stats.c                       |   94 +
 arch/kvx/mm/tlb.c                             |  445 ++
 drivers/irqchip/Kconfig                       |   31 +
 drivers/irqchip/Makefile                      |    5 +
 drivers/irqchip/irq-kvx-apic-gic.c            |  356 ++
 drivers/irqchip/irq-kvx-apic-mailbox.c        |  480 ++
 drivers/irqchip/irq-kvx-core-intc.c           |  117 +
 drivers/irqchip/irq-kvx-ipi-ctrl.c            |  143 +
 drivers/irqchip/irq-kvx-itgen.c               |  234 +
 drivers/soc/Kconfig                           |    1 +
 drivers/soc/Makefile                          |    1 +
 drivers/soc/kvx/Kconfig                       |   10 +
 drivers/soc/kvx/Makefile                      |    2 +
 drivers/soc/kvx/coolidge_pwr_ctrl.c           |   84 +
 include/linux/cpuhotplug.h                    |    2 +
 include/uapi/linux/audit.h                    |    1 +
 include/uapi/linux/elf-em.h                   |    1 +
 include/uapi/linux/elf.h                      |    1 +
 tools/include/uapi/asm/bitsperlong.h          |    2 +
 168 files changed, 21904 insertions(+)
 create mode 100644 Documentation/arch/kvx/index.rst
 create mode 100644 Documentation/arch/kvx/kvx-exceptions.rst
 create mode 100644 Documentation/arch/kvx/kvx-iommu.rst
 create mode 100644 Documentation/arch/kvx/kvx-mmu.rst
 create mode 100644 Documentation/arch/kvx/kvx-smp.rst
 create mode 100644 Documentation/arch/kvx/kvx.rst
 create mode 100644 Documentation/devicetree/bindings/clock/kalray,coolidge-dsu-clock.yaml
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,coolidge-apic-gic.yaml
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,coolidge-apic-mailbox.yaml
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,coolidge-ipi-ctrl.yaml
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,coolidge-itgen.yaml
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kalray,kv3-1-intc.yaml
 create mode 100644 Documentation/devicetree/bindings/kalray/cpus.yaml
 create mode 100644 Documentation/devicetree/bindings/kalray/kalray.yaml
 create mode 100644 Documentation/devicetree/bindings/soc/kvx/kalray,coolidge-pwr-ctrl.yaml
 create mode 100644 Documentation/devicetree/bindings/timer/kalray,kv3-1-timer.yaml
 create mode 100644 arch/kvx/Kconfig
 create mode 100644 arch/kvx/Kconfig.debug
 create mode 100644 arch/kvx/Makefile
 create mode 100644 arch/kvx/boot/dts/Makefile
 create mode 100644 arch/kvx/boot/dts/coolidge-qemu.dts
 create mode 100644 arch/kvx/configs/defconfig
 create mode 100644 arch/kvx/include/asm/Kbuild
 create mode 100644 arch/kvx/include/asm/asm-prototypes.h
 create mode 100644 arch/kvx/include/asm/atomic.h
 create mode 100644 arch/kvx/include/asm/barrier.h
 create mode 100644 arch/kvx/include/asm/bitops.h
 create mode 100644 arch/kvx/include/asm/bitrev.h
 create mode 100644 arch/kvx/include/asm/break_hook.h
 create mode 100644 arch/kvx/include/asm/bug.h
 create mode 100644 arch/kvx/include/asm/cache.h
 create mode 100644 arch/kvx/include/asm/cacheflush.h
 create mode 100644 arch/kvx/include/asm/clocksource.h
 create mode 100644 arch/kvx/include/asm/cmpxchg.h
 create mode 100644 arch/kvx/include/asm/cpuinfo.h
 create mode 100644 arch/kvx/include/asm/current.h
 create mode 100644 arch/kvx/include/asm/debug.h
 create mode 100644 arch/kvx/include/asm/elf.h
 create mode 100644 arch/kvx/include/asm/entry-common.h
 create mode 100644 arch/kvx/include/asm/fixmap.h
 create mode 100644 arch/kvx/include/asm/futex.h
 create mode 100644 arch/kvx/include/asm/hugetlb.h
 create mode 100644 arch/kvx/include/asm/hw_irq.h
 create mode 100644 arch/kvx/include/asm/insns.h
 create mode 100644 arch/kvx/include/asm/insns_defs.h
 create mode 100644 arch/kvx/include/asm/io.h
 create mode 100644 arch/kvx/include/asm/ipi.h
 create mode 100644 arch/kvx/include/asm/irqflags.h
 create mode 100644 arch/kvx/include/asm/linkage.h
 create mode 100644 arch/kvx/include/asm/mem_map.h
 create mode 100644 arch/kvx/include/asm/mmu.h
 create mode 100644 arch/kvx/include/asm/mmu_context.h
 create mode 100644 arch/kvx/include/asm/mmu_stats.h
 create mode 100644 arch/kvx/include/asm/page.h
 create mode 100644 arch/kvx/include/asm/page_size.h
 create mode 100644 arch/kvx/include/asm/pci.h
 create mode 100644 arch/kvx/include/asm/pgalloc.h
 create mode 100644 arch/kvx/include/asm/pgtable-bits.h
 create mode 100644 arch/kvx/include/asm/pgtable.h
 create mode 100644 arch/kvx/include/asm/privilege.h
 create mode 100644 arch/kvx/include/asm/processor.h
 create mode 100644 arch/kvx/include/asm/ptrace.h
 create mode 100644 arch/kvx/include/asm/pwr_ctrl.h
 create mode 100644 arch/kvx/include/asm/seccomp.h
 create mode 100644 arch/kvx/include/asm/sections.h
 create mode 100644 arch/kvx/include/asm/setup.h
 create mode 100644 arch/kvx/include/asm/sfr.h
 create mode 100644 arch/kvx/include/asm/sfr_defs.h
 create mode 100644 arch/kvx/include/asm/smp.h
 create mode 100644 arch/kvx/include/asm/sparsemem.h
 create mode 100644 arch/kvx/include/asm/spinlock.h
 create mode 100644 arch/kvx/include/asm/spinlock_types.h
 create mode 100644 arch/kvx/include/asm/stackprotector.h
 create mode 100644 arch/kvx/include/asm/stacktrace.h
 create mode 100644 arch/kvx/include/asm/string.h
 create mode 100644 arch/kvx/include/asm/swab.h
 create mode 100644 arch/kvx/include/asm/switch_to.h
 create mode 100644 arch/kvx/include/asm/symbols.h
 create mode 100644 arch/kvx/include/asm/sys_arch.h
 create mode 100644 arch/kvx/include/asm/syscall.h
 create mode 100644 arch/kvx/include/asm/syscalls.h
 create mode 100644 arch/kvx/include/asm/thread_info.h
 create mode 100644 arch/kvx/include/asm/timex.h
 create mode 100644 arch/kvx/include/asm/tlb.h
 create mode 100644 arch/kvx/include/asm/tlb_defs.h
 create mode 100644 arch/kvx/include/asm/tlbflush.h
 create mode 100644 arch/kvx/include/asm/traps.h
 create mode 100644 arch/kvx/include/asm/types.h
 create mode 100644 arch/kvx/include/asm/uaccess.h
 create mode 100644 arch/kvx/include/asm/unistd.h
 create mode 100644 arch/kvx/include/asm/vermagic.h
 create mode 100644 arch/kvx/include/asm/vmalloc.h
 create mode 100644 arch/kvx/include/uapi/asm/Kbuild
 create mode 100644 arch/kvx/include/uapi/asm/bitsperlong.h
 create mode 100644 arch/kvx/include/uapi/asm/byteorder.h
 create mode 100644 arch/kvx/include/uapi/asm/cachectl.h
 create mode 100644 arch/kvx/include/uapi/asm/ptrace.h
 create mode 100644 arch/kvx/include/uapi/asm/sigcontext.h
 create mode 100644 arch/kvx/include/uapi/asm/unistd.h
 create mode 100644 arch/kvx/kernel/Makefile
 create mode 100644 arch/kvx/kernel/asm-offsets.c
 create mode 100644 arch/kvx/kernel/break_hook.c
 create mode 100644 arch/kvx/kernel/common.c
 create mode 100644 arch/kvx/kernel/cpu.c
 create mode 100644 arch/kvx/kernel/cpuinfo.c
 create mode 100644 arch/kvx/kernel/dame_handler.c
 create mode 100644 arch/kvx/kernel/debug.c
 create mode 100644 arch/kvx/kernel/entry.S
 create mode 100644 arch/kvx/kernel/head.S
 create mode 100644 arch/kvx/kernel/insns.c
 create mode 100644 arch/kvx/kernel/io.c
 create mode 100644 arch/kvx/kernel/irq.c
 create mode 100644 arch/kvx/kernel/kvx_ksyms.c
 create mode 100644 arch/kvx/kernel/module.c
 create mode 100644 arch/kvx/kernel/process.c
 create mode 100644 arch/kvx/kernel/prom.c
 create mode 100644 arch/kvx/kernel/ptrace.c
 create mode 100644 arch/kvx/kernel/reset.c
 create mode 100644 arch/kvx/kernel/setup.c
 create mode 100644 arch/kvx/kernel/signal.c
 create mode 100644 arch/kvx/kernel/smp.c
 create mode 100644 arch/kvx/kernel/smpboot.c
 create mode 100644 arch/kvx/kernel/stacktrace.c
 create mode 100644 arch/kvx/kernel/sys_kvx.c
 create mode 100644 arch/kvx/kernel/syscall_table.c
 create mode 100644 arch/kvx/kernel/time.c
 create mode 100644 arch/kvx/kernel/traps.c
 create mode 100644 arch/kvx/kernel/vdso.c
 create mode 100644 arch/kvx/kernel/vmlinux.lds.S
 create mode 100644 arch/kvx/lib/Makefile
 create mode 100644 arch/kvx/lib/clear_page.S
 create mode 100644 arch/kvx/lib/copy_page.S
 create mode 100644 arch/kvx/lib/delay.c
 create mode 100644 arch/kvx/lib/div.c
 create mode 100644 arch/kvx/lib/libgcc.h
 create mode 100644 arch/kvx/lib/memcpy.c
 create mode 100644 arch/kvx/lib/memset.S
 create mode 100644 arch/kvx/lib/strlen.S
 create mode 100644 arch/kvx/lib/usercopy.S
 create mode 100644 arch/kvx/mm/Makefile
 create mode 100644 arch/kvx/mm/cacheflush.c
 create mode 100644 arch/kvx/mm/dma-mapping.c
 create mode 100644 arch/kvx/mm/extable.c
 create mode 100644 arch/kvx/mm/fault.c
 create mode 100644 arch/kvx/mm/init.c
 create mode 100644 arch/kvx/mm/mmap.c
 create mode 100644 arch/kvx/mm/mmu.c
 create mode 100644 arch/kvx/mm/mmu_stats.c
 create mode 100644 arch/kvx/mm/tlb.c
 create mode 100644 drivers/irqchip/irq-kvx-apic-gic.c
 create mode 100644 drivers/irqchip/irq-kvx-apic-mailbox.c
 create mode 100644 drivers/irqchip/irq-kvx-core-intc.c
 create mode 100644 drivers/irqchip/irq-kvx-ipi-ctrl.c
 create mode 100644 drivers/irqchip/irq-kvx-itgen.c
 create mode 100644 drivers/soc/kvx/Kconfig
 create mode 100644 drivers/soc/kvx/Makefile
 create mode 100644 drivers/soc/kvx/coolidge_pwr_ctrl.c


base-commit: 0c3836482481200ead7b416ca80c68a29cfdaabd
-- 
2.45.2
Re: [RFC PATCH v3 00/37] Upstream kvx Linux port
Posted by Arnd Bergmann 1 year, 1 month ago
On Mon, Jul 22, 2024, at 11:41, ysionneau@kalrayinc.com wrote:
> From: Yann Sionneau <ysionneau@kalrayinc.com>
>
> This patch series adds support for the kv3-1 CPU architecture of the kvx family
> found in the Coolidge (aka MPPA3-80) SoC of Kalray.

Thanks for posting it again. I tried to read through it
and point out a few things I noticed. It's been a while
since v2, so I may have forgotten things we already discussed.

I did not see any major issues here, the main things that
take work to implement (better atomics, vmemmap, also vmap_stack
which I did not mention) are just there to make your code
better, but are not required to get it merged.

> This is an RFC, since kvx support is not yet upstreamed into gcc,
> therefore this patch series cannot be merged into Linux for now.

Do you have a timeline for upstream compiler support?  I see that
your github trees contain both llvm and gcc forks on an older
baseline (gcc-12.2 and llvm-15, respectively), but I don't know
how much you have already submitting for inclusion in a newer
release.

     Arnd
Re: [RFC PATCH v3 00/37] Upstream kvx Linux port
Posted by Yann Sionneau 1 year, 1 month ago
Hello Arnd,

Le 7/24/24 à 09:59, Arnd Bergmann a écrit :
> On Mon, Jul 22, 2024, at 11:41, ysionneau@kalrayinc.com wrote:
>> From: Yann Sionneau <ysionneau@kalrayinc.com>
>>
>> This patch series adds support for the kv3-1 CPU architecture of the kvx family
>> found in the Coolidge (aka MPPA3-80) SoC of Kalray.
> Thanks for posting it again. I tried to read through it
> and point out a few things I noticed. It's been a while
> since v2, so I may have forgotten things we already discussed.
>
> I did not see any major issues here, the main things that
> take work to implement (better atomics, vmemmap, also vmap_stack
> which I did not mention) are just there to make your code
> better, but are not required to get it merged.
Thanks a lot for your reviews, as always it's much appreciated.
>> This is an RFC, since kvx support is not yet upstreamed into gcc,
>> therefore this patch series cannot be merged into Linux for now.
> Do you have a timeline for upstream compiler support?  I see that
> your github trees contain both llvm and gcc forks on an older
> baseline (gcc-12.2 and llvm-15, respectively), but I don't know
> how much you have already submitting for inclusion in a newer
> release.
We are still willing to contribute our kvx support into upstream gcc, 
but we cannot commit to a deadline yet because

of some code cleanup that is needed and we don't have a date for it yet.

We also do have public gcc 13.2.0 support 
(https://github.com/kalray/gcc/blob/coolidge/ChangeLog) and llvm 15.0.7

We regularly (every 3 months) push on our github repos updated toolchains.

As said in the cover letter binutils kvx support is now upstream.

Regards,

-- 

Yann