diff mbox

arm64: remove redundant FRAME_POINTER kconfig option

Message ID 1446658671-16238-1-git-send-email-yang.shi@linaro.org
State Superseded
Headers show

Commit Message

Yang Shi Nov. 4, 2015, 5:37 p.m. UTC
FRAME_POINTER is defined in lib/Kconfig.debug, it is unnecessary to redefine
it in arch/arm64/Kconfig.debug.

Signed-off-by: Yang Shi <yang.shi@linaro.org>

---
 arch/arm64/Kconfig.debug | 4 ----
 1 file changed, 4 deletions(-)

-- 
2.0.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Comments

Will Deacon Nov. 6, 2015, 12:30 p.m. UTC | #1
On Wed, Nov 04, 2015 at 09:37:51AM -0800, Yang Shi wrote:
> FRAME_POINTER is defined in lib/Kconfig.debug, it is unnecessary to redefine

> it in arch/arm64/Kconfig.debug.


It might be worth noting that this adds a dependency on DEBUG_KERNEL
for building with frame pointers. I'm ok with that (it appears to be
enabled in defconfig and follows the vast majority of other archs) but
it is a change in behaviour.

With that:

  Acked-by: Will Deacon <will.deacon@arm.com>


Will

> Signed-off-by: Yang Shi <yang.shi@linaro.org>

> ---

>  arch/arm64/Kconfig.debug | 4 ----

>  1 file changed, 4 deletions(-)

> 

> diff --git a/arch/arm64/Kconfig.debug b/arch/arm64/Kconfig.debug

> index d6285ef..915dea7 100644

> --- a/arch/arm64/Kconfig.debug

> +++ b/arch/arm64/Kconfig.debug

> @@ -2,10 +2,6 @@ menu "Kernel hacking"

>  

>  source "lib/Kconfig.debug"

>  

> -config FRAME_POINTER

> -	bool

> -	default y

> -

>  config ARM64_PTDUMP

>  	bool "Export kernel pagetable layout to userspace via debugfs"

>  	depends on DEBUG_KERNEL

> -- 

> 2.0.2

> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Mark Rutland Nov. 6, 2015, 12:50 p.m. UTC | #2
On Fri, Nov 06, 2015 at 12:30:09PM +0000, Will Deacon wrote:
> On Wed, Nov 04, 2015 at 09:37:51AM -0800, Yang Shi wrote:

> > FRAME_POINTER is defined in lib/Kconfig.debug, it is unnecessary to redefine

> > it in arch/arm64/Kconfig.debug.

> 

> It might be worth noting that this adds a dependency on DEBUG_KERNEL

> for building with frame pointers. I'm ok with that (it appears to be

> enabled in defconfig and follows the vast majority of other archs) but

> it is a change in behaviour.

> 

> With that:

> 

>   Acked-by: Will Deacon <will.deacon@arm.com>


The code in arch/arm64/kernel/stacktrace.c assumes we have frame
pointers regardless of FRAME_POINTER. Depending on what the compiler
decides to use x29 for, we could get some weird fake unwinding and/or
dodgy memory accesses.

I think we should first audit the uses of frame pointers to ensure that
they are guarded for !FRAME_POINTER.

Thanks,
Mark.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Will Deacon Nov. 6, 2015, 3:42 p.m. UTC | #3
On Fri, Nov 06, 2015 at 12:50:02PM +0000, Mark Rutland wrote:
> On Fri, Nov 06, 2015 at 12:30:09PM +0000, Will Deacon wrote:

> > On Wed, Nov 04, 2015 at 09:37:51AM -0800, Yang Shi wrote:

> > > FRAME_POINTER is defined in lib/Kconfig.debug, it is unnecessary to redefine

> > > it in arch/arm64/Kconfig.debug.

> > 

> > It might be worth noting that this adds a dependency on DEBUG_KERNEL

> > for building with frame pointers. I'm ok with that (it appears to be

> > enabled in defconfig and follows the vast majority of other archs) but

> > it is a change in behaviour.

> > 

> > With that:

> > 

> >   Acked-by: Will Deacon <will.deacon@arm.com>

> 

> The code in arch/arm64/kernel/stacktrace.c assumes we have frame

> pointers regardless of FRAME_POINTER. Depending on what the compiler

> decides to use x29 for, we could get some weird fake unwinding and/or

> dodgy memory accesses.

> 

> I think we should first audit the uses of frame pointers to ensure that

> they are guarded for !FRAME_POINTER.


Good point. The perf callchain code suffers from a similar issue.

Will
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Catalin Marinas Nov. 6, 2015, 4:12 p.m. UTC | #4
On Fri, Nov 06, 2015 at 12:30:09PM +0000, Will Deacon wrote:
> On Wed, Nov 04, 2015 at 09:37:51AM -0800, Yang Shi wrote:

> > FRAME_POINTER is defined in lib/Kconfig.debug, it is unnecessary to redefine

> > it in arch/arm64/Kconfig.debug.

