linux_dsm_epyc7002/drivers/mfd
Tony Lindgren 2081572eb1 mfd: cpcap: Fix interrupt regression with regmap clear_ack
[ Upstream commit 14639a22de657eabbb776f503a816594393cc935 ]

With commit 3a6f0fb7b8 ("regmap: irq: Add support to clear ack
registers"), the cpcap interrupts are no longer getting acked properly
leading to a very unresponsive device with CPUs fully loaded spinning
in the threaded IRQ handlers.

To me it looks like the clear_ack commit above actually fixed a long
standing bug in regmap_irq_thread() where we unconditionally acked the
interrupts earlier without considering ack_invert. And the issue with
cpcap started happening as we now also consider ack_invert.

Tim Harvey <tharvey@gateworks.com> tried to fix this issue earlier with
"[PATCH v2] regmap: irq: fix ack-invert", but the reading of the ack
register was considered unnecessary for just ack_invert, and we did not
have clear_ack available yet. As the cpcap irqs worked both with and
without ack_invert earlier because of the unconditional ack, the
problem remained hidden until now.

Also, looks like the earlier v3.0.8 based Motorola Android Linux kernel
does clear_ack style read-clear-write with "ireg_val & ~mreg_val" instead
of just ack_invert style write. So let's switch cpcap to use clear_ack
to fix the issue.

Fixes: 3a6f0fb7b8 ("regmap: irq: Add support to clear ack registers")
Cc: Carl Philipp Klemm <philipp@uvos.xyz>
Cc: Laxminath Kasam <lkasam@codeaurora.org>
Cc: Merlijn Wajer <merlijn@wizzup.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Sebastian Reichel <sre@kernel.org>
Cc: Tim Harvey <tharvey@gateworks.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Tested-by: Pavel Machek <pavel@ucw.cz>
Reviewed-By: Tim Harvey <tharvey@gateworks.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-12-30 11:53:16 +01:00
..
88pm80x.c
88pm800.c
88pm805.c
88pm860x-core.c
88pm860x-i2c.c
aat2870-core.c
ab3100-core.c
ab3100-otp.c
ab8500-core.c
ab8500-debugfs.c
ab8500-sysctrl.c
abx500-core.c
ac100.c
act8945a.c
adp5520.c
altera-a10sr.c
altera-sysmgr.c
arizona-core.c
arizona-i2c.c
arizona-irq.c
arizona-spi.c
arizona.h
as3711.c
as3722.c
asic3.c
at91-usart.c
atmel-flexcom.c
atmel-hlcdc.c
atmel-smc.c
axp20x-i2c.c mfd: axp20x: Allow the AXP803 to be probed by I2C 2020-08-13 07:49:52 +01:00
axp20x-rsb.c
axp20x.c
bcm590xx.c
bcm2835-pm.c
bd9571mwv.c
cros_ec_dev.c
cs47l15-tables.c
cs47l24-tables.c
cs47l35-tables.c
cs47l85-tables.c
cs47l90-tables.c
cs47l92-tables.c
cs5535-mfd.c
da903x.c
da9052-core.c
da9052-i2c.c
da9052-irq.c
da9052-spi.c
da9055-core.c
da9055-i2c.c
da9062-core.c
da9063-core.c mfd: da9063: Fix revision handling to correctly select reg tables 2020-08-13 07:49:47 +01:00
da9063-i2c.c mfd: da9063: Add support for latest DA silicon revision 2020-08-13 07:49:50 +01:00
da9063-irq.c
da9150-core.c
davinci_voicecodec.c
db8500-prcmu.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
dbx500-prcmu-regs.h
dln2.c mfd: dln2: Run event handler loop under spinlock 2020-08-13 07:50:56 +01:00
dm355evm_msp.c mfd: dm355evm_msp: Convert LEDs to GPIO descriptor table 2020-09-30 16:25:03 +01:00
ene-kb3930.c mfd: ene-kb3930: Add driver for ENE KB3930 Embedded Controller 2020-09-30 16:24:54 +01:00
exynos-lpass.c
ezx-pcap.c
fsl-imx25-tsadc.c
gateworks-gsc.c
hi655x-pmic.c
hi6421-pmic-core.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
htc-i2cpld.c mfd: htc-i2cpld: Add the missed i2c_put_adapter() in htcpld_register_chip_i2c() 2020-12-30 11:53:16 +01:00
htc-pasic3.c
intel_msic.c
intel_pmc_bxt.c
intel_quark_i2c_gpio.c
intel_soc_pmic_bxtwc.c
intel_soc_pmic_chtdc_ti.c
intel_soc_pmic_chtwc.c
intel_soc_pmic_core.c
intel_soc_pmic_core.h
intel_soc_pmic_crc.c
intel_soc_pmic_mrfld.c mfd: intel_soc_pmic_mrfld: Simplify the return expression of intel_scu_ipc_dev_iowrite8() 2020-08-13 07:50:05 +01:00
intel-lpss-acpi.c
intel-lpss-pci.c mfd: intel-lpss: Add device IDs for UART ports for Lakefield 2020-09-30 16:25:06 +01:00
intel-lpss.c
intel-lpss.h
intel-m10-bmc.c mfd: intel-m10-bmc: Add Intel MAX 10 BMC chip support for Intel FPGA PAC 2020-09-30 17:46:21 +01:00
ioc3.c
ipaq-micro.c
iqs62x.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
janz-cmodio.c
Kconfig mfd: MFD_SL28CPLD should depend on ARCH_LAYERSCAPE 2020-12-30 11:53:16 +01:00
kempld-core.c mfd: kempld-core: Fix unused variable 'kempld_acpi_table' when !ACPI 2020-10-05 09:11:40 +01:00
khadas-mcu.c mfd: khadas-mcu: Fix randconfig 'unused-const-variable' warning 2020-09-30 16:24:50 +01:00
lm3533-core.c
lm3533-ctrlbank.c
lochnagar-i2c.c
lp873x.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
lp3943.c
lp8788-irq.c
lp8788.c
lp87565.c mfd: lp87565: Add LP87524-Q1 variant 2020-09-30 16:25:29 +01:00
lpc_ich.c
lpc_sch.c
madera-core.c mfd: madera: Simplify with dev_err_probe() 2020-09-30 16:24:57 +01:00
madera-i2c.c
madera-spi.c
madera.h
Makefile mfd: intel-m10-bmc: Add Intel MAX 10 BMC chip support for Intel FPGA PAC 2020-09-30 17:46:21 +01:00
max8907.c
max8925-core.c
max8925-i2c.c
max8997-irq.c
max8997.c
max8998-irq.c
max8998.c
max14577.c mfd: max14577: Remove redundant initialization of variable current_bits 2020-08-13 07:50:04 +01:00
max77620.c
max77650.c
max77686.c
max77693.c
max77843.c
mc13xxx-core.c
mc13xxx-i2c.c
mc13xxx-spi.c
mc13xxx.h
mcp-core.c
mcp-sa11x0.c
menelaus.c
menf21bmc.c
mfd-core.c mfd: mfd-core: Ensure disabled devices are ignored without error 2020-08-28 09:51:41 +01:00
motorola-cpcap.c mfd: cpcap: Fix interrupt regression with regmap clear_ack 2020-12-30 11:53:16 +01:00
mp2629.c
mt6358-irq.c
mt6360-core.c mfd: mt6360: Remove unused include <linux/version.h> 2020-09-30 16:25:22 +01:00
mt6397-core.c
mt6397-irq.c
mxs-lradc.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
omap-usb-host.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
omap-usb-tll.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
omap-usb.h
palmas.c
pcf50633-adc.c
pcf50633-core.c
pcf50633-gpio.c
pcf50633-irq.c
qcom_rpm.c
qcom-pm8xxx.c
qcom-spmi-pmic.c
rave-sp.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
rc5t583-irq.c
rc5t583.c
rdc321x-southbridge.c
retu-mfd.c
rk808.c
rn5t618.c mfd: rn5t618: Add a power supply subdevice 2020-09-30 16:24:48 +01:00
rohm-bd718x7.c
rohm-bd70528.c
rohm-bd71828.c
rt5033.c
sec-core.c
sec-irq.c
si476x-cmd.c
si476x-i2c.c
si476x-prop.c
simple-mfd-i2c.c mfd: simple-mfd-i2c: Add sl28cpld support 2020-09-17 15:57:26 +01:00
sky81452.c
sm501.c mfd: sm501: Fix leaks in probe() 2020-09-30 16:25:19 +01:00
sprd-sc27xx-spi.c mfd: sprd: Add wakeup capability for PMIC IRQ 2020-09-30 16:25:07 +01:00
ssbi.c
sta2x11-mfd.c
stm32-lptimer.c
stm32-timers.c
stmfx.c mfd: stmfx: Fix dev_err_probe() call in stmfx_chip_init() 2020-12-30 11:53:16 +01:00
stmpe-i2c.c
stmpe-spi.c
stmpe.c
stmpe.h
stpmic1.c
stw481x.c
sun4i-gpadc.c
sun6i-prcm.c
syscon.c - New Drivers 2020-10-14 15:56:58 -07:00
t7l66xb.c
tc3589x.c
tc6387xb.c
tc6393xb.c
ti_am335x_tscadc.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
ti-lmu.c
timberdale.c
timberdale.h
tmio_core.c
tps6105x.c
tps6507x.c
tps6586x.c
tps65010.c
tps65086.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
tps65090.c
tps65217.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
tps65218.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
tps65910.c
tps65911-comparator.c
tps65912-core.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
tps65912-i2c.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
tps65912-spi.c mfd: Replace HTTP links with HTTPS ones 2020-08-13 07:50:59 +01:00
tps68470.c
tps80031.c
tqmx86.c
twl4030-audio.c
twl4030-irq.c
twl4030-power.c
twl6030-irq.c
twl6040.c
twl-core.c
twl-core.h
ucb1x00-assabet.c
ucb1x00-core.c
ucb1x00-ts.c
ucb1400_core.c
vexpress-sysreg.c
viperboard.c
vx855.c
wcd934x.c mfd: wcd934x: Simplify with dev_err_probe() 2020-09-30 16:25:01 +01:00
wl1273-core.c
wm97xx-core.c
wm831x-auxadc.c
wm831x-core.c
wm831x-i2c.c
wm831x-irq.c
wm831x-otp.c
wm831x-spi.c
wm5102-tables.c
wm5110-tables.c
wm8350-core.c
wm8350-gpio.c
wm8350-i2c.c
wm8350-irq.c
wm8350-regmap.c
wm8400-core.c
wm8994-core.c
wm8994-irq.c
wm8994-regmap.c
wm8994.h
wm8997-tables.c
wm8998-tables.c