On 5/24/2016 10:09 AM, Jon Hunter wrote: > Hi Rhyland, > > On 03/05/16 16:45, Rhyland Klein wrote: >> Enable the ChromeOS Embedded Controller, its I2C tunnel driver, and >> the BA27XXX battery driver. These are all used on the Tegra210 Smaug >> platform. >> >> Signed-off-by: Rhyland Klein <rklein@xxxxxxxxxx> > > I tried booting with this patch with next-20160523 on the Tegra210 Smaug and I am seeing the following panic ... > > [ 1.258116] i2c /dev entries driver > [ 1.278519] Unable to handle kernel NULL pointer dereference at virtual address 00000378 > [ 1.286605] pgd = ffff000008cb6000 > [ 1.290000] [00000378] *pgd=000000013fffe003, *pud=000000013fffd003, *pmd=0000000000000000 > [ 1.298277] Internal error: Oops: 96000004 [#1] PREEMPT SMP > [ 1.303839] Modules linked in: > [ 1.306898] CPU: 3 PID: 1 Comm: swapper/0 Not tainted 4.6.0-next-20160523+ #1047 > [ 1.314284] Hardware name: Google Pixel C (DT) > [ 1.318719] task: ffff8000bc0b0000 ti: ffff8000bc0b8000 task.ti: ffff8000bc0b8000 > [ 1.326199] PC is at _raw_spin_lock_irqsave+0x1c/0x50 > [ 1.331245] LR is at power_supply_changed+0x1c/0x60 > [ 1.336114] pc : [<ffff0000087a19a0>] lr : [<ffff000008613114>] pstate: 800000c5 > [ 1.343498] sp : ffff8000bc0bb8d0 > [ 1.346805] x29: ffff8000bc0bb8d0 x28: ffff000008c39a40 > [ 1.352120] x27: 0000000000000000 x26: 0000000000000000 > [ 1.357434] x25: ffff00000888a818 x24: ffff8000709d1800 > [ 1.362747] x23: ffff800071006270 x22: 0000000000000000 > [ 1.368061] x21: 0000000000000019 x20: 0000000000000378 > [ 1.373373] x19: 0000000000000000 x18: ffff00000885d138 > [ 1.378685] x17: 000000000000000e x16: 0000000000000007 > [ 1.383998] x15: 0000000000000001 x14: ffffffffffffffff > [ 1.389310] x13: ffffffffffffffff x12: 0000000000000018 > [ 1.394625] x11: 0101010101010101 x10: 0000000000000850 > [ 1.399939] x9 : ffff8000bc0b8000 x8 : ffff8000bc0b08b0 > [ 1.405253] x7 : 0000000002480a08 x6 : ffff8000bff9c740 > [ 1.410567] x5 : ffff8000709d1058 x4 : 0000000000000000 > [ 1.415880] x3 : 0000000000000001 x2 : 0000000000000040 > [ 1.421192] x1 : ffff8000bc0b8000 x0 : 0000000000000378 > [ 1.426506] > [ 1.427992] Process swapper/0 (pid: 1, stack limit = 0xffff8000bc0b8020) > [ 1.434683] Stack: (0xffff8000bc0bb8d0 to 0xffff8000bc0bc000) > [ 1.440419] b8c0: ffff8000bc0bb900 ffff000008614984 > [ 1.448239] b8e0: ffff800071006218 0000000000000096 ffff000200010055 ffff8000bc0bb8d8 > [ 1.456059] b900: ffff8000bc0bb960 ffff000008615084 ffff800071006270 ffff000008c3a338 > [ 1.463879] b920: ffff8000710062d8 ffff8000bc0bb9f8 00097c2000000bb9 0000000000000000 > [ 1.471699] b940: 0000002300863b48 0000000000000051 0000009600000019 ffff000000000001 > [ 1.479519] b960: ffff8000bc0bb990 ffff000008615180 ffff800071006218 000000000000002e > [ 1.487339] b980: ffff8000710062d8 ffff000008615178 ffff8000bc0bb9d0 ffff0000086133d8 > [ 1.495158] b9a0: ffff8000bc0bba7c ffff8000709d1800 ffff8000709d1800 ffff8000709d1b80 > [ 1.502977] b9c0: ffff8000bc0bba7c ffff0000082282f4 ffff8000bc0bba00 ffff000008616508 > [ 1.510797] b9e0: ffff8000709d1800 ffff0000086164f4 ffff8000709d1800 ffff00000847ecc4 > [ 1.518617] ba00: ffff8000bc0bba50 ffff0000086183b0 0000000000000000 ffff8000709d1800 > [ 1.526436] ba20: ffff8000709d1800 ffff000008c3ab50 ffff000008c3a000 ffff8000709d1818 > [ 1.534255] ba40: ffff8000709d1b48 000000007fffffff ffff8000bc0bba80 ffff0000086193b4 > [ 1.542075] ba60: 0000000000000000 ffff8000709d1818 ffff8000bc0bba80 ffff0000086191e0 > [ 1.549894] ba80: ffff8000bc0bbb20 ffff000008613b6c ffff8000bb9ca400 ffff8000bb9ca438 > [ 1.557714] baa0: ffff8000bc0bbbc0 ffff8000bb9ca020 ffff80007138e898 ffff8000bb9ca020 > [ 1.565532] bac0: ffff000008ca4000 0000000000000000 ffff000008c76000 0000000000000000 > [ 1.573352] bae0: ffff8000bb9ca400 ffff000008c3ab50 ffff80007138e898 ffff8000bb9ca020 > [ 1.581171] bb00: ffff8000709d1804 0000000000000000 ffff8000bb9ca400 0000000000000000 > [ 1.588991] bb20: ffff8000bc0bbb90 ffff000008613c54 ffff800071006218 ffff000008888e20 > [ 1.596810] bb40: ffff8000bb9ca000 ffff000008ca5000 ffff000008c3a000 ffff8000bb9ca020 > [ 1.604630] bb60: ffff000008889f18 ffff80007138e818 ffff000008c76000 0000000000000000 > [ 1.612451] bb80: ffff8000bc0bbba0 ffff8000bb9ca718 ffff8000bc0bbba0 ffff000008614f1c > [ 1.620270] bba0: ffff8000bc0bbbe0 ffff000008615668 0000000000000000 ffff800071006218 > [ 1.628091] bbc0: 0000000000000000 ffff800071006218 0000000000000000 0000000000000000 > [ 1.635910] bbe0: ffff8000bc0bbc30 ffff0000085ffff4 ffff000008889f18 ffff8000bb9ca020 > [ 1.643730] bc00: ffff8000bb9ca004 ffff8000bb9ca000 ffff000008615598 ffff000008acb0d0 > [ 1.651549] bc20: ffff000008b2fba0 0000000000000101 ffff8000bc0bbc70 ffff0000084836dc > [ 1.659369] bc40: ffff8000bb9ca020 0000000000000000 ffff000008ca2000 ffff000008c3a698 > [ 1.667189] bc60: 0000000000000000 0000000000000000 ffff8000bc0bbcb0 ffff000008483820 > [ 1.675009] bc80: ffff8000bb9ca020 ffff000008c3a698 ffff8000bb9ca080 0000000000000000 > [ 1.682828] bca0: ffff000008c21000 0000000000000000 ffff8000bc0bbce0 ffff000008481804 > [ 1.690647] bcc0: 0000000000000000 ffff000008c3a698 ffff00000848377c ffff8000bc0bbd30 > [ 1.698466] bce0: ffff8000bc0bbd20 ffff000008483008 ffff000008c3a698 ffff80007134fe00 > [ 1.706286] bd00: ffff000008c389f8 ffff000008799b08 ffff8000bc2f2ca8 ffff80007134fb68 > [ 1.714105] bd20: ffff8000bc0bbd30 ffff000008482c28 ffff8000bc0bbd70 ffff0000084840b8 > [ 1.721924] bd40: ffff000008c3a698 ffff8000bc0b8000 0000000000000000 ffff000008c76000 > [ 1.729743] bd60: ffff000008ae048c ffff00000833b0fc ffff8000bc0bbda0 ffff000008601f14 > [ 1.737564] bd80: ffff000008b0ffa4 ffff8000bc0b8000 0000000000000000 ffff000008485218 > [ 1.745384] bda0: ffff8000bc0bbdd0 ffff000008b0ffbc ffff000008b0ffa4 ffff000008081a54 > [ 1.753203] bdc0: ffff8000bc0bbdd0 ffff000008c3a660 ffff8000bc0bbde0 ffff000008081a54 > [ 1.761021] bde0: ffff8000bc0bbe50 ffff000008ae0ce0 ffff000008b96740 ffff000008b2fb00 > [ 1.768842] be00: 0000000000000006 ffff000008c76000 ffff8000bc0bbe00 ffff0000089d2b78 > [ 1.776662] be20: ffff000008be8b10 0000000600000006 0000000000000000 0000000000000000 > [ 1.784481] be40: ffff000008ae048c ffff000008acb0d0 ffff8000bc0bbeb0 ffff00000879b9c4 > [ 1.792300] be60: ffff00000879b9b4 0000000000000000 0000000000000000 0000000000000000 > [ 1.800120] be80: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 1.807940] bea0: 0000000000000000 0000000000000000 0000000000000000 ffff000008084e10 > [ 1.815759] bec0: ffff00000879b9b4 0000000000000000 0000000000000000 0000000000000000 > [ 1.823577] bee0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 1.831396] bf00: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 1.839215] bf20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 1.847034] bf40: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 1.854853] bf60: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 1.862671] bf80: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 1.870491] bfa0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 1.878310] bfc0: 0000000000000000 0000000000000000 0000000000000000 0000000000000005 > [ 1.886129] bfe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 1.893948] Call trace: > [ 1.896389] Exception stack(0xffff8000bc0bb710 to 0xffff8000bc0bb830) > [ 1.902818] b700: 0000000000000000 0000000000000378 > [ 1.910637] b720: ffff8000bc0bb8d0 ffff0000087a19a0 ffff000e0001001e ffff8000709a8018 > [ 1.918456] b740: ffff8000bc0bb780 ffff00000866a21c ffff8000bc0bb7c0 ffff00000860ffd8 > [ 1.926276] b760: 0000000000000020 ffff8000bc0bb8f0 0000000000000020 ffff80007138e398 > [ 1.934095] b780: ffff80007138e380 0000000000000002 0000000000000002 0000000000000004 > [ 1.941915] b7a0: ffff80007138e394 ffff8000bc0bb8e0 0000000000000378 ffff8000bc0b8000 > [ 1.949735] b7c0: 0000000000000040 0000000000000001 0000000000000000 ffff8000709d1058 > [ 1.957554] b7e0: ffff8000bff9c740 0000000002480a08 ffff8000bc0b08b0 ffff8000bc0b8000 > [ 1.965374] b800: 0000000000000850 0101010101010101 0000000000000018 ffffffffffffffff > [ 1.973193] b820: ffffffffffffffff 0000000000000001 > [ 1.978064] [<ffff0000087a19a0>] _raw_spin_lock_irqsave+0x1c/0x50 > [ 1.984150] [<ffff000008614984>] bq27xxx_battery_update+0x88/0x51c > [ 1.990321] [<ffff000008615084>] bq27xxx_battery_poll+0x24/0x70 > [ 1.996231] [<ffff000008615180>] bq27xxx_battery_get_property+0xb0/0x3b4 > [ 2.002923] [<ffff0000086133d8>] power_supply_read_temp+0x2c/0x54 > [ 2.009005] [<ffff000008616508>] thermal_zone_get_temp+0x5c/0x11c > [ 2.015089] [<ffff0000086183b0>] thermal_zone_device_update+0x34/0xb4 > [ 2.021518] [<ffff0000086193b4>] thermal_zone_device_register+0x87c/0x8cc > [ 2.028295] [<ffff000008613b6c>] __power_supply_register+0x370/0x430 > [ 2.034638] [<ffff000008613c54>] power_supply_register_no_ws+0x10/0x18 > [ 2.041155] [<ffff000008614f1c>] bq27xxx_battery_setup+0x104/0x15c > [ 2.047325] [<ffff000008615668>] bq27xxx_battery_i2c_probe+0xd0/0x1b0 > [ 2.053757] [<ffff0000085ffff4>] i2c_device_probe+0x174/0x240 > [ 2.059498] [<ffff0000084836dc>] driver_probe_device+0x1fc/0x29c > [ 2.065493] [<ffff000008483820>] __driver_attach+0xa4/0xa8 > [ 2.070969] [<ffff000008481804>] bus_for_each_dev+0x58/0x98 > [ 2.076531] [<ffff000008483008>] driver_attach+0x20/0x28 > [ 2.081832] [<ffff000008482c28>] bus_add_driver+0x1c8/0x22c > [ 2.087395] [<ffff0000084840b8>] driver_register+0x68/0x108 > [ 2.092958] [<ffff000008601f14>] i2c_register_driver+0x38/0x7c > [ 2.098784] [<ffff000008b0ffbc>] bq27xxx_battery_i2c_driver_init+0x18/0x20 > [ 2.105650] [<ffff000008081a54>] do_one_initcall+0x38/0x12c > [ 2.111215] [<ffff000008ae0ce0>] kernel_init_freeable+0x148/0x1ec > [ 2.117299] [<ffff00000879b9c4>] kernel_init+0x10/0x100 > [ 2.122516] [<ffff000008084e10>] ret_from_fork+0x10/0x40 > [ 2.127819] Code: b9401823 11000463 b9001823 f9800011 (885ffc01) > [ 2.133927] ---[ end trace 9759cbbac2b2ba9b ]--- > [ 2.138547] note: swapper/0[1] exited with preempt_count 1 > [ 2.144061] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b > [ 2.144061] > [ 2.153187] SMP: stopping secondary CPUs > [ 2.157104] Kernel Offset: disabled > [ 2.160584] Memory Limit: none > [ 2.163633] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b > [ 2.163633] > > Have you tried this recently? I have not had chance to dig into this. > I haven't, but looking now, its another case where a callback triggered during power_supply registration was using an uninitialized pointer for the power_supply. This patch works for me locally, do you want to test it out? diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c index 456987c88baa..1e02eae6e4b4 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/power_supply_core.c @@ -561,11 +561,15 @@ static int power_supply_read_temp(struct thermal_zone_device *tzd, { struct power_supply *psy; union power_supply_propval val; - int ret; + int ret = 0; WARN_ON(tzd == NULL); + psy = tzd->devdata; - ret = psy->desc->get_property(psy, POWER_SUPPLY_PROP_TEMP, &val); + WARN_ON(atomic_read(&psy->use_cnt) == 0); + + if (atomic_read(&psy->use_cnt) > 0) + ret = psy->desc->get_property(psy, POWER_SUPPLY_PROP_TEMP, &val); /* Convert tenths of degree Celsius to milli degree Celsius. */ if (!ret) -rhyland -- nvpublic -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html