|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4 |
|
| #
ae952eea |
| 24-Apr-2025 |
Heiko Carstens <[email protected]> |
s390/entry: Fix last breaking event handling in case of stack corruption
In case of stack corruption stack_invalid() is called and the expectation is that register r10 contains the last breaking eve
s390/entry: Fix last breaking event handling in case of stack corruption
In case of stack corruption stack_invalid() is called and the expectation is that register r10 contains the last breaking event address. This dependency is quite subtle and broke a couple of years ago without that anybody noticed.
Fix this by getting rid of the dependency and read the last breaking event address from lowcore.
Fixes: 56e62a737028 ("s390: convert to generic entry") Acked-by: Ilya Leoshkevich <[email protected]> Reviewed-by: Alexander Gordeev <[email protected]> Signed-off-by: Heiko Carstens <[email protected]>
show more ...
|
|
Revision tags: v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14 |
|
| #
121df45b |
| 20-Mar-2025 |
Sven Schnelle <[email protected]> |
s390/entry: Fix setting _CIF_MCCK_GUEST with lowcore relocation
When lowcore relocation is enabled, the machine check handler doesn't use the lowcore address when setting _CIF_MCCK_GUEST. Fix this b
s390/entry: Fix setting _CIF_MCCK_GUEST with lowcore relocation
When lowcore relocation is enabled, the machine check handler doesn't use the lowcore address when setting _CIF_MCCK_GUEST. Fix this by adding the missing base register.
Fixes: 0001b7bbc53a ("s390/entry: Make mchk_int_handler() ready for lowcore relocation") Reported-by: Heiko Carstens <[email protected]> Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc7, v6.14-rc6, v6.14-rc5 |
|
| #
f740a8b4 |
| 27-Feb-2025 |
Sven Schnelle <[email protected]> |
s390/traps: Change stack overflow message
When the kernel stack pointer is pointing to invalid memory, a 'Kernel stack overflow' message is printed, which is misleading. Change the message to actual
s390/traps: Change stack overflow message
When the kernel stack pointer is pointing to invalid memory, a 'Kernel stack overflow' message is printed, which is misleading. Change the message to actually say that the stack pointer is invalid instead.
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
b337f6af |
| 25-Feb-2025 |
Heiko Carstens <[email protected]> |
s390: Use system header file variant of include directive
A few include directives use the local search variant even though the files to be included aren't local. Therefore use the normal system hea
s390: Use system header file variant of include directive
A few include directives use the local search variant even though the files to be included aren't local. Therefore use the normal system header file variant of the include directive.
Signed-off-by: Heiko Carstens <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc4, v6.14-rc3, v6.14-rc2 |
|
| #
e4da8249 |
| 07-Feb-2025 |
Heiko Carstens <[email protected]> |
s390/lowcore: Convert relocated lowcore alternative to machine feature
Convert the explicit relocated lowcore alternative type to a more generic machine feature. This only reduces the number of alte
s390/lowcore: Convert relocated lowcore alternative to machine feature
Convert the explicit relocated lowcore alternative type to a more generic machine feature. This only reduces the number of alternative types, but has no impact on code generation.
Reviewed-by: Vasily Gorbik <[email protected]> Signed-off-by: Heiko Carstens <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc1, v6.13, v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4, v6.13-rc3, v6.13-rc2 |
|
| #
27939d6c |
| 02-Dec-2024 |
Heiko Carstens <[email protected]> |
s390/Kconfig: Select VMAP_STACK unconditionally
There is no point in supporting !VMAP_STACK kernel builds. VMAP_STACK has proven to work since many years. Also, since KASAN_VMALLOC is supported, ker
s390/Kconfig: Select VMAP_STACK unconditionally
There is no point in supporting !VMAP_STACK kernel builds. VMAP_STACK has proven to work since many years. Also, since KASAN_VMALLOC is supported, kernels built with !VMAP_STACK are completely untested.
Therefore select VMAP_STACK unconditionally and remove all config options and code required for !VMAP_STACK builds.
Acked-by: Christian Borntraeger <[email protected]> Reviewed-by: Vasily Gorbik <[email protected]> Signed-off-by: Heiko Carstens <[email protected]> Signed-off-by: Alexander Gordeev <[email protected]>
show more ...
|
|
Revision tags: v6.13-rc1 |
|
| #
45c9f2b8 |
| 19-Nov-2024 |
Vasily Gorbik <[email protected]> |
s390/entry: Mark IRQ entries to fix stack depot warnings
The stack depot filters out everything outside of the top interrupt context as an uninteresting or irrelevant part of the stack traces. This
s390/entry: Mark IRQ entries to fix stack depot warnings
The stack depot filters out everything outside of the top interrupt context as an uninteresting or irrelevant part of the stack traces. This helps with stack trace de-duplication, avoiding an explosion of saved stack traces that share the same IRQ context code path but originate from different randomly interrupted points, eventually exhausting the stack depot.
Filtering uses in_irqentry_text() to identify functions within the .irqentry.text and .softirqentry.text sections, which then become the last stack trace entries being saved.
While __do_softirq() is placed into the .softirqentry.text section by common code, populating .irqentry.text is architecture-specific.
Currently, the .irqentry.text section on s390 is empty, which prevents stack depot filtering and de-duplication and could result in warnings like:
Stack depot reached limit capacity WARNING: CPU: 0 PID: 286113 at lib/stackdepot.c:252 depot_alloc_stack+0x39a/0x3c8
with PREEMPT and KASAN enabled.
Fix this by moving the IO/EXT interrupt handlers from .kprobes.text into the .irqentry.text section and updating the kprobes blacklist to include the .irqentry.text section.
This is done only for asynchronous interrupts and explicitly not for program checks, which are synchronous and where the context beyond the program check is important to preserve. Despite machine checks being somewhat in between, they are extremely rare, and preserving context when possible is also of value.
SVCs and Restart Interrupts are not relevant, one being always at the boundary to user space and the other being a one-time thing.
IRQ entries filtering is also optionally used in ftrace function graph, where the same logic applies.
Cc: [email protected] # 5.15+ Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]> Signed-off-by: Heiko Carstens <[email protected]>
show more ...
|
|
Revision tags: v6.12, v6.12-rc7, v6.12-rc6, v6.12-rc5 |
|
| #
05066caf |
| 22-Oct-2024 |
Claudio Imbrenda <[email protected]> |
s390/mm/fault: Handle guest-related program interrupts in KVM
Any program interrupt that happens in the host during the execution of a KVM guest will now short circuit the fault handler and return t
s390/mm/fault: Handle guest-related program interrupts in KVM
Any program interrupt that happens in the host during the execution of a KVM guest will now short circuit the fault handler and return to KVM immediately. Guest fault handling (including pfault) will happen entirely inside KVM.
When sie64a() returns zero, current->thread.gmap_int_code will contain the program interrupt number that caused the exit, or zero if the exit was not caused by a host program interrupt.
KVM will now take care of handling all guest faults in vcpu_post_run().
Since gmap faults will not be visible by the rest of the kernel, remove GMAP_FAULT, the linux fault handlers for secure execution faults, the exception table entries for the sie instruction, the nop padding after the sie instruction, and all other references to guest faults from the s390 code.
Signed-off-by: Claudio Imbrenda <[email protected]> Co-developed-by: Heiko Carstens <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Heiko Carstens <[email protected]>
show more ...
|
| #
f96cb0d6 |
| 22-Oct-2024 |
Claudio Imbrenda <[email protected]> |
s390/entry: Remove __GMAP_ASCE and use _PIF_GUEST_FAULT again
Now that the guest ASCE is passed as a parameter to __sie64a(), _PIF_GUEST_FAULT can be used again to determine whether the fault was a
s390/entry: Remove __GMAP_ASCE and use _PIF_GUEST_FAULT again
Now that the guest ASCE is passed as a parameter to __sie64a(), _PIF_GUEST_FAULT can be used again to determine whether the fault was a guest or host fault.
Since the guest ASCE will not be taken from the gmap pointer in lowcore anymore, __GMAP_ASCE can be removed. For the same reason the guest ASCE needs now to be saved into the cr1 save area unconditionally.
Signed-off-by: Claudio Imbrenda <[email protected]> Acked-by: Janosch Frank <[email protected]> Reviewed-by: Heiko Carstens <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Heiko Carstens <[email protected]>
show more ...
|
|
Revision tags: v6.12-rc4, v6.12-rc3, v6.12-rc2, v6.12-rc1, v6.11 |
|
| #
013e9843 |
| 13-Sep-2024 |
Heiko Carstens <[email protected]> |
s390/alternatives: Remove ALT_FACILITY_EARLY
Patch all alternatives which depend on facilities from the decompressor. There is no technical reason which enforces to split patching of such alternativ
s390/alternatives: Remove ALT_FACILITY_EARLY
Patch all alternatives which depend on facilities from the decompressor. There is no technical reason which enforces to split patching of such alternatives to the decompressor and the kernel.
This simplifies alternative handling a bit, since one alternative type is removed.
Signed-off-by: Heiko Carstens <[email protected]> Signed-off-by: Jason A. Donenfeld <[email protected]>
show more ...
|
|
Revision tags: v6.11-rc7, v6.11-rc6 |
|
| #
ee3daf7c |
| 28-Aug-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Unify save_area_sync and save_area_async
In the past two save areas existed because interrupt handlers and system call / program check handlers where entered with interrupts enabled. To
s390/entry: Unify save_area_sync and save_area_async
In the past two save areas existed because interrupt handlers and system call / program check handlers where entered with interrupts enabled. To prevent a handler from overwriting the save areas from the previous handler, interrupts used the async save area, while system call and program check handler used the sync save area.
Since the removal of critical section cleanup from entry.S, handlers are entered with interrupts disabled. When the interrupts are re-enabled, the save area is no longer need. Therefore merge both save areas into one.
Reviewed-by: Heiko Carstens <[email protected]> Reviewed-by: Alexander Gordeev <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
|
Revision tags: v6.11-rc5, v6.11-rc4, v6.11-rc3, v6.11-rc2 |
|
| #
85878ff1 |
| 01-Aug-2024 |
Heiko Carstens <[email protected]> |
s390/entry: Move early_pgm_check_handler() to init text section
Save some bytes and move early_pgm_check_handler() to init text section.
Reviewed-by: Alexander Gordeev <[email protected]> Sign
s390/entry: Move early_pgm_check_handler() to init text section
Save some bytes and move early_pgm_check_handler() to init text section.
Reviewed-by: Alexander Gordeev <[email protected]> Signed-off-by: Heiko Carstens <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
f101b305 |
| 31-Jul-2024 |
Heiko Carstens <[email protected]> |
s390/entry: Make early program check handler relocated lowcore aware
Add the missing pieces so the early program check handler also works with a relocated lowcore. Right now the result of an early p
s390/entry: Make early program check handler relocated lowcore aware
Add the missing pieces so the early program check handler also works with a relocated lowcore. Right now the result of an early program check in case of a relocated lowcore would be a program check loop.
Fixes: 8f1e70adb1a3 ("s390/boot: Add cmdline option to relocate lowcore") Reviewed-by: Sven Schnelle <[email protected]> Signed-off-by: Heiko Carstens <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
f2bb5b97 |
| 31-Jul-2024 |
Heiko Carstens <[email protected]> |
s390/entry: Move early program check handler to entry.S
Have all program check handlers in one file to make future changes easy.
Reviewed-by: Alexander Gordeev <[email protected]> Reviewed-by:
s390/entry: Move early program check handler to entry.S
Have all program check handlers in one file to make future changes easy.
Reviewed-by: Alexander Gordeev <[email protected]> Reviewed-by: Sven Schnelle <[email protected]> Signed-off-by: Heiko Carstens <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
|
Revision tags: v6.11-rc1 |
|
| #
361f6ec2 |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Make system_call() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in system_call().
Reviewed
s390/entry: Make system_call() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in system_call().
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
9b3dcae1 |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Make ret_from_fork() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in ret_from_fork().
Revi
s390/entry: Make ret_from_fork() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in ret_from_fork().
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
7cc86dee |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Make __switch_to() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in __switch_to().
Reviewed
s390/entry: Make __switch_to() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in __switch_to().
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
4064b711 |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Make restart_int_handler() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in restart_int_hand
s390/entry: Make restart_int_handler() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in restart_int_handler().
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
0001b7bb |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Make mchk_int_handler() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in mcck_int_handler().
s390/entry: Make mchk_int_handler() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in mcck_int_handler().
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
bd2c55b3 |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Make int handlers ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in the ext/io interrupt hand
s390/entry: Make int handlers ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in the ext/io interrupt handlers.
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
9e1e275f |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Make pgm_check_handler() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in pgm_check_handler(
s390/entry: Make pgm_check_handler() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in pgm_check_handler().
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
86e08d64 |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Add base register to CHECK_VMAP_STACK/CHECK_STACK macro
In preparation of having lowcore at different address than zero, add the base register to CHECK_VMAP_STACK and CHECK_STACK. No fun
s390/entry: Add base register to CHECK_VMAP_STACK/CHECK_STACK macro
In preparation of having lowcore at different address than zero, add the base register to CHECK_VMAP_STACK and CHECK_STACK. No functional change, because %r0 is passed to the macro.
Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
6908f8f9 |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Add base register to SIEEXIT macro
In preparation of having lowcore at different address than zero, add the base register to SIEEXIT. No functional change, because %r0 is passed to the m
s390/entry: Add base register to SIEEXIT macro
In preparation of having lowcore at different address than zero, add the base register to SIEEXIT. No functional change, because %r0 is passed to the macro.
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
ca2f0a26 |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Add base register to MBEAR macro
In preparation of having lowcore at different address than zero, add the base register to MBEAR. No functional change, because %r0 is passed to the macro
s390/entry: Add base register to MBEAR macro
In preparation of having lowcore at different address than zero, add the base register to MBEAR. No functional change, because %r0 is passed to the macro.
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|
| #
12184a46 |
| 22-Jul-2024 |
Sven Schnelle <[email protected]> |
s390/entry: Make __sie64a() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in __sie64a().
Reviewed-by: H
s390/entry: Make __sie64a() ready for lowcore relocation
In preparation of having lowcore at different address than zero, add the base register to all lowcore accesses in __sie64a().
Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Sven Schnelle <[email protected]> Signed-off-by: Vasily Gorbik <[email protected]>
show more ...
|