mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-25 09:10:21 +07:00
6c15d7afbb
When the system is under heavy load, we occasionally saw a problem where the system would get a legitimate interrupt when they should be disabled. This was caused by the data_dma_cb() DMA callback unconditionally re-enabling FPGA interrupts even when data dumping is disabled. When data dumping was re-enabled, the irq handler would fire while a DMA was in progress. The "BUG_ON(priv->inflight != NULL);" during the second invocation of the DMA callback caused the system to crash. To fix the issue, the priv->enabled boolean is moved under the protection of the priv->lock spinlock. The DMA callback checks the boolean to know whether to re-enable FPGA interrupts before it returns. Now that it is fixed, the driver keeps FPGA interrupts disabled when it expects that they are disabled, fixing the bug. Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> |
||
---|---|---|
.. | ||
altera-stapl | ||
c2port | ||
carma | ||
cb710 | ||
eeprom | ||
ibmasm | ||
iwmc3200top | ||
lis3lv02d | ||
sgi-gru | ||
sgi-xp | ||
ti-st | ||
ab8500-pwm.c | ||
ad525x_dpot-i2c.c | ||
ad525x_dpot-spi.c | ||
ad525x_dpot.c | ||
ad525x_dpot.h | ||
apds990x.c | ||
apds9802als.c | ||
arm-charlcd.c | ||
atmel_pwm.c | ||
atmel_tclib.c | ||
atmel-ssc.c | ||
bh1770glc.c | ||
bh1780gli.c | ||
bmp085.c | ||
cs5535-mfgpt.c | ||
ds1682.c | ||
enclosure.c | ||
ep93xx_pwm.c | ||
fsa9480.c | ||
hmc6352.c | ||
hpilo.c | ||
hpilo.h | ||
ics932s401.c | ||
ioc4.c | ||
isl29003.c | ||
isl29020.c | ||
Kconfig | ||
kgdbts.c | ||
lkdtm.c | ||
Makefile | ||
max8997-muic.c | ||
pch_phub.c | ||
phantom.c | ||
pti.c | ||
spear13xx_pcie_gadget.c | ||
ti_dac7512.c | ||
tifm_7xx1.c | ||
tifm_core.c | ||
tsl2550.c | ||
vmw_balloon.c |