]> git.baikalelectronics.ru Git - kernel.git/commit
IB/hfi1: Fix another case where pq is left on waitlist
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Mon, 4 May 2020 13:09:17 +0000 (09:09 -0400)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 12 May 2020 14:47:48 +0000 (11:47 -0300)
commitfd2c583ba400dd4b2b8b3b20a5c9577be698af78
treecfeed50711b4c4dd5bc64dc755fa0ea73b308a94
parent47f114475445daf5700f336720ac879a79dd73b6
IB/hfi1: Fix another case where pq is left on waitlist

The commit noted below fixed a case where a pq is left on the sdma wait
list.

It however missed another case.

user_sdma_send_pkts() has two calls from hfi1_user_sdma_process_request().

If the first one fails as indicated by -EBUSY, the pq will be placed on
the waitlist as by design.

If the second call then succeeds, the pq is still on the waitlist setting
up a race with the interrupt handler if a subsequent request uses a
different SDMA engine

Fix by deleting the first call.

The use of pcount and the intent to send a short burst of packets followed
by the larger balance of packets was never correctly implemented, because
the two calls always send pcount packets no matter what.  A subsequent
patch will correct that issue.

Fixes: d87036852b54 ("IB/hfi1: Ensure pq is not left on waitlist")
Link: https://lore.kernel.org/r/20200504130917.175613.43231.stgit@awfm-01.aw.intel.com
Cc: <stable@vger.kernel.org>
Reviewed-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/hfi1/user_sdma.c