linux/drivers
Stefan Richter 16a2ae6eb1 firewire: ohci: fix crashes with TSB43AB23 on 64bit systems
commit 7a48143678 upstream.

Unsurprisingly, Texas Instruments TSB43AB23 exhibits the same behaviour
as TSB43AB22/A in dual buffer IR DMA mode:  If descriptors are located
at physical addresses above the 31 bit address range (2 GB), the
controller will overwrite random memory.  With luck, this merely
prevents video reception.  With only a little less luck, the machine
crashes.

We use the same workaround here as with TSB43AB22/A:  Switch off the
dual buffer capability flag and use packet-per-buffer IR DMA instead.
Another possible workaround would be to limit the coherent DMA mask to
31 bits.

In Linux 2.6.33, this change serves effectively only as documentation
since dual buffer mode is not used for any controller anymore.  But
somebody might want to re-enable it in the future to make use of
features of dual buffer DMA that are not available in packet-per-buffer
mode.

In Linux 2.6.32 and older, this update is vital for anyone with this
controller, more than 2 GB RAM, a 64 bit kernel, and FireWire video or
audio applications.

We have at least four reports:
http://bugzilla.kernel.org/show_bug.cgi?id=13808
http://marc.info/?l=linux1394-user&m=126154279004083
https://bugzilla.redhat.com/show_bug.cgi?id=552142
http://marc.info/?l=linux1394-user&m=126432246128386

