1
linux/drivers/char
Ingo Molnar 0f74964627 [PATCH] lockdep: HPET/RTC fix
Joseph Fannin reported that hpet_rtc_interrupt() enables hardirqs
in irq context:

[   25.628000]  [<c014af4e>] trace_hardirqs_on+0xce/0x200
[   25.628000]  [<c036cf21>] _spin_unlock_irq+0x31/0x70
[   25.628000]  [<c0296584>] rtc_get_rtc_time+0x44/0x1a0
[   25.628000]  [<c01198bb>] hpet_rtc_interrupt+0x21b/0x280
[   25.628000]  [<c0161141>] handle_IRQ_event+0x31/0x70
[   25.628000]  [<c0162d37>] handle_edge_irq+0xe7/0x210
[   25.628000]  [<c0106192>] do_IRQ+0x92/0x120
[   25.628000]  [<c0104121>] common_interrupt+0x25/0x2c

the call of rtc_get_rtc_time() is highly suspect. At a minimum we
need the patch below to save/restore hardirq state.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Joseph Fannin <jfannin@gmail.com>
Cc: John Stultz <johnstul@us.ibm.com>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-12 12:52:55 -07:00
..
agp [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
drm [PATCH] irq-flags: drivers/drm: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
ftape [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
hw_random [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
ip2 [PATCH] Add Computone IntelliPort Plus serial hotplug support 2006-07-10 13:24:13 -07:00
ipmi [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
mwave [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
pcmcia [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
rio [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
tpm [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
watchdog [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
.gitignore
amiserial.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
applicom.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
applicom.h
cd1865.h
ChangeLog
consolemap.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cp437.uni
cs5535_gpio.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
cyclades.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
decserial.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
defkeymap.c_shipped
defkeymap.map
digi1.h
digi.h
digiFep1.h
digiPCI.h
ds1286.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
ds1302.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
ds1620.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
dsp56k.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
dtlk.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
ec3104_keyb.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
efirtc.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
epca.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
epca.h
epcaconfig.h
esp.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
generic_nvram.c
generic_serial.c
genrtc.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
hangcheck-timer.c [PATCH] hangcheck: remove monotomic_clock on x86 2006-06-26 09:58:20 -07:00
hpet.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
hvc_console.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
hvc_console.h
hvc_rtas.c
hvc_vio.c
hvcs.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
hvsi.c [PATCH] powerpc: fix trigger handling in the new irq code 2006-07-10 13:24:20 -07:00
i8k.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
ip27-rtc.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
isicom.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
istallion.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
ite_gpio.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
Kconfig [PATCH] GPIO for SCx200 & PC-8736x: x86-only 2006-06-29 10:26:21 -07:00
keyboard.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
lcd.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
lcd.h
lp.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
Makefile [PATCH] chardev: GPIO for SCx200 & PC-8736x: add proper Kconfig, Makefile entries 2006-06-27 17:32:43 -07:00
mbcs.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
mbcs.h
mem.c [PATCH] make valid_mmap_phys_addr_range() take a pfn 2006-07-10 13:24:25 -07:00
misc.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
mmtimer.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
moxa.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
mxser.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
mxser.h
n_hdlc.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
n_r3964.c [PATCH] R3964: fix GFP_KERNEL allocations in timer function 2006-06-25 10:01:17 -07:00
n_tty.c [PATCH] remove TTY_DONT_FLIP 2006-06-28 14:59:05 -07:00
nsc_gpio.c [PATCH] chardev: GPIO for SCx200 & PC-8736x: display pin values in/out in gpio_dump 2006-06-27 17:32:43 -07:00
nvram.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
nwbutton.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
nwbutton.h
nwflash.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
pc8736x_gpio.c [PATCH] pc8736x_gpio: fix re-modprobe errors: fix/finish cdev-init 2006-07-10 13:24:26 -07:00
ppdev.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
pty.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
qtronix.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
qtronixmap.c_shipped
qtronixmap.map
random.c [PATCH] lockdep: locking init debugging improvement 2006-07-03 15:27:02 -07:00
raw.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
riscom8_reg.h
riscom8.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
riscom8.h
rocket_int.h
rocket.c [PATCH] devfs: Rename TTY_DRIVER_NO_DEVFS to TTY_DRIVER_DYNAMIC_DEV 2006-06-26 12:25:09 -07:00
rocket.h
rtc.c [PATCH] lockdep: HPET/RTC fix 2006-07-12 12:52:55 -07:00
s3c2410-rtc.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
scan_keyb.c
scan_keyb.h
scc.h
scx200_gpio.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
selection.c
ser_a2232.c
ser_a2232.h
ser_a2232fw.ax
ser_a2232fw.h
serial167.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
snsc_event.c [PATCH] snsc: switch from force_sig to kill_proc 2006-07-10 13:24:26 -07:00
snsc.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
snsc.h
sonypi.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
specialix_io8.h
specialix.c [PATCH] Add Specialix IO8+ card support hotplug support 2006-07-10 13:24:13 -07:00
stallion.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
sx.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
sx.h
sxboards.h
sxwindow.h
synclink_gt.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
synclink.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
synclinkmp.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
sysrq.c [PATCH] lockdep: print all lock classes on SysRQ-D 2006-07-03 15:27:04 -07:00
tb0219.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
tipar.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
tlclk.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
toshiba.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
tty_io.c [PATCH] sched: cleanup, remove task_t, convert to struct task_struct 2006-07-03 15:27:11 -07:00
tty_ioctl.c
vc_screen.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
viocons.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
viotape.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
vme_scc.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
vr41xx_giu.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
vt_ioctl.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
vt.c [PATCH] vt: Decrement ref count of the VT backend on deallocation 2006-07-03 15:26:59 -07:00