> 

> It might be worth noting that this adds a dependency on DEBUG_KERNEL

> for building with frame pointers. I'm ok with that (it appears to be

> enabled in defconfig and follows the vast majority of other archs) but

> it is a change in behaviour.


We shouldn't have the dependency on DEBUG_KERNEL since we select
ARCH_WANT_FRAME_POINTERS on arm64. However, the patch would allow one to
disable FRAME_POINTERS (not sure it has any effect on the aarch64 gcc
though).

-- 
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Will Deacon Nov. 6, 2015, 4:19 p.m. UTC | #5
On Fri, Nov 06, 2015 at 04:12:14PM +0000, Catalin Marinas wrote:
> On Fri, Nov 06, 2015 at 12:30:09PM +0000, Will Deacon wrote:

> > On Wed, Nov 04, 2015 at 09:37:51AM -0800, Yang Shi wrote:

> > > FRAME_POINTER is defined in lib/Kconfig.debug, it is unnecessary to redefine

> > > it in arch/arm64/Kconfig.debug.

> > 

> > It might be worth noting that this adds a dependency on DEBUG_KERNEL

> > for building with frame pointers. I'm ok with that (it appears to be

> > enabled in defconfig and follows the vast majority of other archs) but

> > it is a change in behaviour.

> 

> We shouldn't have the dependency on DEBUG_KERNEL since we select

> ARCH_WANT_FRAME_POINTERS on arm64. However, the patch would allow one to

> disable FRAME_POINTERS (not sure it has any effect on the aarch64 gcc

> though).


Ah yes, you're right about DEBUG_KERNEL. I completely misread the brackets
and the left-associativity of &&/|| works out.

I still think Rutland has a valid point wrt junk frame pointers, though.

Will
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Catalin Marinas Nov. 6, 2015, 4:21 p.m. UTC | #6
On Fri, Nov 06, 2015 at 12:50:02PM +0000, Mark Rutland wrote:
> On Fri, Nov 06, 2015 at 12:30:09PM +0000, Will Deacon wrote:

> > On Wed, Nov 04, 2015 at 09:37:51AM -0800, Yang Shi wrote:

> > > FRAME_POINTER is defined in lib/Kconfig.debug, it is unnecessary to redefine

> > > it in arch/arm64/Kconfig.debug.

> > 

> > It might be worth noting that this adds a dependency on DEBUG_KERNEL

> > for building with frame pointers. I'm ok with that (it appears to be

> > enabled in defconfig and follows the vast majority of other archs) but

> > it is a change in behaviour.

> > 

> > With that:

> > 

> >   Acked-by: Will Deacon <will.deacon@arm.com>

> 

> The code in arch/arm64/kernel/stacktrace.c assumes we have frame

> pointers regardless of FRAME_POINTER. Depending on what the compiler

> decides to use x29 for, we could get some weird fake unwinding and/or

> dodgy memory accesses.

> 

> I think we should first audit the uses of frame pointers to ensure that

> they are guarded for !FRAME_POINTER.


Or we just select FRAME_POINTER in the ARM64 Kconfig entry.

-- 
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Will Deacon Nov. 6, 2015, 4:25 p.m. UTC | #7
On Fri, Nov 06, 2015 at 04:21:09PM +0000, Catalin Marinas wrote:
> On Fri, Nov 06, 2015 at 12:50:02PM +0000, Mark Rutland wrote:

> > On Fri, Nov 06, 2015 at 12:30:09PM +0000, Will Deacon wrote:

> > > On Wed, Nov 04, 2015 at 09:37:51AM -0800, Yang Shi wrote:

> > > > FRAME_POINTER is defined in lib/Kconfig.debug, it is unnecessary to redefine

> > > > it in arch/arm64/Kconfig.debug.

> > > 

> > > It might be worth noting that this adds a dependency on DEBUG_KERNEL

> > > for building with frame pointers. I'm ok with that (it appears to be

> > > enabled in defconfig and follows the vast majority of other archs) but

> > > it is a change in behaviour.

> > > 

> > > With that:

> > > 

> > >   Acked-by: Will Deacon <will.deacon@arm.com>

> > 

> > The code in arch/arm64/kernel/stacktrace.c assumes we have frame

> > pointers regardless of FRAME_POINTER. Depending on what the compiler

> > decides to use x29 for, we could get some weird fake unwinding and/or

> > dodgy memory accesses.

> > 

> > I think we should first audit the uses of frame pointers to ensure that

> > they are guarded for !FRAME_POINTER.

> 

> Or we just select FRAME_POINTER in the ARM64 Kconfig entry.


Yang, did you see any benefit disabling frame pointers, or was this patch
purely based on you spotting a duplicate Kconfig entry?

Will
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Yang Shi Nov. 6, 2015, 5:23 p.m. UTC | #8
On 11/6/2015 8:25 AM, Will Deacon wrote:
> On Fri, Nov 06, 2015 at 04:21:09PM +0000, Catalin Marinas wrote:

