mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-11 23:27:42 +07:00
![]() The driver progress routines can call cond_resched() when
a timeslice is exhausted and irqs are enabled.
If the ULP had been holding a spin lock without disabling irqs and
the post send directly called the progress routine, the cond_resched()
could yield allowing another thread from the same ULP to deadlock
on that same lock.
Correct by replacing the current hfi1_do_send() calldown with a unique
one for post send and adding an argument to hfi1_do_send() to indicate
that the send engine is running in a thread. If the routine is not
running in a thread, avoid calling cond_resched().
CC: <stable@vger.kernel.org> # 4.7.x-
Fixes: Commit
|
||
---|---|---|
.. | ||
affinity.c | ||
affinity.h | ||
aspm.h | ||
chip_registers.h | ||
chip.c | ||
chip.h | ||
common.h | ||
debugfs.c | ||
debugfs.h | ||
device.c | ||
device.h | ||
driver.c | ||
efivar.c | ||
efivar.h | ||
eprom.c | ||
eprom.h | ||
file_ops.c | ||
firmware.c | ||
hfi.h | ||
init.c | ||
intr.c | ||
iowait.h | ||
Kconfig | ||
mad.c | ||
mad.h | ||
Makefile | ||
mmu_rb.c | ||
mmu_rb.h | ||
opa_compat.h | ||
pcie.c | ||
pio_copy.c | ||
pio.c | ||
pio.h | ||
platform.c | ||
platform.h | ||
qp.c | ||
qp.h | ||
qsfp.c | ||
qsfp.h | ||
rc.c | ||
ruc.c | ||
sdma_txreq.h | ||
sdma.c | ||
sdma.h | ||
sysfs.c | ||
trace_ctxts.h | ||
trace_dbg.h | ||
trace_ibhdrs.h | ||
trace_misc.h | ||
trace_rc.h | ||
trace_rx.h | ||
trace_tx.h | ||
trace.c | ||
trace.h | ||
uc.c | ||
ud.c | ||
user_exp_rcv.c | ||
user_exp_rcv.h | ||
user_pages.c | ||
user_sdma.c | ||
user_sdma.h | ||
verbs_txreq.c | ||
verbs_txreq.h | ||
verbs.c | ||
verbs.h | ||
vnic_main.c | ||
vnic_sdma.c | ||
vnic.h |