android_kernel_xiaomi_sm8350/drivers
Thomas Reitmayr 5d0fb2e730 sata_mv: Properly initialize main irq mask
I noticed that during initialization sata_mv.c assumes that the main
interrupt mask has its default value of 0. The function
mv_platform_probe(..) initializes a shadow irq mask with 0 assuming
that's the value of the controller's register. Now
mv_set_main_irq_mask(..) only writes the controller's register if the
new value differs from the "shadowed" value. This is fatal when trying
to disable all interrupts in mv_init_host(..), i.e. the following
function call does not write anything to the main irq mask register:

  mv_set_main_irq_mask(host, ~0, 0);

The effect I see on my machine (QNAP TS-109 II) with booting via kexec
(with Linux as a 2nd-stage boot loader) is that if the sata_mv module
was still loaded when performing kexec, then the new kernel's sata_mv
module starts up with interrupts enabled. This results in an unhandled
IRQ and breaks the boot process.

The unhandled interrupt itself might also be fixed by Lennert's patch
proposed at http://markmail.org/message/kwvzxstnlsa3s26w which I did not
try yet.

However I still propose to additionally initialize the shadow variable
with the current contents of the main irq mask register to get both in
sync and allow proper disabling the main irq mask. This fixes the
unhandled irq on my machine.

Signed-off-by: Thomas Reitmayr <treitmayr@devbase.at>
Signed-off-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
2009-01-26 06:37:37 -05:00
..
accessibility
acpi Merge branch 'misc' into release 2009-01-16 14:45:34 -05:00
amba
ata sata_mv: Properly initialize main irq mask 2009-01-26 06:37:37 -05:00
atm
auxdisplay
base
block powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/block 2009-01-16 16:15:13 +11:00
bluetooth
cdrom
char hvc_console: Remove tty->low_latency 2009-01-16 16:15:16 +11:00
clocksource
connector
cpufreq
cpuidle
crypto
dca
dio m68k: dio - Kill resource_size_t format warnings 2009-01-12 20:56:42 +01:00
dma
edac
eisa
firewire
firmware dell_rbu: use scnprintf() instead of less secure sprintf() 2009-01-17 14:27:18 -08:00
gpio gpio: fix probe() error return in gpio driver probes 2009-01-15 16:39:35 -08:00
gpu drm/i915: lock correct mutex around object unreference. 2009-01-16 18:45:22 +10:00
hid
hwmon Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 2009-01-15 16:40:12 -08:00
i2c powerpc/83xx: Move mcu_mpc8349emitx driver out of drivers/i2c/chips/ 2009-01-13 17:46:31 -06:00
ide ide: fix suspend regression 2009-01-14 19:19:04 +01:00
idle
ieee1394
infiniband Merge branches 'ehca', 'ipoib' and 'mlx4' into for-linus 2009-01-16 15:05:54 -08:00
input
isdn i4l: minor cleanups 2009-01-14 14:42:21 -08:00
leds lis3lv02d: merge with leds hp disk 2009-01-15 16:39:40 -08:00
lguest
macintosh
mca
md
media
memstick
message [SCSI] mpt fusion: Add Firmware debug support 2009-01-13 10:36:02 -06:00
mfd Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-01-13 14:52:35 -08:00
misc Merge branch 'misc' into release 2009-01-16 14:45:34 -05:00
mmc
mtd
net Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2009-01-17 14:28:53 -08:00
nubus
of
oprofile
parisc fix early_serial_setup() regression 2009-01-13 14:03:43 -08:00
parport
pci ACPI PCI hotplug: harden against panic regression 2009-01-16 15:20:00 -05:00
pcmcia powerpc: Change u64/s64 to a long long integer type 2009-01-13 14:47:59 +11:00
platform Merge branch 'misc' into release 2009-01-16 14:45:34 -05:00
pnp
power
ps3 powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/ps3 2009-01-16 16:15:14 +11:00
rapidio
regulator move wm8400-regulator's probe function to .devinit.text 2009-01-17 13:46:40 +00:00
rtc rtc: rtc-twl4030 don't mask alarm interrupts on shutdown 2009-01-15 16:39:36 -08:00
s390
sbus
scsi Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2009-01-16 08:41:09 -08:00
serial serial: Add 16850 uart type support to OF uart driver 2009-01-16 16:15:17 +11:00
sh
sn
spi atmel_spi: allow transfer when max_speed_hz = 0 2009-01-15 16:39:35 -08:00
ssb
staging
tc
telephony
thermal
uio
usb drivers/usb/core/hub.c: fix CONFIG_USB_OTG=y build 2009-01-15 16:39:41 -08:00
uwb
video powerpc/ps3: printing fixups for l64 to ll64 conversion drivers/video 2009-01-16 16:15:15 +11:00
virtio
w1
watchdog [WATCHDOG] Pika Warp appliance watchdog timer 2009-01-12 20:08:56 +00:00
xen
zorro m68k: zorro - Use %pR to print resources 2009-01-12 20:56:43 +01:00
Kconfig
Makefile