[PATCH v4 1/4] Input: ads7846 - Convert to use software nodes

Guenter Roeck linux at roeck-us.net
Mon Jun 5 18:33:54 UTC 2023


Hi,

On Mon, May 08, 2023 at 11:20:06PM +0200, Linus Walleij wrote:
> The Nokia 770 is using GPIOs from the global numberspace on the
> CBUS node to pass down to the LCD controller. This regresses when we
> let the OMAP GPIO driver use dynamic GPIO base.
> 
...
> 
> Suggested-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>
> Fixes: 92bf78b33b0b ("gpio: omap: use dynamic allocation of base")
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>

This patch causes a crash with the mcimx7d-sabre qemu emulation.
Backtrace and bisect results below.

Source:

        pdev_id = device_get_match_data(dev);
        if (!pdev_id) {
                dev_err(dev, "Unknown device model\n");
                return ERR_PTR(-EINVAL);
        }

        pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return ERR_PTR(-ENOMEM);

        pdata->model = (unsigned long)pdev_id->driver_data;	<--- crash

It appears that device_get_match_data() already returns driver_data.
A little debugging shows that pdev_id is indeed 0x1EA6 or 7846.

Guenter

---
Stack backtrace:

[    7.254561] wm8960 3-001a: Failed to issue reset
[    7.257313] wm8960: probe of 3-001a failed with error -110
[    7.258170] i2c i2c-3: IMX I2C adapter registered
[    7.265584] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 5 counters available
[    7.280312] stmp_reset_block((ptrval)): module reset timeout
[    7.280573] mxs-dma: probe of 33000000.dma-controller failed with error -110
[    7.309572] 8<--- cut here ---
[    7.309785] Unhandled fault: page domain fault (0x01b) at 0x00001eba
[    7.309916] [00001eba] *pgd=00000000
[    7.310327] Internal error: : 1b [#1] SMP ARM
[    7.310504] Modules linked in:
[    7.310701] CPU: 0 PID: 29 Comm: kworker/u4:2 Tainted: G                 N 6.4.0-rc5-next-20230605 #1
[    7.310868] Hardware name: Freescale i.MX7 Dual (Device Tree)
[    7.311058] Workqueue: events_unbound deferred_probe_work_func
[    7.311482] PC is at ads7846_probe+0x9f0/0xfa0
[    7.311576] LR is at _raw_spin_unlock_irqrestore+0x50/0x64
[    7.311659] pc : [<c0cf2ab0>]    lr : [<c1128bf4>]    psr: a0000013
[    7.311742] sp : d0949bf0  ip : 00000001  fp : 00000000
[    7.311814] r10: c1b96954  r9 : cbdcd208  r8 : c499aec0
[    7.311889] r7 : c4b64400  r6 : c4b4d040  r5 : c4b64400  r4 : 00001ea6
[    7.311978] r3 : 00000000  r2 : c41dd000  r1 : 0a3d1000  r0 : c499aec0
[    7.312102] Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[    7.312211] Control: 10c5387d  Table: 848c406a  DAC: 00000051
[    7.312305] Register r0 information: slab kmalloc-128 start c499ae80 pointer offset 64 size 128
[    7.312688] Register r1 information: non-paged memory
[    7.312832] Register r2 information: slab kmalloc-4k start c41dd000 pointer offset 0 size 4096
[    7.312973] Register r3 information: NULL pointer
[    7.313045] Register r4 information: non-paged memory
[    7.313116] Register r5 information: slab kmalloc-1k start c4b64400 pointer offset 0 size 1024
[    7.313247] Register r6 information: slab kmalloc-4k start c4b4d000 pointer offset 64 size 4096
[    7.313379] Register r7 information: slab kmalloc-1k start c4b64400 pointer offset 0 size 1024
[    7.313509] Register r8 information: slab kmalloc-128 start c499ae80 pointer offset 64 size 128
[    7.313640] Register r9 information: non-slab/vmalloc memory
[    7.313751] Register r10 information: non-slab/vmalloc memory
[    7.313836] Register r11 information: NULL pointer
[    7.313908] Register r12 information: non-paged memory
[    7.313992] Process kworker/u4:2 (pid: 29, stack limit = 0x(ptrval))
[    7.314107] Stack: (0xd0949bf0 to 0xd094a000)
[    7.314223] 9be0:                                     00000000 c4b64400 c4b64400 c1bc0a9c
[    7.314337] 9c00: c4b69000 c234b3f4 cbdcd208 c0e01338 ffffffff 00000000 00000000 00000000
[    7.314441] 9c20: 00000000 00000000 00000000 d0b2c62c 00000000 00000000 c4b64400 c1bc0a9c
[    7.314543] 9c40: 00000000 c234b3f4 cbdcd208 c1b96954 00000000 c0b73a98 c4b64400 00000000
[    7.314650] 9c60: c1bc0aac c0a4a434 c4b64400 c1bc0aac c4b64400 00000016 c234b3f4 c0a4a6d4
[    7.314754] 9c80: c134db68 3fffffff c234b44c c1bc0aac c4b64400 00000016 c234b3f4 c0a4a81c
[    7.314856] 9ca0: 00000001 c1bc0aac d0949cfc c4b64400 c234b3f4 c0a4a948 00000000 c41ea600
[    7.314957] 9cc0: d0949cfc c0a4a8b4 c234b3f4 c0a4849c c4b688bc c41ea6e4 c461d3d8 d0b2c62c
[    7.315059] 9ce0: c4b688bc c4b64400 00000001 c4b64444 c41ea600 c0a4aca8 c413ac88 c4b64400
[    7.315161] 9d00: 00000001 d0b2c62c c4b64400 c4b64400 00000000 c0a49590 c4b64400 00000000
[    7.315263] 9d20: 00000000 c4b68800 c234b3f4 c0a47164 c41dd000 c4b64400 00000000 c422f810
[    7.315365] 9d40: c422f810 d0b2c62c 00000000 c4b64400 c4b68800 c422f810 cbdcd260 c170bd30
[    7.315471] 9d60: c170bd24 c0b77d4c c4b68b1c c4b64400 c4b64400 00000000 cbdcd260 c0b77e34
[    7.315574] 9d80: c4b68800 cbdcd1fc c4b64400 c0b786e4 00000000 c1b7dac4 c4020000 c422f810
[    7.315675] 9da0: d0949d9c 000f4240 00000000 d0b2c62c 00000000 c4b68800 ffffffed c422f800
[    7.315777] 9dc0: c422f810 c4b68d40 c4b68800 00000000 c4020000 c0b8102c 00000000 c423c080
[    7.315878] 9de0: c4b68d40 00000000 c423c040 00000000 00000000 d0b2c62c 00000000 c422f810
[    7.315980] 9e00: c1baff90 00000000 c1b96f6c 00000000 c1c20420 c0a4cd34 c422f810 00000000
[    7.316080] 9e20: c1baff90 00000000 c1b96f6c c0a4a434 c422f810 c1baff90 c422f810 00000016
[    7.316182] 9e40: c1b96f6c c0a4a6d4 c1330f38 3ffffffb c234b44c c1baff90 c422f810 00000016
[    7.316283] 9e60: c1b96f6c c0a4a81c 00000001 c1baff90 d0949ec4 c422f810 c1b96f6c c0a4a948
[    7.316384] 9e80: 00000000 c40dec00 d0949ec4 c0a4a8b4 c1b96f6c c0a4849c c422e0cc c40dece4
[    7.316486] 9ea0: c4603a58 d0b2c62c c422e0cc c422f810 00000001 c422f854 c40dec00 c0a4aca8
[    7.316587] 9ec0: c413ac88 c422f810 00000001 d0b2c62c c423a434 c422f810 c1b96e8c c0a49590
[    7.316689] 9ee0: c423a434 c422f810 c1b96e8c c1b96e90 c1b96f6c c0a4a1d8 c1b96f00 c429f680
[    7.316791] 9f00: c400ce00 c4020000 c1a093d4 c400ce15 c1c20420 c0149e40 00000001 00000000
[    7.316893] 9f20: c0149d78 c4020000 c1b96f00 c209b3cc 00000000 c16e587c 00000000 d0b2c62c
[    7.316996] 9f40: c4020000 c429f680 c4020000 c429f6ac c4020040 c1a05d40 00000088 c41dd000
[    7.317099] 9f60: c4020000 c014a294 00000000 c429c780 c41dd000 c014a268 c429f680 c429f780
[    7.317201] 9f80: d0889ec4 00000000 00000000 c0154358 c429c780 c015425c 00000000 00000000
[    7.317303] 9fa0: 00000000 00000000 00000000 c010012c 00000000 00000000 00000000 00000000
[    7.317404] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    7.317506] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[    7.317682]  ads7846_probe from spi_probe+0x84/0xa8
[    7.317785]  spi_probe from really_probe+0xc4/0x2e0
[    7.317862]  really_probe from __driver_probe_device+0x84/0x1a0
[    7.317948]  __driver_probe_device from driver_probe_device+0x2c/0xc4
[    7.318037]  driver_probe_device from __device_attach_driver+0x94/0xc4
[    7.318125]  __device_attach_driver from bus_for_each_drv+0x84/0xdc
[    7.318214]  bus_for_each_drv from __device_attach+0xac/0x1d8
[    7.318296]  __device_attach from bus_probe_device+0x8c/0x90
[    7.318377]  bus_probe_device from device_add+0x560/0x774
[    7.318455]  device_add from __spi_add_device+0x58/0xe8
[    7.318533]  __spi_add_device from spi_add_device+0x58/0x8c
[    7.318613]  spi_add_device from spi_register_controller+0x784/0xbfc
[    7.318705]  spi_register_controller from spi_imx_probe+0x390/0x604
[    7.318795]  spi_imx_probe from platform_probe+0x58/0xbc
[    7.318872]  platform_probe from really_probe+0xc4/0x2e0
[    7.318947]  really_probe from __driver_probe_device+0x84/0x1a0
[    7.319029]  __driver_probe_device from driver_probe_device+0x2c/0xc4
[    7.319116]  driver_probe_device from __device_attach_driver+0x94/0xc4
[    7.319205]  __device_attach_driver from bus_for_each_drv+0x84/0xdc
[    7.319291]  bus_for_each_drv from __device_attach+0xac/0x1d8
[    7.319372]  __device_attach from bus_probe_device+0x8c/0x90
[    7.319454]  bus_probe_device from deferred_probe_work_func+0x8c/0xc0
[    7.319542]  deferred_probe_work_func from process_one_work+0x288/0x6b0
[    7.319635]  process_one_work from worker_thread+0x2c/0x480
[    7.319715]  worker_thread from kthread+0xfc/0x120
[    7.319788]  kthread from ret_from_fork+0x14/0x28

