* Archit Taneja architt@codeaurora.org wrote:
On 9/17/2015 2:04 PM, Ingo Molnar wrote:
- Ingo Molnar mingo@kernel.org wrote:
So this patch was whitespace damaged - I applied it by hand and made the commit
below. This has solved the crash, thanks Archit!
Spoke too soon - the attached (allyesconfig-ish) config still crashes, first there
are a handful of kobject debug warnings, then:
The error handling in the driver is bad. The main problem is that the driver_load op calls mgag200_driver_unload if anything fails, which doesn't work well if driver_load fails mid way.
I'll post out patches to fix this. But you'll need to undo the patch I'd sent previously.
Thanks, with Linus's latest kernel that has your fixes included I can no longer reproduce the crash.
The MGAG200 driver still generates the following kobject warnings:
[ 269.353392] calling mgag200_init+0x0/0x3b @ 1 [ 269.358702] bus: 'pci': add driver mgag200 [ 269.363760] bus: 'pci': driver_probe_device: matched device 0000:0b:00.0 with driver mgag200 [ 269.373748] bus: 'pci': really_probe: probing driver mgag200 with device 0000:0b:00.0 [ 269.383073] mgag200 0000:0b:00.0: no default pinctrl state [ 269.389590] devices_kset: Moving 0000:0b:00.0 to end of list [ 269.399437] device: 'controlD64': device_add [ 269.404901] PM: Adding info for No Bus:controlD64 [ 269.410986] device: 'card0': device_add [ 269.415877] PM: Adding info for No Bus:card0 [ 269.431210] ------------[ cut here ]------------ [ 269.436655] WARNING: CPU: 0 PID: 230 at lib/kobject.c:582 kobject_get+0x33/0x6a() [ 269.445503] kobject: 'ttm' (ffffffff86c288b0): is not initialized, yet kobject_get() is being called. [ 269.456290] Modules linked in: [ 269.460057] CPU: 0 PID: 230 Comm: kworker/0:1 Tainted: G W L 4.3.0-rc3-02057-g77880ef-dirty #183 [ 269.471428] Hardware name: Intel Corporation S2600GZ/S2600GZ, BIOS SE5C600.86B.02.02.0002.122320131210 12/23/2013 [ 269.483389] Workqueue: events work_for_cpu_fn [ 269.488612] 0000000000000000 ffff88041fabf9a8 ffffffff81892127 ffff88041fabf9f0 [ 269.497809] ffff88041fabf9e0 ffffffff81145b0f ffffffff8189405f ffffffff86c288b0 [ 269.506882] 0000000000000000 ffffffff86c288b0 0000000000ff0000 ffff88041fabfa40 [ 269.515943] Call Trace: [ 269.518951] [<ffffffff81892127>] dump_stack+0x4b/0x64 [ 269.524975] [<ffffffff81145b0f>] warn_slowpath_common+0x9f/0xb8 [ 269.531970] [<ffffffff8189405f>] ? kobject_get+0x33/0x6a [ 269.538271] [<ffffffff81145b74>] warn_slowpath_fmt+0x4c/0x4e [ 269.544976] [<ffffffff8118a84a>] ? lock_is_held+0x55/0x66 [ 269.551382] [<ffffffff8189405f>] kobject_get+0x33/0x6a [ 269.557500] [<ffffffff81894723>] kobject_add_internal+0x58/0x2c4 [ 269.564589] [<ffffffff81894a02>] kobject_init_and_add+0x73/0x7e [ 269.571586] [<ffffffff81b9ba3f>] ttm_mem_global_init+0xc6/0x2cd [ 269.578583] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 269.585674] [<ffffffff81291f09>] ? kasan_unpoison_shadow+0x14/0x35 [ 269.592958] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 269.600044] [<ffffffff81291f75>] ? kasan_kmalloc+0x4b/0x50 [ 269.606544] [<ffffffff8128ebc4>] ? __kmalloc+0x13e/0x180 [ 269.612856] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 269.619945] [<ffffffff81b9496c>] ? drm_global_item_ref+0x67/0xad [ 269.627056] [<ffffffff81cbf3c2>] mgag200_ttm_mem_global_init+0x12/0x14 [ 269.634725] [<ffffffff81b94983>] drm_global_item_ref+0x7e/0xad [ 269.641619] [<ffffffff81cbf489>] mgag200_mm_init+0x50/0x199 [ 269.648223] [<ffffffff81cba964>] mgag200_driver_load+0x34a/0x4c7 [ 269.655316] [<ffffffff81b838ad>] drm_dev_register+0x6f/0xb0 [ 269.661923] [<ffffffff81b860d5>] drm_get_pci_dev+0xff/0x1c2 [ 269.668526] [<ffffffff81cbe709>] mga_pci_probe+0xa6/0xad [ 269.674840] [<ffffffff81911f27>] local_pci_probe+0x3d/0x82 [ 269.685976] [<ffffffff811599c1>] work_for_cpu_fn+0x14/0x1b [ 269.692622] [<ffffffff8115d50b>] process_one_work+0x28e/0x4ef [ 269.699424] [<ffffffff8115d3ed>] ? process_one_work+0x170/0x4ef [ 269.706438] [<ffffffff8115d78d>] process_scheduled_works+0x21/0x2f [ 269.713728] [<ffffffff8115dc06>] worker_thread+0x1fb/0x2bd [ 269.720238] [<ffffffff8115da0b>] ? cancel_delayed_work_sync+0x15/0x15 [ 269.727815] [<ffffffff8115da0b>] ? cancel_delayed_work_sync+0x15/0x15 [ 269.735395] [<ffffffff81162dcb>] kthread+0xc5/0xcd [ 269.741118] [<ffffffff81162d06>] ? kthread_parkme+0x24/0x24 [ 269.747727] [<ffffffff83d556ef>] ret_from_fork+0x3f/0x70 [ 269.754041] [<ffffffff81162d06>] ? kthread_parkme+0x24/0x24 [ 269.760641] ---[ end trace 0609b8147f0ef5df ]--- [ 269.766074] ------------[ cut here ]------------ [ 269.771499] WARNING: CPU: 0 PID: 230 at include/linux/kref.h:47 kobject_get+0x5d/0x6a() [ 269.780921] Modules linked in: [ 269.784691] CPU: 0 PID: 230 Comm: kworker/0:1 Tainted: G W L 4.3.0-rc3-02057-g77880ef-dirty #183 [ 269.796062] Hardware name: Intel Corporation S2600GZ/S2600GZ, BIOS SE5C600.86B.02.02.0002.122320131210 12/23/2013 [ 269.808019] Workqueue: events work_for_cpu_fn [ 269.813274] 0000000000000000 ffff88041fabf9f8 ffffffff81892127 0000000000000000 [ 269.822347] ffff88041fabfa30 ffffffff81145b0f ffffffff81894089 ffffffff86c288b0 [ 269.831405] 0000000000000000 ffffffff86c288b0 0000000000ff0000 ffff88041fabfa40 [ 269.840455] Call Trace: [ 269.843459] [<ffffffff81892127>] dump_stack+0x4b/0x64 [ 269.849477] [<ffffffff81145b0f>] warn_slowpath_common+0x9f/0xb8 [ 269.856468] [<ffffffff81894089>] ? kobject_get+0x5d/0x6a [ 269.862783] [<ffffffff81145bd6>] warn_slowpath_null+0x1a/0x1c [ 269.869571] [<ffffffff81894089>] kobject_get+0x5d/0x6a [ 269.875690] [<ffffffff81894723>] kobject_add_internal+0x58/0x2c4 [ 269.882784] [<ffffffff81894a02>] kobject_init_and_add+0x73/0x7e [ 269.889778] [<ffffffff81b9ba3f>] ttm_mem_global_init+0xc6/0x2cd [ 269.896770] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 269.903865] [<ffffffff81291f09>] ? kasan_unpoison_shadow+0x14/0x35 [ 269.911147] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 269.918228] [<ffffffff81291f75>] ? kasan_kmalloc+0x4b/0x50 [ 269.924731] [<ffffffff8128ebc4>] ? __kmalloc+0x13e/0x180 [ 269.931046] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 269.938136] [<ffffffff81b9496c>] ? drm_global_item_ref+0x67/0xad [ 269.945226] [<ffffffff81cbf3c2>] mgag200_ttm_mem_global_init+0x12/0x14 [ 269.952903] [<ffffffff81b94983>] drm_global_item_ref+0x7e/0xad [ 269.959797] [<ffffffff81cbf489>] mgag200_mm_init+0x50/0x199 [ 269.966400] [<ffffffff81cba964>] mgag200_driver_load+0x34a/0x4c7 [ 269.973489] [<ffffffff81b838ad>] drm_dev_register+0x6f/0xb0 [ 269.980091] [<ffffffff81b860d5>] drm_get_pci_dev+0xff/0x1c2 [ 269.986698] [<ffffffff81cbe709>] mga_pci_probe+0xa6/0xad [ 269.993013] [<ffffffff81911f27>] local_pci_probe+0x3d/0x82 [ 269.999519] [<ffffffff811599c1>] work_for_cpu_fn+0x14/0x1b [ 270.006025] [<ffffffff8115d50b>] process_one_work+0x28e/0x4ef [ 270.012826] [<ffffffff8115d3ed>] ? process_one_work+0x170/0x4ef [ 270.019818] [<ffffffff8115d78d>] process_scheduled_works+0x21/0x2f [ 270.027100] [<ffffffff8115dc06>] worker_thread+0x1fb/0x2bd [ 270.033606] [<ffffffff8115da0b>] ? cancel_delayed_work_sync+0x15/0x15 [ 270.041182] [<ffffffff8115da0b>] ? cancel_delayed_work_sync+0x15/0x15 [ 270.048758] [<ffffffff81162dcb>] kthread+0xc5/0xcd [ 270.054491] [<ffffffff81162d06>] ? kthread_parkme+0x24/0x24 [ 270.061096] [<ffffffff83d556ef>] ret_from_fork+0x3f/0x70 [ 270.067409] [<ffffffff81162d06>] ? kthread_parkme+0x24/0x24 [ 270.074012] ---[ end trace 0609b8147f0ef5e0 ]--- [ 270.079448] ------------[ cut here ]------------ [ 270.084882] WARNING: CPU: 0 PID: 230 at lib/kobject.c:674 kobject_put+0x33/0x47() [ 270.093723] kobject: 'ttm' (ffffffff86c288b0): is not initialized, yet kobject_put() is being called. [ 270.104503] Modules linked in: [ 270.108272] CPU: 0 PID: 230 Comm: kworker/0:1 Tainted: G W L 4.3.0-rc3-02057-g77880ef-dirty #183 [ 270.119648] Hardware name: Intel Corporation S2600GZ/S2600GZ, BIOS SE5C600.86B.02.02.0002.122320131210 12/23/2013 [ 270.131604] Workqueue: events work_for_cpu_fn [ 270.136828] 0000000000000000 ffff88041fabf9a8 ffffffff81892127 ffff88041fabf9f0 [ 270.145900] ffff88041fabf9e0 ffffffff81145b0f ffffffff818940c9 ffffffff86c288b0 [ 270.154971] ffffffff86c288b0 00000000fffffffe 0000000000ff0000 ffff88041fabfa40 [ 270.164021] Call Trace: [ 270.167026] [<ffffffff81892127>] dump_stack+0x4b/0x64 [ 270.173045] [<ffffffff81145b0f>] warn_slowpath_common+0x9f/0xb8 [ 270.180036] [<ffffffff818940c9>] ? kobject_put+0x33/0x47 [ 270.186349] [<ffffffff81145b74>] warn_slowpath_fmt+0x4c/0x4e [ 270.193099] [<ffffffff818940c9>] kobject_put+0x33/0x47 [ 270.199217] [<ffffffff81894966>] kobject_add_internal+0x29b/0x2c4 [ 270.206405] [<ffffffff81894a02>] kobject_init_and_add+0x73/0x7e [ 270.213401] [<ffffffff81b9ba3f>] ttm_mem_global_init+0xc6/0x2cd [ 270.220385] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 270.227473] [<ffffffff81291f09>] ? kasan_unpoison_shadow+0x14/0x35 [ 270.234755] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 270.241844] [<ffffffff81291f75>] ? kasan_kmalloc+0x4b/0x50 [ 270.248347] [<ffffffff8128ebc4>] ? __kmalloc+0x13e/0x180 [ 270.254678] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 270.261769] [<ffffffff81b9496c>] ? drm_global_item_ref+0x67/0xad [ 270.268857] [<ffffffff81cbf3c2>] mgag200_ttm_mem_global_init+0x12/0x14 [ 270.276519] [<ffffffff81b94983>] drm_global_item_ref+0x7e/0xad [ 270.283416] [<ffffffff81cbf489>] mgag200_mm_init+0x50/0x199 [ 270.290020] [<ffffffff81cba964>] mgag200_driver_load+0x34a/0x4c7 [ 270.297109] [<ffffffff81b838ad>] drm_dev_register+0x6f/0xb0 [ 270.303712] [<ffffffff81b860d5>] drm_get_pci_dev+0xff/0x1c2 [ 270.310317] [<ffffffff81cbe709>] mga_pci_probe+0xa6/0xad [ 270.316642] [<ffffffff81911f27>] local_pci_probe+0x3d/0x82 [ 270.323151] [<ffffffff811599c1>] work_for_cpu_fn+0x14/0x1b [ 270.329655] [<ffffffff8115d50b>] process_one_work+0x28e/0x4ef [ 270.336455] [<ffffffff8115d3ed>] ? process_one_work+0x170/0x4ef [ 270.343449] [<ffffffff8115d78d>] process_scheduled_works+0x21/0x2f [ 270.350735] [<ffffffff8115dc06>] worker_thread+0x1fb/0x2bd [ 270.357242] [<ffffffff8115da0b>] ? cancel_delayed_work_sync+0x15/0x15 [ 270.364821] [<ffffffff8115da0b>] ? cancel_delayed_work_sync+0x15/0x15 [ 270.372398] [<ffffffff81162dcb>] kthread+0xc5/0xcd [ 270.378125] [<ffffffff81162d06>] ? kthread_parkme+0x24/0x24 [ 270.384733] [<ffffffff83d556ef>] ret_from_fork+0x3f/0x70 [ 270.391045] [<ffffffff81162d06>] ? kthread_parkme+0x24/0x24 [ 270.397646] ---[ end trace 0609b8147f0ef5e1 ]--- [ 270.403093] ------------[ cut here ]------------ [ 270.408531] WARNING: CPU: 0 PID: 230 at lib/kobject.c:244 kobject_add_internal+0x281/0x2c4() [ 270.418444] kobject_add_internal failed for memory_accounting (error: -2 parent: kkkkkkk\xffffffa5\xffffffbb\xffffffbb\xffffffbb\xffffffbb\xffffffbb\xffffffbb\xffffffbb\xffffffbb`R\xffffffb0\xffffff88\xffffffff\xffffffffsD\xffffff89\xffffff81\xffffffff\xffffffff\xffffffff\xffffffff>\xffffffe3(\xffffff81\xffffffff\xffffffff\xffffffff\xffffffffJ)\xffffff81\xffffffff\xffffffff\xffffffff\xffffffff\xffffffaf\xfffffff6\xffffff89\xffffff81\xffffffff\xffffffff\xffffffff\xffffffffsD\xffffff89\xffffff81\xffffffff\xffffffff\xffffffff\xffffffff\xffffff9c&܁\xffffffff\xffffffff\xffffffff\xffffffffֱR\xffffff87\xffffffff\xffffffff\xffffffff\xffffffff\xffffff88!) [ 270.435559] Modules linked in: [ 270.439326] CPU: 0 PID: 230 Comm: kworker/0:1 Tainted: G W L 4.3.0-rc3-02057-g77880ef-dirty #183 [ 270.450700] Hardware name: Intel Corporation S2600GZ/S2600GZ, BIOS SE5C600.86B.02.02.0002.122320131210 12/23/2013 [ 270.462657] Workqueue: events work_for_cpu_fn [ 270.467875] 0000000000000000 ffff88041fabf9c0 ffffffff81892127 ffff88041fabfa08 [ 270.476941] ffff88041fabf9f8 ffffffff81145b0f ffffffff8189494c ffff88041fe5e270 [ 270.486017] ffffffff86c288b0 00000000fffffffe 0000000000ff0000 ffff88041fabfa58 [ 270.495088] Call Trace: [ 270.498094] [<ffffffff81892127>] dump_stack+0x4b/0x64 [ 270.504118] [<ffffffff81145b0f>] warn_slowpath_common+0x9f/0xb8 [ 270.511113] [<ffffffff8189494c>] ? kobject_add_internal+0x281/0x2c4 [ 270.518496] [<ffffffff81145b74>] warn_slowpath_fmt+0x4c/0x4e [ 270.525197] [<ffffffff8189494c>] kobject_add_internal+0x281/0x2c4 [ 270.532387] [<ffffffff81894a02>] kobject_init_and_add+0x73/0x7e [ 270.539380] [<ffffffff81b9ba3f>] ttm_mem_global_init+0xc6/0x2cd [ 270.546372] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 270.553460] [<ffffffff81291f09>] ? kasan_unpoison_shadow+0x14/0x35 [ 270.560744] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 270.567844] [<ffffffff81291f75>] ? kasan_kmalloc+0x4b/0x50 [ 270.574350] [<ffffffff8128ebc4>] ? __kmalloc+0x13e/0x180 [ 270.580665] [<ffffffff812916f1>] ? kasan_poison_shadow+0x2f/0x31 [ 270.587757] [<ffffffff81b9496c>] ? drm_global_item_ref+0x67/0xad [ 270.594847] [<ffffffff81cbf3c2>] mgag200_ttm_mem_global_init+0x12/0x14 [ 270.602522] [<ffffffff81b94983>] drm_global_item_ref+0x7e/0xad [ 270.609423] [<ffffffff81cbf489>] mgag200_mm_init+0x50/0x199 [ 270.616027] [<ffffffff81cba964>] mgag200_driver_load+0x34a/0x4c7 [ 270.623118] [<ffffffff81b838ad>] drm_dev_register+0x6f/0xb0 [ 270.629722] [<ffffffff81b860d5>] drm_get_pci_dev+0xff/0x1c2 [ 270.636327] [<ffffffff81cbe709>] mga_pci_probe+0xa6/0xad [ 270.642642] [<ffffffff81911f27>] local_pci_probe+0x3d/0x82 [ 270.649154] [<ffffffff811599c1>] work_for_cpu_fn+0x14/0x1b [ 270.655664] [<ffffffff8115d50b>] process_one_work+0x28e/0x4ef [ 270.662465] [<ffffffff8115d3ed>] ? process_one_work+0x170/0x4ef [ 270.669459] [<ffffffff8115d78d>] process_scheduled_works+0x21/0x2f [ 270.676747] [<ffffffff8115dc06>] worker_thread+0x1fb/0x2bd [ 270.683259] [<ffffffff8115da0b>] ? cancel_delayed_work_sync+0x15/0x15 [ 270.690836] [<ffffffff8115da0b>] ? cancel_delayed_work_sync+0x15/0x15 [ 270.698414] [<ffffffff81162dcb>] kthread+0xc5/0xcd [ 270.704143] [<ffffffff81162d06>] ? kthread_parkme+0x24/0x24 [ 270.710742] [<ffffffff83d556ef>] ret_from_fork+0x3f/0x70 [ 270.717055] [<ffffffff81162d06>] ? kthread_parkme+0x24/0x24 [ 270.723658] ---[ end trace 0609b8147f0ef5e2 ]--- [ 270.729111] [drm:mgag200_mm_init] *ERROR* Failed setting up TTM memory accounting subsystem. [ 270.739731] PM: Removing info for No Bus:card0 [ 270.746079] PM: Removing info for No Bus:controlD64 [ 270.755395] mgag200: probe of 0000:0b:00.0 failed with error -2 [ 270.763040] initcall mgag200_init+0x0/0x3b returned 0 after 1371312 usecs [ 270.873569] calling cirrus_init+0x0/0x3b @ 1
and fails - but does not crash.
Similar config to what I sent you earlier in this thread.
Thanks,
Ingo