>> On Fri, Nov 06, 2015 at 12:50:02PM +0000, Mark Rutland wrote:

>>> On Fri, Nov 06, 2015 at 12:30:09PM +0000, Will Deacon wrote:

>>>> On Wed, Nov 04, 2015 at 09:37:51AM -0800, Yang Shi wrote:

>>>>> FRAME_POINTER is defined in lib/Kconfig.debug, it is unnecessary to redefine

>>>>> it in arch/arm64/Kconfig.debug.

>>>>

>>>> It might be worth noting that this adds a dependency on DEBUG_KERNEL

>>>> for building with frame pointers. I'm ok with that (it appears to be

>>>> enabled in defconfig and follows the vast majority of other archs) but

>>>> it is a change in behaviour.

>>>>

>>>> With that:

>>>>

>>>>    Acked-by: Will Deacon <will.deacon@arm.com>

>>>

>>> The code in arch/arm64/kernel/stacktrace.c assumes we have frame

>>> pointers regardless of FRAME_POINTER. Depending on what the compiler

>>> decides to use x29 for, we could get some weird fake unwinding and/or

>>> dodgy memory accesses.

>>>

>>> I think we should first audit the uses of frame pointers to ensure that

>>> they are guarded for !FRAME_POINTER.

>>

>> Or we just select FRAME_POINTER in the ARM64 Kconfig entry.

>

> Yang, did you see any benefit disabling frame pointers, or was this patch

> purely based on you spotting a duplicate Kconfig entry?


It just spots a duplicate Kconfig entry.

FRAME_POINTER is defined in both lib/Kconfig.debug and 
arch/arm64/Kconfig.debug.

The lib/Kconfig.debug one looks like:

config FRAME_POINTER
         bool "Compile the kernel with frame pointers"
         depends on DEBUG_KERNEL && \
                 (CRIS || M68K || FRV || UML || \
                  AVR32 || SUPERH || BLACKFIN || MN10300 || METAG) || \
                 ARCH_WANT_FRAME_POINTERS
         default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
         help
           If you say Y here the resulting kernel image will be slightly
           larger and slower, but it gives very useful debugging information
           in case of kernel bugs. (precise oopses/stacktraces/warnings)

The common one just depends on DEBUG_KERNEL && ARCH_WANT_FRAME_POINTERS.

ARCH_WANT_FRAME_POINTERS is selected by ARM64 kconfig entry.

To answer Catalin's question about:

> However, the patch would allow one to

> disable FRAME_POINTERS (not sure it has any effect on the aarch64 gcc

> though).


No, it doesn't. Actually, FRAME_POINTER could be disabled regardless of 
the patch.

Thanks,
Yang

>

> Will

>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Catalin Marinas Nov. 6, 2015, 5:35 p.m. UTC | #9
On Fri, Nov 06, 2015 at 09:23:38AM -0800, Shi, Yang wrote:
> On 11/6/2015 8:25 AM, Will Deacon wrote:

> >However, the patch would allow one to

> >disable FRAME_POINTERS (not sure it has any effect on the aarch64 gcc

> >though).

> 

> No, it doesn't. Actually, FRAME_POINTER could be disabled regardless of the

> patch.


In which case I suggest that we always select it just as a clearer
statement that the feature cannot be disabled (and you never know what
the compiler people decide to do in the future).

-- 
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Yang Shi Nov. 6, 2015, 5:39 p.m. UTC | #10
On 11/6/2015 9:35 AM, Catalin Marinas wrote:
> On Fri, Nov 06, 2015 at 09:23:38AM -0800, Shi, Yang wrote:

>> On 11/6/2015 8:25 AM, Will Deacon wrote:

>>> However, the patch would allow one to

>>> disable FRAME_POINTERS (not sure it has any effect on the aarch64 gcc

>>> though).

>>

>> No, it doesn't. Actually, FRAME_POINTER could be disabled regardless of the

>> patch.

>

> In which case I suggest that we always select it just as a clearer

> statement that the feature cannot be disabled (and you never know what

> the compiler people decide to do in the future).


Do you mean select FRAME_POINTER in ARCH_WANT_FRAME_POINTERS?

Yes, we could, but this may cause other architectures which select 
ARCH_WANT_FRAME_POINTERS to have FRAME_POINTER selected too.

Or we could do:

select FRAME_POINTER is ARM64

Thanks,
Yang

>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
diff mbox

Patch

diff --git a/arch/arm64/Kconfig.debug b/arch/arm64/Kconfig.debug
index d6285ef..915dea7 100644
--- a/arch/arm64/Kconfig.debug
+++ b/arch/arm64/Kconfig.debug
@@ -2,10 +2,6 @@  menu "Kernel hacking"
 
 source "lib/Kconfig.debug"
 
-config FRAME_POINTER
-	bool
-	default y
-
 config ARM64_PTDUMP
 	bool "Export kernel pagetable layout to userspace via debugfs"
 	depends on DEBUG_KERNEL