Commit c8fc07ab authored by Lukas Wunner's avatar Lukas Wunner Committed by Dan Williams
Browse files

PCI/DOE: Deduplicate mailbox flushing



When a DOE mailbox is torn down, its workqueue is flushed once in
pci_doe_flush_mb() through a call to flush_workqueue() and subsequently
flushed once more in pci_doe_destroy_workqueue() through a call to
destroy_workqueue().

Deduplicate by dropping flush_workqueue() from pci_doe_flush_mb().

Rename pci_doe_flush_mb() to pci_doe_cancel_tasks() to more aptly
describe what it now does.

Tested-by: default avatarIra Weiny <ira.weiny@intel.com>
Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
Reviewed-by: default avatarMing Li <ming4.li@intel.com>
Reviewed-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Link: https://lore.kernel.org/r/1f009f60b326d1c6d776641d4b20aff27de0c234.1678543498.git.lukas@wunner.de


Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 0821ff8e
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -429,7 +429,7 @@ static void pci_doe_destroy_workqueue(void *mb)
	destroy_workqueue(doe_mb->work_queue);
}

static void pci_doe_flush_mb(void *mb)
static void pci_doe_cancel_tasks(void *mb)
{
	struct pci_doe_mb *doe_mb = mb;

@@ -439,9 +439,6 @@ static void pci_doe_flush_mb(void *mb)
	/* Cancel an in progress work item, if necessary */
	set_bit(PCI_DOE_FLAG_CANCEL, &doe_mb->flags);
	wake_up(&doe_mb->wq);

	/* Flush all work items */
	flush_workqueue(doe_mb->work_queue);
}

/**
@@ -498,9 +495,9 @@ struct pci_doe_mb *pcim_doe_create_mb(struct pci_dev *pdev, u16 cap_offset)

	/*
	 * The state machine and the mailbox should be in sync now;
	 * Set up mailbox flush prior to using the mailbox to query protocols.
	 * Set up cancel tasks prior to using the mailbox to query protocols.
	 */
	rc = devm_add_action_or_reset(dev, pci_doe_flush_mb, doe_mb);
	rc = devm_add_action_or_reset(dev, pci_doe_cancel_tasks, doe_mb);
	if (rc)
		return ERR_PTR(rc);