Linux port for Xtensa

Linux git tree: https://github.com/jcmvbkbc/linux-xtensa

Build/test tools git tree: https://github.com/jcmvbkbc/xtensa-linux-test

Toolchain build scripts/overlays git tree: https://github.com/jcmvbkbc/xtensa-toolchain-build

Patch review checklist: Patch review check list

Patch/pull request checklist: Patch/pull request check list

Phase 1

Goal: linux mainline contains the latest linux-xtensa updates, builds and works.

compilable with latest GCC

overlays to cover: FSF, dc232b, more TBD

tests to pass: builds, boots, LTP

boards to focus on: ISS, ML605

configurations: UP, linux-next specific, more TBD

Plan

[+] Prepare for linux-next participation

[+] Make mainline build for ARCH=xtensa in defconfig, allnoconfig, allmodconfig

[+] fix remaining issues with allmodconfig

qemu needs proper handling for guest ioctls triggered via simcalls

[+] Make built images work (qemu, FSF)

[+] Build userspace

Automated build/test scripts

[+] build/test status/logs

expect script to run LTP

Analyse reference tree

proper bugfixes

new cores (dc233c, test_hifi_c3, s*)

new platforms (lx*, ml605, s*)

SMP and its fixes

XCC fixes

Issues

Work items

SMP support

Done, in the mainline:

99d5040 xtensa: keep a3 and excsave1 on entry to exception handlers
5515daa xtensa: fix arch spinlock function names
6235153 xtensa: update clockevent setup for SMP
cbd1de2 xtensa: move built-in PIC to drivers/irqchip
26a8e96 xtensa: add MX irqchip
f615136 xtensa: add SMP support
49b424f xtensa: implement CPU hotplug

Support for Tensilica FPGA boards

[+] serial

[+] ethernet

[+] FLASH

[-] audio

In the mainline:

0d456ba xtensa: add support for the XTFPGA boards
5584b4d xtensa: add XTFPGA DTS

Atomics (arch/xtensa/include/asm/atomic.h, bitops.h, spinlock.h) and check for S32C1I

Merged in the eb0a9bf31fdbcee9463c0f42fbf4a292ef149a7d, pick up from individual files.

Done, in the mainline:

2f6ea6a xtensa: display s32c1i feature flag in cpuinfo
733536b xtensa: save and restore scompare1 SR on kernel entry
c622b29 xtensa: initialize atomctl SR
28570e8 xtensa: add trap_set_handler function
0027312 xtensa: add s32c1i sanity check
219b1e4 xtensa: add s32c1i-based atomic ops implementations
e5a9f6a xtensa: add s32c1i-based bitops implementations
71872b5 xtensa: add s32c1i-based spinlock implementations
599bf77 xtensa: fix mb and wmb definitions

TIE coprocessors

23ae3f723c8996d47ef205e98cb7732bbde4775f

Highmem

Non-functional. Doing from scratch.

Interrupt management

Done, in the mainline:

2206d5d xtensa: add IRQ domains support

Medium level interrupts in less hacky way

489fb47c75772e3a41ef3e988eb0c0e512592085

Done, in the mainline:

2d1c645 xtensa: dispatch medium-priority interrupts
895666a xtensa: disable IRQs while IRQ handler is running

Device trees support

Done, in the mainline:

da844a8 xtensa: add device trees support

MMU v3

Done, in the mainline:

e85e335 xtensa: add MMU v3 support
93e294a xtensa: document MMUv3 setup sequence

ptrace (support latest GDB)

617244763e19a4eebb4fabe41ba56eb1ccbdb049, 23ae3f723c8996d47ef205e98cb7732bbde4775f, ff1b10f85a1176d1eb8df433434b717f6f0841d4 (already upstream), a2b61af3328025d6069e8bf9ff36f5288e11dba9

Support for building with XCC

simdisk

1a955825662fa378d447b91485d9fe2438124b0a, 8bcbc3adb5c5bfdbd96078c1e68916be859c832d

Done, in the mainline:

b6c7e87 xtensa: ISS: add host file-based simulated disk

Various fixes made for debuggability

oprofile

8c502ca703956e56bf191774e4169752f0f71c8e, 7dd1d39e70769f2dd7a6a508d58b187ed8d1cb95

Done, in the mainline:

e6ffe17 xtensa: add support for oprofile
74f5bf0 xtensa: fix oprofile building as module

Generic kernel_thread & friends

Done, in the mainline:

3306a72 xtensa: switch to generic kernel_thread()
f0a1bf0 xtensa: switch to generic kernel_execve()
dc241f2 xtensa: switch to generic sys_execve()

Cache aliasing aware mmap

Done, in the mainline:

de73b6b xtensa: avoid mmap cache aliasing