RE: [RFC PATCH v3 00/16] DMA Engine support for AM33XX

From: Bedia, Vaibhav
Date: Fri Oct 19 2012 - 06:27:04 EST


Hi Matt,

On Thu, Oct 18, 2012 at 18:56:39, Porter, Matt wrote:
> Changes since v2:
> - Rebased on 3.7-rc1
> - Fixed bug in DT/pdata parsing first found by Gururaja
> that turned out to be masked by some toolchains
> - Dropped unused mach-omap2/devices.c hsmmc patch
> - Added AM33XX crossbar DMA event mux support
> - Added am335x-evm support
>
> Changes since v1:
> - Rebased on top of mainline from 12250d8
> - Dropped the feature removal schedule patch
> - Implemented dma_request_slave_channel_compat() and
> converted the mmc and spi drivers to use it
> - Dropped unneeded #address-cells and #size-cells from
> EDMA DT support
> - Moved private EDMA header to linux/platform_data/ and
> removed some unneeded definitions
> - Fixed parsing of optional properties
>
> TODO:
> - Add dmaengine support for per-channel caps so the
> hack to set the maximum segments can be replaced with
> a query to the dmaengine driver
>
> This series adds DMA Engine support for AM33xx, which uses
> an EDMA DMAC. The EDMA DMAC has been previously supported by only
> a private API implementation (much like the situation with OMAP
> DMA) found on the DaVinci family of SoCs.
>
> The series applies on top of 3.7-rc1 and the following patches:
>
> - GPMC fails to reserve memory fix:
> http://www.spinics.net/lists/linux-omap/msg79675.html
> - TPS65910 regulator fix:
> https://patchwork.kernel.org/patch/1593651/
> - dmaengine DT support from Vinod's dmaengine_dt branch in
> git://git.infradead.org/users/vkoul/slave-dma.git since
> 027478851791df751176398be02a3b1c5f6aa824
>
> The approach taken is similar to how OMAP DMA is being converted to
> DMA Engine support. With the functional EDMA private API already
> existing in mach-davinci/dma.c, we first move that to an ARM common
> area so it can be shared. Adding DT and runtime PM support to the
> private EDMA API implementation allows it to run on AM33xx. AM33xx
> *only* boots using DT so we leverage Jon's generic DT DMA helpers to
> register EDMA DMAC with the of_dma framework and then add support
> for calling the dma_request_slave_channel() API to both the mmc
> and spi drivers.
>
> With this series both BeagleBone and the AM335x EVM have working
> MMC and SPI support.
>
> This is tested on BeagleBone with a SPI framebuffer driver and MMC
> rootfs. A trivial gpio DMA event misc driver was used to test the
> crossbar DMA event support. It is also tested on the AM335x EVM
> with the onboard SPI flash and MMC rootfs. The branch at
> https://github.com/ohporter/linux/tree/edma-dmaengine-v3 has the
> complete series, dependencies, and some test drivers/defconfigs.
>

I didn't see all the patches that you posted on edma-dmaengine-v3
but I do seem them on edma-dmaengine-am33xx-v3 branch.

I added a couple of patches to enable earlyprintk and build the DTB
appended kernel image uImage-dtb.am335x-evm

Here's what i see

