]> www.infradead.org Git - users/jedix/linux-maple.git/commit
sif: During driver load, hold back events instead of ignoring them
authorKnut Omang <knut.omang@oracle.com>
Wed, 20 Jul 2016 12:03:13 +0000 (14:03 +0200)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Wed, 27 Jul 2016 17:24:22 +0000 (10:24 -0700)
commitb933ae7019d977fd2bb5b5279d5cee79022d914d
tree329c035e499b8608115595d5704954514c062ee1
parent8f48cfbbc00ffbd4e61debf90cdcfd73ef905638
sif: During driver load, hold back events instead of ignoring them

The current semantics when a queued event is received before the driver
is done loading is to ignore it with a log warning. This was not sufficient
to implement the flush_retry_qp setup, which relies on lid change events.

Unfortunately the solution to make an exception for lid events for the
flush_retry_qp is not valid because it defeats the purpose of the
check in the first place by allowing such an event to be handled before
the data structure needed to handle it is initialized.

This commit introduces a new kernel completion that the driver completes
when the whole driver load is finished. The first EPSC event queued on the
sif work queue will now block on this completion.

This covers all the remaining cases not handled by commit
"eq: Avoid enabling interrupts on TSU EQs until the initialization is complete"
and solves the original problem that introduced the need for a fix.

Orabug: 24296729

Signed-off-by: Knut Omang <knut.omang@oracle.com>
Reviewed-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
drivers/infiniband/hw/sif/sif_dev.h
drivers/infiniband/hw/sif/sif_eq.c
drivers/infiniband/hw/sif/sif_ireg.c
drivers/infiniband/hw/sif/sif_main.c