2008-10-24 10:49:24

by Peter Zijlstra

[permalink] [raw]
Subject: [PATCH] trace: add the MMIO-tracer to the tracer menu

Subject: trace: add the MMIO-tracer to the tracer menu
From: Peter Zijlstra <[email protected]>
Date: Fri Oct 24 12:46:04 CEST 2008

Add the MMIO-tracer to the tracer menu.

Signed-off-by: Peter Zijlstra <[email protected]>
CC: Pekka Paalanen <[email protected]>
---
arch/x86/Kconfig.debug | 28 ++--------------------------
kernel/trace/Kconfig | 28 ++++++++++++++++++++++++++++
2 files changed, 30 insertions(+), 26 deletions(-)

Index: linux-2.6/arch/x86/Kconfig.debug
===================================================================
--- linux-2.6.orig/arch/x86/Kconfig.debug
+++ linux-2.6/arch/x86/Kconfig.debug
@@ -175,32 +175,8 @@ config IOMMU_LEAK
Add a simple leak tracer to the IOMMU code. This is useful when you
are debugging a buggy device driver that leaks IOMMU mappings.

-config MMIOTRACE_HOOKS
- bool
-
-config MMIOTRACE
- bool "Memory mapped IO tracing"
- depends on DEBUG_KERNEL && PCI
- select TRACING
- select MMIOTRACE_HOOKS
- help
- Mmiotrace traces Memory Mapped I/O access and is meant for
- debugging and reverse engineering. It is called from the ioremap
- implementation and works via page faults. Tracing is disabled by
- default and can be enabled at run-time.
-
- See Documentation/tracers/mmiotrace.txt.
- If you are not helping to develop drivers, say N.
-
-config MMIOTRACE_TEST
- tristate "Test module for mmiotrace"
- depends on MMIOTRACE && m
- help
- This is a dumb module for testing mmiotrace. It is very dangerous
- as it will write garbage to IO memory starting at a given address.
- However, it should be safe to use on e.g. unused portion of VRAM.
-
- Say N, unless you absolutely know what you are doing.
+config HAVE_MMIOTRACE_SUPPORT
+ def_bool y

#
# IO delay types:
Index: linux-2.6/kernel/trace/Kconfig
===================================================================
--- linux-2.6.orig/kernel/trace/Kconfig
+++ linux-2.6/kernel/trace/Kconfig
@@ -194,4 +194,32 @@ config FTRACE_STARTUP_TEST
functioning properly. It will do tests on all the configured
tracers of ftrace.

+config MMIOTRACE_HOOKS
+ bool
+
+config MMIOTRACE
+ bool "Memory mapped IO tracing"
+ depends on HAVE_MMIOTRACE_SUPPORT && DEBUG_KERNEL && PCI
+ select TRACING
+ select MMIOTRACE_HOOKS
+ help
+ Mmiotrace traces Memory Mapped I/O access and is meant for
+ debugging and reverse engineering. It is called from the ioremap
+ implementation and works via page faults. Tracing is disabled by
+ default and can be enabled at run-time.
+
+ See Documentation/tracers/mmiotrace.txt.
+ If you are not helping to develop drivers, say N.
+
+config MMIOTRACE_TEST
+ tristate "Test module for mmiotrace"
+ depends on MMIOTRACE && m
+ help
+ This is a dumb module for testing mmiotrace. It is very dangerous
+ as it will write garbage to IO memory starting at a given address.
+ However, it should be safe to use on e.g. unused portion of VRAM.
+
+ Say N, unless you absolutely know what you are doing.
+
+
endmenu


2008-10-24 11:26:00

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] trace: add the MMIO-tracer to the tracer menu


* Peter Zijlstra <[email protected]> wrote:

