summaryrefslogtreecommitdiff
path: root/MAINTAINERS
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2020-10-22 16:51:03 +0300
committerKalle Valo <kvalo@codeaurora.org>2020-11-02 20:17:03 +0200
commit04516706bb99889986ddfa3a769ed50d2dc7ac13 (patch)
tree283cab63b50363d25b4fca2dd490fa4941217590 /MAINTAINERS
parentddcd945e556e2cc6be8f88ef0271b56927ffbe98 (diff)
iwlwifi: pcie: limit memory read spin time
When we read device memory, we lock a spinlock, write the address we want to read from the device and then spin in a loop reading the data in 32-bit quantities from another register. As the description makes clear, this is rather inefficient, incurring a PCIe bus transaction for every read. In a typical device today, we want to read 786k SMEM if it crashes, leading to 192k register reads. Occasionally, we've seen the whole loop take over 20 seconds and then triggering the soft lockup detector. Clearly, it is unreasonable to spin here for such extended periods of time. To fix this, break the loop down into an outer and an inner loop, and break out of the inner loop if more than half a second elapsed. To avoid too much overhead, check for that only every 128 reads, though there's no particular reason for that number. Then, unlock and relock to obtain NIC access again, reprogram the start address and continue. This will keep (interrupt) latencies on the CPU down to a reasonable time. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/iwlwifi.20201022165103.45878a7e49aa.I3b9b9c5a10002915072312ce75b68ed5b3dc6e14@changeid
Diffstat (limited to 'MAINTAINERS')
0 files changed, 0 insertions, 0 deletions