android_kernel_google_msm/include/linux
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
..
amba
byteorder
can
dvb
hdlc
i2c
isdn
lockd NLM: Introduce an arguments structure for nlmclnt_init() 2008-01-30 02:06:07 -05:00
mlx4
mmc
mtd
netfilter [NETFILTER]: nf_conntrack_sctp: remove unused ttag field from conntrack data 2008-01-28 15:02:38 -08:00
netfilter_arp
netfilter_bridge
netfilter_ipv4 [NETFILTER]: Rename ipt_iprange to xt_iprange 2008-01-28 15:02:27 -08:00
netfilter_ipv6
nfsd
raid
rtc
spi
ssb ssb: Add boardflags_hi field to the sprom data structure 2008-01-28 15:09:52 -08:00
sunrpc SUNRPC: Use appropriate argument types in rpcb client 2008-01-30 02:06:09 -05:00
tc_act
tc_ematch
usb
8250_pci.h
a.out.h
ac97_codec.h
acct.h
acpi.h
acpi_pmtmr.h x86: move pmtmr related declarations 2008-01-30 13:30:18 +01:00
adb.h
adfs_fs.h
adfs_fs_i.h
adfs_fs_sb.h
aer.h
affs_hardblocks.h
agp_backend.h
agpgart.h
aio.h
aio_abi.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm-emulation.h
apm_bios.h
arcdevice.h
arcfb.h
async_tx.h
ata.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h [ATM]: [br2864] whitespace cleanup 2008-01-28 15:00:14 -08:00
atmclip.h
atmdev.h [ATM]: Convert struct class_device to struct device 2008-01-28 15:00:12 -08:00
atmel-ssc.h
atmel_pdc.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
attribute_container.h
audit.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
baycom.h
bcd.h
bfs_fs.h
binfmts.h
bio.h
bit_spinlock.h
bitmap.h
bitops.h
bitrev.h
blkdev.h block: fix warning on compile with CONFIG_BLOCK 2008-01-29 21:55:14 +01:00
blkpg.h
blktrace_api.h Fix blktrace compile warning 2008-01-29 21:55:15 +01:00
blockgroup_lock.h
bootmem.h
bottom_half.h
bpqether.h
bsg.h
buffer_head.h Add buffer head related helper functions 2008-01-28 23:58:26 -05:00
bug.h
cache.h
calc64.h
can.h
capability.h
capi.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
cfag12864b.h
cgroup.h
cgroup_subsys.h
cgroupstats.h
chio.h
circ_buf.h
clk.h
clockchips.h
clocksource.h clocksource: add unregister function to disable unusable clocksources 2008-01-30 13:30:02 +01:00
cm4000_cs.h
cn_proc.h
coda.h
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_psdev.h
coff.h
com20020.h
compat.h x86: compat_sys_ptrace 2008-01-30 13:31:48 +01:00
compiler-gcc.h
compiler-gcc3.h
compiler-gcc4.h
compiler-intel.h
compiler.h
completion.h
comstats.h
concap.h
configfs.h
connector.h [CONNECTOR]: Cleanup struct cn_callback_entry 2008-01-28 15:00:40 -08:00
console.h
console_struct.h
consolemap.h
const.h x86: add _AT() macro to conditionally cast 2008-01-30 13:32:42 +01:00
cpu.h
cpufreq.h
cpuidle.h
cpumask.h x86: avoid build warning 2008-01-30 13:31:10 +01:00
cpuset.h
cramfs_fs.h
cramfs_fs_sb.h
crash_dump.h
crc-ccitt.h
crc-itu-t.h
crc7.h
crc16.h
crc32.h
crc32c.h
crypto.h
cryptohash.h
ctype.h
cuda.h
cyclades.h
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
dca.h
dcache.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h
delay.h
delayacct.h
device-mapper.h
device.h
devpts_fs.h
dio.h
dirent.h
display.h
dlm.h
dlm_device.h
dlm_netlink.h
dlmconstants.h
dm-ioctl.h
dm9000.h
dma-mapping.h
dmaengine.h
dmapool.h
dmar.h
dmi.h
dn.h
dnotify.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
ds1wm.h
ds1286.h
ds17287rtc.h
dtlk.h
edac.h
edd.h
eeprom_93cx6.h
efi.h
efs_dir.h
efs_fs.h
efs_fs_i.h
efs_fs_sb.h
efs_vh.h
eisa.h
elevator.h
elf-em.h
elf-fdpic.h
elf.h x86: x86 core dump TLS 2008-01-30 13:31:56 +01:00
elfcore-compat.h
elfcore.h
elfnote.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventfd.h
eventpoll.h
exportfs.h
ext2_fs.h
ext2_fs_sb.h
ext3_fs.h
ext3_fs_i.h
ext3_fs_sb.h
ext3_jbd.h
ext4_fs.h ext4: Add multi block allocator for ext4 2008-01-29 00:19:52 -05:00
ext4_fs_extents.h ext4: Add new functions for searching extent tree 2008-01-28 23:58:27 -05:00
ext4_fs_i.h ext4: Add multi block allocator for ext4 2008-01-29 00:19:52 -05:00
ext4_fs_sb.h ext4: Add multi block allocator for ext4 2008-01-29 00:19:52 -05:00
ext4_jbd2.h
f75375s.h
fadvise.h
falloc.h
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h
fd1772.h
fddidevice.h
fdreg.h
fib_rules.h
file.h
filter.h
firewire-cdev.h
firewire-constants.h
firmware.h
flat.h
font.h
freezer.h
fs.h ext4: Add inode version support in ext4 2008-01-28 23:58:27 -05:00
fs_enet_pd.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fsl_devices.h
fsnotify.h
fuse.h
futex.h
gameport.h
gen_stats.h
genalloc.h
generic_acl.h
generic_serial.h
genetlink.h
genhd.h
getcpu.h
gfp.h
gfs2_ondisk.h
gigaset_dev.h
gpio_keys.h
gpio_mouse.h
hardirq.h
harrier_defs.h
hash.h
hayesesp.h
hdlc.h
hdlcdrv.h
hdpu_features.h
hdreg.h
hdsmart.h
hid-debug.h
hid.h
hiddev.h
hidraw.h
highmem.h
highuid.h
hil.h
hil_mlc.h
hippidevice.h
hp_sdc.h
hpet.h x86: nuke a ton of dead hpet code 2008-01-30 13:30:27 +01:00
hrtimer.h
htirq.h
hugetlb.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hysdn_if.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-algo-sgi.h
i2c-dev.h
i2c-gpio.h
i2c-id.h
i2c-ocores.h
i2c-pnx.h
i2c-pxa.h
i2c.h
i2o-dev.h
i2o.h
i8k.h
i8042.h
ibmtr.h
icmp.h
icmpv6.h
ide.h
idr.h
ieee80211.h mac80211: fixing ieee80211_bar types 2008-01-28 15:10:45 -08:00
if.h
if_addr.h
if_addrlabel.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h [ETHER]: Bring back MAC_FMT 2008-01-28 15:08:27 -08:00
if_fc.h
if_fddi.h
if_frad.h annotate the rest of drivers/net/wan 2008-01-28 15:07:58 -08:00
if_hippi.h
if_infiniband.h
if_link.h
if_ltalk.h
if_macvlan.h
if_packet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_strip.h
if_tr.h
if_tun.h annotate tun 2008-01-28 15:07:57 -08:00
if_tunnel.h
if_vlan.h [VLAN]: Turn __constant_htons into htons where possible 2008-01-28 15:08:32 -08:00
if_wanpipe.h
igmp.h
in.h [IPV4]: Enable use of 240/4 address space. 2008-01-28 15:08:44 -08:00
in6.h
in_route.h
inet.h
inet_diag.h
inet_lro.h
inetdevice.h [NETNS]: Add namespace parameter to ip_dev_find. 2008-01-28 15:11:04 -08:00
init.h
init_ohci1394_dma.h x86: early boot debugging via FireWire (ohci1394_dma=early) 2008-01-30 13:34:11 +01:00
init_task.h
initrd.h
inotify.h
input-polldev.h
input.h
interrupt.h
io.h
ioc3.h
ioc4.h
iocontext.h
ioctl.h
ioport.h x86: remove extern declarations for code, data, bss resources 2008-01-30 13:30:32 +01:00
ioprio.h
ip.h
ip6_tunnel.h
ipc.h
ipmi.h
ipmi_msgdefs.h
ipmi_smi.h
ipsec.h
ipv6.h
ipv6_route.h
ipx.h
irda.h
irq.h
irq_cpustat.h
irqflags.h
irqreturn.h
isa.h
isapnp.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
isicom.h
iso_fs.h
istallion.h
ivtv.h
ivtvfb.h
ixjuser.h
jbd.h
jbd2.h jbd2: add lockdep support 2008-01-28 23:58:27 -05:00
jffs2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
Kbuild Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.25 2008-01-29 22:54:01 +11:00
kd.h
kdebug.h
kdev_t.h
kernel.h x86: make early printk selectable on 64-bit as well 2008-01-30 13:33:06 +01:00
kernel_stat.h
kernelcapi.h
kexec.h
key-type.h
key-ui.h
key.h
keyboard.h
keyctl.h
kfifo.h
klist.h
kmalloc_sizes.h
kmod.h
kobj_map.h
kobject.h
kprobes.h x86: kprobes: add kprobes smoke tests that run on boot 2008-01-30 13:32:53 +01:00
kref.h
ks0108.h
kthread.h
ktime.h
kvm.h
kvm_para.h
lapb.h
latency.h
latencytop.h
lcd.h
leds.h
lguest.h
lguest_launcher.h
libata.h
libps2.h
license.h
limits.h
linkage.h x86: add ENDPROC() markers 2008-01-30 13:33:13 +01:00
linux_logo.h
list.h
llc.h
lm_interface.h
lock_dlm_plock.h
lockdep.h
log2.h
loop.h
lp.h
lzo.h
m48t86.h
magic.h
major.h
maple.h
marker.h
matroxfb.h
mbcache.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
mdio-bitbang.h
memory.h
memory_hotplug.h
mempolicy.h
mempool.h
meye.h
migrate.h
mii.h
minix_fs.h
miscdevice.h
mm.h x86: do not PSE on CONFIG_DEBUG_PAGEALLOC=y 2008-01-30 13:33:58 +01:00
mm_inline.h
mm_types.h
mman.h
mmtimer.h
mmzone.h
mnt_namespace.h
mod_devicetable.h
module.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild 2008-01-29 22:46:14 +11:00
moduleloader.h
moduleparam.h
mount.h
mpage.h
mqueue.h
mroute.h
msdos_fs.h
msg.h
msi.h
mtio.h
mutex-debug.h
mutex.h
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
n_r3964.h
namei.h
nbd.h
ncp.h
ncp_fs.h
ncp_fs_i.h
ncp_fs_sb.h
ncp_mount.h
ncp_no.h
neighbour.h
net.h
netdevice.h
netfilter.h [NETFILTER]: Extend nf_inet_addr with in{,6}_addr 2008-01-28 15:02:22 -08:00
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h [NETNS]: Consolidate kernel netlink socket destruction. 2008-01-28 15:08:07 -08:00
netpoll.h
netrom.h
nfs.h
nfs2.h
nfs3.h
nfs4.h
nfs4_acl.h
nfs4_mount.h
nfs_fs.h nfs: convert NFS_*(inode) helpers to static inline 2008-01-30 02:06:11 -05:00
nfs_fs_i.h
nfs_fs_sb.h NFS: Invoke nlmclnt_init during NFS mount processing 2008-01-30 02:06:07 -05:00
nfs_idmap.h
nfs_mount.h
nfs_page.h NFS: Clean up the write request locking. 2008-01-30 02:05:24 -05:00
nfs_xdr.h NFS: NFS version number is unsigned 2008-01-30 02:06:08 -05:00
nfsacl.h
nfsd_idmap.h
nl80211.h cfg80211/nl80211: implement station attribute retrieval 2008-01-28 14:59:52 -08:00
nls.h
nmi.h
node.h
nodemask.h
notifier.h
nsc_gpio.h
nsproxy.h
nubus.h
numa.h
nvram.h
of.h
of_device.h
of_platform.h
oom.h
oprofile.h
page-flags.h
page-isolation.h
pageblock-flags.h
pagemap.h
pagevec.h
param.h
parport.h
parport_pc.h
parser.h
pata_platform.h
patchkey.h
pci-acpi.h
pci.h
pci_hotplug.h
pci_ids.h pci: add PCI identifiers for the RDC devices 2008-01-30 13:33:36 +01:00
pci_regs.h
pcieport_if.h
pcounter.h [LIB] pcounter : unline too big functions 2008-01-28 15:00:35 -08:00
pda_power.h
percpu.h percpu: move arch XX_PER_CPU_XX definitions into linux/percpu.h 2008-01-30 13:32:52 +01:00
percpu_counter.h
personality.h
pfkeyv2.h
pfn.h
pg.h
phantom.h
phonedev.h
phy.h
phy_fixed.h
pid.h
pid_namespace.h
pipe_fs_i.h
pkt_cls.h
pkt_sched.h [NET_SCHED]: sch_api: introduce constant for rate table size 2008-01-28 15:11:21 -08:00
pktcdvd.h
platform_device.h
plist.h
pm.h
pm_legacy.h
pmu.h
pnp.h
pnpbios.h
poison.h
poll.h
posix-timers.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
power_supply.h
ppdev.h
ppp-comp.h
ppp_channel.h
ppp_defs.h
prctl.h
preempt.h
prefetch.h
prio_heap.h
prio_tree.h
proc_fs.h [ATM]: Oops reading net/atm/arp 2008-01-28 15:01:36 -08:00
profile.h
proportions.h
ps2esdi.h
ptrace.h ptrace: generic PTRACE_SINGLEBLOCK 2008-01-30 13:30:53 +01:00
qnx4_fs.h
qnxtypes.h
quicklist.h
quota.h
quotaio_v1.h
quotaio_v2.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h
ramfs.h
random.h
raw.h
rbtree.h
rcuclassic.h
rcupdate.h
rcupreempt.h
rcupreempt_trace.h
reboot.h
reciprocal_div.h
regset.h x86: user_regset user-copy helpers 2008-01-30 13:31:47 +01:00
reiserfs_acl.h
reiserfs_fs.h
reiserfs_fs_i.h
reiserfs_fs_sb.h
reiserfs_xattr.h
relay.h
resource.h
resume-trace.h
rfkill.h
rio.h
rio_drv.h
rio_ids.h
rio_regs.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
route.h
rslib.h
rtc-v3020.h
rtc.h
rtmutex.h
rtnetlink.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
sc26198.h
scatterlist.h
scc.h
sched.h spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
screen_info.h
sctp.h
scx200.h
scx200_gpio.h
sdla.h
seccomp.h
securebits.h
security.h
selection.h
selinux.h
selinux_netlink.h
sem.h
seq_file.h
seqlock.h
serial.h
serial167.h
serial_8250.h
serial_core.h
serial_pnx8xxx.h
serial_reg.h
serialP.h
serio.h
shm.h
shmem_fs.h
signal.h
signalfd.h
skbuff.h
slab.h
slab_def.h
slob_def.h
slub_def.h
sm501-regs.h
sm501.h
smb.h
smb_fs.h
smb_fs_i.h
smb_fs_sb.h
smb_mount.h
smbno.h
smp.h x86: optimize lock prefix switching to run less frequently 2008-01-30 13:33:17 +01:00
smp_lock.h
snmp.h
socket.h
sockios.h
som.h
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock.h spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types.h spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
spinlock_types_up.h
spinlock_up.h spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
splice.h
srcu.h
stacktrace.h
stallion.h
start_kernel.h
stat.h
statfs.h
stddef.h
stop_machine.h
string.h
stringify.h
superhyway.h
suspend.h x86: make __{save,restore}_processor_state static 2008-01-30 13:31:23 +01:00
svga.h
swap.h x86: demacro asm-x86/pgalloc_32.h 2008-01-30 13:33:39 +01:00
swapops.h
synclink.h
sys.h
syscalls.h
sysctl.h
sysdev.h
sysfs.h
sysrq.h
sysv_fs.h
task_io_accounting.h
task_io_accounting_ops.h
taskstats.h
taskstats_kern.h
tc.h
tcp.h
telephony.h
termios.h
textsearch.h
textsearch_fsm.h
tfrc.h
thread_info.h x86: clean up bitops-related warnings 2008-01-30 13:30:55 +01:00
threads.h
tick.h time: track accurate idle time with tick_sched.idle_sleeptime 2008-01-30 13:30:04 +01:00
tifm.h
time.h
timer.h time: clean hungarian notation from timers 2008-01-30 13:30:00 +01:00
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
topology.h
toshiba.h
transport_class.h
trdevice.h
tsacct_kern.h
tty.h
tty_driver.h
tty_flip.h
tty_ldisc.h
types.h
uaccess.h
udf_fs.h
udf_fs_i.h
udf_fs_sb.h
udp.h
ufs_fs.h
uinput.h
uio.h
uio_driver.h
ultrasound.h
un.h
unistd.h
unwind.h
usb.h
usb_usual.h
usbdevice_fs.h
user.h
user_namespace.h
utime.h
uts.h
utsname.h
vermagic.h
veth.h
vfs.h
via.h
video_decoder.h
video_encoder.h
video_output.h
videodev.h
videodev2.h
videotext.h
virtio.h
virtio_9p.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_net.h
virtio_ring.h
vmalloc.h
vmstat.h
vt.h
vt_buffer.h
vt_kern.h
wait.h
wanrouter.h
watchdog.h
wireless.h
workqueue.h
writeback.h
x25.h
xattr.h
xfrm.h [XFRM]: Fix struct xfrm_algo code formatting. 2008-01-28 15:02:01 -08:00
xilinxfb.h
yam.h
zconf.h
zlib.h
zorro.h
zorro_ids.h
zutil.h