> Subject: trace: add the MMIO-tracer to the tracer menu
> From: Peter Zijlstra <[email protected]>
> Date: Fri Oct 24 12:46:04 CEST 2008
>
> Add the MMIO-tracer to the tracer menu.
>
> Signed-off-by: Peter Zijlstra <[email protected]>
> CC: Pekka Paalanen <[email protected]>
> ---
> arch/x86/Kconfig.debug | 28 ++--------------------------
> kernel/trace/Kconfig | 28 ++++++++++++++++++++++++++++
> 2 files changed, 30 insertions(+), 26 deletions(-)
>
> Index: linux-2.6/arch/x86/Kconfig.debug
> ===================================================================
> --- linux-2.6.orig/arch/x86/Kconfig.debug
> +++ linux-2.6/arch/x86/Kconfig.debug
> @@ -175,32 +175,8 @@ config IOMMU_LEAK
> Add a simple leak tracer to the IOMMU code. This is useful when you
> are debugging a buggy device driver that leaks IOMMU mappings.
>
> -config MMIOTRACE_HOOKS
> - bool
> -
> -config MMIOTRACE
> - bool "Memory mapped IO tracing"
> - depends on DEBUG_KERNEL && PCI
> - select TRACING
> - select MMIOTRACE_HOOKS
> - help
> - Mmiotrace traces Memory Mapped I/O access and is meant for
> - debugging and reverse engineering. It is called from the ioremap
> - implementation and works via page faults. Tracing is disabled by
> - default and can be enabled at run-time.
> -
> - See Documentation/tracers/mmiotrace.txt.
> - If you are not helping to develop drivers, say N.
> -
> -config MMIOTRACE_TEST
> - tristate "Test module for mmiotrace"
> - depends on MMIOTRACE && m
> - help
> - This is a dumb module for testing mmiotrace. It is very dangerous
> - as it will write garbage to IO memory starting at a given address.
> - However, it should be safe to use on e.g. unused portion of VRAM.
> -
> - Say N, unless you absolutely know what you are doing.
> +config HAVE_MMIOTRACE_SUPPORT
> + def_bool y
>
> #
> # IO delay types:
> Index: linux-2.6/kernel/trace/Kconfig
> ===================================================================
> --- linux-2.6.orig/kernel/trace/Kconfig
> +++ linux-2.6/kernel/trace/Kconfig
> @@ -194,4 +194,32 @@ config FTRACE_STARTUP_TEST
> functioning properly. It will do tests on all the configured
> tracers of ftrace.
>
> +config MMIOTRACE_HOOKS
> + bool
> +
> +config MMIOTRACE
> + bool "Memory mapped IO tracing"
> + depends on HAVE_MMIOTRACE_SUPPORT && DEBUG_KERNEL && PCI
> + select TRACING
> + select MMIOTRACE_HOOKS

change makes sense, but isnt MMIOTRACE_HOOKS basically overlapping
HAVE_MMIOTRACE_SUPPORT? So i think we could get rid of MMIOTRACE_HOOKS
altogether and just use HAVE_MMIOTRACE_SUPPORT.

Pekka?

Ingo

2008-10-24 11:53:50

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] trace: add the MMIO-tracer to the tracer menu


On Fri, 24 Oct 2008, Peter Zijlstra wrote:

> Subject: trace: add the MMIO-tracer to the tracer menu
> From: Peter Zijlstra <[email protected]>
> Date: Fri Oct 24 12:46:04 CEST 2008
>
> Add the MMIO-tracer to the tracer menu.
>
> Signed-off-by: Peter Zijlstra <[email protected]>
> CC: Pekka Paalanen <[email protected]>
> ---
> arch/x86/Kconfig.debug | 28 ++--------------------------
> kernel/trace/Kconfig | 28 ++++++++++++++++++++++++++++
> 2 files changed, 30 insertions(+), 26 deletions(-)
>
> Index: linux-2.6/arch/x86/Kconfig.debug
> ===================================================================
> --- linux-2.6.orig/arch/x86/Kconfig.debug
> +++ linux-2.6/arch/x86/Kconfig.debug
> @@ -175,32 +175,8 @@ config IOMMU_LEAK
> Add a simple leak tracer to the IOMMU code. This is useful when you
> are debugging a buggy device driver that leaks IOMMU mappings.
>
> -config MMIOTRACE_HOOKS
> - bool
> -
> -config MMIOTRACE
> - bool "Memory mapped IO tracing"
> - depends on DEBUG_KERNEL && PCI
> - select TRACING
> - select MMIOTRACE_HOOKS
> - help
> - Mmiotrace traces Memory Mapped I/O access and is meant for
> - debugging and reverse engineering. It is called from the ioremap
> - implementation and works via page faults. Tracing is disabled by
> - default and can be enabled at run-time.
> -
> - See Documentation/tracers/mmiotrace.txt.
> - If you are not helping to develop drivers, say N.
> -
> -config MMIOTRACE_TEST
> - tristate "Test module for mmiotrace"
> - depends on MMIOTRACE && m
> - help
> - This is a dumb module for testing mmiotrace. It is very dangerous
> - as it will write garbage to IO memory starting at a given address.
> - However, it should be safe to use on e.g. unused portion of VRAM.
> -
> - Say N, unless you absolutely know what you are doing.
> +config HAVE_MMIOTRACE_SUPPORT
> + def_bool y
>
> #
> # IO delay types:
> Index: linux-2.6/kernel/trace/Kconfig
> ===================================================================
> --- linux-2.6.orig/kernel/trace/Kconfig
> +++ linux-2.6/kernel/trace/Kconfig
> @@ -194,4 +194,32 @@ config FTRACE_STARTUP_TEST
> functioning properly. It will do tests on all the configured
> tracers of ftrace.
>
> +config MMIOTRACE_HOOKS
> + bool
> +
> +config MMIOTRACE
> + bool "Memory mapped IO tracing"
> + depends on HAVE_MMIOTRACE_SUPPORT && DEBUG_KERNEL && PCI
> + select TRACING

