interface unconditionally.
Link: https://lore.kernel.org/lkml/20190828151552.ga16...@infradead.org/
Link: https://lore.kernel.org/lkml/20190829214319.498c7de2@naga/
Signed-off-by: Michal Suchanek
Reviewed-by: Arnd Bergmann
---
v7: new patch
---
arch/powerpc/include/asm/unistd.h | 1 +
fs/re
v10:
- rebase, sent together with the syscall cleanup
Changes in v11:
- rebase
- add MAINTAINERS pattern for ppc perf
Michal Suchanek (8):
powerpc: Add back __ARCH_WANT_SYS_LLSEEK macro
powerpc: move common register copy functions from signal_32.c to
signal.c
powerpc/perf: consolidate
These functions are required for 64bit as well.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
arch/powerpc/kernel/signal.c| 141
arch/powerpc/kernel/signal_32.c | 140 ---
2 files changed, 141 insertions
There are two almost identical copies for 32bit and 64bit.
The function is used only in 32bit code which will be split out in next
patch so consolidate to one function.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v6: new patch
v8: move the consolidated function out of
There are numerous references to 32bit functions in generic and 64bit
code so ifdef them out.
Signed-off-by: Michal Suchanek
---
v2:
- fix 32bit ifdef condition in signal.c
- simplify the compat ifdef condition in vdso.c - 64bit is redundant
- simplify the compat ifdef condition in callchain.c
valid 32bit area on 64bit:
#define TASK_SIZE_USER32 (0x0001UL - (1 * PAGE_SIZE))
#define STACK_TOP_USER32 TASK_SIZE_USER32
Signed-off-by: Michal Suchanek
---
v8: new patch
v11: simplify by using is_32bit_task()
---
arch/powerpc/perf/callchain.c | 27 +++
1
On bigendian ppc64 it is common to have 32bit legacy binaries but much
less so on littleendian.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v3: make configurable
---
arch/powerpc/Kconfig | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc
Signed-off-by: Michal Suchanek
---
v10: new patch
---
MAINTAINERS | 2 ++
1 file changed, 2 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index bc8dbe4fe4c9..329bf4a31412 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -13088,6 +13088,8 @@ F: arch/*/kernel/*/perf_event*.c
F: arch
Building callchain.c with !COMPAT proved quite ugly with all the
defines. Splitting out the 32bit and 64bit parts looks better.
No code change intended.
Signed-off-by: Michal Suchanek
---
v6:
- move current_is_64bit consolidetaion to earlier patch
- move defines to the top of callchain_32.c
v10:
- rebase, sent together with the syscall cleanup
Changes in v11:
- rebase
- add MAINTAINERS pattern for ppc perf
Michal Suchanek (8):
powerpc: Add back __ARCH_WANT_SYS_LLSEEK macro
powerpc: move common register copy functions from signal_32.c to
signal.c
powerpc/perf: consolidate
interface unconditionally.
Link: https://lore.kernel.org/lkml/20190828151552.ga16...@infradead.org/
Link: https://lore.kernel.org/lkml/20190829214319.498c7de2@naga/
Signed-off-by: Michal Suchanek
Reviewed-by: Arnd Bergmann
---
v7: new patch
---
arch/powerpc/include/asm/unistd.h | 1 +
fs/re
These functions are required for 64bit as well.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
arch/powerpc/kernel/signal.c| 141
arch/powerpc/kernel/signal_32.c | 140 ---
2 files changed, 141 insertions
valid 32bit area on 64bit:
#define TASK_SIZE_USER32 (0x0001UL - (1 * PAGE_SIZE))
#define STACK_TOP_USER32 TASK_SIZE_USER32
Signed-off-by: Michal Suchanek
---
v8: new patch
v11: simplify by using is_32bit_task()
---
arch/powerpc/perf/callchain.c | 27 +++
1
There are two almost identical copies for 32bit and 64bit.
The function is used only in 32bit code which will be split out in next
patch so consolidate to one function.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v6: new patch
v8: move the consolidated function out of
There are numerous references to 32bit functions in generic and 64bit
code so ifdef them out.
Signed-off-by: Michal Suchanek
---
v2:
- fix 32bit ifdef condition in signal.c
- simplify the compat ifdef condition in vdso.c - 64bit is redundant
- simplify the compat ifdef condition in callchain.c
On bigendian ppc64 it is common to have 32bit legacy binaries but much
less so on littleendian.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v3: make configurable
---
arch/powerpc/Kconfig | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc
Building callchain.c with !COMPAT proved quite ugly with all the
defines. Splitting out the 32bit and 64bit parts looks better.
No code change intended.
Signed-off-by: Michal Suchanek
---
v6:
- move current_is_64bit consolidetaion to earlier patch
- move defines to the top of callchain_32.c
Signed-off-by: Michal Suchanek
---
v10: new patch
---
MAINTAINERS | 2 ++
1 file changed, 2 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index bc8dbe4fe4c9..329bf4a31412 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -13088,6 +13088,8 @@ F: arch/*/kernel/*/perf_event*.c
F: arch
interface unconditionally.
Link: https://lore.kernel.org/lkml/20190828151552.ga16...@infradead.org/
Link: https://lore.kernel.org/lkml/20190829214319.498c7de2@naga/
Signed-off-by: Michal Suchanek
Reviewed-by: Arnd Bergmann
---
v7: new patch
---
arch/powerpc/include/asm/unistd.h | 1 +
fs/re
v10:
- rebase, sent together with the syscall cleanup
Changes in v11:
- rebase
- add MAINTAINERS pattern for ppc perf
Changes in v12:
- simplify valid_user_sp and change to invalid_user_sp
- remove superfluous perf patterns in MAINTAINERS
Michal Suchanek (8):
powerpc: Add back
These functions are required for 64bit as well.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
arch/powerpc/kernel/signal.c| 141
arch/powerpc/kernel/signal_32.c | 140 ---
2 files changed, 141 insertions
There are two almost identical copies for 32bit and 64bit.
The function is used only in 32bit code which will be split out in next
patch so consolidate to one function.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v6: new patch
v8: move the consolidated function out of
valid 32bit area on 64bit:
#define TASK_SIZE_USER32 (0x0001UL - (1 * PAGE_SIZE))
#define STACK_TOP_USER32 TASK_SIZE_USER32
Change return value to bool. It is inverted by users anyway.
Change to invalid_user_sp to avoid inverting the return value twice.
Signed-off-by: Michal Suchanek
There are numerous references to 32bit functions in generic and 64bit
code so ifdef them out.
Signed-off-by: Michal Suchanek
---
v2:
- fix 32bit ifdef condition in signal.c
- simplify the compat ifdef condition in vdso.c - 64bit is redundant
- simplify the compat ifdef condition in callchain.c
On bigendian ppc64 it is common to have 32bit legacy binaries but much
less so on littleendian.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v3: make configurable
---
arch/powerpc/Kconfig | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc
Building callchain.c with !COMPAT proved quite ugly with all the
defines. Splitting out the 32bit and 64bit parts looks better.
No code change intended.
Signed-off-by: Michal Suchanek
---
v6:
- move current_is_64bit consolidetaion to earlier patch
- move defines to the top of callchain_32.c
While at it also simplify the existing perf patterns.
Signed-off-by: Michal Suchanek
---
v10: new patch
V12: remove redundant entries
---
MAINTAINERS | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index e1a99197fb34..578429d0 100644
--- a
start_here_common lacks a __init
annotation or the annotation of start_kernel is wrong.
Signed-off-by: Michal Suchanek
---
arch/powerpc/kernel/head_64.S | 4
1 file changed, 4 insertions(+)
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index ad79fddb974d
There is duplicate message about lack of support by firmware in
fadump_reserve_mem and setup_fadump. Due to different capitalization it
is clear that the one in setup_fadump is shown on boot. Remove the
duplicate that is not shown.
Signed-off-by: Michal Suchanek
---
arch/powerpc/kernel/fadump.c
future.
With this patch sysfs files are available whenever fadump is supported
by firmware.
There is duplicate message about lack of support by firmware in
fadump_reserve_mem and setup_fadump. Remove the duplicate message in
setup_fadump.
Signed-off-by: Michal Suchanek
---
v2: move the sysfs
Hello,
This is merge of https://patchwork.ozlabs.org/cover/1162376/ (except two
last experimental patches) and
https://patchwork.ozlabs.org/patch/1162079/ rebased on top of master.
There was minor conflict in Makefile in the latter series.
Thanks
Michal
Michal Suchanek (8):
powerpc: Add
From: Nicholas Piggin
The code generation macro arguments are difficult to read, and
defaults can't easily be used.
This introduces a block where parameters can be set for interrupt
handler code generation by the subsequent macros, and adds the first
generation macro for interrupt entry.
One in
From: Nicholas Piggin
No generated code change.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 24 +---
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
ind
From: Nicholas Piggin
No generated code change.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 12 +++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index 591ae2a73e
From: Nicholas Piggin
These don't provide a large amount of code sharing. Removing them
makes code easier to shuffle around. For example, some of the common
instructions will be moved into the common code gen macro.
No generated code change.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/ker
From: Nicholas Piggin
Aside from label names and BUG line numbers, the generated code change
is an additional HMI KVM handler added for the "late" KVM handler,
because early and late HMI generation is achieved by defining two
different interrupt types.
Signed-off-by: Nicholas Piggin
---
arch/p
From: Nicholas Piggin
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 68
1 file changed, 30 insertions(+), 38 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index b5decc9a0cbf..ba2dc
From: Nicholas Piggin
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 55 +---
1 file changed, 26 insertions(+), 29 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index f318869607db..bef0c
From: Nicholas Piggin
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 51 +---
1 file changed, 24 insertions(+), 27 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index ba2dcd91aaaf..f3188
From: Nicholas Piggin
Rather than using DAR=2 to select the i-side registers, add an
explicit option.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 23 ---
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/kernel/excepti
From: Nicholas Piggin
The real mode interrupt entry points currently use rfid to branch to
the common handler in virtual mode. This is a significant amount of
code, and forces other code (notably the KVM test) to live in the
real mode handler.
In the interest of minimising the amount of code tha
From: Nicholas Piggin
As well as moving code out of the unrelocated vectors, this allows the
masked handlers to be moved to common code, and allows the soft_nmi
handler to be generated more like a regular handler.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 106 ++
From: Nicholas Piggin
This allows more code to be moved out of unrelocated regions. The system
call KVMTEST is changed to be open-coded and remain in the tramp area to
avoid having to move it to entry_64.S. The custom nature of the system
call entry code means the hcall case can be made more stre
From: Nicholas Piggin
Replace IEARLY=1 and IEARLY=2 with IBRANCH_COMMON, which controls if
the entry code branches to a common handler; and IREALMODE_COMMON,
which controls whether the common handler should remain in real mode.
These special cases no longer avoid loading the SRR registers, there
From: Nicholas Piggin
These are used infrequently enough they don't provide much help, so
inline them.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 82 ++--
1 file changed, 28 insertions(+), 54 deletions(-)
diff --git a/arch/powerpc/kernel/
From: Nicholas Piggin
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 10 +-
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index abf26db36427..9fa71d51ecf4 100644
--- a
From: Nicholas Piggin
The hdec interrupt handler is reported to sometimes fire in Linux if
KVM leaves it pending after a guest exists. This is harmless, so there
is a no-op handler for it.
The interrupt handler currently uses the regular kernel stack. Change
this to avoid touching the stack enti
From: Nicholas Piggin
The reduction in interrupt entry size allows some handlers to be
re-inlined.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powe
From: Nicholas Piggin
Remove more magic numbers and replace with nicely named bools.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 68 +---
1 file changed, 32 insertions(+), 36 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
From: Nicholas Piggin
A few of the non-standard handlers are left uncommented. Some more
description could be added to some.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 391 ---
1 file changed, 353 insertions(+), 38 deletions(-)
diff --git
From: Nicholas Piggin
Apart from SRESET, MCE, and syscall (hcall variant), the SRR type
interrupts are not escalated to hypervisor mode, so delivered to the OS.
When running PR KVM, the OS is the hypervisor, and the guest runs with
MSR[PR]=1, so these interrupts must test if a guest was running
From: Nicholas Piggin
The soft nmi handler does not reconcile interrupt state, so it should
not return via the normal ret_from_except path. Return like other NMIs,
using the EXCEPTION_RESTORE_REGS macro.
This becomes important when the scv interrupt is implemented, which
must handle soft-masked
From: Nicholas Piggin
powerpc has an optimisation where interrupts avoid saving the
non-volatile (or callee saved) registers to the interrupt stack frame if
they are not required.
Two problems with this are that an interrupt does not always know
whether it will need non-volatiles; and if it does
% faster after this patch, because the exit
work is handled under local_irq_disable, and the hard mask and pending
interrupt replay is handled after that, which avoids games with MSR.
Signed-off-by: Nicholas Piggin
[ms: add endian conversion for dtl_idx]
Signed-off-by: Michal Suchanek
v3:
- Fix !KUAP
ced mtmsrd.
Signed-off-by: Nicholas Piggin
[ms: move the FP restore functions to restore_math. They are not used
anywhere else and when restore_math is not built gcc warns about them
being unused.]
Signed-off-by: Michal Suchanek
---
.../powerpc/include/asm/book3s/64/kup-radix.h | 10 +
ar
From: Nicholas Piggin
The difference between lite and regular returns is that the lite case
restores all NVGPRs, whereas lite skips that. This is quite clumsy
though, most interrupts want the NVGPRs saved for debugging, not to
modify in the caller, so the NVGPRs restore is not necessary most of
t
interface unconditionally.
Link: https://lore.kernel.org/lkml/20190828151552.ga16...@infradead.org/
Link: https://lore.kernel.org/lkml/20190829214319.498c7de2@naga/
Signed-off-by: Michal Suchanek
Reviewed-by: Arnd Bergmann
---
arch/powerpc/include/asm/unistd.h | 1 +
fs/read_write.c
These functions are required for 64bit as well.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
arch/powerpc/kernel/signal.c| 141
arch/powerpc/kernel/signal_32.c | 140 ---
2 files changed, 141 insertions
There are two almost identical copies for 32bit and 64bit.
The function is used only in 32bit code which will be split out in next
patch so consolidate to one function.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v6: new patch
v8: move the consolidated function out of the
Merge the 32bit and 64bit version.
Halve the check constants on 32bit.
Use STACK_TOP since it is defined.
This removes a page from the valid 32bit area on 64bit:
#define TASK_SIZE_USER32 (0x0001UL - (1 * PAGE_SIZE))
#define STACK_TOP_USER32 TASK_SIZE_USER32
Signed-off-by: Michal
ggested-by: Christophe Leroy
Signed-off-by: Michal Suchanek
---
arch/powerpc/perf/callchain.c | 17 +
1 file changed, 1 insertion(+), 16 deletions(-)
diff --git a/arch/powerpc/perf/callchain.c b/arch/powerpc/perf/callchain.c
index 7863ee0a0e69..fbf76cb01026 100644
--- a/arch/powerpc/perf/c
There are numerous references to 32bit functions in generic and 64bit
code so ifdef them out.
Signed-off-by: Michal Suchanek
---
v2:
- fix 32bit ifdef condition in signal.c
- simplify the compat ifdef condition in vdso.c - 64bit is redundant
- simplify the compat ifdef condition in callchain.c
On bigendian ppc64 it is common to have 32bit legacy binaries but much
less so on littleendian.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v3: make configurable
---
arch/powerpc/Kconfig | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc
Building callchain.c with !COMPAT proved quite ugly with all the
defines. Splitting out the 32bit and 64bit parts looks better.
No code change intended.
Signed-off-by: Michal Suchanek
---
v6:
- move current_is_64bit consolidetaion to earlier patch
- move defines to the top of callchain_32.c
Signed-off-by: Michal Suchanek
---
MAINTAINERS | 2 ++
1 file changed, 2 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index eb19fad370d7..2e6c187bc98c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12772,6 +12772,8 @@ F: arch/*/kernel/*/perf_event*.c
F: arch/*/kernel
ppc64e.
Thanks
Michal
Michal Suchanek (10):
powerpc/64: system call: Fix sparse warning about missing declaration
powerpc: Add back __ARCH_WANT_SYS_LLSEEK macro
powerpc: move common register copy functions from signal_32.c to
signal.c
powerpc/perf: remove current_is_64bit()
powerpc
From: Nicholas Piggin
The code generation macro arguments are difficult to read, and
defaults can't easily be used.
This introduces a block where parameters can be set for interrupt
handler code generation by the subsequent macros, and adds the first
generation macro for interrupt entry.
One in
From: Nicholas Piggin
No generated code change.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 24 +---
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
ind
From: Nicholas Piggin
No generated code change.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 12 +++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index 591ae2a73e
From: Nicholas Piggin
These don't provide a large amount of code sharing. Removing them
makes code easier to shuffle around. For example, some of the common
instructions will be moved into the common code gen macro.
No generated code change.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/ker
From: Nicholas Piggin
Aside from label names and BUG line numbers, the generated code change
is an additional HMI KVM handler added for the "late" KVM handler,
because early and late HMI generation is achieved by defining two
different interrupt types.
Signed-off-by: Nicholas Piggin
---
arch/p
From: Nicholas Piggin
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 68
1 file changed, 30 insertions(+), 38 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index b5decc9a0cbf..ba2dc
From: Nicholas Piggin
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 51 +---
1 file changed, 24 insertions(+), 27 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index ba2dcd91aaaf..f3188
From: Nicholas Piggin
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 55 +---
1 file changed, 26 insertions(+), 29 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index f318869607db..bef0c
From: Nicholas Piggin
Rather than using DAR=2 to select the i-side registers, add an
explicit option.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 23 ---
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/kernel/excepti
From: Nicholas Piggin
The real mode interrupt entry points currently use rfid to branch to
the common handler in virtual mode. This is a significant amount of
code, and forces other code (notably the KVM test) to live in the
real mode handler.
In the interest of minimising the amount of code tha
From: Nicholas Piggin
As well as moving code out of the unrelocated vectors, this allows the
masked handlers to be moved to common code, and allows the soft_nmi
handler to be generated more like a regular handler.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 106 ++
From: Nicholas Piggin
This allows more code to be moved out of unrelocated regions. The system
call KVMTEST is changed to be open-coded and remain in the tramp area to
avoid having to move it to entry_64.S. The custom nature of the system
call entry code means the hcall case can be made more stre
From: Nicholas Piggin
Replace IEARLY=1 and IEARLY=2 with IBRANCH_COMMON, which controls if
the entry code branches to a common handler; and IREALMODE_COMMON,
which controls whether the common handler should remain in real mode.
These special cases no longer avoid loading the SRR registers, there
From: Nicholas Piggin
These are used infrequently enough they don't provide much help, so
inline them.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 82 ++--
1 file changed, 28 insertions(+), 54 deletions(-)
diff --git a/arch/powerpc/kernel/
From: Nicholas Piggin
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 10 +-
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powerpc/kernel/exceptions-64s.S
index abf26db36427..9fa71d51ecf4 100644
--- a
From: Nicholas Piggin
The hdec interrupt handler is reported to sometimes fire in Linux if
KVM leaves it pending after a guest exists. This is harmless, so there
is a no-op handler for it.
The interrupt handler currently uses the regular kernel stack. Change
this to avoid touching the stack enti
From: Nicholas Piggin
The reduction in interrupt entry size allows some handlers to be
re-inlined.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
b/arch/powe
From: Nicholas Piggin
Remove more magic numbers and replace with nicely named bools.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 68 +---
1 file changed, 32 insertions(+), 36 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64s.S
From: Nicholas Piggin
A few of the non-standard handlers are left uncommented. Some more
description could be added to some.
Signed-off-by: Nicholas Piggin
---
arch/powerpc/kernel/exceptions-64s.S | 391 ---
1 file changed, 353 insertions(+), 38 deletions(-)
diff --git
From: Nicholas Piggin
Apart from SRESET, MCE, and syscall (hcall variant), the SRR type
interrupts are not escalated to hypervisor mode, so delivered to the OS.
When running PR KVM, the OS is the hypervisor, and the guest runs with
MSR[PR]=1, so these interrupts must test if a guest was running
From: Nicholas Piggin
The soft nmi handler does not reconcile interrupt state, so it should
not return via the normal ret_from_except path. Return like other NMIs,
using the EXCEPTION_RESTORE_REGS macro.
This becomes important when the scv interrupt is implemented, which
must handle soft-masked
From: Nicholas Piggin
powerpc has an optimisation where interrupts avoid saving the
non-volatile (or callee saved) registers to the interrupt stack frame if
they are not required.
Two problems with this are that an interrupt does not always know
whether it will need non-volatiles; and if it does
ced mtmsrd.
Signed-off-by: Nicholas Piggin
[ms: Move the FP restore functions to restore_math. They are not used
anywhere else and when restore_math is not built gcc warns about them
being unused.
Add asm/context_tracking.h include to exceptions-64e.S for SCHEDULE_USER
definition.]
Signed-off-
% faster after this patch, because the exit
work is handled under local_irq_disable, and the hard mask and pending
interrupt replay is handled after that, which avoids games with MSR.
Signed-off-by: Nicholas Piggin
[ms: add endian conversion for dtl_idx]
Signed-off-by: Michal Suchanek
v3:
- Fix !KUAP
From: Nicholas Piggin
The difference between lite and regular returns is that the lite case
restores all NVGPRs, whereas lite skips that. This is quite clumsy
though, most interrupts want the NVGPRs saved for debugging, not to
modify in the caller, so the NVGPRs restore is not necessary most of
t
atic?
Add declaration for them.
Signed-off-by: Michal Suchanek
---
arch/powerpc/include/asm/asm-prototypes.h | 6 ++
arch/powerpc/kernel/syscall_64.c | 1 +
2 files changed, 7 insertions(+)
diff --git a/arch/powerpc/include/asm/asm-prototypes.h
b/arch/powerpc/include/asm/asm-proto
interface unconditionally.
Link: https://lore.kernel.org/lkml/20190828151552.ga16...@infradead.org/
Link: https://lore.kernel.org/lkml/20190829214319.498c7de2@naga/
Signed-off-by: Michal Suchanek
Reviewed-by: Arnd Bergmann
---
arch/powerpc/include/asm/unistd.h | 1 +
fs/read_write.c
These functions are required for 64bit as well.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
arch/powerpc/kernel/signal.c| 141
arch/powerpc/kernel/signal_32.c | 140 ---
2 files changed, 141 insertions
ggested-by: Christophe Leroy
Signed-off-by: Michal Suchanek
---
arch/powerpc/perf/callchain.c | 17 +
1 file changed, 1 insertion(+), 16 deletions(-)
diff --git a/arch/powerpc/perf/callchain.c b/arch/powerpc/perf/callchain.c
index c84bbd4298a0..35d542515faf 100644
--- a/arch/powerpc/perf/c
There are two almost identical copies for 32bit and 64bit.
The function is used only in 32bit code which will be split out in next
patch so consolidate to one function.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v6: new patch
v8: move the consolidated function out of the
valid 32bit area on 64bit:
#define TASK_SIZE_USER32 (0x0001UL - (1 * PAGE_SIZE))
#define STACK_TOP_USER32 TASK_SIZE_USER32
Signed-off-by: Michal Suchanek
---
v8: new patch
v11: simplify by using is_32bit_task()
---
arch/powerpc/perf/callchain.c | 27 +++
1
There are numerous references to 32bit functions in generic and 64bit
code so ifdef them out.
Signed-off-by: Michal Suchanek
---
v2:
- fix 32bit ifdef condition in signal.c
- simplify the compat ifdef condition in vdso.c - 64bit is redundant
- simplify the compat ifdef condition in callchain.c
On bigendian ppc64 it is common to have 32bit legacy binaries but much
less so on littleendian.
Signed-off-by: Michal Suchanek
Reviewed-by: Christophe Leroy
---
v3: make configurable
---
arch/powerpc/Kconfig | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc
Building callchain.c with !COMPAT proved quite ugly with all the
defines. Splitting out the 32bit and 64bit parts looks better.
No code change intended.
Signed-off-by: Michal Suchanek
---
v6:
- move current_is_64bit consolidetaion to earlier patch
- move defines to the top of callchain_32.c
1 - 100 of 338 matches
Mail list logo