• Anson Huang's avatar
    soc: imx: gpc: restrict register range for regmap access · de2d9b52
    Anson Huang authored
    GPC registers are NOT continuous, some registers are
    reserved and accessing them from userspace will trigger
    external abort, add regmap register access table to
    avoid below abort:
    
    root@imx6slevk:~# cat /sys/kernel/debug/regmap/20dc000.gpc/registers
    [  108.480477] Unhandled fault: imprecise external abort (0x1406) at 0xb6db5004
    [  108.487985] pgd = 42b54bfd
    [  108.490741] [b6db5004] *pgd=ba1b7831
    [  108.494386] Internal error: : 1406 [#1] SMP ARM
    [  108.498943] Modules linked in:
    [  108.502043] CPU: 0 PID: 389 Comm: cat Not tainted 4.18.0-rc1-00074-gc9f1f60-dirty #482
    [  108.509982] Hardware name: Freescale i.MX6 SoloLite (Device Tree)
    [  108.516123] PC is at regmap_mmio_read32le+0x20/0x24
    [  108.521031] LR is at regmap_mmio_read+0x40/0x60
    [  108.525586] pc : [<c059cf74>]    lr : [<c059d1ac>]    psr: 20060093
    [  108.531875] sp : eccf1d98  ip : eccf1da8  fp : eccf1da4
    [  108.537122] r10: ec2d3800  r9 : eccf1f60  r8 : ecfc0000
    [  108.542370] r7 : eccf1e2c  r6 : eccf1e2c  r5 : 00000028  r4 : ec338e00
    [  108.548920] r3 : 00000000  r2 : eccf1e2c  r1 : f0980028  r0 : 00000000
    [  108.555474] Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
    [  108.562720] Control: 10c5387d  Table: acf4004a  DAC: 00000051
    [  108.568491] Process cat (pid: 389, stack limit = 0xd4318a65)
    [  108.574174] Stack: (0xeccf1d98 to 0xeccf2000)
    
    Fixes: 721cabf6 ("soc: imx: move PGC handling to a new GPC driver")
    Signed-off-by: default avatarAnson Huang <Anson.Huang@nxp.com>
    Reviewed-by: default avatarFabio Estevam <fabio.estevam@nxp.com>
    Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
    de2d9b52
gpc.c 12.7 KB