8c>] (__dma_alloc+0x11c/0x2d0) [] (dma_alloc_writecombine+0x1c/0x24) [] (ep93xx_pcm_preallocate_dma_buffer+0x44/0x60) [] (ep93xx_pcm_new+0x5c/0x88) [] (snd_soc_instantiate_cards+0x8a8/0xbc0) [] (soc_probe+0xfc/0x134) [] (platform_drv_probe+0x18/0x1c) [] (driver_probe_device+0xb0/0x16c) [] (bus_for_each_drv+0x48/0x84) [] (device_attach+0x50/0x68) [] (bus_probe_device+0x24/0x44) [] (device_add+0x2fc/0x44c) [] (platform_device_add+0x104/0x15c) [] (simone_init+0x60/0x94) [] (do_one_initcall+0xd0/0x1a4) __dma_alloc() calls (inlined) __dma_alloc_buffer() which ends up calling dmac_flush_range(). Now since the entries in the arm920_cache_fns are shifted by one, we jump into address 0xee070f38 which is actually next instruction after the arm920_cache_fns structure. So implement flush_icache_all() for the rest of the supported CPUs using a generic 'invalidate I cache' instruction. Signed-off-by: Mika Westerberg Signed-off-by: Russell King