Re: [RFC v8 net-next 00/16] add support for VSC7512 control over SPI

Colin Foster
2022-05-10T02:58:03Z

On Mon, May 09, 2022 at 05:13:05PM +0000, Vladimir Oltean wrote:
> Hi Colin,
>
> On Sun, May 08, 2022 at 11:52:57AM -0700, Colin Foster wrote:
>
> Why does this get printed, if you put a dump_stack() in of_dma_configure_id()?

Below. I'm one of the only users of IORESOURCE_REG, from what I can
tell... Not sure if that's any consolation.

>
> > [ 2.835718] pinctrl-ocelot ocelot-pinctrl.0.auto: invalid resource
> > [ 2.842717] gpiochip_find_base: found new base at 2026
> > [ 2.842774] gpio gpiochip4: (ocelot-gpio): created GPIO range 0->21 ==> ocelot-pinctrl.0.auto PIN 0->21
> > [ 2.845693] gpio gpiochip4: (ocelot-gpio): added GPIO chardev (254:4)
> > [ 2.845828] gpio gpiochip4: registered GPIOs 2026 to 2047 on ocelot-gpio
> > [ 2.845855] pinctrl-ocelot ocelot-pinctrl.0.auto: driver registered
> > [ 2.855925] pinctrl-microchip-sgpio ocelot-sgpio.1.auto: DMA mask not set
> > [ 2.863089] pinctrl-microchip-sgpio ocelot-sgpio.1.auto: invalid resource
> > [ 2.870801] gpiochip_find_base: found new base at 1962
> > [ 2.871528] gpio_stub_drv gpiochip5: (ocelot-sgpio.1.auto-input): added GPIO chardev (254:5)
> > [ 2.871666] gpio_stub_drv gpiochip5: registered GPIOs 1962 to 2025 on ocelot-sgpio.1.auto-input
> > [ 2.872364] gpiochip_find_base: found new base at 1898
> > [ 2.873244] gpio_stub_drv gpiochip6: (ocelot-sgpio.1.auto-output): added GPIO chardev (254:6)
> > [ 2.873354] gpio_stub_drv gpiochip6: registered GPIOs 1898 to 1961 on ocelot-sgpio.1.auto-output
> > [ 2.881148] mscc-miim ocelot-miim0.2.auto: DMA mask not set

[ 16.699517] CPU: 0 PID: 7 Comm: kworker/u2:0 Not tainted 5.18.0-rc5-01315-g0a0ea78e3a79-dirty #632
[ 16.708574] Hardware name: Generic AM33XX (Flattened Device Tree)
[ 16.714704] Workqueue: events_unbound deferred_probe_work_func
[ 16.720608] Backtrace:
[ 16.723071] dump_backtrace from show_stack+0x20/0x24
[ 16.728179] r7:c31bcc10 r6:00000000 r5:c1647b38 r4:a0000013
[ 16.733863] show_stack from dump_stack_lvl+0x60/0x78
[ 16.738954] dump_stack_lvl from dump_stack+0x18/0x1c
[ 16.744040] r7:c31bcc10 r6:c31bcc10 r5:c31bcc10 r4:00000000
[ 16.749724] dump_stack from of_dma_configure_id+0x48/0x314
[ 16.755335] of_dma_configure_id from platform_dma_configure+0x2c/0x38
[ 16.761911] r10:df9bf424 r9:df9bf424 r8:00000069 r7:c31bcc10 r6:c1bbac5c r5:c31bcc10
[ 16.769777] r4:00000000
[ 16.772320] platform_dma_configure from really_probe+0x78/0x298

platform_dma_configure gets called because...

