cxl/pci: Defer mailbox status checks to command timeouts
authorDan Williams <dan.j.williams@intel.com>
Mon, 24 Jan 2022 00:28:54 +0000 (16:28 -0800)
committerDan Williams <dan.j.williams@intel.com>
Wed, 9 Feb 2022 06:57:27 +0000 (22:57 -0800)
commit4f195ee73ade1adf8326e5ed5fb271da51778991
treeded85a00fd0ef1093100ac906c639dc541d2962d
parent229e8828c206be8fa0a159f6ff71e3b1a0484233
cxl/pci: Defer mailbox status checks to command timeouts

Device status can change without warning at any point in time. This
effectively means that no amount of status checking before a command is
submitted can guarantee that the device is not in an error condition
when the command is later submitted. The clearest signal that a device
is not able to process commands is if it fails to process commands.

With the above understanding in hand, update cxl_pci_setup_mailbox() to
validate the readiness of the mailbox once at the beginning of time, and
then use timeouts and busy sequencing errors as the only occasions to
report status.

Just as before, unless and until the driver gains a reset recovery path,
doorbell clearing failures by the device are fatal to mailbox
operations.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/r/164298413480.3018233.9643395389297971819.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/pci.c