fix this bug:
BUG: sleeping function called from invalid context at mm/slab.c:3018
in_atomic(): 1, irqs_disabled(): 128, pid: 1, name: swapper
1 lock held by swapper/1:
#0: (&gpio_lock_class#2){......}, at: [<c049d4a0>] __setup_irq+0xe4/0x320
[<c044f108>] (unwind_backtrace+0x0/0xdc) from [<c06f3ac0>] (dump_stack+0x18/0x1c)
[<c06f3ac0>] (dump_stack+0x18/0x1c) from [<c045cc8c>] (__might_sleep+0x124/0x144)
[<c045cc8c>] (__might_sleep+0x124/0x144) from [<c04c7208>] (kmem_cache_alloc+0x44/0x62c)
[<c04c7208>] (kmem_cache_alloc+0x44/0x62c) from [<c05b7bec>] (spi_gpio_irq_set_type+0x2c/0xac)
[<c05b7bec>] (spi_gpio_irq_set_type+0x2c/0xac) from [<c049cec4>] (__irq_set_trigger+0x3c/0x8c)
[<c049cec4>] (__irq_set_trigger+0x3c/0x8c) from [<c049d514>] (__setup_irq+0x158/0x320)
[<c049d514>] (__setup_irq+0x158/0x320) from [<c049d7c0>] (request_threaded_irq+0xe4/0x130)
[<c049d7c0>] (request_threaded_irq+0xe4/0x130) from [<c05ba708>] (rockchip_headsetobserve_probe+0xdc/0x114)
[<c05ba708>] (rockchip_headsetobserve_probe+0xdc/0x114) from [<c059d290>] (platform_drv_probe+0x20/0x24)
[<c059d290>] (platform_drv_probe+0x20/0x24) from [<c059c294>] (driver_probe_device+0xb0/0x160)
[<c059c294>] (driver_probe_device+0xb0/0x160) from [<c059c3ac>] (__driver_attach+0x68/0x8c)
[<c059c3ac>] (__driver_attach+0x68/0x8c) from [<c059ba84>] (bus_for_each_dev+0x54/0x94)
[<c059ba84>] (bus_for_each_dev+0x54/0x94) from [<c059c0f8>] (driver_attach+0x20/0x28)
[<c059c0f8>] (driver_attach+0x20/0x28) from [<c059b350>] (bus_add_driver+0xa8/0x240)
[<c059b350>] (bus_add_driver+0xa8/0x240) from [<c059c6c0>] (driver_register+0xb0/0x140)
[<c059c6c0>] (driver_register+0xb0/0x140) from [<c059d6e4>] (platform_driver_register+0x4c/0x60)
[<c059d6e4>] (platform_driver_register+0x4c/0x60) from [<c0418bd0>] (rockchip_headsetobserve_init+0x14/0x20)
[<c0418bd0>] (rockchip_headsetobserve_init+0x14/0x20) from [<c0449364>] (do_one_initcall+0x64/0x1c0)
[<c0449364>] (do_one_initcall+0x64/0x1c0) from [<c0408474>] (kernel_init+0xa4/0x11c)
[<c0408474>] (kernel_init+0xa4/0x11c) from [<c044a8fc>] (kernel_thread_exit+0x0/0x8)
dma_alloc_coherent use GFP_ATOMIC, fix this bug:
BUG: sleeping function called from invalid context at mm/page_alloc.c:1939
in_atomic(): 1, irqs_disabled(): 0, pid: 44, name: mmcqd
2 locks held by mmcqd/44:
#0: (&host->lock){......}, at: [<c0631fec>] rk2818_sdmmc_request+0x38/0x7c
#1: (&rk2818_dma[i].lock){......}, at: [<c04574e4>] rk28_dma_request+0x28/0x108
[<c044f108>] (unwind_backtrace+0x0/0xdc) from [<c06f3ac0>] (dump_stack+0x18/0x1c)
[<c06f3ac0>] (dump_stack+0x18/0x1c) from [<c045cc8c>] (__might_sleep+0x124/0x144)
[<c045cc8c>] (__might_sleep+0x124/0x144) from [<c04a8174>] (__alloc_pages_nodemask+0xb8/0x5ac)
[<c04a8174>] (__alloc_pages_nodemask+0xb8/0x5ac) from [<c044fc70>] (__dma_alloc+0x150/0x3e0)
[<c044fc70>] (__dma_alloc+0x150/0x3e0) from [<c044ff8c>] (dma_alloc_coherent+0x58/0x64)
[<c044ff8c>] (dma_alloc_coherent+0x58/0x64) from [<c0457534>] (rk28_dma_request+0x78/0x108)
[<c0457534>] (rk28_dma_request+0x78/0x108) from [<c044e3b4>] (request_dma+0x7c/0xa8)
[<c044e3b4>] (request_dma+0x7c/0xa8) from [<c0631d70>] (rk2818_sdmmc_start_request+0x25c/0x38c)
[<c0631d70>] (rk2818_sdmmc_start_request+0x25c/0x38c) from [<c063200c>] (rk2818_sdmmc_request+0x58/0x7c)
[<c063200c>] (rk2818_sdmmc_request+0x58/0x7c) from [<c0629fa8>] (mmc_wait_for_req+0x150/0x16c)
[<c0629fa8>] (mmc_wait_for_req+0x150/0x16c) from [<c06307b0>] (mmc_blk_issue_rq+0x234/0x4b8)
[<c06307b0>] (mmc_blk_issue_rq+0x234/0x4b8) from [<c06313b4>] (mmc_queue_thread+0x100/0x104)
[<c06313b4>] (mmc_queue_thread+0x100/0x104) from [<c047a868>] (kthread+0x84/0x8c)
[<c047a868>] (kthread+0x84/0x8c) from [<c044a8fc>] (kernel_thread_exit+0x0/0x8)