[ 16.778360] really_probe from __driver_probe_device+0x94/0xf4
[ 16.784230] r7:c31bcc10 r6:c31bcc10 r5:c1bbac5c r4:c31bcc10
[ 16.789913] __driver_probe_device from driver_probe_device+0x44/0xe0
[ 16.796391] r5:c1c51f28 r4:c1c51f24
[ 16.799980] driver_probe_device from __device_attach_driver+0x9c/0xc4
[ 16.806548] r9:df9bf424 r8:c1b9c728 r7:c1c51ef8 r6:c31bcc10 r5:e002191c r4:c1bbac5c
[ 16.814326] __device_attach_driver from bus_for_each_drv+0x94/0xe4
[ 16.820635] r7:c1c51ef8 r6:c0a012e4 r5:e002191c r4:00000000
[ 16.826319] bus_for_each_drv from __device_attach+0x104/0x170
[ 16.832190] r6:00000001 r5:c31bcc54 r4:c31bcc10
[ 16.836827] __device_attach from device_initial_probe+0x1c/0x20
[ 16.842871] r6:c31bcc10 r5:c1b9ccd0 r4:c31bcc10
[ 16.847507] device_initial_probe from bus_probe_device+0x94/0x9c
[ 16.853637] bus_probe_device from device_add+0x3ec/0x8b4
[ 16.859073] r7:c1c51ef8 r6:c31b9c00 r5:00000000 r4:c31bcc10
[ 16.864756] device_add from platform_device_add+0x100/0x210
[ 16.870455] r10:c1a21744 r9:c1a21724 r8:c31bcc10 r7:00000002 r6:c31bcc00 r5:c3201aa0
[ 16.878320] r4:00000002
[ 16.880864] platform_device_add from mfd_add_devices+0x308/0x62c

platform_device_add sets up pdev->bus = &platform_bus_type;

That assignment looks to date back to the before times... Now you have
me curious. And a little scared :-)