Since this was taken from the x86 Kconfig, do we need to add a
"depends X86" ?

-- Steve

> + select MMIOTRACE_HOOKS
> + help
> + Mmiotrace traces Memory Mapped I/O access and is meant for
> + debugging and reverse engineering. It is called from the ioremap
> + implementation and works via page faults. Tracing is disabled by
> + default and can be enabled at run-time.
> +
> + See Documentation/tracers/mmiotrace.txt.
> + If you are not helping to develop drivers, say N.
> +
> +config MMIOTRACE_TEST
> + tristate "Test module for mmiotrace"
> + depends on MMIOTRACE && m
> + help
> + This is a dumb module for testing mmiotrace. It is very dangerous
> + as it will write garbage to IO memory starting at a given address.
> + However, it should be safe to use on e.g. unused portion of VRAM.
> +
> + Say N, unless you absolutely know what you are doing.
> +
> +
> endmenu
>
>
>

2008-10-24 11:56:20

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] trace: add the MMIO-tracer to the tracer menu


On Fri, 24 Oct 2008, Ingo Molnar wrote:
> > #
> > # IO delay types:
> > Index: linux-2.6/kernel/trace/Kconfig
> > ===================================================================
> > --- linux-2.6.orig/kernel/trace/Kconfig
> > +++ linux-2.6/kernel/trace/Kconfig
> > @@ -194,4 +194,32 @@ config FTRACE_STARTUP_TEST
> > functioning properly. It will do tests on all the configured
> > tracers of ftrace.
> >
> > +config MMIOTRACE_HOOKS
> > + bool
> > +
> > +config MMIOTRACE
> > + bool "Memory mapped IO tracing"
> > + depends on HAVE_MMIOTRACE_SUPPORT && DEBUG_KERNEL && PCI
> > + select TRACING
> > + select MMIOTRACE_HOOKS
>
> change makes sense, but isnt MMIOTRACE_HOOKS basically overlapping
> HAVE_MMIOTRACE_SUPPORT? So i think we could get rid of MMIOTRACE_HOOKS
> altogether and just use HAVE_MMIOTRACE_SUPPORT.

And doing this will remove the need about my question on depends on X86.

-- Steve

2008-10-24 17:08:26

by Pekka Paalanen

[permalink] [raw]
Subject: Re: [PATCH] trace: add the MMIO-tracer to the tracer menu

On Fri, 24 Oct 2008 07:56:05 -0400 (EDT)
Steven Rostedt <[email protected]> wrote:

>
> On Fri, 24 Oct 2008, Ingo Molnar wrote:
> > > #
> > > # IO delay types:
> > > Index: linux-2.6/kernel/trace/Kconfig
> > > ===================================================================
> > > --- linux-2.6.orig/kernel/trace/Kconfig
> > > +++ linux-2.6/kernel/trace/Kconfig
> > > @@ -194,4 +194,32 @@ config FTRACE_STARTUP_TEST
> > > functioning properly. It will do tests on all the configured
> > > tracers of ftrace.
> > >
> > > +config MMIOTRACE_HOOKS
> > > + bool
> > > +
> > > +config MMIOTRACE
> > > + bool "Memory mapped IO tracing"
> > > + depends on HAVE_MMIOTRACE_SUPPORT && DEBUG_KERNEL && PCI
> > > + select TRACING
> > > + select MMIOTRACE_HOOKS
> >
> > change makes sense, but isnt MMIOTRACE_HOOKS basically overlapping
> > HAVE_MMIOTRACE_SUPPORT? So i think we could get rid of MMIOTRACE_HOOKS
> > altogether and just use HAVE_MMIOTRACE_SUPPORT.
>
> And doing this will remove the need about my question on depends on X86.

