Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751214AbdGMIu1 (ORCPT ); Thu, 13 Jul 2017 04:50:27 -0400 Received: from merlin.infradead.org ([205.233.59.134]:42106 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750877AbdGMIuZ (ORCPT ); Thu, 13 Jul 2017 04:50:25 -0400 Date: Thu, 13 Jul 2017 10:50:15 +0200 From: Peter Zijlstra To: Josh Poimboeuf Cc: Andres Freund , x86@kernel.org, linux-kernel@vger.kernel.org, live-patching@vger.kernel.org, Linus Torvalds , Andy Lutomirski , Jiri Slaby , Ingo Molnar , "H. Peter Anvin" , Mike Galbraith Subject: Re: [PATCH v3 00/10] x86: ORC unwinder (previously undwarf) Message-ID: <20170713085015.yjjv5ig2znplx5jl@hirez.programming.kicks-ass.net> References: <20170712214920.5droainfqjmq7sgu@alap3.anarazel.de> <20170712223225.zkq7tdb7pzgb3wy7@treble> <20170713071253.a3slz3j5tcgy3rkk@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170713071253.a3slz3j5tcgy3rkk@hirez.programming.kicks-ass.net> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1229 Lines: 27 On Thu, Jul 13, 2017 at 09:12:53AM +0200, Peter Zijlstra wrote: > On Wed, Jul 12, 2017 at 05:32:25PM -0500, Josh Poimboeuf wrote: > > If you want perf to be able to use ORC instead of DWARF for user space > > binaries, that's not currently possible, though I don't see any > > technical blockers for doing so. Perf would need to be taught to read > > ORC data. > > So the problem with userspace stuff is that the unwind data isn't > readily available from NMI context. > > So the kernel unwinder will trigger a fault and abort. > > The very best we can hope for is using the EH [*] stuff that all > binaries actually have _and_ map. The only problem is that most programs > don't actually use the EH stuff much so while its mapped, its not > actually paged in, so we're still stuck. One gloriously ugly hack would be to delay the userspace unwind to return-to-userspace, at which point we have a schedulable context and can take faults. Of course, then you have to somehow identify this later unwind sample with all relevant prior samples and stitch the whole thing back together, but that should be doable. In fact, it would be at all hard to do, just queue a task_work from the NMI and have that do the EH based unwind.