Bisect result:

# bad: [9ca10bfb8aa8fbf19ee22e702c8cf9b66ea73a54] Add linux-next specific files for 20230605
# good: [9561de3a55bed6bdd44a12820ba81ec416e705a7] Linux 6.4-rc5
git bisect start 'HEAD' 'v6.4-rc5'
# bad: [8e3a5ba24fdd336ddd8096257588f5ad5a934ffa] Merge branch 'drm-next' of git://git.freedesktop.org/git/drm/drm.git
git bisect bad 8e3a5ba24fdd336ddd8096257588f5ad5a934ffa
# bad: [376395b3a956c450a8f52a02acf0e9d7cbb77ac9] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git
git bisect bad 376395b3a956c450a8f52a02acf0e9d7cbb77ac9
# bad: [332f472c4163f902f588816c8b28a00a461ed325] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
git bisect bad 332f472c4163f902f588816c8b28a00a461ed325
# good: [159f9e8420bb86f7b154acec72d93528a3f9b0f7] Merge branch 'mm-everything' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
git bisect good 159f9e8420bb86f7b154acec72d93528a3f9b0f7
# good: [dc7fd8b3a8838ce715fed6c58a90187380084582] Merge branch 'for-next/core' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
git bisect good dc7fd8b3a8838ce715fed6c58a90187380084582
# bad: [de6a558f810c3de395eaa58bce1063e24d8a78b8] Merge branch 'at91-next' of git://git.kernel.org/pub/scm/linux/kernel/git/at91/linux.git
git bisect bad de6a558f810c3de395eaa58bce1063e24d8a78b8
# good: [3ea093976845afd968dfc9cf36eb8d5ba63b7c0e] Merge branch 'soc/dt' into for-next
git bisect good 3ea093976845afd968dfc9cf36eb8d5ba63b7c0e
# bad: [b26078a2b9df1dfd725a0e171d2b0ad0259cfef1] Merge branch 'arm/fixes' into for-next
git bisect bad b26078a2b9df1dfd725a0e171d2b0ad0259cfef1
# bad: [8e0285ab95a9baf374f2c13eb152221c8ecb3f28] ARM/musb: omap2: Remove global GPIO numbers from TUSB6010
git bisect bad 8e0285ab95a9baf374f2c13eb152221c8ecb3f28
# bad: [e519f0bb64efc2c9c8b67bb2d114dda458bdc34d] ARM/mmc: Convert old mmci-omap to GPIO descriptors
git bisect bad e519f0bb64efc2c9c8b67bb2d114dda458bdc34d
# good: [4c40db6249ff1da335b276bdd6c3c3462efbc2ab] ARM: omap1: Remove reliance on GPIO numbers from PalmTE
git bisect good 4c40db6249ff1da335b276bdd6c3c3462efbc2ab
# bad: [767d83361aaa6a1ecb4d5b89eeb38a267239917a] Input: ads7846 - Convert to use software nodes
git bisect bad 767d83361aaa6a1ecb4d5b89eeb38a267239917a
# good: [480c82daa3e41873421dc2c9e2918ad7e21d7a0b] ARM: omap1: Remove reliance on GPIO numbers from SX1
git bisect good 480c82daa3e41873421dc2c9e2918ad7e21d7a0b
# first bad commit: [767d83361aaa6a1ecb4d5b89eeb38a267239917a] Input: ads7846 - Convert to use software nodes


More information about the dri-devel mailing list