On Wed, Aug 20, 2025 at 03:55:22PM +0100, Steven Price wrote: > If the host attempts to access granules that have been delegated for use > in a realm these accesses will be caught and will trigger a Granule > Protection Fault (GPF). > > A fault during a page walk signals a bug in the kernel and is handled by > oopsing the kernel. A non-page walk fault could be caused by user space > having access to a page which has been delegated to the kernel and will > trigger a SIGBUS to allow debugging why user space is trying to access a > delegated page. > > Reviewed-by: Suzuki K Poulose <suzuki.poulose@xxxxxxx> > Reviewed-by: Gavin Shan <gshan@xxxxxxxxxx> > Signed-off-by: Steven Price <steven.price@xxxxxxx> > --- > Changes since v2: > * Include missing "Granule Protection Fault at level -1" > --- > arch/arm64/mm/fault.c | 31 +++++++++++++++++++++++++------ > 1 file changed, 25 insertions(+), 6 deletions(-) > > diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c > index d816ff44faff..e4237637cd8f 100644 > --- a/arch/arm64/mm/fault.c > +++ b/arch/arm64/mm/fault.c > @@ -854,6 +854,25 @@ static int do_tag_check_fault(unsigned long far, unsigned long esr, > return 0; > } > > +static int do_gpf_ptw(unsigned long far, unsigned long esr, struct pt_regs *regs) > +{ > + const struct fault_info *inf = esr_to_fault_info(esr); > + > + die_kernel_fault(inf->name, far, esr, regs); > + return 0; > +} This is fine, it's irrelevant whether the fault happened at EL0 or EL1. > +static int do_gpf(unsigned long far, unsigned long esr, struct pt_regs *regs) > +{ > + const struct fault_info *inf = esr_to_fault_info(esr); > + > + if (!is_el1_instruction_abort(esr) && fixup_exception(regs, esr)) > + return 0; > + > + arm64_notify_die(inf->name, regs, inf->sig, inf->code, far, esr); > + return 0; > +} The end result is somewhat similar but why not just return 1 and avoid the arm64_notify_die() call? Let do_mem_abort() handle the oops vs user signal. With die_kernel_fault() we print the "Unable to handle kernel..." message and some more information. -- Catalin