{"action":"created","issue":{"url":"https://api.github.com/repos/raspberrypi/linux/issues/959","labels_url":"https://api.github.com/repos/raspberrypi/linux/issues/959/labels{/name}","comments_url":"https://api.github.com/repos/raspberrypi/linux/issues/959/comments","events_url":"https://api.github.com/repos/raspberrypi/linux/issues/959/events","html_url":"https://github.com/raspberrypi/linux/issues/959","id":74337313,"number":959,"title":"4.0.y: strangeness with errors when using krealloc and later mapping the reallocated memory","user":{"login":"msperl","id":2638784,"avatar_url":"https://avatars.githubusercontent.com/u/2638784?v=3","gravatar_id":"","url":"https://api.github.com/users/msperl","html_url":"https://github.com/msperl","followers_url":"https://api.github.com/users/msperl/followers","following_url":"https://api.github.com/users/msperl/following{/other_user}","gists_url":"https://api.github.com/users/msperl/gists{/gist_id}","starred_url":"https://api.github.com/users/msperl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msperl/subscriptions","organizations_url":"https://api.github.com/users/msperl/orgs","repos_url":"https://api.github.com/users/msperl/repos","events_url":"https://api.github.com/users/msperl/events{/privacy}","received_events_url":"https://api.github.com/users/msperl/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":15,"created_at":"2015-05-08T11:49:34Z","updated_at":"2015-05-08T15:28:12Z","closed_at":null,"body":"@notro found some issue when testing the new feature of the spi-bcm2835 driver that strangely ONLY occurs in the foundation kernel - it does NOT show in 4.1.0-rc2.\r\n\r\nHere an example output of what we see on the console:\r\n```\r\nMay  7 20:18:17 raspb kernel: [  118.908906] fbtft: module is from the staging directory, the quality is unknown, you have been warned.\r\nMay  7 20:18:17 raspb kernel: [  118.916843] fb_st7735r: module is from the staging directory, the quality is unknown, you have been warned.\r\nMay  7 20:18:17 raspb kernel: [  118.921871] fbtft_of_value: buswidth = 8\r\nMay  7 20:18:17 raspb kernel: [  118.921917] fbtft_of_value: txbuflen = 32768\r\nMay  7 20:18:18 raspb kernel: [  119.866243] graphics fb1: fb_st7735r frame buffer, 128x160, 40 KiB video memory, 32 KiB DMA buffer memory, fps=20, spi0.4 at 8 MHz\r\nMay  7 20:18:18 raspb kernel: [  119.941569] Modules linked in: fb_st7735r(C) fbtft(C) syscopyarea sysfillrect sysimgblt fb_sys_fops spi_bcm2835 binfmt_misc i2c_bcm2708 uio_pdrv_genirq uio\r\nMay  7 20:18:18 raspb kernel: [  119.941662] CPU: 0 PID: 19 Comm: kworker/0:1 Tainted: G         C      4.0.1+ #31\r\nMay  7 20:18:18 raspb kernel: [  119.941680] Hardware name: BCM2708\r\nMay  7 20:18:18 raspb kernel: [  119.941713] Workqueue: events fb_deferred_io_work\r\nMay  7 20:18:18 raspb kernel: [  119.941784] [<c0015b40>] (unwind_backtrace) from [<c0012914>] (show_stack+0x20/0x24)\r\nMay  7 20:18:18 raspb kernel: [  119.941833] [<c0012914>] (show_stack) from [<c05656b8>] (dump_stack+0x20/0x28)\r\nMay  7 20:18:18 raspb kernel: [  119.941880] [<c05656b8>] (dump_stack) from [<c00e5a9c>] (bad_page+0xc8/0x128)\r\nMay  7 20:18:18 raspb kernel: [  119.941918] [<c00e5a9c>] (bad_page) from [<c00e8c48>] (get_page_from_freelist+0x664/0x960)\r\nMay  7 20:18:18 raspb kernel: [  119.941953] [<c00e8c48>] (get_page_from_freelist) from [<c00e9044>] (__alloc_pages_nodemask+0x100/0x8f4)\r\nMay  7 20:18:18 raspb kernel: [  119.941987] [<c00e9044>] (__alloc_pages_nodemask) from [<c00e9920>] (alloc_kmem_pages+0x20/0x28)\r\nMay  7 20:18:18 raspb kernel: [  119.942023] [<c00e9920>] (alloc_kmem_pages) from [<c010395c>] (kmalloc_order+0x20/0x5c)\r\nMay  7 20:18:18 raspb kernel: [  119.942054] [<c010395c>] (kmalloc_order) from [<c01039c4>] (kmalloc_order_trace+0x2c/0xd4)\r\nMay  7 20:18:18 raspb kernel: [  119.942090] [<c01039c4>] (kmalloc_order_trace) from [<c0128a24>] (__kmalloc_track_caller+0x218/0x224)\r\nMay  7 20:18:18 raspb kernel: [  119.942123] [<c0128a24>] (__kmalloc_track_caller) from [<c0103860>] (krealloc+0x60/0xb8)\r\nMay  7 20:18:18 raspb kernel: [  119.942156] [<c0103860>] (krealloc) from [<c03c5064>] (__spi_pump_messages+0x6f8/0x76c)\r\nMay  7 20:18:18 raspb kernel: [  119.942188] [<c03c5064>] (__spi_pump_messages) from [<c03c52f4>] (__spi_sync+0x21c/0x22c)\r\nMay  7 20:18:18 raspb kernel: [  119.942214] [<c03c52f4>] (__spi_sync) from [<c03c5340>] (spi_sync+0x1c/0x20)\r\nMay  7 20:18:18 raspb kernel: [  119.942300] [<c03c5340>] (spi_sync) from [<bf032148>] (fbtft_write_spi+0x90/0x108 [fbtft])\r\nMay  7 20:18:18 raspb kernel: [  119.942382] [<bf032148>] (fbtft_write_spi [fbtft]) from [<bf0315b0>] (fbtft_write_vmem16_bus8+0xec/0x14c [fbtft])\r\nMay  7 20:18:18 raspb kernel: [  119.942444] [<bf0315b0>] (fbtft_write_vmem16_bus8 [fbtft]) from [<bf030128>] (fbtft_update_display+0xd8/0x33c [fbtft])\r\nMay  7 20:18:18 raspb kernel: [  119.942502] [<bf030128>] (fbtft_update_display [fbtft]) from [<bf0304b0>] (fbtft_deferred_io+0x124/0x150 [fbtft])\r\nMay  7 20:18:18 raspb kernel: [  119.942547] [<bf0304b0>] (fbtft_deferred_io [fbtft]) from [<c033954c>] (fb_deferred_io_work+0x9c/0xf4)\r\nMay  7 20:18:18 raspb kernel: [  119.942584] [<c033954c>] (fb_deferred_io_work) from [<c003ad04>] (process_one_work+0x13c/0x490)\r\nMay  7 20:18:18 raspb kernel: [  119.942616] [<c003ad04>] (process_one_work) from [<c003b24c>] (worker_thread+0x1b0/0x528)\r\nMay  7 20:18:18 raspb kernel: [  119.942656] [<c003b24c>] (worker_thread) from [<c00404b0>] (kthread+0xdc/0xf8)\r\nMay  7 20:18:18 raspb kernel: [  119.942694] [<c00404b0>] (kthread) from [<c000ec90>] (ret_from_fork+0x14/0x24)\r\nMay  7 20:18:18 raspb kernel: [  119.942711] Disabling lock debugging due to kernel taint\r\n```\r\n\r\nWe have now traced this down to spi_map_msg, which:\r\n* for messages that only have TX or RX transfers will create a RX/TX-buffer with krealloc\r\n* then map the buffer by first using sg_set_page/sg_set_buf and subsequently calling dma_map_sg\r\n\r\nif both code sections are run together, then things break and also impact OTHER parts of the kernel like this one:\r\n```\r\nMay  7 20:18:41 raspb kernel: [  142.344159] Hardware name: BCM2708\r\nMay  7 20:18:41 raspb kernel: [  142.344234] [<c0015b40>] (unwind_backtrace) from [<c0012914>] (show_stack+0x20/0x24)\r\nMay  7 20:18:41 raspb kernel: [  142.344282] [<c0012914>] (show_stack) from [<c05656b8>] (dump_stack+0x20/0x28)\r\nMay  7 20:18:41 raspb kernel: [  142.344329] [<c05656b8>] (dump_stack) from [<c00e5a9c>] (bad_page+0xc8/0x128)\r\nMay  7 20:18:41 raspb kernel: [  142.344367] [<c00e5a9c>] (bad_page) from [<c00e8c48>] (get_page_from_freelist+0x664/0x960)\r\nMay  7 20:18:41 raspb kernel: [  142.344401] [<c00e8c48>] (get_page_from_freelist) from [<c00e9044>] (__alloc_pages_nodemask+0x100/0x8f4)\r\nMay  7 20:18:41 raspb kernel: [  142.344450] [<c00e9044>] (__alloc_pages_nodemask) from [<c0475be4>] (__alloc_page_frag+0x8c/0x148)\r\nMay  7 20:18:41 raspb kernel: [  142.344487] [<c0475be4>] (__alloc_page_frag) from [<c0476490>] (__netdev_alloc_frag+0x38/0x88)\r\nMay  7 20:18:41 raspb kernel: [  142.344521] [<c0476490>] (__netdev_alloc_frag) from [<c047ae74>] (__alloc_rx_skb+0xd4/0xec)\r\nMay  7 20:18:41 raspb kernel: [  142.344553] [<c047ae74>] (__alloc_rx_skb) from [<c047af08>] (__netdev_alloc_skb+0x28/0x50)\r\nMay  7 20:18:41 raspb kernel: [  142.344595] [<c047af08>] (__netdev_alloc_skb) from [<c03ccbb8>] (rx_submit+0x3c/0x284)\r\nMay  7 20:18:41 raspb kernel: [  142.344631] [<c03ccbb8>] (rx_submit) from [<c03cd058>] (rx_complete+0x1e8/0x1f8)\r\nMay  7 20:18:41 raspb kernel: [  142.344663] [<c03cd058>] (rx_complete) from [<c03d545c>] (__usb_hcd_giveback_urb+0x80/0x154)\r\nMay  7 20:18:41 raspb kernel: [  142.344693] [<c03d545c>] (__usb_hcd_giveback_urb) from [<c03d56d4>] (usb_hcd_giveback_urb+0x48/0x120)\r\nMay  7 20:18:41 raspb kernel: [  142.344733] [<c03d56d4>] (usb_hcd_giveback_urb) from [<c03fdec4>] (completion_tasklet_func+0x6c/0x98)\r\nMay  7 20:18:41 raspb kernel: [  142.344769] [<c03fdec4>] (completion_tasklet_func) from [<c040be80>] (tasklet_callback+0x20/0x24)\r\nMay  7 20:18:41 raspb kernel: [  142.344816] [<c040be80>] (tasklet_callback) from [<c0027ccc>] (tasklet_hi_action+0x84/0xd8)\r\n```\r\nThis does NOT happen with an upstream 4.1.0-rc2 kernel, so it must be something specific to downstream/custom code\r\n\r\nIt also only happens for the second mapping request that is 16384 bytes (actually might be anything > 8192 bytes - it was only tested with 4K/8K/16K/32K transfers)\r\n\r\nHere with some dev_info messages arround the krealloc:\r\n```\r\n[   82.843285] fbtft: module is from the staging directory, the quality is unknown, you have been warned.\r\n[   82.852350] fb_st7735r: module is from the staging directory, the quality is unknown, you have been warned.\r\n[   82.855984] fbtft_of_value: buswidth = 8\r\n[   82.856030] fbtft_of_value: txbuflen = 16384\r\n[   82.977874] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   82.977923] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.128369] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.128414] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.629290] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.629332] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.629443] spi_master spi0: krealloc-rx - 00000000 - 3\r\n[   83.629472] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.629565] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.629590] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.629669] spi_master spi0: krealloc-rx - 00000000 - 3\r\n[   83.629697] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.629788] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.629816] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.629894] spi_master spi0: krealloc-rx - 00000000 - 6\r\n[   83.629920] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630007] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.630032] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630110] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.630139] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630219] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.630247] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630322] spi_master spi0: krealloc-rx - 00000000 - 3\r\n[   83.630348] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630431] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.630458] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630534] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.630561] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630645] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.630671] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630747] spi_master spi0: krealloc-rx - 00000000 - 2\r\n[   83.630774] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630856] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.630885] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.630960] spi_master spi0: krealloc-rx - 00000000 - 2\r\n[   83.630988] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.631070] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.631096] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.631172] spi_master spi0: krealloc-rx - 00000000 - 2\r\n[   83.631198] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.631280] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.631307] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.631423] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.631453] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.631577] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.631607] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.631696] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.631723] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.631802] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.631829] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.631906] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.631934] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.736459] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.736508] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.747254] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.747299] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.747410] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.747440] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.747524] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.747552] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.747630] spi_master spi0: krealloc-rx - 00000000 - 4\r\n[   83.747657] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.747736] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.747765] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.747839] spi_master spi0: krealloc-rx - 00000000 - 4\r\n[   83.747865] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.747943] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   83.747971] spi_master spi0: krealloc-rx - da6c8be0\r\n[   83.748271] spi_master spi0: krealloc-rx - 00000000 - 16384\r\n[   83.748314] spi_master spi0: krealloc-rx - da6ac000\r\n[   83.765678] spi_master spi0: krealloc-rx - 00000000 - 16384\r\n[   83.765731] BUG: Bad page state in process modprobe  pfn:1a6ac\r\n[   83.774518] page:db7ba030 count:0 mapcount:0 mapping:  (null) index:0x0\r\n[   83.783143] flags: 0x200(arch_1)\r\n[   83.791861] page dumped because: PAGE_FLAGS_CHECK_AT_PREP flag set\r\n[   83.803147] bad because of flags:\r\n[   83.808397] flags: 0x200(arch_1)\r\n[   83.813208] Modules linked in: fb_st7735r(C+) fbtft(C) syscopyarea sysfillrect sysimgblt fb_sys_fops spi_bcm2835 binfmt_misc i2c_bcm2708 uio_pdrv_genirq uio\r\n[   83.813297] CPU: 0 PID: 2133 Comm: modprobe Tainted: G         C      4.0.1+ #35\r\n[   83.813313] Hardware name: BCM2708\r\n[   83.813389] [<c001672c>] (unwind_backtrace) from [<c0013314>] (show_stack+0x20/0x24)\r\n[   83.813439] [<c0013314>] (show_stack) from [<c0576504>] (dump_stack+0x20/0x28)\r\n[   83.813481] [<c0576504>] (dump_stack) from [<c00e7314>] (bad_page+0xc8/0x128)\r\n[   83.813519] [<c00e7314>] (bad_page) from [<c00ea4c0>] (get_page_from_freelist+0x664/0x960)\r\n[   83.813553] [<c00ea4c0>] (get_page_from_freelist) from [<c00ea8bc>] (__alloc_pages_nodemask+0x100/0x8f4)\r\n[   83.813582] [<c00ea8bc>] (__alloc_pages_nodemask) from [<c00eb198>] (alloc_kmem_pages+0x20/0x28)\r\n[   83.813612] [<c00eb198>] (alloc_kmem_pages) from [<c01051d4>] (kmalloc_order+0x20/0x5c)\r\n[   83.813641] [<c01051d4>] (kmalloc_order) from [<c010523c>] (kmalloc_order_trace+0x2c/0xd4)\r\n[   83.813675] [<c010523c>] (kmalloc_order_trace) from [<c012a2d4>] (__kmalloc_track_caller+0x218/0x224)\r\n[   83.813703] [<c012a2d4>] (__kmalloc_track_caller) from [<c01050d8>] (krealloc+0x60/0xb8)\r\n[   83.813734] [<c01050d8>] (krealloc) from [<c03cce08>] (__spi_pump_messages+0x70c/0x79c)\r\n[   83.813764] [<c03cce08>] (__spi_pump_messages) from [<c03cd0b4>] (__spi_sync+0x21c/0x22c)\r\n[   83.813789] [<c03cd0b4>] (__spi_sync) from [<c03cd100>] (spi_sync+0x1c/0x20)\r\n[   83.813871] [<c03cd100>] (spi_sync) from [<bf0341c4>] (fbtft_write_spi+0x90/0x108 [fbtft])\r\n[   83.813953] [<bf0341c4>] (fbtft_write_spi [fbtft]) from [<bf0335fc>] (fbtft_write_vmem16_bus8+0xfc/0x18c [fbtft])\r\n[   83.814018] [<bf0335fc>] (fbtft_write_vmem16_bus8 [fbtft]) from [<bf032128>] (fbtft_update_display+0xd8/0x33c [fbtft])\r\n[   83.814076] [<bf032128>] (fbtft_update_display [fbtft]) from [<bf0310e0>] (fbtft_register_framebuffer+0x114/0x2c0 [fbtft])\r\n[   83.814131] [<bf0310e0>] (fbtft_register_framebuffer [fbtft]) from [<bf031a44>] (fbtft_probe_common+0x124/0x47c [fbtft])\r\n[   83.814190] [<bf031a44>] (fbtft_probe_common [fbtft]) from [<bf03f098>] (fbtft_driver_probe_spi+0x24/0x2c [fb_st7735r])\r\n[   83.814230] [<bf03f098>] (fbtft_driver_probe_spi [fb_st7735r]) from [<c03cc2f4>] (spi_drv_probe+0x48/0x4c)\r\n[   83.814269] [<c03cc2f4>] (spi_drv_probe) from [<c037ce50>] (driver_probe_device+0x130/0x378)\r\n[   83.814300] [<c037ce50>] (driver_probe_device) from [<c037d134>] (__driver_attach+0x9c/0xa0)\r\n[   83.814326] [<c037d134>] (__driver_attach) from [<c037b0c8>] (bus_for_each_dev+0x64/0x98)\r\n[   83.814353] [<c037b0c8>] (bus_for_each_dev) from [<c037c828>] (driver_attach+0x28/0x30)\r\n[   83.814380] [<c037c828>] (driver_attach) from [<c037c420>] (bus_add_driver+0xf8/0x218)\r\n[   83.814410] [<c037c420>] (bus_add_driver) from [<c037d664>] (driver_register+0x88/0x104)\r\n[   83.814438] [<c037d664>] (driver_register) from [<c03cc298>] (spi_register_driver+0x54/0x68)\r\n[   83.814472] [<c03cc298>] (spi_register_driver) from [<bf041014>] (fbtft_driver_module_init+0x14/0x38 [fb_st7735r])\r\n[   83.814512] [<bf041014>] (fbtft_driver_module_init [fb_st7735r]) from [<c00087b4>] (do_one_initcall+0xbc/0x204)\r\n[   83.814555] [<c00087b4>] (do_one_initcall) from [<c008ad28>] (do_init_module+0x6c/0x1c4)\r\n[   83.814586] [<c008ad28>] (do_init_module) from [<c008c7ac>] (load_module+0x17f4/0x1ff0)\r\n[   83.814616] [<c008c7ac>] (load_module) from [<c008d080>] (SyS_init_module+0xd8/0x150)\r\n[   83.814651] [<c008d080>] (SyS_init_module) from [<c000f5c0>] (ret_fast_syscall+0x0/0x4c)\r\n[   83.814668] Disabling lock debugging due to kernel taint\r\n[   83.814708] spi_master spi0: krealloc-rx - da4c0000\r\n[   83.832113] spi_master spi0: krealloc-rx - da4c0000 - 8192\r\n[   83.832156] spi_master spi0: krealloc-rx - da4c0000\r\n[   83.840915] spi_master spi0: krealloc-rx - da4c0000 - 1\r\n[   83.840956] spi_master spi0: krealloc-rx - da4c0000\r\n[   83.841006] spi_master spi0: krealloc-rx - da4c0000 - 16\r\n[   83.841029] spi_master spi0: krealloc-rx - da4c0000\r\n[   83.841086] spi_master spi0: krealloc-rx - da4c0000 - 1\r\n[   83.841108] spi_master spi0: krealloc-rx - da4c0000\r\n[   83.841148] spi_master spi0: krealloc-rx - da4c0000 - 16\r\n[   83.841170] spi_master spi0: krealloc-rx - da4c0000\r\n[   83.841837] graphics fb1: fb_st7735r frame buffer, 128x160, 40 KiB video memory, 16 KiB DMA buffer memory, fps=20, spi0.4 at 8 MHz\r\n[   85.506454] spi_master spi0: krealloc-rx - 00000000 - 1\r\n[   85.506502] spi_master spi0: krealloc-rx - dafac180\r\n[   85.506574] spi_master spi0: krealloc-rx - dafac180 - 4\r\n```\r\n\r\nFinally see also discussions in this thread:\r\nhttps://github.com/msperl/spi-bcm2835/issues/13#issuecomment-99460803"},"comment":{"url":"https://api.github.com/repos/raspberrypi/linux/issues/comments/100273060","html_url":"https://github.com/raspberrypi/linux/issues/959#issuecomment-100273060","issue_url":"https://api.github.com/repos/raspberrypi/linux/issues/959","id":100273060,"user":{"login":"notro","id":530887,"avatar_url":"https://avatars.githubusercontent.com/u/530887?v=3","gravatar_id":"","url":"https://api.github.com/users/notro","html_url":"https://github.com/notro","followers_url":"https://api.github.com/users/notro/followers","following_url":"https://api.github.com/users/notro/following{/other_user}","gists_url":"https://api.github.com/users/notro/gists{/gist_id}","starred_url":"https://api.github.com/users/notro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/notro/subscriptions","organizations_url":"https://api.github.com/users/notro/orgs","repos_url":"https://api.github.com/users/notro/repos","events_url":"https://api.github.com/users/notro/events{/privacy}","received_events_url":"https://api.github.com/users/notro/received_events","type":"User","site_admin":false},"created_at":"2015-05-08T15:28:12Z","updated_at":"2015-05-08T15:28:12Z","body":"Ok."}}