On Wed, Nov 9, 2022 at 2:20 PM Arnd Bergmann arnd@arndb.de wrote:
On Wed, Nov 9, 2022, at 13:57, Arnd Bergmann wrote:
One thing that sticks out is the print_constraints_debug() function in the regulator framework, which uses a larger-than-average stack to hold a string buffer, and then calls into the low-level driver to get the actual data (regulator_get_voltage_rdev, _regulator_is_enabled). Splitting the device access out into a different function from the string handling might reduce the stack usage enough to stay just under the 8KB limit, though it's probably not a complete fix. I added the regulator maintainers to Cc for thoughts on this.
I checked the stack usage for each of the 147 functions in the backtrace, and as I was guessing print_constraints_debug() is the largest, but it's still only 168 bytes, and everything else is smaller, so no point hacking this.
You mentioned that we are doing probing of a device 6 levels deep. Could one of the parent devices be marked for an asynchronous probe thus breaking the chain?
Thanks.