linux/drivers/macintosh
Finn Thain a646624322 via-cuda: Avoid TREQ race condition
When a read transaction completes, one of several things will happen:
a new transfer is started by the driver, a new transfer request
is raised by the Cuda (i.e. TREQ asserted), or both happen at once.

When both happen at once, there is a race condition between the TREQ test
in the read_done state and the same test in cuda_start(). Moreover, the
former test uses a stale TREQ value.

Theoretically, this can result in the undesirable outcome that the
interrupt handler completes with the state machine 'idle' when it should
instead start the next transaction.

Avoid this race by calling cuda_start() first and then confirming that it
succeeded. If not, test the current TREQ value before entering the
'reading' state.

Tested-by: Stan Johnson <userm57@yahoo.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-02-07 16:56:21 +11:00
..
ams drivers/macintosh: Delete owner assignment 2016-08-22 11:09:33 +10:00
adb-iop.c
adb.c powerpc: Move adb symbol exports next to function definitions 2014-09-25 23:14:37 +10:00
adbhid.c
ans-lcd.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
ans-lcd.h
apm_emu.c
Kconfig macintosh: Remove dependency on IDE_GD_ATA if ADB_PMU_LED_DISK is selected 2016-11-14 11:11:51 +11:00
mac_hid.c macintosh: Convert use of typedef ctl_table to struct ctl_table 2013-07-01 11:10:35 +10:00
macio_asic.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
macio_sysfs.c
macio-adb.c
Makefile macintosh: therm_pm72: delete deprecated driver 2014-12-19 19:32:47 +01:00
mediabay.c Drivers: macintosh: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
rack-meter.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
smu.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
therm_adt746x.c
therm_windtunnel.c macintosh/therm_windtunnel: Export OF module alias information 2015-08-20 16:15:20 +10:00
via-cuda.c via-cuda: Avoid TREQ race condition 2017-02-07 16:56:21 +11:00
via-macii.c
via-maciisi.c
via-pmu68k.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
via-pmu-backlight.c backlight: Remove trivial get_brightness implementations 2014-06-23 13:24:22 +01:00
via-pmu-event.c
via-pmu-event.h
via-pmu-led.c powerpc: use the new LED disk activity trigger 2016-06-27 08:58:40 +02:00
via-pmu.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
windfarm_ad7417_sensor.c Drivers: macintosh: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
windfarm_core.c windfarm: remove three exported but unused functions 2015-08-06 15:10:21 +10:00
windfarm_cpufreq_clamp.c
windfarm_fcu_controls.c Drivers: macintosh: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
windfarm_lm75_sensor.c powerpc/windfarm: Remove superfluous name casts 2013-12-05 16:06:22 +11:00
windfarm_lm87_sensor.c
windfarm_max6690_sensor.c powerpc/windfarm: Remove superfluous name casts 2013-12-05 16:06:22 +11:00
windfarm_mpu.h
windfarm_pid.c
windfarm_pid.h
windfarm_pm72.c drivers/macintosh: Delete owner assignment 2016-08-22 11:09:33 +10:00
windfarm_pm81.c macintosh: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
windfarm_pm91.c macintosh: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
windfarm_pm112.c drivers/macintosh: Delete owner assignment 2016-08-22 11:09:33 +10:00
windfarm_pm121.c macintosh/windfarm_pm121.c: Fix for possible null pointer dereference 2014-05-20 10:56:00 +10:00
windfarm_rm31.c drivers/macintosh: Delete owner assignment 2016-08-22 11:09:33 +10:00
windfarm_smu_controls.c
windfarm_smu_sat.c macintosh/windfarm: Remove obsolete cleanup for clientdata 2013-07-01 11:46:56 +10:00
windfarm_smu_sensors.c
windfarm.h windfarm: remove three exported but unused functions 2015-08-06 15:10:21 +10:00