[...]
[ 0.128831] regulator-dummy: no parameters
[ 0.130793] NET: Registered protocol family 16
[ 0.131694] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.133030] omap-gpmc omap-gpmc: GPMC revision 6.0
[ 0.153136] platform 49000000.edma: alias fck already exists
[ 0.153176] platform 49000000.edma: alias fck already exists
[ 0.153199] platform 49000000.edma: alias fck already exists
[ 0.158184] OMAP GPIO hardware version 0.1
[ 0.172844] No ATAGs?
[ 0.172868] hw-breakpoint: debug architecture 0x4 unsupported.
[ 0.174282] genirq: Flags mismatch irq 28. 00000000 (edma) vs. 00000000 (edma)
[ 0.174536] ------------[ cut here ]------------
[ 0.174576] WARNING: at kernel/irq/manage.c:1211 __free_irq+0x9c/0x1c0()
[ 0.174586] Trying to free already-free IRQ 28
[ 0.174596] Modules linked in:
[ 0.174645] [<c001b0e0>] (unwind_backtrace+0x0/0xf0) from [<c0042900>] (warn_slowpath_common+0x4c/0x64)
[ 0.174668] [<c0042900>] (warn_slowpath_common+0x4c/0x64) from [<c00429ac>] (warn_slowpath_fmt+0x30/0x40)
[ 0.174688] [<c00429ac>] (warn_slowpath_fmt+0x30/0x40) from [<c00a8298>] (__free_irq+0x9c/0x1c0)
[ 0.174708] [<c00a8298>] (__free_irq+0x9c/0x1c0) from [<c00a8408>] (free_irq+0x4c/0xa8)
[ 0.174739] [<c00a8408>] (free_irq+0x4c/0xa8) from [<c07976ec>] (edma_probe+0x93c/0xa24)
[ 0.174770] [<c07976ec>] (edma_probe+0x93c/0xa24) from [<c03226d4>] (platform_drv_probe+0x18/0x1c)
[ 0.174793] [<c03226d4>] (platform_drv_probe+0x18/0x1c) from [<c0321494>] (driver_probe_device+0x84/0x224)
[ 0.174814] [<c0321494>] (driver_probe_device+0x84/0x224) from [<c03216c8>] (__driver_attach+0x94/0x98)
[ 0.174834] [<c03216c8>] (__driver_attach+0x94/0x98) from [<c031fd60>] (bus_for_each_dev+0x50/0x7c)
[ 0.174854] [<c031fd60>] (bus_for_each_dev+0x50/0x7c) from [<c0320bc4>] (bus_add_driver+0xa0/0x240)
[ 0.174874] [<c0320bc4>] (bus_add_driver+0xa0/0x240) from [<c0321bfc>] (driver_register+0x78/0x144)
[ 0.174896] [<c0321bfc>] (driver_register+0x78/0x144) from [<c03229a4>] (platform_driver_probe+0x18/0x9c)
[ 0.174918] [<c03229a4>] (platform_driver_probe+0x18/0x9c) from [<c0008874>] (do_one_initcall+0x34/0x180)
[ 0.174947] [<c0008874>] (do_one_initcall+0x34/0x180) from [<c055ad14>] (kernel_init+0x104/0x2b0)
[ 0.174978] [<c055ad14>] (kernel_init+0x104/0x2b0) from [<c0013590>] (ret_from_fork+0x14/0x24)
[ 0.175249] ---[ end trace 1b75b31a2719ed1c ]---
[ 0.175354] edma: probe of 49000000.edma failed with error -16
[ 0.253165] bio: create slab <bio-0> at 0
[ 0.257894] edma-dma-engine edma-dma-engine.0: Can't allocate PaRAM dummy slot
[ 0.257954] edma-dma-engine: probe of edma-dma-engine.0 failed with error -5
[ 0.341189] omap-dma-engine omap-dma-engine: OMAP DMA engine driver
[ 0.343155] vbat: 5000 mV
[ 0.352193] SCSI subsystem initialized
[ 0.354571] usbcore: registered new interface driver usbfs
[ 0.355085] usbcore: registered new interface driver hub
[ 0.355944] usbcore: registered new device driver usb
[ 0.376170] omap_i2c 44e0b000.i2c: bus 0 rev2.4.0 at 400 kHz
[ 0.384465] vrtc: 1800 mV
[ 0.384897] vrtc: supplied by vbat
[ 0.388130] vio: at 1800 mV
[ 0.388284] vio: supplied by vbat
[ 0.391570] vdd_mpu: 912 <--> 1312 mV at 1262 mV
[ 0.391727] vdd_mpu: supplied by vbat
[ 0.394747] vdd_core: 912 <--> 1150 mV at 1137 mV
[ 0.394898] vdd_core: supplied by vbat
[ 0.398155] vdd3: 5000 mV
[ 0.400791] vdig1: at 1800 mV
[ 0.400943] vdig1: supplied by vbat
[ 0.403675] vdig2: at 1800 mV
[ 0.403817] vdig2: supplied by vbat
[ 0.407001] vpll: at 1800 mV
[ 0.407151] vpll: supplied by vbat
[ 0.410187] vdac: at 1800 mV
[ 0.410352] vdac: supplied by vbat
[ 0.413275] vaux1: at 1800 mV
[ 0.413414] vaux1: supplied by vbat
[ 0.416325] vaux2: at 3300 mV
[ 0.416467] vaux2: supplied by vbat
[ 0.419280] vaux33: at 3300 mV
[ 0.419419] vaux33: supplied by vbat
[ 0.422440] vmmc: 1800 <--> 3300 mV at 3300 mV
[ 0.422583] vmmc: supplied by vbat
[ 0.424630] tps65910 0-002d: No interrupt support, no core IRQ
[ 0.432157] Bluetooth: Core ver 2.16
[ 0.432767] NET: Registered protocol family 31
[ 0.432785] Bluetooth: HCI device and connection manager initialized
[ 0.432928] Bluetooth: HCI socket layer initialized
[ 0.432965] Bluetooth: L2CAP socket layer initialized
[ 0.433071] Bluetooth: SCO socket layer initialized
[ 0.435116] cfg80211: Calling CRDA to update world regulatory domain
[ 0.437286] Switching to clocksource gp_timer
[ 0.585766] NET: Registered protocol family 2
[ 0.587934] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.588322] TCP bind hash table entries: 8192 (order: 6, 294912 bytes)
[ 0.592077] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.592331] TCP: reno registered
[ 0.592369] UDP hash table entries: 256 (order: 2, 20480 bytes)
[ 0.592634] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)
[ 0.593454] NET: Registered protocol family 1
[ 0.595290] RPC: Registered named UNIX socket transport module.
[ 0.595315] RPC: Registered udp transport module.
[ 0.595328] RPC: Registered tcp transport module.
[ 0.595340] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.596399] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.596917] CPU PMU: probing PMU on CPU 0
[ 0.597083] hw perfevents: enabled with ARMv7 Cortex-A8 PMU driver, 5 counters available
[ 0.770294] VFS: Disk quotas dquot_6.5.2
[ 0.770539] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.773244] NFS: Registering the id_resolver key type
[ 0.773873] Key type id_resolver registered
[ 0.773897] Key type id_legacy registered
[ 0.774046] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 0.776552] msgmni has been set to 477
[ 0.780591] io scheduler noop registered
[ 0.780618] io scheduler deadline registered
[ 0.780721] io scheduler cfq registered (default)
[ 0.783750] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[ 0.788066] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 0.795200] omap_uart 44e09000.serial: did not get pins for uart0 error: -19
[ 0.795696] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88) is a OMAP UART0
[ 1.728556] console [ttyO0] enabled
[ 1.769162] brd: module loaded
[ 1.793083] loop: module loaded
[ 1.802779] mtdoops: mtd device (mtddev=name/number) must be supplied
[ 1.811045] OneNAND driver initializing
[ 1.816279] omap2_mcspi 48030000.spi: pins are not configured from the driver
[ 61.836153] INFO: rcu_sched detected stalls on CPUs/tasks: {} (detected by 0, t=7682 jiffies)
[ 61.845144] INFO: Stall ended before state dump start
[ 241.875170] INFO: rcu_sched detected stalls on CPUs/tasks: {} (detected by 0, t=30727 jiffies)
[ 241.884226] INFO: Stall ended before state dump start
[ 421.914230] INFO: rcu_sched detected stalls on CPUs/tasks: {} (detected by 0, t=53772 jiffies)
[...]

Let me know if I missed something.

Regards,
Vaibhav
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/