History log of /linux-6.15/arch/s390/kernel/entry.S (Results 1 – 25 of 274)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
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 ...


1234567891011