Reported-by: Paul Johnson
Reported-by: Ronneil Camara
Reported-by: G Zornetzer
Reported-by: Mark Thompson
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-02-09 04:50:42 -08:00
..
accessibility
acpi ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C 2010-01-28 15:02:54 -08:00
amba
ata ata_piix: fix MWDMA handling on PIIX3 2010-01-28 15:02:16 -08:00
atm net: Make setsockopt() optlen be unsigned. 2009-09-30 16:12:20 -07:00
auxdisplay
base driver-core: fix devtmpfs crash on s390 2010-01-28 15:00:45 -08:00
block aoe: prevent cache aliases 2009-12-01 16:32:20 -08:00
bluetooth Bluetooth: Prevent ill-timed autosuspend in USB driver 2010-01-06 15:03:43 -08:00
cdrom sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
char nozomi: quick fix for the close/close bug 2010-01-25 10:49:20 -08:00
clocksource
connector connector: Fix incompatible pointer type warning 2009-10-06 01:39:51 -07:00
cpufreq [CPUFREQ] Fix stale cpufreq_cpu_governor pointer 2009-11-17 23:15:04 -05:00
cpuidle drivers/cpuidle/governors/menu.c: fix undefined reference to `__udivdi3' 2010-01-18 10:19:31 -08:00
crypto crypto: padlock-aes - Use the correct mask when checking whether copying is required 2009-11-03 10:32:03 -05:00
dca
dio
dma ioat2,3: put channel hardware in known state at init 2010-01-06 15:03:59 -08:00
edac edac: i5000_edac critical fix panic out of bounds 2010-01-22 15:18:15 -08:00
eisa
firewire firewire: ohci: fix crashes with TSB43AB23 on 64bit systems 2010-02-09 04:50:42 -08:00
firmware DMI: allow omitting ident strings in DMI tables 2010-01-28 15:01:52 -08:00
gpio gpio: Langwell GPIO driver bugfixes 2009-12-01 16:32:19 -08:00
gpu drm/i915: Selectively enable self-reclaim 2010-02-09 04:50:42 -08:00
hid HID: fixup quirk for NCR devices 2010-01-28 15:01:20 -08:00
hwmon hwmon: (fschmd) Fix a memleak on multiple opens of /dev/watchdog 2010-01-28 15:02:27 -08:00
i2c i2c/pca: Don't use *_interruptible 2010-01-22 15:18:35 -08:00
ide slc90e66: fix UDMA handling 2009-12-18 14:05:04 -08:00
idle
ieee1394 headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
ieee802154 ieee802154: dont leak skbs in ieee802154_fake_xmit() 2009-11-19 13:16:21 -08:00
infiniband IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc() 2010-01-28 15:02:51 -08:00
input Input: i8042 - add Dritek quirk for Acer Aspire 5610. 2010-01-28 15:01:58 -08:00
isdn Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-18 14:54:45 -08:00
leds leds-gpio: fix possible crash on OF device unbinding 2009-11-16 11:50:42 +00:00
lguest lguest: fix bug in setting guest GDT entry 2010-01-06 15:05:19 -08:00
macintosh powerpc/therm_adt746x: Record pwm invert bit at module load time] 2009-12-18 14:04:32 -08:00
mca
md md: fix small irregularity with start_ro module parameter 2010-01-28 15:02:18 -08:00
media V4L/DVB (13826): uvcvideo: Fix controls blacklisting 2010-01-28 15:02:19 -08:00
memstick memstick: move dev_dbg 2009-09-24 07:21:05 -07:00
message mptsas: Fix issue with chain pools allocation on katmai 2010-02-09 04:50:41 -08:00
mfd mfd: WM835x GPIO direction register is not locked 2010-01-22 15:18:18 -08:00
misc SCSI: enclosure: fix oops while iterating enclosure_status array 2010-01-25 10:49:37 -08:00
mmc mmc_block: fix queue cleanup 2010-01-18 10:19:36 -08:00
mtd UBI: initialise update marker 2010-01-28 15:02:34 -08:00
net iwlwifi: Fix throughput stall issue in HT mode for 5000 2010-01-28 15:02:56 -08:00
nubus
of of: Remove nested function 2009-10-15 09:58:27 -06:00
oprofile oprofile: warn on freeing event buffer too early 2009-10-09 21:32:05 +02:00
parisc
parport sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
pci PCI: AER: fix aer inject result in kernel oops 2010-01-28 15:01:51 -08:00
pcmcia PCI/cardbus: Add a fixup hook and fix powerpc 2010-01-22 15:18:26 -08:00
platform asus-laptop: add Lenovo SL hotkey support 2010-01-22 15:18:29 -08:00
pnp ACPI: remove acpi_device.flags.hardware_id 2009-09-25 15:09:48 -04:00
power
pps pps: events reporting fix up 2009-11-12 07:26:01 -08:00
ps3
rapidio
regulator regulator: Initialise wm831x structure pointor for ISINK driver 2009-12-02 19:37:16 +00:00
rtc rtc_cmos: convert shutdown to new pnp_driver->shutdown 2010-01-18 10:19:29 -08:00
s390 netiucv: displayed TX bytes value much too high 2010-01-28 15:02:24 -08:00
sbus
scsi scsi_lib: Fix bug in completion of bidi commands 2010-02-09 04:50:41 -08:00
serial serial: 8250_pnp: use wildcard for serial Wacom tablets 2010-01-25 10:49:24 -08:00
sfi SFI: remove __init from sfi_verify_table 2009-10-03 01:16:12 -04:00
sh
sn
spi SPI: spi_txx9: Fix bit rate calculation 2009-12-02 23:58:32 +00:00
ssb ssb: Fix range check in sprom write 2009-12-18 14:03:24 -08:00
staging Staging: hv: fix smp problems in the hyperv core code 2010-01-25 10:49:15 -08:00
tc
telephony
thermal acpi: thermal: Add EOL to the trip_point_N_type strings 2009-11-05 17:33:24 -05:00
uio uio: pm_runtime_disable is needed if failed 2009-11-13 11:36:00 +09:00
usb USB: ftdi_sio: add USB device ID's for B&B Electronics line 2010-01-28 15:00:54 -08:00
uwb headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
video revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC Framebuffer" 2010-01-22 15:17:59 -08:00
virtio virtio: order used ring after used index read 2009-10-29 08:50:37 +10:30
vlynq drivers/vlynq/vlynq.c: fix resource size off by 1 error 2009-09-24 07:21:05 -07:00
w1 ds2482: Discard obsolete detect method 2009-10-04 22:53:41 +02:00
watchdog iTCO_wdt: Add Intel Cougar Point and PCH DeviceIDs 2010-01-28 15:02:14 -08:00
xen xen: fix hang on suspend. 2010-01-18 10:19:44 -08:00
zorro
Kconfig
Makefile Merge git://git.infradead.org/mtd-2.6 2009-09-23 10:07:49 -07:00