FAILED: patch "[PATCH] scsi: qedf: Fix firmware halt over suspend and resume" failed to apply to 4.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-4.19.y
git checkout FETCH_HEAD
git cherry-pick -x ef222f551e7c4e2008fc442ffc9edcd1a7fd8f63
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2023081352-pouncing-speller-9684@gregkh' --subject-prefix 'PATCH 4.19.y' HEAD^..
Possible dependencies:
ef222f551e7c ("scsi: qedf: Fix firmware halt over suspend and resume") f6b172f21999 ("scsi: qedf: Add schedule recovery handler") 6e7c8eea929e ("scsi: qedf: Implement callback for bw_update") 31696204c44c ("scsi: qedf: Add shutdown callback handler")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From ef222f551e7c4e2008fc442ffc9edcd1a7fd8f63 Mon Sep 17 00:00:00 2001
From: Nilesh Javali <[email protected]>
Date: Mon, 7 Aug 2023 15:07:24 +0530
Subject: [PATCH] scsi: qedf: Fix firmware halt over suspend and resume
While performing certain power-off sequences, PCI drivers are called to suspend and resume their underlying devices through PCI PM (power management) interface. However the hardware does not support PCI PM suspend/resume operations so system wide suspend/resume leads to bad MFW (management firmware) state which causes various follow-up errors in driver when communicating with the device/firmware.
To fix this driver implements PCI PM suspend handler to indicate unsupported operation to the PCI subsystem explicitly, thus avoiding system to go into suspended/standby mode.
drivers/scsi/qedf/qedf_main.c +18 -0
@@ -31,6 +31,7 @@ static void qedf_remove(struct pci_dev *pdev);static void qedf_shutdown (struct pci_dev *pdev);static void qedf_schedule_recovery_handler (void *dev);static void qedf_recovery_handler (struct work_struct *work); +static int qedf_suspend (struct pci_dev *pdev,pm_message_t state);/* * Driver module parameters.
@@ -3271,6 +3272,7 @@ static struct pci_driver qedf_pci_driver = { .probe = qedf_probe, .remove = qedf_remove, .shutdown = qedf_shutdown, + .suspend = qedf_suspend, };static int __qedf_probe (struct pci_dev *pdev,int mode)
@@ -4000,6 +4002,22 @@ static void qedf_shutdown(struct pci_dev *pdev)__qedf_remove (pdev,QEDF_MODE_NORMAL ); } +static int qedf_suspend (struct pci_dev *pdev,pm_message_t state) +{ +struct qedf_ctx *qedf; + +if (!pdev) { +QEDF_ERR (NULL ,"pdev is NULL.\n" ); +return -ENODEV ; + } + + qedf =pci_get_drvdata (pdev); + +QEDF_ERR (&qedf->dbg_ctx,"%s: Device does not support suspend operation\n" , __func__); + +return -EPERM ; +} +/* * Recovery handler code */