From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [patch V2 16/29] drm: Simplify stacktrace handling Date: Tue, 23 Apr 2019 09:36:25 +0200 Message-ID: <20190423073625.GZ13337@phenom.ffwll.local> References: <20190418084119.056416939@linutronix.de> <20190418084254.549410214@linutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190418084254.549410214@linutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Thomas Gleixner Cc: Mike Snitzer , David Airlie , Catalin Marinas , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, dm-devel@redhat.com, Alexander Potapenko , Christoph Lameter , Christoph Hellwig , Alasdair Kergon , Marek Szyprowski , linux-arch@vger.kernel.org, x86@kernel.org, kasan-dev@googlegroups.com, David Rientjes , Andrey Ryabinin , Alexey Dobriyan , intel-gfx@lists.freedesktop.org, Johannes Thumshirn , Akinobu Mita , Josef Bacik , Mike Rapoport , Steven Rostedt , Andy Lutomirski , David Sterba , Dmitry Vyukov List-Id: linux-arch.vger.kernel.org T24gVGh1LCBBcHIgMTgsIDIwMTkgYXQgMTA6NDE6MzVBTSArMDIwMCwgVGhvbWFzIEdsZWl4bmVy IHdyb3RlOgo+IFJlcGxhY2UgdGhlIGluZGlyZWN0aW9uIHRocm91Z2ggc3RydWN0IHN0YWNrX3Ry YWNlIGJ5IHVzaW5nIHRoZSBzdG9yYWdlCj4gYXJyYXkgYmFzZWQgaW50ZXJmYWNlcy4KPiAKPiBU aGUgb3JpZ2luYWwgY29kZSBpbiBhbGwgcHJpbnRpbmcgZnVuY3Rpb25zIGlzIHJlYWxseSB3cm9u Zy4gSXQgYWxsb2NhdGVzIGEKPiBzdG9yYWdlIGFycmF5IG9uIHN0YWNrIHdoaWNoIGlzIHVudXNl ZCBiZWNhdXNlIGRlcG90X2ZldGNoX3N0YWNrKCkgZG9lcyBub3QKPiBzdG9yZSBhbnl0aGluZyBp biBpdC4gSXQgb3ZlcndyaXRlcyB0aGUgZW50cmllcyBwb2ludGVyIGluIHRoZSBzdGFja190cmFj ZQo+IHN0cnVjdCBzbyBpdCBwb2ludHMgdG8gdGhlIGRlcG90IHN0b3JhZ2UuCgpUaGFua3MgZm9y IGNsZWFuaW5nIHRoaXMgdXAgZm9yIHVzIQoKPiBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2xlaXhu ZXIgPHRnbHhAbGludXRyb25peC5kZT4KPiBDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5j b20+Cj4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRl bC5jb20+Cj4gQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBDYzogRGF2aWQg QWlybGllIDxhaXJsaWVkQGxpbnV4LmllPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFA bGludXguaW50ZWwuY29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4g Q2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KCkFja2VkLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKZm9yIG1lcmdpbmcgdGhyb3VnaCB3 aGF0ZXZlciB0cmVlIGlzIGNvbnZlbmllbnQgZm9yIHlvdSAob3IgdGVsbCBtZSBJCnNob3VsZCBw aWNrIGl0IHVwIGludG8gZHJtLW5leHQgd2hlbiB0aGUgcHJlcCB3b3JrIGxhbmRlZCkuCgpDaGVl cnMsIERhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9tbS5jICAgICAgICAgICAg ICAgIHwgICAyMiArKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfdm1hLmMgICAgICAgICB8ICAgMTEgKysrKy0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgICAyMSArKysrKysrLS0tLS0tLS0tLS0tLS0KPiAg MyBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKPiAKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X21tLmMKPiBAQCAtMTA2LDIyICsxMDYsMTkgQEAKPiAgc3RhdGljIG5vaW5saW5lIHZvaWQgc2F2 ZV9zdGFjayhzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUpCj4gIHsKPiAgCXVuc2lnbmVkIGxvbmcg ZW50cmllc1tTVEFDS0RFUFRIXTsKPiAtCXN0cnVjdCBzdGFja190cmFjZSB0cmFjZSA9IHsKPiAt CQkuZW50cmllcyA9IGVudHJpZXMsCj4gLQkJLm1heF9lbnRyaWVzID0gU1RBQ0tERVBUSCwKPiAt CQkuc2tpcCA9IDEKPiAtCX07Cj4gKwl1bnNpZ25lZCBpbnQgbjsKPiAgCj4gLQlzYXZlX3N0YWNr X3RyYWNlKCZ0cmFjZSk7Cj4gKwluID0gc3RhY2tfdHJhY2Vfc2F2ZShlbnRyaWVzLCBBUlJBWV9T SVpFKGVudHJpZXMpLCAxKTsKPiAgCj4gIAkvKiBNYXkgYmUgY2FsbGVkIHVuZGVyIHNwaW5sb2Nr LCBzbyBhdm9pZCBzbGVlcGluZyAqLwo+IC0Jbm9kZS0+c3RhY2sgPSBkZXBvdF9zYXZlX3N0YWNr KCZ0cmFjZSwgR0ZQX05PV0FJVCk7Cj4gKwlub2RlLT5zdGFjayA9IHN0YWNrX2RlcG90X3NhdmUo ZW50cmllcywgbiwgR0ZQX05PV0FJVCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHNob3dfbGVh a3Moc3RydWN0IGRybV9tbSAqbW0pCj4gIHsKPiAgCXN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZTsK PiAtCXVuc2lnbmVkIGxvbmcgZW50cmllc1tTVEFDS0RFUFRIXTsKPiArCXVuc2lnbmVkIGxvbmcg KmVudHJpZXM7Cj4gKwl1bnNpZ25lZCBpbnQgbnJfZW50cmllczsKPiAgCWNoYXIgKmJ1ZjsKPiAg Cj4gIAlidWYgPSBrbWFsbG9jKEJVRlNaLCBHRlBfS0VSTkVMKTsKPiBAQCAtMTI5LDE5ICsxMjYs MTQgQEAgc3RhdGljIHZvaWQgc2hvd19sZWFrcyhzdHJ1Y3QgZHJtX21tICptbQo+ICAJCXJldHVy bjsKPiAgCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsIGRybV9tbV9ub2RlcyhtbSksIG5v ZGVfbGlzdCkgewo+IC0JCXN0cnVjdCBzdGFja190cmFjZSB0cmFjZSA9IHsKPiAtCQkJLmVudHJp ZXMgPSBlbnRyaWVzLAo+IC0JCQkubWF4X2VudHJpZXMgPSBTVEFDS0RFUFRICj4gLQkJfTsKPiAt Cj4gIAkJaWYgKCFub2RlLT5zdGFjaykgewo+ICAJCQlEUk1fRVJST1IoIm5vZGUgWyUwOGxseCAr ICUwOGxseF06IHVua25vd24gb3duZXJcbiIsCj4gIAkJCQkgIG5vZGUtPnN0YXJ0LCBub2RlLT5z aXplKTsKPiAgCQkJY29udGludWU7Cj4gIAkJfQo+ICAKPiAtCQlkZXBvdF9mZXRjaF9zdGFjayhu b2RlLT5zdGFjaywgJnRyYWNlKTsKPiAtCQlzbnByaW50X3N0YWNrX3RyYWNlKGJ1ZiwgQlVGU1os ICZ0cmFjZSwgMCk7Cj4gKwkJbnJfZW50cmllcyA9IHN0YWNrX2RlcG90X2ZldGNoKG5vZGUtPnN0 YWNrLCAmZW50cmllcyk7Cj4gKwkJc3RhY2tfdHJhY2Vfc25wcmludChidWYsIEJVRlNaLCBlbnRy aWVzLCBucl9lbnRyaWVzLCAwKTsKPiAgCQlEUk1fRVJST1IoIm5vZGUgWyUwOGxseCArICUwOGxs eF06IGluc2VydGVkIGF0XG4lcyIsCj4gIAkJCSAgbm9kZS0+c3RhcnQsIG5vZGUtPnNpemUsIGJ1 Zik7Cj4gIAl9Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiBAQCAtMzYsMTEgKzM2LDggQEAKPiAg Cj4gIHN0YXRpYyB2b2lkIHZtYV9wcmludF9hbGxvY2F0b3Ioc3RydWN0IGk5MTVfdm1hICp2bWEs IGNvbnN0IGNoYXIgKnJlYXNvbikKPiAgewo+IC0JdW5zaWduZWQgbG9uZyBlbnRyaWVzWzEyXTsK PiAtCXN0cnVjdCBzdGFja190cmFjZSB0cmFjZSA9IHsKPiAtCQkuZW50cmllcyA9IGVudHJpZXMs Cj4gLQkJLm1heF9lbnRyaWVzID0gQVJSQVlfU0laRShlbnRyaWVzKSwKPiAtCX07Cj4gKwl1bnNp Z25lZCBsb25nICplbnRyaWVzOwo+ICsJdW5zaWduZWQgaW50IG5yX2VudHJpZXM7Cj4gIAljaGFy IGJ1Zls1MTJdOwo+ICAKPiAgCWlmICghdm1hLT5ub2RlLnN0YWNrKSB7Cj4gQEAgLTQ5LDggKzQ2 LDggQEAgc3RhdGljIHZvaWQgdm1hX3ByaW50X2FsbG9jYXRvcihzdHJ1Y3QgaQo+ICAJCXJldHVy bjsKPiAgCX0KPiAgCj4gLQlkZXBvdF9mZXRjaF9zdGFjayh2bWEtPm5vZGUuc3RhY2ssICZ0cmFj ZSk7Cj4gLQlzbnByaW50X3N0YWNrX3RyYWNlKGJ1Ziwgc2l6ZW9mKGJ1ZiksICZ0cmFjZSwgMCk7 Cj4gKwlucl9lbnRyaWVzID0gc3RhY2tfZGVwb3RfZmV0Y2godm1hLT5ub2RlLnN0YWNrLCAmZW50 cmllcyk7Cj4gKwlzdGFja190cmFjZV9zbnByaW50KGJ1Ziwgc2l6ZW9mKGJ1ZiksIGVudHJpZXMs IG5yX2VudHJpZXMsIDApOwo+ICAJRFJNX0RFQlVHX0RSSVZFUigidm1hLm5vZGUgWyUwOGxseCAr ICUwOGxseF0gJXM6IGluc2VydGVkIGF0ICVzXG4iLAo+ICAJCQkgdm1hLT5ub2RlLnN0YXJ0LCB2 bWEtPm5vZGUuc2l6ZSwgcmVhc29uLCBidWYpOwo+ICB9Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcnVudGltZV9wbS5jCj4gQEAgLTYwLDI3ICs2MCwyMCBAQAo+ICBzdGF0aWMgbm9pbmxpbmUg ZGVwb3Rfc3RhY2tfaGFuZGxlX3QgX19zYXZlX2RlcG90X3N0YWNrKHZvaWQpCj4gIHsKPiAgCXVu c2lnbmVkIGxvbmcgZW50cmllc1tTVEFDS0RFUFRIXTsKPiAtCXN0cnVjdCBzdGFja190cmFjZSB0 cmFjZSA9IHsKPiAtCQkuZW50cmllcyA9IGVudHJpZXMsCj4gLQkJLm1heF9lbnRyaWVzID0gQVJS QVlfU0laRShlbnRyaWVzKSwKPiAtCQkuc2tpcCA9IDEsCj4gLQl9Owo+ICsJdW5zaWduZWQgaW50 IG47Cj4gIAo+IC0Jc2F2ZV9zdGFja190cmFjZSgmdHJhY2UpOwo+IC0JcmV0dXJuIGRlcG90X3Nh dmVfc3RhY2soJnRyYWNlLCBHRlBfTk9XQUlUIHwgX19HRlBfTk9XQVJOKTsKPiArCW4gPSBzdGFj a190cmFjZV9zYXZlKGVudHJpZXMsIEFSUkFZX1NJWkUoZW50cmllcyksIDEpOwo+ICsJcmV0dXJu IHN0YWNrX2RlcG90X3NhdmUoZW50cmllcywgbiwgR0ZQX05PV0FJVCB8IF9fR0ZQX05PV0FSTik7 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIF9fcHJpbnRfZGVwb3Rfc3RhY2soZGVwb3Rfc3RhY2tf aGFuZGxlX3Qgc3RhY2ssCj4gIAkJCQljaGFyICpidWYsIGludCBzeiwgaW50IGluZGVudCkKPiAg ewo+IC0JdW5zaWduZWQgbG9uZyBlbnRyaWVzW1NUQUNLREVQVEhdOwo+IC0Jc3RydWN0IHN0YWNr X3RyYWNlIHRyYWNlID0gewo+IC0JCS5lbnRyaWVzID0gZW50cmllcywKPiAtCQkubWF4X2VudHJp ZXMgPSBBUlJBWV9TSVpFKGVudHJpZXMpLAo+IC0JfTsKPiArCXVuc2lnbmVkIGxvbmcgKmVudHJp ZXM7Cj4gKwl1bnNpZ25lZCBpbnQgbnJfZW50cmllczsKPiAgCj4gLQlkZXBvdF9mZXRjaF9zdGFj ayhzdGFjaywgJnRyYWNlKTsKPiAtCXNucHJpbnRfc3RhY2tfdHJhY2UoYnVmLCBzeiwgJnRyYWNl LCBpbmRlbnQpOwo+ICsJbnJfZW50cmllcyA9IHN0YWNrX2RlcG90X2ZldGNoKHN0YWNrLCAmZW50 cmllcyk7Cj4gKwlzdGFja190cmFjZV9zbnByaW50KGJ1Ziwgc3osIGVudHJpZXMsIG5yX2VudHJp ZXMsIGluZGVudCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGluaXRfaW50ZWxfcnVudGltZV9w bV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IAo+IAoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-f68.google.com ([209.85.208.68]:46588 "EHLO mail-ed1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725935AbfDWHgb (ORCPT ); Tue, 23 Apr 2019 03:36:31 -0400 Received: by mail-ed1-f68.google.com with SMTP id d1so11655072edd.13 for ; Tue, 23 Apr 2019 00:36:30 -0700 (PDT) Date: Tue, 23 Apr 2019 09:36:25 +0200 From: Daniel Vetter Subject: Re: [patch V2 16/29] drm: Simplify stacktrace handling Message-ID: <20190423073625.GZ13337@phenom.ffwll.local> References: <20190418084119.056416939@linutronix.de> <20190418084254.549410214@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190418084254.549410214@linutronix.de> Sender: linux-arch-owner@vger.kernel.org List-ID: To: Thomas Gleixner Cc: LKML , Josh Poimboeuf , x86@kernel.org, Andy Lutomirski , Steven Rostedt , Alexander Potapenko , intel-gfx@lists.freedesktop.org, Joonas Lahtinen , Maarten Lankhorst , dri-devel@lists.freedesktop.org, David Airlie , Jani Nikula , Daniel Vetter , Rodrigo Vivi , Alexey Dobriyan , Andrew Morton , Pekka Enberg , linux-mm@kvack.org, David Rientjes , Christoph Lameter , Catalin Marinas , Dmitry Vyukov , Andrey Ryabinin , kasan-dev@googlegroups.com, Mike Rapoport , Akinobu Mita , iommu@lists.linux-foundation.org, Robin Murphy , Christoph Hellwig , Marek Szyprowski , Johannes Thumshirn , David Sterba , Chris Mason , Josef Bacik , linux-btrfs@vger.kernel.org, dm-devel@redhat.com, Mike Snitzer , Alasdair Kergon , linux-arch@vger.kernel.org Message-ID: <20190423073625.TfQe0JEmLLoLntMsBWrgwYewuOjrv7BVHEfJXTHUXQs@z> On Thu, Apr 18, 2019 at 10:41:35AM +0200, Thomas Gleixner wrote: > Replace the indirection through struct stack_trace by using the storage > array based interfaces. > > The original code in all printing functions is really wrong. It allocates a > storage array on stack which is unused because depot_fetch_stack() does not > store anything in it. It overwrites the entries pointer in the stack_trace > struct so it points to the depot storage. Thanks for cleaning this up for us! > Signed-off-by: Thomas Gleixner > Cc: intel-gfx@lists.freedesktop.org > Cc: Joonas Lahtinen > Cc: Maarten Lankhorst > Cc: dri-devel@lists.freedesktop.org > Cc: David Airlie > Cc: Jani Nikula > Cc: Daniel Vetter > Cc: Rodrigo Vivi Acked-by: Daniel Vetter for merging through whatever tree is convenient for you (or tell me I should pick it up into drm-next when the prep work landed). Cheers, Daniel > --- > drivers/gpu/drm/drm_mm.c | 22 +++++++--------------- > drivers/gpu/drm/i915/i915_vma.c | 11 ++++------- > drivers/gpu/drm/i915/intel_runtime_pm.c | 21 +++++++-------------- > 3 files changed, 18 insertions(+), 36 deletions(-) > > --- a/drivers/gpu/drm/drm_mm.c > +++ b/drivers/gpu/drm/drm_mm.c > @@ -106,22 +106,19 @@ > static noinline void save_stack(struct drm_mm_node *node) > { > unsigned long entries[STACKDEPTH]; > - struct stack_trace trace = { > - .entries = entries, > - .max_entries = STACKDEPTH, > - .skip = 1 > - }; > + unsigned int n; > > - save_stack_trace(&trace); > + n = stack_trace_save(entries, ARRAY_SIZE(entries), 1); > > /* May be called under spinlock, so avoid sleeping */ > - node->stack = depot_save_stack(&trace, GFP_NOWAIT); > + node->stack = stack_depot_save(entries, n, GFP_NOWAIT); > } > > static void show_leaks(struct drm_mm *mm) > { > struct drm_mm_node *node; > - unsigned long entries[STACKDEPTH]; > + unsigned long *entries; > + unsigned int nr_entries; > char *buf; > > buf = kmalloc(BUFSZ, GFP_KERNEL); > @@ -129,19 +126,14 @@ static void show_leaks(struct drm_mm *mm > return; > > list_for_each_entry(node, drm_mm_nodes(mm), node_list) { > - struct stack_trace trace = { > - .entries = entries, > - .max_entries = STACKDEPTH > - }; > - > if (!node->stack) { > DRM_ERROR("node [%08llx + %08llx]: unknown owner\n", > node->start, node->size); > continue; > } > > - depot_fetch_stack(node->stack, &trace); > - snprint_stack_trace(buf, BUFSZ, &trace, 0); > + nr_entries = stack_depot_fetch(node->stack, &entries); > + stack_trace_snprint(buf, BUFSZ, entries, nr_entries, 0); > DRM_ERROR("node [%08llx + %08llx]: inserted at\n%s", > node->start, node->size, buf); > } > --- a/drivers/gpu/drm/i915/i915_vma.c > +++ b/drivers/gpu/drm/i915/i915_vma.c > @@ -36,11 +36,8 @@ > > static void vma_print_allocator(struct i915_vma *vma, const char *reason) > { > - unsigned long entries[12]; > - struct stack_trace trace = { > - .entries = entries, > - .max_entries = ARRAY_SIZE(entries), > - }; > + unsigned long *entries; > + unsigned int nr_entries; > char buf[512]; > > if (!vma->node.stack) { > @@ -49,8 +46,8 @@ static void vma_print_allocator(struct i > return; > } > > - depot_fetch_stack(vma->node.stack, &trace); > - snprint_stack_trace(buf, sizeof(buf), &trace, 0); > + nr_entries = stack_depot_fetch(vma->node.stack, &entries); > + stack_trace_snprint(buf, sizeof(buf), entries, nr_entries, 0); > DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n", > vma->node.start, vma->node.size, reason, buf); > } > --- a/drivers/gpu/drm/i915/intel_runtime_pm.c > +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c > @@ -60,27 +60,20 @@ > static noinline depot_stack_handle_t __save_depot_stack(void) > { > unsigned long entries[STACKDEPTH]; > - struct stack_trace trace = { > - .entries = entries, > - .max_entries = ARRAY_SIZE(entries), > - .skip = 1, > - }; > + unsigned int n; > > - save_stack_trace(&trace); > - return depot_save_stack(&trace, GFP_NOWAIT | __GFP_NOWARN); > + n = stack_trace_save(entries, ARRAY_SIZE(entries), 1); > + return stack_depot_save(entries, n, GFP_NOWAIT | __GFP_NOWARN); > } > > static void __print_depot_stack(depot_stack_handle_t stack, > char *buf, int sz, int indent) > { > - unsigned long entries[STACKDEPTH]; > - struct stack_trace trace = { > - .entries = entries, > - .max_entries = ARRAY_SIZE(entries), > - }; > + unsigned long *entries; > + unsigned int nr_entries; > > - depot_fetch_stack(stack, &trace); > - snprint_stack_trace(buf, sz, &trace, indent); > + nr_entries = stack_depot_fetch(stack, &entries); > + stack_trace_snprint(buf, sz, entries, nr_entries, indent); > } > > static void init_intel_runtime_pm_wakeref(struct drm_i915_private *i915) > > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch