arm64: mm: Try to fix alignment faults

Change-Id: I7ceba0ae2270b95d42eb1c8f13c0ff605429283e
Signed-off-by: Simon Xue <xxm@rock-chips.com>
This commit is contained in:
Simon Xue 2022-11-16 10:00:40 +08:00 committed by Tao Huang
parent 560194a6c5
commit 85623ff322
4 changed files with 3730 additions and 0 deletions

View File

@ -13,3 +13,5 @@ KASAN_SANITIZE_physaddr.o += n
obj-$(CONFIG_KASAN) += kasan_init.o
KASAN_SANITIZE_kasan_init.o := n
obj-$(CONFIG_ROCKCHIP_ARM64_ALIGN_FAULT_FIX) += fixup_fault.o

View File

@ -702,9 +702,17 @@ static int __kprobes do_translation_fault(unsigned long far,
return 0;
}
#ifdef CONFIG_ROCKCHIP_ARM64_ALIGN_FAULT_FIX
extern int alignment_fixup_helper(unsigned long addr, unsigned int esr,
struct pt_regs *regs);
#endif
static int do_alignment_fault(unsigned long far, unsigned int esr,
struct pt_regs *regs)
{
#ifdef CONFIG_ROCKCHIP_ARM64_ALIGN_FAULT_FIX
if (!alignment_fixup_helper(far, esr, regs))
return 0;
#endif
do_bad_area(far, esr, regs);
return 0;
}

3714
arch/arm64/mm/fixup_fault.S Normal file

File diff suppressed because it is too large Load Diff

View File

@ -28,6 +28,12 @@ config ROCKCHIP_AMP
Say y here to enable Rockchip AMP support.
This option protects resources used by AMP.
config ROCKCHIP_ARM64_ALIGN_FAULT_FIX
bool "Rockchip align fault fix support"
depends on ARM64 && NO_GKI
help
Say y here to enable Rockchip align fault fix support.
config ROCKCHIP_CPUINFO
tristate "Rockchip cpuinfo support"
depends on (ROCKCHIP_EFUSE || ROCKCHIP_OTP) && (ARM64 || ARM)