Skip to content

OpenRISC patches for 4.11

Stafford Horne linux-arch lkml openrisc 4 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest24 patches 21 repliesIn review
  2. v325 patches 22 repliesSuperseded
  3. v223 patches 0 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v122 patches4 repliesSuperseded

Changes in v4 from the cover letter

o Removed spinlock due to
- Peter had some comments on qrwlocks and unlocking that should be pretty easy, but...
- Its only going to be used for SMP so not testable by me now
o incorporate Atomic & Cmpxchg comments from Peter Z and RTH
o incorporate Idle state formatting comments from Joe Perches

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/24openrisc: use SPARSE_IRQarch/openrisc/Kconfig arch/openrisc/include/asm/Kbuild+2 -00 replies
2/24openrisc: add cache way information to cpuinfoarch/openrisc/include/asm/cpuinfo.h arch/openrisc/kernel/setup.c+38 -310 replies
3/24openrisc: tlb miss handler optimizationsarch/openrisc/kernel/head.S+46 -950 replies
4/24openrisc: head: use THREAD_SIZE instead of magic constantarch/openrisc/kernel/head.S+3 -10 replies
5/24openrisc: head: refactor out tlb flush into it's own functionarch/openrisc/kernel/head.S+22 -165 replies
6/24openrisc: add l.lwa/l.swa emulationarch/openrisc/kernel/entry.S arch/openrisc/kernel/process.c arch/openrisc/kernel/traps.c+206 -22 replies
7/24openrisc: add atomic bitopsarch/openrisc/include/asm/bitops.h arch/openrisc/include/asm/bitops/atomic.h+124 -12 replies
8/24openrisc: add cmpxchg and xchg implementationsarch/openrisc/include/asm/Kbuild arch/openrisc/include/asm/cmpxchg.h+83 -20 replies
9/24openrisc: add optimized atomic operationsarch/openrisc/include/asm/Kbuild arch/openrisc/include/asm/atomic.h include/asm-generic/atomic.h+128 -10 replies
10/24openrisc: add futex_atomic_* implementationsarch/openrisc/include/asm/Kbuild arch/openrisc/include/asm/futex.h+135 -10 replies
11/24openrisc: remove unnecessary stddef.h includearch/openrisc/kernel/ptrace.c+0 -10 replies
12/24openrisc: Fix the bitmask for the unit present registerarch/openrisc/include/asm/spr_defs.h+2 -20 replies
13/24openrisc: Initial support for the idle statearch/openrisc/kernel/process.c+11 -00 replies
14/24openrisc: Add optimized memsetarch/openrisc/include/asm/string.h arch/openrisc/kernel/or32_ksyms.c arch/openrisc/lib/Makefile +1 more+107 -10 replies
15/24openrisc: Add optimized memcpy routinearch/openrisc/TODO.openrisc arch/openrisc/include/asm/string.h arch/openrisc/lib/Makefile +1 more+128 -20 replies
16/24openrisc: Add .gitignorearch/openrisc/kernel/.gitignore+1 -00 replies
17/24MAINTAINERS: Add the openrisc official repositoryMAINTAINERS+1 -00 replies
18/24scripts/checkstack.pl: Add openrisc supportscripts/checkstack.pl+3 -02 replies
19/24openrisc: entry: Whitespace and comment cleanupsarch/openrisc/kernel/entry.S+18 -202 replies
20/24openrisc: entry: Fix delay slot detectionarch/openrisc/kernel/entry.S+2 -22 replies
21/24openrisc: head: Move init strings to rodata sectionarch/openrisc/kernel/head.S+1 -112 replies
22/24arch/openrisc/lib/memcpy.c: use correct OR1200 optionarch/openrisc/lib/memcpy.c+1 -12 replies
23/24openrisc: Export ioremap symbols used by modulesarch/openrisc/mm/ioremap.c+2 -00 replies
24/24openrisc: head: Init r0 to 0 on startarch/openrisc/kernel/head.S+4 -12 replies

Reviews trailers per patch

1 of 24 patches has a Reviewed-by or Acked-by.

PatchPeter Zijlstra (Intel)
1/24
2/24
3/24
4/24
5/24
6/24
7/24A-b
8/24
9/24
10/24
11/24
12/24
13/24
14/24
15/24
16/24
17/24
18/24
19/24
20/24
21/24
22/24
23/24
24/24

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v4 thread

Cover letter [PATCH v4 00/24] OpenRISC patches for 4.11

Hi All,

Changes from v3
o Removed spinlock due to
- Peter had some comments on qrwlocks and unlocking that should be pretty easy, but...
- Its only going to be used for SMP so not testable by me now
o incorporate Atomic & Cmpxchg comments from Peter Z and RTH
o incorporate Idle state formatting comments from Joe Perches

Changes from v2
o implemented all atomic ops pointed out by Peter Z
o export ioremap symbols pointed out by allyesconfig
o init r0 to 0 as per openrisc spec, suggested by Jakob Viketoft

