get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/770014/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 770014,
    "url": "http://patchwork.ozlabs.org/api/patches/770014/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20170601224051.6106-14-jacob.e.keller@intel.com/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api",
        "name": "Intel Wired Ethernet development",
        "link_name": "intel-wired-lan",
        "list_id": "intel-wired-lan.osuosl.org",
        "list_email": "intel-wired-lan@osuosl.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20170601224051.6106-14-jacob.e.keller@intel.com>",
    "list_archive_url": null,
    "date": "2017-06-01T22:40:49",
    "name": "[13/15] fm10k: use generic PM hooks instead of legacy PCIe power hooks",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "91215603eb005819d34080f9b8c1cc9b4c5fba55",
    "submitter": {
        "id": 9784,
        "url": "http://patchwork.ozlabs.org/api/people/9784/?format=api",
        "name": "Jacob Keller",
        "email": "jacob.e.keller@intel.com"
    },
    "delegate": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/users/68/?format=api",
        "username": "jtkirshe",
        "first_name": "Jeff",
        "last_name": "Kirsher",
        "email": "jeffrey.t.kirsher@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20170601224051.6106-14-jacob.e.keller@intel.com/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/770014/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/770014/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Received": [
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3wf2Pn6H7gz9sN8\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  2 Jun 2017 08:41:17 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 550F230C7D;\n\tThu,  1 Jun 2017 22:41:16 +0000 (UTC)",
            "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id gZWPDouraCaJ; Thu,  1 Jun 2017 22:41:12 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id C771D30C93;\n\tThu,  1 Jun 2017 22:41:02 +0000 (UTC)",
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id 3BA491C400B\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu,  1 Jun 2017 22:40:58 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 3102E30C63\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu,  1 Jun 2017 22:40:58 +0000 (UTC)",
            "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id hhE0Mg4Tz6WS for <intel-wired-lan@lists.osuosl.org>;\n\tThu,  1 Jun 2017 22:40:57 +0000 (UTC)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby silver.osuosl.org (Postfix) with ESMTPS id 2DE8230C66\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu,  1 Jun 2017 22:40:57 +0000 (UTC)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t01 Jun 2017 15:40:56 -0700",
            "from jekeller-desk.amr.corp.intel.com ([10.166.35.158])\n\tby fmsmga001.fm.intel.com with ESMTP; 01 Jun 2017 15:40:56 -0700"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos; i=\"5.39,281,1493708400\"; d=\"scan'208\";\n\ta=\"1155582884\"",
        "From": "Jacob Keller <jacob.e.keller@intel.com>",
        "To": "Intel Wired LAN <intel-wired-lan@lists.osuosl.org>",
        "Date": "Thu,  1 Jun 2017 15:40:49 -0700",
        "Message-Id": "<20170601224051.6106-14-jacob.e.keller@intel.com>",
        "X-Mailer": "git-send-email 2.13.0.311.g0339965c70d6",
        "In-Reply-To": "<20170601224051.6106-1-jacob.e.keller@intel.com>",
        "References": "<20170601224051.6106-1-jacob.e.keller@intel.com>",
        "Subject": "[Intel-wired-lan] [PATCH 13/15] fm10k: use generic PM hooks instead\n\tof legacy PCIe power hooks",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.18-1",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>",
        "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "Replace the PCI specific legacy power management hooks with the new\ngeneric power management hooks which work properly for both suspend and\nhibernate. The new generic system is better and properly handles the\nlower level PCIe power management rather than forcing the driver to\nhandle it.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\n drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 67 +++++++++-------------------\n 1 file changed, 22 insertions(+), 45 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c\nindex 17f3913e4bf7..d14cfe76e58b 100644\n--- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c\n+++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c\n@@ -2228,36 +2228,19 @@ static int fm10k_handle_resume(struct fm10k_intfc *interface)\n \n #ifdef CONFIG_PM\n /**\n- * fm10k_resume - Restore device to pre-sleep state\n- * @pdev: PCI device information struct\n+ * fm10k_resume - Generic PM resume hook\n+ * @dev: generic device structure\n  *\n- * fm10k_resume is called after the system has powered back up from a sleep\n- * state and is ready to resume operation.  This function is meant to restore\n- * the device back to its pre-sleep state.\n+ * Generic PM hook used when waking the device from a low power state after\n+ * suspend or hibernation. This function does not need to handle lower PCIe\n+ * device state as the stack takes care of that for us.\n  **/\n-static int fm10k_resume(struct pci_dev *pdev)\n+static int fm10k_resume(struct device *dev)\n {\n-\tstruct fm10k_intfc *interface = pci_get_drvdata(pdev);\n+\tstruct fm10k_intfc *interface = pci_get_drvdata(to_pci_dev(dev));\n \tstruct net_device *netdev = interface->netdev;\n \tstruct fm10k_hw *hw = &interface->hw;\n-\tu32 err;\n-\n-\tpci_set_power_state(pdev, PCI_D0);\n-\tpci_restore_state(pdev);\n-\n-\t/* pci_restore_state clears dev->state_saved so call\n-\t * pci_save_state to restore it.\n-\t */\n-\tpci_save_state(pdev);\n-\n-\terr = pci_enable_device_mem(pdev);\n-\tif (err) {\n-\t\tdev_err(&pdev->dev, \"Cannot enable PCI device from suspend\\n\");\n-\t\treturn err;\n-\t}\n-\tpci_set_master(pdev);\n-\n-\tpci_wake_from_d3(pdev, false);\n+\tint err;\n \n \t/* refresh hw_addr in case it was dropped */\n \thw->hw_addr = interface->uc_addr;\n@@ -2272,36 +2255,27 @@ static int fm10k_resume(struct pci_dev *pdev)\n }\n \n /**\n- * fm10k_suspend - Prepare the device for a system sleep state\n- * @pdev: PCI device information struct\n+ * fm10k_suspend - Generic PM suspend hook\n+ * @dev: generic device structure\n  *\n- * fm10k_suspend is meant to shutdown the device prior to the system entering\n- * a sleep state.  The fm10k hardware does not support wake on lan so the\n- * driver simply needs to shut down the device so it is in a low power state.\n+ * Generic PM hook used when setting the device into a low power state for\n+ * system suspend or hibernation. This function does not need to handle lower\n+ * PCIe device state as the stack takes care of that for us.\n  **/\n-static int fm10k_suspend(struct pci_dev *pdev,\n-\t\t\t pm_message_t __always_unused state)\n+static int fm10k_suspend(struct device *dev)\n {\n-\tstruct fm10k_intfc *interface = pci_get_drvdata(pdev);\n+\tstruct fm10k_intfc *interface = pci_get_drvdata(to_pci_dev(dev));\n \tstruct net_device *netdev = interface->netdev;\n-\tint err = 0;\n \n \tnetif_device_detach(netdev);\n \n \tfm10k_prepare_suspend(interface);\n \n-\terr = pci_save_state(pdev);\n-\tif (err)\n-\t\treturn err;\n-\n-\tpci_disable_device(pdev);\n-\tpci_wake_from_d3(pdev, false);\n-\tpci_set_power_state(pdev, PCI_D3hot);\n-\n \treturn 0;\n }\n \n #endif /* CONFIG_PM */\n+\n /**\n  * fm10k_io_error_detected - called when PCI error is detected\n  * @pdev: Pointer to PCI device\n@@ -2421,15 +2395,18 @@ static const struct pci_error_handlers fm10k_err_handler = {\n \t.reset_notify = fm10k_io_reset_notify,\n };\n \n+static SIMPLE_DEV_PM_OPS(fm10k_pm_ops, fm10k_suspend, fm10k_resume);\n+\n static struct pci_driver fm10k_driver = {\n \t.name\t\t\t= fm10k_driver_name,\n \t.id_table\t\t= fm10k_pci_tbl,\n \t.probe\t\t\t= fm10k_probe,\n \t.remove\t\t\t= fm10k_remove,\n #ifdef CONFIG_PM\n-\t.suspend\t\t= fm10k_suspend,\n-\t.resume\t\t\t= fm10k_resume,\n-#endif\n+\t.driver = {\n+\t\t.pm\t\t= &fm10k_pm_ops,\n+\t},\n+#endif /* CONFIG_PM */\n \t.sriov_configure\t= fm10k_iov_configure,\n \t.err_handler\t\t= &fm10k_err_handler\n };\n",
    "prefixes": [
        "13/15"
    ]
}