linux/drivers
Haris Okanovic fdeac550bc tpm_tis: fix stall after iowrite*()s
ioread8() operations to TPM MMIO addresses can stall the cpu when
immediately following a sequence of iowrite*()'s to the same region.

For example, cyclitest measures ~400us latency spikes when a non-RT
usermode application communicates with an SPI-based TPM chip (Intel Atom
E3940 system, PREEMPT_RT kernel). The spikes are caused by a
stalling ioread8() operation following a sequence of 30+ iowrite8()s to
the same address. I believe this happens because the write sequence is
buffered (in cpu or somewhere along the bus), and gets flushed on the
first LOAD instruction (ioread*()) that follows.

The enclosed change appears to fix this issue: read the TPM chip's
access register (status code) after every iowrite*() operation to
amortize the cost of flushing data to chip across multiple instructions.

Signed-off-by: Haris Okanovic <haris.okanovic@ni.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
2023-03-25 04:21:35 +03:00
..
accessibility
acpi ACPICA: Always create namespace nodes using acpi_ns_create_node() 2022-05-12 12:23:41 +02:00
amba ARM: 9120/1: Revert "amba: make use of -1 IRQs warn" 2021-11-06 13:59:45 +01:00
android binder: fix handling of error during copy 2022-01-27 09:19:38 +01:00
ata ata: pata_marvell: Check the 'bmdma_addr' beforing reading 2022-04-27 13:50:48 +02:00
atm atm: eni: Add check for dma_map_single 2022-03-23 09:12:07 +01:00
auxdisplay auxdisplay: ht16k33: Fix frame buffer device blanking 2021-11-17 09:48:45 +01:00
base arch_topology: Do not set llc_sibling if llc_id is invalid 2022-05-09 09:03:22 +02:00
bcma bcma: Fix memory leak for internally-handled cores 2021-09-15 09:47:37 +02:00
block drivers/zram: Don't disable preemption in zcomp_stream_get/put() 2023-03-25 04:21:35 +03:00
bluetooth Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt 2022-04-15 14:18:16 +02:00
bus bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create() 2022-05-09 09:03:25 +02:00
cdrom cdrom: gdrom: initialize global variable at init time 2021-05-26 12:05:19 +02:00
char tpm_tis: fix stall after iowrite*()s 2023-03-25 04:21:35 +03:00
clk clk: sunxi: sun9i-mmc: check return value after calling platform_get_resource() 2022-05-09 09:03:25 +02:00
clocksource clocksource: TCLIB: Allow higher clock rates for clock events 2023-03-25 04:21:34 +03:00
connector connector/cn_proc: Protect send_msg() with a local lock on RT 2023-03-25 04:21:35 +03:00
counter counter: 104-quad-8: Return error when invalid mode during ceiling_write 2021-09-15 09:47:34 +02:00
cpufreq cpufreq: fix memory leak in sun50i_cpufreq_nvmem_probe 2022-05-09 09:03:25 +02:00
cpuidle cpuidle: Fix kobject memory leaks in error paths 2021-11-17 09:48:36 +01:00
crypto crypto: ccp - ccp_dmaengine_unregister release dma channels 2022-04-15 14:18:05 +02:00
dax dax: make sure inodes are flushed before destroy cache 2022-04-15 14:18:12 +02:00
dca
devfreq PM / devfreq: Use more accurate returned new_freq as resume_freq 2021-05-14 09:44:20 +02:00
dio
dma dma: at_xdmac: fix a missing check on list iterator 2022-04-27 13:50:48 +02:00
dma-buf dma-buf: Use seqlock_t instread disabling preemption 2023-03-25 04:21:20 +03:00
edac EDAC/synopsys: Read the error count from the correct register 2022-04-27 13:50:48 +02:00
eisa
extcon extcon: intel-mrfld: Sync hardware and software state on init 2021-07-19 08:53:16 +02:00
firewire firewire: core: extend card->lock in fw_core_handle_bus_reset 2022-05-12 12:23:41 +02:00
firmware efi: Allow efi=runtime 2023-03-25 04:21:21 +03:00
fpga fpga: machxo2-spi: Fix missing error code in machxo2_write_complete() 2021-09-30 10:09:23 +02:00
fsi fsi/sbefifo: Fix reset timeout 2021-07-14 16:53:42 +02:00
gnss
gpio gpiolib: of: fix bounds check for 'gpio-reserved-ranges' 2022-05-12 12:23:40 +02:00
gpu drm/i915/gt: use a LOCAL_IRQ_LOCK in __timeline_mark_lock() 2023-03-25 04:21:30 +03:00
greybus greybus: svc: fix an error handling bug in gb_svc_hello() 2022-04-15 14:17:58 +02:00
hid HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports 2022-04-15 14:18:12 +02:00
hsi HSI: core: Fix return freed object in hsi_new_client 2022-01-27 09:19:41 +01:00
hv random: Make it work on rt 2023-03-25 04:21:29 +03:00
hwmon hwmon: (adt7470) Fix warning on module removal 2022-05-12 12:23:44 +02:00
hwspinlock
hwtracing coresight: Fix TRCCONFIGR.QE sysfs interface 2022-04-15 14:17:57 +02:00
i2c i2c: pasemi: Wait for write xfers to finish 2022-04-20 09:19:39 +02:00
i3c Revert "i3c master: fix missing destroy_workqueue() on error in i3c_master_register" 2021-05-14 09:44:15 +02:00
ide
idle
iio iio: magnetometer: ak8975: Fix the error handling in ak8975_power_on() 2022-05-09 09:03:21 +02:00
infiniband RDMA/siw: Fix a condition race issue in MPA request processing 2022-05-12 12:23:45 +02:00
input Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads" 2022-04-15 14:18:00 +02:00
interconnect interconnect: core: fix error return code of icc_link_destroy() 2021-04-16 11:46:37 +02:00
iommu iommu/arm-smmu-v3: fix event handling soft lockup 2022-04-15 14:18:33 +02:00
ipack ipack: ipoctal: fix module reference leak 2021-10-06 15:42:36 +02:00
irqchip irqchip/gic-v3: Fix GICR_CTLR.RWP polling 2022-04-15 14:18:40 +02:00
isdn mISDN: change function names to avoid conflicts 2022-01-11 15:23:33 +01:00
leds leds: trigger: disable CPU trigger on -RT 2023-03-25 04:21:33 +03:00
lightnvm lightnvm: disable the subsystem 2022-05-09 09:03:20 +02:00
macintosh
mailbox mailbox: tegra-hsp: Flush whole channel 2022-04-15 14:18:01 +02:00
mcb mcb: fix error handling in mcb_alloc_bus() 2021-09-30 10:09:22 +02:00
md md: raid5: Make raid5_percpu handling RT aware 2023-03-25 04:21:28 +03:00
media Use CONFIG_PREEMPTION 2023-03-25 04:21:18 +03:00
memory memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe 2022-04-20 09:19:34 +02:00
memstick memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() 2021-11-17 09:48:37 +01:00
message
mfd mfd: asic3: Add missing iounmap() on error asic3_mfd_probe 2022-04-15 14:18:17 +02:00
misc kgdbts: fix return value of __setup handler 2022-04-15 14:18:20 +02:00
mmc mmc: rtsx: add 74 Clocks in power on flow 2022-05-12 12:23:51 +02:00
mtd mtd: rawnand: Fix return value check of wait_for_completion_timeout 2022-05-09 09:03:24 +02:00
mux
net completion: Use simple wait queues 2023-03-25 04:21:23 +03:00
nfc nfc: nfcmrvl: main: reorder destructive operations in nfcmrvl_nci_unregister_dev to avoid bugs 2022-05-12 12:23:44 +02:00
ntb NTB: perf: Fix an error code in perf_setup_inbuf() 2021-09-22 12:26:44 +02:00
nubus
nvdimm libnvdimm/pmem: Fix crash triggered when I/O in-flight during unbind 2021-10-06 15:42:38 +02:00
nvme nvme-rdma: fix possible use-after-free in transport error_recovery work 2022-02-23 11:59:56 +01:00
nvmem nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells 2021-10-20 11:40:14 +02:00
of of: Rework and simplify phandle cache to use a fixed size 2023-03-25 04:21:19 +03:00
opp opp: Fix return in _opp_add_static_v2() 2021-11-17 09:48:44 +01:00
oprofile
parisc parisc: Fix CPU affinity for Lasi, WAX and Dino chips 2022-04-15 14:18:36 +02:00
parport parport: remove non-zero check on count 2021-09-22 12:26:36 +02:00
pci pci/switchtec: Don't use completion's wait queue 2023-03-25 04:21:23 +03:00
pcmcia pcmcia: fix setting of kthread task states 2022-01-27 09:19:37 +01:00
perf arm_pmu: Validate single/group leader events 2022-04-27 13:50:50 +02:00
phy phy: ti: Add missing pm_runtime_disable() in serdes_am654_probe 2022-05-09 09:03:24 +02:00
pinctrl pinctrl: pistachio: fix use of irq_of_parse_and_map() 2022-05-09 09:03:25 +02:00
platform platform/x86: samsung-laptop: Fix an unsigned comparison which can never be negative 2022-04-27 13:50:47 +02:00
pnp
power power: supply: axp288-charger: Set Vhold to 4.4V 2022-04-15 14:18:33 +02:00
powercap
pps
ps3
ptp ptp: replace snprintf with sysfs_emit 2022-04-15 14:18:32 +02:00
pwm pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add() 2022-04-15 14:18:17 +02:00
rapidio rapidio: handle create_workqueue() failure 2021-05-26 12:05:17 +02:00
ras RAS/CEC: Correct ce_add_elem()'s returned values 2021-04-14 08:24:18 +02:00
regulator regulator: wm8994: Add an off-on delay for WM8994 variant 2022-04-20 09:19:37 +02:00
remoteproc remoteproc: qcom_wcnss: Add missing of_node_put() in wcnss_alloc_memory_region 2022-04-15 14:18:19 +02:00
reset reset: tegra-bpmp: Restore Handle errors in BPMP response 2022-04-27 13:50:47 +02:00
rpmsg rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev 2022-02-01 17:24:36 +01:00
rtc rtc: wm8350: Handle error for wm8350_register_irq 2022-04-15 14:18:31 +02:00
s390 s390/dasd: Fix read inconsistency for ESE DASD devices 2022-05-12 12:23:43 +02:00
sbus
scsi scsi/fcoe: Make RT aware. 2023-03-25 04:21:28 +03:00
sfi
sh maple: fix wrong return value of maple_bus_init(). 2021-11-26 10:47:17 +01:00
siox
slimbus slimbus: ngd: reset dma setup during runtime pm 2021-08-26 08:36:21 -04:00
soc soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probe 2022-04-15 14:18:07 +02:00
soundwire soundwire: stream: Fix test for DP prepare complete 2021-07-14 16:53:45 +02:00
spi spi: atmel-quadspi: Fix the buswidth adjustment between spi-mem and controller 2022-04-27 13:50:50 +02:00
spmi spmi: spmi-pmic-arb: Fix hw_irq overflow 2021-03-04 10:26:49 +01:00
ssb ssb: Fix error return code in ssb_bus_scan() 2021-07-14 16:53:29 +02:00
staging staging: ion: Prevent incorrect reference counting behavour 2022-04-27 13:50:50 +02:00
target scsi: target: tcmu: Fix possible page UAF 2022-04-20 09:19:36 +02:00
tc
tee optee: use driver internal tee_context for some rpc 2022-03-02 11:41:04 +01:00
thermal thermal/x86_pkg_temp: Make pkg_temp_lock a raw_spinlock_t 2023-03-25 04:21:18 +03:00
thunderbolt thunderbolt: dma_port: Fix NVM read buffer bounds and offset issue 2021-06-03 08:59:03 +02:00
tty tty: serial: pl011: explicitly initialize the flags variable 2023-03-25 04:21:33 +03:00
uio uio_hv_generic: Fix a memory leak in error handling paths 2021-05-26 12:05:17 +02:00
usb completion: Use simple wait queues 2023-03-25 04:21:23 +03:00
vfio vfio: Use config not menuconfig for VFIO_NOIOMMU 2021-09-22 12:26:23 +02:00
vhost tuntap: add sanity checks about msg_controllen in sendmsg 2022-04-15 14:18:34 +02:00
video Use CONFIG_PREEMPTION 2023-03-25 04:21:18 +03:00
virt
virtio virtio: acknowledge all features before access 2022-03-16 13:21:48 +01:00
visorbus visorbus: fix error return code in visorchipset_init() 2021-07-14 16:53:42 +02:00
vlynq
vme
w1 w1: w1_therm: fixes w1_seq for ds28ea00 sensors 2022-04-15 14:18:35 +02:00
watchdog ar7: fix kernel builds for compiler test 2021-11-17 09:48:46 +01:00
xen Use CONFIG_PREEMPTION 2023-03-25 04:21:18 +03:00
zorro
Kconfig
Makefile