Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp489851imm; Wed, 22 Aug 2018 07:40:06 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxoUhE7cyd7o68zAHFsdUpRiLQIkNmCACgOQHcmbwVONE4BiajIcPCmwh6HtIWf8hHo+aqd X-Received: by 2002:a17:902:704b:: with SMTP id h11-v6mr17071720plt.116.1534948806159; Wed, 22 Aug 2018 07:40:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534948806; cv=none; d=google.com; s=arc-20160816; b=BDTGIEj4InlXXKLVfn9CPy7tPmLiL4KQ89n7NeipdH0UHGxY+iZ9sDlQC4RhWxY4pc LBHpaCB8j6L42bverPNzq0zILCqTWPP5qGtJk0jfGEHs25rfkibhrId+A93VdWOHgEN6 UkhSJ54TaNEHVV5Yii7HWHpwnbawJ8uvVlypWAfSQ6o1Q3lfSh98qyF4i6rNNS0TE3n7 GCfFWV+e5vpWcW2/cJcQAU2fTinoRruHuuFAuemOMzNQnEX7uzlM+qYFdqteT7Vtm30n DmZPxczIDsjVOF8sp/5opzaavjS9A9JBEf3fnN0/cv2ufEEBcL1uvzi0KT0C0/HNbmki oqEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:message-id:references :in-reply-to:subject:cc:to:from:date:content-transfer-encoding :mime-version:dkim-signature:arc-authentication-results; bh=87aA3Vmf1ef8OfgYcsPDmJP+wsMjVljSL9Ffv2L/7q8=; b=HMYP4HTrQNEuLH3IEg7wF0nejmNUzbbzWv4MjqzuFGrOJqvtXb2tTeKxFzIVIl63yY fnw+HMRruWmpu/bepZ8QHfjbrmgGZQj7cEr0q36nTlVYLjOrtpdcFrr6mSdgye5nvO73 jV+CeYmodn/7TkzgYVCADAX0EEOfHLB+E97nDT+HlqHZdov6UxpivdW5400SAs8EUCDB 5U/IvHbda2Pc3HhUpgtg+qm+UPb9DnpNtmaQIPNoYvaIZRpvD5LZUWuVEt/l4r5I65Uo fqKM7Qc74mOXI3G+v6iYSJkrsP0+FCmqUCr4ddnpHh9Mr8nVvkmFyMO8Z9STvP09+Xis ENeQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@agner.ch header.s=dkim header.b=Kp1kipQK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 23-v6si1525096pgx.323.2018.08.22.07.39.49; Wed, 22 Aug 2018 07:40:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@agner.ch header.s=dkim header.b=Kp1kipQK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729135AbeHVSDW (ORCPT + 99 others); Wed, 22 Aug 2018 14:03:22 -0400 Received: from mail.kmu-office.ch ([178.209.48.109]:39784 "EHLO mail.kmu-office.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728711AbeHVSDW (ORCPT ); Wed, 22 Aug 2018 14:03:22 -0400 Received: from webmail.kmu-office.ch (unknown [IPv6:2a02:418:6a02::a3]) by mail.kmu-office.ch (Postfix) with ESMTPSA id B05025C0934; Wed, 22 Aug 2018 16:38:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=agner.ch; s=dkim; t=1534948689; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=87aA3Vmf1ef8OfgYcsPDmJP+wsMjVljSL9Ffv2L/7q8=; b=Kp1kipQKGJCjPfFMJMlJPXaFh/TJFa8X6um3fpnUfja8FB3gnzWN2KrQOxzVg4Ty99eJqY tK2vaYsH1Glb1X9Tr+l3SdfaSWfmDKfwfDBTrHpx0VT1/ITV+1JAsmuZ/z41K4fJzIyfCT ZPcOc0Nyaao4ReTt8IfS97c1h6+xRto= MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Date: Wed, 22 Aug 2018 16:38:09 +0200 From: Stefan Agner To: Arnd Bergmann Cc: Russell King - ARM Linux , Linux ARM , Linux Kernel Mailing List Subject: Re: [PATCH] ARM: use choice for kernel unwinders In-Reply-To: References: <20180821222416.7771-1-stefan@agner.ch> Message-ID: <77d139d225e16b90d9b8da1982a11707@agner.ch> X-Sender: stefan@agner.ch User-Agent: Roundcube Webmail/1.3.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 22.08.2018 12:02, Arnd Bergmann wrote: > On Wed, Aug 22, 2018 at 12:24 AM Stefan Agner wrote: >> >> While in theory multiple unwinders could be compiled in, it does >> not make sense in practise. Use a choice to make the unwinder >> selection mutually exclusive and mandatory. >> >> Already before this commit it has not been possible to deselect >> FRAME_POINTER. Remove the obsolete comment. >> >> Furthermore, to produce a meaningful backtrace with FRAME_POINTER >> enabled the kernel needs a specific function prologue: >> mov ip, sp >> stmfd sp!, {fp, ip, lr, pc} >> sub fp, ip, #4 >> >> To get to the required prologue gcc uses apcs and no-sched-prolog. >> This compiler options are not available on clang, and clang is not >> able to generate the required prologue. Make the FRAME_POINTER >> config symbol depending on !clang. >> >> Suggested-by: Arnd Bergmann >> Signed-off-by: Stefan Agner > > Looks ok to me. I've added it to my randconfig test environment, you > will hear from me within a day if I run into build regressions. > > We may still want to clean up these three lines: > > lib/Kconfig.debug: select FRAME_POINTER if !MIPS && !PPC && > !ARM_UNWIND && !S390 && !MICROBLAZE && !ARC && !X86 > lib/Kconfig.debug: select FRAME_POINTER if !MIPS && !PPC && !S390 && > !MICROBLAZE && !ARM_UNWIND && !ARC && !X86 > lib/Kconfig.debug: select FRAME_POINTER if !MIPS && !PPC && !S390 && > !MICROBLAZE && !ARM_UNWIND && !ARC && !X86 > > in which ARM is the odd case that currently depends on an architecture > specific rather than the architecture itself. I guess we would just follow X86 lead by saying ARM is guaranteed to have unwinding support, and hence we can add !ARM. > We could introduce a 'config ARCH_HAS_UNWINDER' symbol that gets > selected by mips, ppc, s390, microblaze, arm and x86 unconditionally, > and then simplify the 'select' statements here. Yeah I was thinking about something like that too. It seems to be a bit weird to me that lib/Kconfig.debug selects a specific stack unwinding technique... Ideally other config symbol should just ask arch to make sure a unwinding technique is available (NEED_STACK_UNWINDING?) and arch then makes sure to provide a reasonable default. This then also would make it possible to select no stack unwinding in case arch supports that and all the users of stack unwinding are disabled too. Not sure how that exactly would look like in Kconfig, I was thinking like: choice prompt "Choose kernel unwinder" optional if !NEED_STACK_UNWINDING default UNWINDER_ARM if AEABI && !FUNCTION_GRAPH_TRACER default UNWINDER_FRAME_POINTER if !AEABI || FUNCTION_GRAPH_TRACER But "optional if" does not exist yet :-) Reading the comments in arch/arm/Kconfig.debug seems to suggest that once upon a time it was possible to disable stack unwinding on ARM. But then, maybe we don't really want to go there? Might be interesting for tinification efforts. -- Stefan