Changes from v1
o added change set from Valentin catching CONFIG issues
o added missing test_and_change_bit atomic bitops patch

This is another attempt to get some final comments before I send the pull request for this merge window to Linus. Again, this is coming as I got some nice comments on costmetics and issues with my last series.

Any feedback is appreciated.

The interesting things here are:
- optimized memset and memcpy routines, ~20% boot time saving
- support for cpu idling
- adding support for l.swa and l.lwa atomic operations (in spec from 2014)
- use atomics to implement: bitops, cmpxchg, futex, spinlocks
- the atomics are in preparation for SMP support

Testing:
I have used the kselftests to validate the changes especially the futex operations with the futex test. Other atomic operations are common so no explicit testing. I have mainly done the tests on qemu.

Note for testers:
The l.swa and l.lwa emulation + native instruction support is NOW FIXED in qemu upstream git.

I have send patches for get a recent openrisc toolchain added to the lkp-tests make.cross script. It should be up to date now I believe this is what most build sytems use. Let me know if different.

-Stafford

Jonas Bonn (1):
openrisc: use SPARSE_IRQ

Olof Kindgren (1):
openrisc: Add optimized memset

Sebastian Macke (2):
openrisc: Fix the bitmask for the unit present register
openrisc: Initial support for the idle state

Stafford Horne (9):
openrisc: Add optimized memcpy routine
openrisc: Add .gitignore
MAINTAINERS: Add the openrisc official repository scripts/checkstack.pl: Add openrisc support
openrisc: entry: Whitespace and comment cleanups
openrisc: entry: Fix delay slot detection
openrisc: head: Move init strings to rodata section
openrisc: Export ioremap symbols used by modules
openrisc: head: Init r0 to 0 on start

Stefan Kristiansson (10):
openrisc: add cache way information to cpuinfo
openrisc: tlb miss handler optimizations
openrisc: head: use THREAD_SIZE instead of magic constant
openrisc: head: refactor out tlb flush into it's own function
openrisc: add l.lwa/l.swa emulation
openrisc: add atomic bitops
openrisc: add cmpxchg and xchg implementations
openrisc: add optimized atomic operations
openrisc: add futex_atomic_* implementations
openrisc: remove unnecessary stddef.h include

Valentin Rothberg (1):
arch/openrisc/lib/memcpy.c: use correct OR1200 option

 MAINTAINERS                               |   1 +
 arch/openrisc/Kconfig                     |   1 +
 arch/openrisc/TODO.openrisc               |   1 -
 arch/openrisc/include/asm/Kbuild          |   5 +-
 arch/openrisc/include/asm/atomic.h        | 126 +++++++++++++++++++
 arch/openrisc/include/asm/bitops.h        |   2 +-
 arch/openrisc/include/asm/bitops/atomic.h | 123 ++++++++++++++++++
 arch/openrisc/include/asm/cmpxchg.h       |  83 +++++++++++++
 arch/openrisc/include/asm/cpuinfo.h       |   2 +
 arch/openrisc/include/asm/futex.h         | 135 ++++++++++++++++++++
 arch/openrisc/include/asm/spr_defs.h      |   4 +-
 arch/openrisc/include/asm/string.h        |  10 ++
 arch/openrisc/kernel/.gitignore           |   1 +
 arch/openrisc/kernel/entry.S              |  60 +++++----
 arch/openrisc/kernel/head.S               | 200 ++++++++++++------------------
 arch/openrisc/kernel/or32_ksyms.c         |   1 +
 arch/openrisc/kernel/process.c            |  14 +++
 arch/openrisc/kernel/ptrace.c             |   1 -
 arch/openrisc/kernel/setup.c              |  67 +++++-----
 arch/openrisc/kernel/traps.c              | 183 +++++++++++++++++++++++++++
 arch/openrisc/lib/Makefile                |   2 +-
 arch/openrisc/lib/memcpy.c                | 124 ++++++++++++++++++
 arch/openrisc/lib/memset.S                |  98 +++++++++++++++
 arch/openrisc/mm/ioremap.c                |   2 +
 include/asm-generic/atomic.h              |   2 +
 scripts/checkstack.pl                     |   3 +
 26 files changed, 1064 insertions(+), 187 deletions(-)
 create mode 100644 arch/openrisc/include/asm/atomic.h
 create mode 100644 arch/openrisc/include/asm/bitops/atomic.h
 create mode 100644 arch/openrisc/include/asm/cmpxchg.h
 create mode 100644 arch/openrisc/include/asm/futex.h
 create mode 100644 arch/openrisc/include/asm/string.h
 create mode 100644 arch/openrisc/kernel/.gitignore
 create mode 100644 arch/openrisc/lib/memcpy.c
 create mode 100644 arch/openrisc/lib/memset.S
Signature · 1 line
2.9.3