Yes, we can remove MMIOTRACE_HOOKS and replace it with just MMIOTRACE.
MMIOTRACE_HOOKS is a remnant from the time when I thought that
something else could also use the kmmio facilities.

Here's a compile-tested patch against current Ingo's tip/master.

>From d4b97cd777c3382b784a9504281feccc9f2c4036 Mon Sep 17 00:00:00 2001
From: Pekka Paalanen <[email protected]>
Date: Fri, 24 Oct 2008 18:59:56 +0300
Subject: [PATCH] mmiotrace: Remove unneeded CONFIG_MMIOTRACE_HOOKS.

Signed-off-by: Pekka Paalanen <[email protected]>
---
arch/x86/Kconfig.debug | 4 ----
arch/x86/mm/Makefile | 3 +--
arch/x86/mm/fault.c | 2 +-
3 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
index fc58b86..01649e1 100644
--- a/arch/x86/Kconfig.debug
+++ b/arch/x86/Kconfig.debug
@@ -175,14 +175,10 @@ config IOMMU_LEAK
Add a simple leak tracer to the IOMMU code. This is useful when you
are debugging a buggy device driver that leaks IOMMU mappings.

-config MMIOTRACE_HOOKS
- bool
-
config MMIOTRACE
bool "Memory mapped IO tracing"
depends on DEBUG_KERNEL && PCI
select TRACING
- select MMIOTRACE_HOOKS
help
Mmiotrace traces Memory Mapped I/O access and is meant for
debugging and reverse engineering. It is called from the ioremap
diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile
index f4edb6e..617537f 100644
--- a/arch/x86/mm/Makefile
+++ b/arch/x86/mm/Makefile
@@ -10,9 +10,8 @@ obj-$(CONFIG_HIGHMEM) += highmem_32.o

obj-$(CONFIG_KMEMCHECK) += kmemcheck/

-obj-$(CONFIG_MMIOTRACE_HOOKS) += kmmio.o
obj-$(CONFIG_MMIOTRACE) += mmiotrace.o
-mmiotrace-y := pf_in.o mmio-mod.o
+mmiotrace-y := kmmio.o pf_in.o mmio-mod.o
obj-$(CONFIG_MMIOTRACE_TEST) += testmmiotrace.o

obj-$(CONFIG_NUMA) += numa_$(BITS).o
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index ed9ee30..63e9f7c 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -55,7 +55,7 @@

static inline int kmmio_fault(struct pt_regs *regs, unsigned long addr)
{
-#ifdef CONFIG_MMIOTRACE_HOOKS
+#ifdef CONFIG_MMIOTRACE
if (unlikely(is_kmmio_active()))
if (kmmio_handler(regs, addr) == 1)
return -1;
--
1.5.6.4

2008-10-27 12:02:19

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] trace: add the MMIO-tracer to the tracer menu


* Pekka Paalanen <[email protected]> wrote:

> > And doing this will remove the need about my question on depends
> > on X86.
>
> Yes, we can remove MMIOTRACE_HOOKS and replace it with just
> MMIOTRACE. MMIOTRACE_HOOKS is a remnant from the time when I thought
> that something else could also use the kmmio facilities.
>
> Here's a compile-tested patch against current Ingo's tip/master.
>
> From d4b97cd777c3382b784a9504281feccc9f2c4036 Mon Sep 17 00:00:00 2001
> From: Pekka Paalanen <[email protected]>
> Date: Fri, 24 Oct 2008 18:59:56 +0300
> Subject: [PATCH] mmiotrace: Remove unneeded CONFIG_MMIOTRACE_HOOKS.
>
> Signed-off-by: Pekka Paalanen <[email protected]>
> ---
> arch/x86/Kconfig.debug | 4 ----
> arch/x86/mm/Makefile | 3 +--
> arch/x86/mm/fault.c | 2 +-
> 3 files changed, 2 insertions(+), 7 deletions(-)

applied, thanks Pekka!

Ingo