Bernhard Kaindl
f212ec4b7b
x86: early boot debugging via FireWire (ohci1394_dma=early)
...
This patch adds a new configuration option, which adds support for a new
early_param which gets checked in arch/x86/kernel/setup_{32,64}.c:setup_arch()
to decide wether OHCI-1394 FireWire controllers should be initialized and
enabled for physical DMA access to allow remote debugging of early problems
like issues ACPI or other subsystems which are executed very early.
If the config option is not enabled, no code is changed, and if the boot
paramenter is not given, no new code is executed, and independent of that,
all new code is freed after boot, so the config option can be even enabled
in standard, non-debug kernels.
With specialized tools, it is then possible to get debugging information
from machines which have no serial ports (notebooks) such as the printk
buffer contents, or any data which can be referenced from global pointers,
if it is stored below the 4GB limit and even memory dumps of of the physical
RAM region below the 4GB limit can be taken without any cooperation from the
CPU of the host, so the machine can be crashed early, it does not matter.
In the extreme, even kernel debuggers can be accessed in this way. I wrote
a small kgdb module and an accompanying gdb stub for FireWire which allows
to gdb to talk to kgdb using remote remory reads and writes over FireWire.
An version of the gdb stub fore FireWire is able to read all global data
from a system which is running a a normal kernel without any kernel debugger,
without any interruption or support of the system's CPU. That way, e.g. the
task struct and so on can be read and even manipulated when the physical DMA
access is granted.
A HOWTO is included in this patch, in Documentation/debugging-via-ohci1394.txt
and I've put a copy online at
ftp://ftp.suse.de/private/bk/firewire/docs/debugging-via-ohci1394.txt
It also has links to all the tools which are available to make use of it
another copy of it is online at:
ftp://ftp.suse.de/private/bk/firewire/kernel/ohci1394_dma_early-v2.diff
Signed-Off-By: Bernhard Kaindl <bk@suse.de>
Tested-By: Thomas Renninger <trenn@suse.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2008-01-30 13:34:11 +01:00
..
lzo
lzo: add some missing casts
2007-07-31 15:39:37 -07:00
reed_solomon
[MTD] [NAND] Replace -1 with -EBADMSG in nand error correction code
2007-10-20 22:30:54 +01:00
zlib_deflate
[PATCH] zlib_inflate: Upgrade library code to a recent version
2006-06-22 15:05:58 -07:00
zlib_inflate
[ZLIB]: Fix external builds of zlib_inflate code.
2007-10-11 22:17:20 -07:00
.gitignore
Add some basic .gitignore files
2005-10-18 08:26:15 -07:00
argv_split.c
LIB: Replace inappropriate include of <linux/bug.h>
2007-10-20 00:26:10 +02:00
audit.c
[PATCH] audit signal recipients
2007-05-11 05:38:25 -04:00
bitmap.c
Fix bitmap_scnlistprintf for empty masks
2007-11-05 15:12:32 -08:00
bitrev.c
[PATCH] add MODULE_* attributes to bit reversal library
2006-12-10 10:07:52 -08:00
bug.c
generic bug: use show_regs() instead of dump_stack()
2007-07-16 09:05:51 -07:00
bust_spinlocks.c
handle recursive calls to bust_spinlocks()
2007-10-17 08:42:56 -07:00
check_signature.c
uninline check_signature()
2007-07-16 09:05:50 -07:00
cmdline.c
[PATCH] Numerous fixes to kernel-doc info in source files.
2007-02-11 10:51:32 -08:00
cpumask.c
Safer nr_node_ids and nr_node_ids determination and initial values
2007-05-07 12:12:51 -07:00
crc-ccitt.c
[PATCH] kernel-doc for lib/crc*.c
2006-06-25 10:01:20 -07:00
crc-itu-t.c
CRC ITU-T V.41
2007-05-10 18:24:13 +02:00
crc7.c
CRC7 support
2007-07-17 10:23:04 -07:00
crc16.c
[PATCH] kernel-doc for lib/crc*.c
2006-06-25 10:01:20 -07:00
crc32.c
Replace __attribute_pure__ with __pure
2007-10-18 14:37:32 -07:00
crc32defs.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ctype.c
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
debug_locks.c
[PATCH] lockdep: better lock debugging
2006-07-03 15:27:01 -07:00
dec_and_lock.c
[PATCH] atomic: dec_and_lock use atomic primitives
2006-01-08 20:13:48 -08:00
devres.c
iomap: implement pcim_iounmap_regions()
2007-04-28 14:15:58 -04:00
div64.c
[S390]: Fix build on 31-bit.
2007-04-25 22:28:53 -07:00
dump_stack.c
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
extable.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
fault-inject.c
fault_inject: silence a warning
2007-07-24 12:24:59 -07:00
find_next_bit.c
ext4: Add ext4_find_next_bit()
2008-01-28 23:58:27 -05:00
gen_crc32table.c
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
genalloc.c
Slab allocators: Replace explicit zeroing with __GFP_ZERO
2007-07-17 10:23:02 -07:00
halfmd4.c
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
hexdump.c
hexdump: don't print bytes with bit 7 set
2007-11-29 09:24:53 -08:00
hweight.c
remove asm/bitops.h includes
2007-10-19 11:53:41 -07:00
idr.c
Slab API: remove useless ctor parameter and reorder parameters
2007-10-17 08:42:45 -07:00
inflate.c
[PATCH] x86-64: deflate inflate_dynamic too
2007-05-02 19:27:15 +02:00
int_sqrt.c
[PATCH] lib: Fix bug in int_sqrt() for 64 bit longs
2006-02-03 08:32:08 -08:00
iomap.c
lib/iomap.c:bad_io_access(): print 0x hex prefix
2007-10-17 08:42:57 -07:00
iomap_copy.c
[PATCH] add __iowrite64_copy
2006-06-20 20:24:58 -07:00
ioremap.c
lib/ioremap.c should #include <linux/io.h>
2007-10-17 08:42:50 -07:00
irq_regs.c
[PATCH] irq_reqs: export __irq_regs
2006-10-06 08:53:40 -07:00
kasprintf.c
lib: move kasprintf to a separate file
2007-07-31 15:39:39 -07:00
Kconfig
Introduce CONFIG_CHECK_SIGNATURE
2007-08-22 19:52:45 -07:00
Kconfig.debug
x86: early boot debugging via FireWire (ohci1394_dma=early)
2008-01-30 13:34:11 +01:00
kernel_lock.c
sched: remove the !PREEMPT_BKL code
2008-01-25 21:08:33 +01:00
klist.c
Driver core: Don't call put methods while holding a spinlock
2006-09-25 21:08:40 -07:00
kobject.c
Kobject: fix coding style issues in kobject c files
2008-01-24 21:59:04 -08:00
kobject_uevent.c
Kobject: fix coding style issues in kobject c files
2008-01-24 21:59:04 -08:00
kref.c
kref: add kref_set()
2008-01-24 20:40:05 -08:00
libcrc32c.c
[LIB] crc32c: Keep intermediate crc state in cpu order
2007-11-08 21:34:09 +08:00
list_debug.c
[PATCH] More list debugging context
2006-12-07 08:39:35 -08:00
locking-selftest-hardirq.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-mutex.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-rlock-hardirq.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-rlock-softirq.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-rlock.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-rsem.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-softirq.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-spin-hardirq.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-spin-softirq.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-spin.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-wlock-hardirq.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-wlock-softirq.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-wlock.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest-wsem.h
[PATCH] lockdep: locking API self tests
2006-07-03 15:27:03 -07:00
locking-selftest.c
[PATCH] lockdep: show more details about self-test failures
2006-12-07 08:39:43 -08:00
Makefile
[LIB]: Introduce struct pcounter
2008-01-28 14:54:39 -08:00
parser.c
[AFS]: Make the match_*() functions take const options.
2007-05-03 03:10:39 -07:00
pcounter.c
[LIB] pcounter : unline too big functions
2008-01-28 15:00:35 -08:00
percpu_counter.c
Add irq protection in the percpu-counters cpu-hotplug-callback path
2007-10-19 11:53:44 -07:00
plist.c
[PATCH] pi-futex: add plist implementation
2006-06-27 17:32:46 -07:00
prio_heap.c
Fix cpusets update_cpumask
2007-10-19 11:53:41 -07:00
prio_tree.c
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
proportions.c
lib: proportion: fix underflow in prop_norm_percpu()
2007-12-23 12:54:37 -08:00
radix-tree.c
avoid negative (and full-width) shifts in radix-tree.c
2007-10-17 08:42:56 -07:00
random32.c
[PATCH] severing module.h->sched.h
2006-12-04 02:00:22 -05:00
rbtree.c
[PATCH] rbtree: fixed reversed RB_EMPTY_NODE and rb_next/prev
2006-09-30 20:26:56 +02:00
reciprocal_div.c
[PATCH] SLAB: use a multiply instead of a divide in obj_to_index()
2006-12-13 09:05:49 -08:00
rwsem-spinlock.c
Lockdep: add lockdep_set_class_and_subclass() and lockdep_set_subclass()
2006-10-11 01:45:14 -04:00
rwsem.c
x86: fix UML and -regparm=3
2008-01-30 13:33:00 +01:00
scatterlist.c
SG: work with the SCSI fixed maximum allocations.
2008-01-28 10:54:49 +01:00
semaphore-sleepers.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
sha1.c
[PATCH] Numerous fixes to kernel-doc info in source files.
2007-02-11 10:51:32 -08:00
smp_processor_id.c
[PATCH] fix missing includes
2005-10-30 17:37:32 -08:00
sort.c
lib/sort.c optimization
2007-10-17 08:42:52 -07:00
spinlock_debug.c
Use helpers to obtain task pid in printks
2007-10-19 11:53:43 -07:00
string.c
[STRING]: Move strcasecmp/strncasecmp to lib/string.c
2007-04-26 01:54:39 -07:00
swiotlb.c
Update swiotlb to use sg helpers
2007-10-22 21:19:58 +02:00
textsearch.c
[TEXTSEARCH]: Do not allow zero length patterns in the textsearch infrastructure
2007-12-01 00:03:52 +11:00
ts_bm.c
[TEXTSEARCH]: Fix Boyer Moore initialization bug
2006-08-22 14:33:58 -07:00
ts_fsm.c
[PATCH] lib/ts_fsm.c: constify structs
2006-09-29 09:18:23 -07:00
ts_kmp.c
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
vsprintf.c
lib: move kasprintf to a separate file
2007-07-31 15:39:39 -07:00