linux/drivers/thunderbolt
Mario Limonciello 468c49f447 thunderbolt: Disable interrupt auto clear for rings
When interrupt auto clear is programmed, any read to the interrupt
status register will clear all interrupts.  If two interrupts have
come in before one can be serviced then this will cause lost interrupts.

On AMD USB4 routers this has manifested in odd problems particularly
with long strings of control tranfers such as reading the DROM via bit
banging.

Instead of clearing interrupts automatically, clear the bit corresponding
to the given ring's interrupt in the ISR.

Fixes: 7a1808f82a ("thunderbolt: Handle ring interrupt by reading interrupt status register")
Cc: Sanju Mehta <Sanju.Mehta@amd.com>
Cc: stable@vger.kernel.org
Tested-by: Anson Tsao <anson.tsao@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
2023-03-20 09:38:40 +02:00
..
acpi.c thunderbolt: Refactor tb_acpi_add_link() 2023-01-04 09:44:22 +02:00
cap.c thunderbolt: cap: Fix kernel-doc formatting issue 2021-01-28 12:33:18 +03:00
ctl.c thunderbolt: Add support for DisplayPort bandwidth allocation mode 2023-01-17 11:37:16 +02:00
ctl.h thunderbolt: Add support for DisplayPort bandwidth allocation mode 2023-01-17 11:37:16 +02:00
debugfs.c thunderbolt: Fix memory leak in margining 2023-03-13 11:54:14 +02:00
dma_port.c thunderbolt: Use generic tb_nvm_[read|write]_data() for Thunderbolt 2/3 devices 2021-05-31 14:37:54 +03:00
dma_port.h
dma_test.c thunderbolt: Allow multiple DMA tunnels over a single XDomain connection 2021-03-18 18:25:31 +03:00
domain.c thunderbolt: Convert to use sysfs_emit()/sysfs_emit_at() APIs 2022-09-24 09:22:01 +03:00
eeprom.c thunderbolt: Rename EEPROM handling bits to match USB4 spec 2022-03-04 17:10:36 +03:00
icm.c thunderbolt: Changes for v6.1 merge window 2022-09-30 13:44:59 +02:00
Kconfig thunderbolt: Changes for v6.1 merge window 2022-09-30 13:44:59 +02:00
lc.c thunderbolt: Add internal xHCI connect flows for Thunderbolt 3 devices 2022-02-02 13:56:51 +03:00
Makefile thunderbolt: build kunit tests without structleak plugin 2021-10-06 17:53:49 -06:00
nhi_ops.c thunderbolt: Software CM only should set force power in Tiger Lake 2020-09-03 12:06:40 +03:00
nhi_regs.h thunderbolt: Disable interrupt auto clear for rings 2023-03-20 09:38:40 +02:00
nhi.c thunderbolt: Disable interrupt auto clear for rings 2023-03-20 09:38:40 +02:00
nhi.h thunderbolt: Changes for v6.1 merge window 2022-09-30 13:44:59 +02:00
nvm.c thunderbolt: Add support for ASMedia NVM image format 2022-09-07 09:06:51 +03:00
path.c thunderbolt: Dump path config space entries during discovery 2022-04-19 10:26:13 +03:00
property.c thunderbolt: Add tb_property_copy_dir() 2021-03-18 18:25:31 +03:00
quirks.c thunderbolt: Limit USB3 bandwidth of certain Intel USB4 host routers 2023-03-13 11:54:31 +02:00
retimer.c thunderbolt: Add missing UNSET_INBOUND_SBTX for retimer access 2023-03-13 11:54:20 +02:00
sb_regs.h thunderbolt: Add missing UNSET_INBOUND_SBTX for retimer access 2023-03-13 11:54:20 +02:00
switch.c thunderbolt: Call tb_check_quirks() after initializing adapters 2023-03-13 11:54:25 +02:00
tb_msgs.h thunderbolt: Add support for DisplayPort bandwidth allocation mode 2023-01-17 11:37:16 +02:00
tb_regs.h thunderbolt: Add functions to support DisplayPort bandwidth allocation mode 2023-01-17 11:37:05 +02:00
tb.c thunderbolt: Changes for v6.3 merge window 2023-02-08 12:49:26 +01:00
tb.h thunderbolt: Limit USB3 bandwidth of certain Intel USB4 host routers 2023-03-13 11:54:31 +02:00
test.c thunderbolt: test: Use kunit_test_suite() macro 2022-07-11 17:13:21 -06:00
tmu.c thunderbolt: Change TMU mode to HiFi uni-directional once DisplayPort tunneled 2022-06-06 12:24:56 +03:00
tunnel.c thunderbolt: Changes for v6.3 merge window 2023-02-08 12:49:26 +01:00
tunnel.h thunderbolt: Add missing kernel-doc comment to tb_tunnel_maximum_bandwidth() 2023-01-27 08:25:59 +02:00
usb4_port.c thunderbolt: Add wake on connect/disconnect on USB4 ports 2022-11-07 14:36:47 +02:00
usb4.c thunderbolt: Use scale field when allocating USB3 bandwidth 2023-03-13 11:54:41 +02:00
xdomain.c driver core: make struct device_type.uevent() take a const * 2023-01-27 13:45:36 +01:00