[ 16.887008] r10:00000000 r9:00000000 r8:00000000 r7:00000002 r6:c31bcc00 r5:c3201a40
[ 16.894875] r4:c12be398 r3:00000000
[ 16.898465] mfd_add_devices from devm_mfd_add_devices+0x80/0xc0
[ 16.904514] r10:df9be9bc r9:df9be9bc r8:00000005 r7:c12be2e8 r6:fffffffe r5:c31b9c00
[ 16.912381] r4:c31ecc40
[ 16.914924] devm_mfd_add_devices from ocelot_core_init+0x40/0x6c
[ 16.921058] r8:00000065 r7:c31b9c00 r6:c31ec9c0 r5:00000000 r4:c31b9c00
[ 16.927790] ocelot_core_init from ocelot_spi_probe+0xf4/0x188
[ 16.933662] r5:00000000 r4:c31b9c00
[ 16.937251] ocelot_spi_probe from spi_probe+0x94/0xb8
[ 16.942434] r7:c31b9c00 r6:c1b9fc60 r5:c31b9c00 r4:00000000
[ 16.948118] spi_probe from really_probe+0x110/0x298
[ 16.953116] r7:c31b9c00 r6:c1b9fc70 r5:c31b9c00 r4:00000000
[ 16.958800] really_probe from __driver_probe_device+0x94/0xf4
[ 16.964669] r7:c31b9c00 r6:c31b9c00 r5:c1b9fc70 r4:c31b9c00
[ 16.970354] __driver_probe_device from driver_probe_device+0x44/0xe0
[ 16.976832] r5:c1c51f28 r4:c1c51f24
[ 16.980422] driver_probe_device from __device_attach_driver+0x9c/0xc4
[ 16.986991] r9:df9be9bc r8:c1b9c728 r7:c1c51ef8 r6:c31b9c00 r5:e0021bc4 r4:c1b9fc70
[ 16.994768] __device_attach_driver from bus_for_each_drv+0x94/0xe4
[ 17.001077] r7:c1c51ef8 r6:c0a012e4 r5:e0021bc4 r4:00000000
[ 17.006762] bus_for_each_drv from __device_attach+0x104/0x170
[ 17.012632] r6:00000001 r5:c31b9c44 r4:c31b9c00
[ 17.017269] __device_attach from device_initial_probe+0x1c/0x20
[ 17.023311] r6:c31b9c00 r5:c1bb0a50 r4:c31b9c00
[ 17.027948] device_initial_probe from bus_probe_device+0x94/0x9c
[ 17.034077] bus_probe_device from device_add+0x3ec/0x8b4
[ 17.039513] r7:c1c51ef8 r6:c31b9800 r5:00000000 r4:c31b9c00
[ 17.045197] device_add from __spi_add_device+0x7c/0x10c
[ 17.050550] r10:c1c53844 r9:c30ec810 r8:00000001 r7:c30ec810 r6:c31b9800 r5:c31b9c00
[ 17.058415] r4:00000000
[ 17.060959] __spi_add_device from spi_add_device+0x48/0x78
[ 17.066568] r7:00000000 r6:c31b9800 r5:c31b9c00 r4:c31b9a1c
[ 17.072252] spi_add_device from of_register_spi_device+0x258/0x390
[ 17.078556] r5:df9be9a0 r4:c31b9c00
[ 17.082147] of_register_spi_device from spi_register_controller+0x26c/0x6d8
[ 17.089239] r8:c17105c0 r7:df9bea04 r6:df9be9a0 r5:00000000 r4:c31b9800
[ 17.095970] spi_register_controller from devm_spi_register_controller+0x24/0x60
[ 17.103412] r10:c1c53844 r9:c31e9584 r8:c31b9800 r7:c31b9800 r6:c30ec810 r5:c31b9800
[ 17.111278] r4:c31b9bc0
[ 17.113822] devm_spi_register_controller from omap2_mcspi_probe+0x4c8/0x574
[ 17.120924] r7:c31b9800 r6:00000000 r5:c30ec940 r4:c31b9bc0
[ 17.126608] omap2_mcspi_probe from platform_probe+0x6c/0xc8
[ 17.132308] r10:c1bf0f80 r9:c202f00d r8:00000065 r7:c30ec810 r6:c1bb1d00 r5:c30ec810
[ 17.140174] r4:00000000
[ 17.142717] platform_probe from really_probe+0x110/0x298
[ 17.148151] r7:c30ec810 r6:c1bb1d00 r5:c30ec810 r4:00000000
[ 17.153835] really_probe from __driver_probe_device+0x94/0xf4
[ 17.159704] r7:c30ec810 r6:c30ec810 r5:c1bb1d00 r4:c30ec810
[ 17.165387] __driver_probe_device from driver_probe_device+0x44/0xe0
[ 17.171865] r5:c1c51f28 r4:c1c51f24
[ 17.175455] driver_probe_device from __device_attach_driver+0x9c/0xc4
[ 17.182023] r9:c202f00d r8:c1b9ca1c r7:00000000 r6:c30ec810 r5:e0021e84 r4:c1bb1d00
[ 17.189800] __device_attach_driver from bus_for_each_drv+0x94/0xe4
[ 17.196108] r7:00000000 r6:c0a012e4 r5:e0021e84 r4:00000000
[ 17.201792] bus_for_each_drv from __device_attach+0x104/0x170
[ 17.207661] r6:00000001 r5:c30ec854 r4:c30ec810
[ 17.212299] __device_attach from device_initial_probe+0x1c/0x20
[ 17.218342] r6:c30ec810 r5:c1b9ccd0 r4:c30ec810
[ 17.222979] device_initial_probe from bus_probe_device+0x94/0x9c
[ 17.229109] bus_probe_device from deferred_probe_work_func+0x8c/0xb8
[ 17.235594] r7:00000000 r6:c1b9ca30 r5:c1b9ca1c r4:c30ec810
[ 17.241277] deferred_probe_work_func from process_one_work+0x1e0/0x53c
[ 17.247950] r9:c202f00d r8:00000000 r7:c202f000 r6:c2020a00 r5:c2156500 r4:c1b9ca5c
[ 17.255728] process_one_work from worker_thread+0x238/0x4fc
[ 17.261428] r10:c2020a00 r9:00000088 r8:c1a03d00 r7:c2020a1c r6:c2156518 r5:c2020a00
[ 17.269293] r4:c2156500
[ 17.271836] worker_thread from kthread+0x108/0x138
[ 17.276757] r10:00000000 r9:e0009e4c r8:c2160cc0 r7:c21a6a80 r6:c2156500 r5:c036aac8
[ 17.284624] r4:c2160900
[ 17.287168] kthread from ret_from_fork+0x14/0x2c
[ 17.291904] Exception stack(0xe0021fb0 to 0xe0021ff8)
[ 17.296982] 1fa0: 00000000 00000000 00000000 00000000
[ 17.305202] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 17.313420] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 17.320069] r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c037341c r4:c2160900
[ 17.328184] mscc-miim ocelot-miim0.2.auto: DMA mask not set