Re: [PATCH] pci: imx6: support kernels built in Thumb-2 mode

From: Trent Piepho
Date: Wed Nov 28 2018 - 13:56:26 EST


On Wed, 2018-11-28 at 16:16 +0000, Robin Murphy wrote:
>
> >
> > +static int imx6q_pcie_abort_handler_thumb2(unsigned long addr,
> > + unsigned int fsr, struct pt_regs *regs)
> > +{
> > + unsigned long pc = instruction_pointer(regs);
> > + unsigned long instr = *(unsigned long *)pc;
> > + unsigned long thumb2_instr = __mem_to_opcode_thumb16(instr);
> > + int reg = thumb2_instr & 7;
> > +
> > + if (!__opcode_is_thumb16(instr & 0x0000ffffUL))
> > + return 1;
>
> There are plenty of 32-bit Thumb encodings of various LDR/STR variants,
> and I doubt we can guarantee that the offset, target register, and/or
> addressing mode for a config space access will *always* suit the
> (relatively limited) 16-bit ones.

It might be the case that PLD/PLI, 32-bit thumb2 instructions, could
trigger an abort too.