[PW_SID:1102480] riscv: Some misaligned cleanups#2031
Conversation
When booting with unaligned_scalar_speed=fast, fast_unaligned_access_speed_key is initialized incorrectly. The key is currently derived from the fast_misaligned_access cpumask, but that mask is only populated when the unaligned access speed probe runs. Specifying unaligned_scalar_speed=fast skips the probe entirely, leaving the mask uninitialized. The information tracked by fast_misaligned_access is already available in the misaligned_access_speed per-CPU variable. Use that to initialize fast_unaligned_access_speed_key instead and remove the redundant cpumask. Signed-off-by: Nam Cao <namcao@linutronix.de> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
When a CPU is taken offline and then is brought back online, unaligned
access speed probe always runs even though the unaligned access speed is
already known, wasting CPU cycles.
This is because when a CPU becomes online, the following happen:
1. check_unaligned_access_emulated() is called, which clears
misaligned_access_speed if there is no emulation.
2. check_unaligned_access() is called because misaligned_access_speed is
cleared, wasting CPU cycles determining something already previous
known.
Avoid the redundant access speed probe by stop clearing
misaligned_access_speed in (1). If access speed is already known, just
reuse it.
On my Visionfive 2, this reduces CPU bring-up time from 26ms to 0.8ms.
Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 1: "[1/2] riscv: misaligned: Fix fast_unaligned_access_speed_key init" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
|
Patch 2: "[2/2] riscv: traps_misaligned: Avoid redundant unaligned access speed probe" |
PR for series 1102480 applied to workflow__riscv__fixes
Name: riscv: Some misaligned cleanups
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=1102480
Version: 1