get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 786370,
    "url": "http://patchwork.ozlabs.org/api/patches/786370/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20170710202319.22110-13-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": "<20170710202319.22110-13-jacob.e.keller@intel.com>",
    "list_archive_url": null,
    "date": "2017-07-10T20:23:16",
    "name": "[v3,13/16] fm10k: use generic PM hooks instead of legacy PCIe power hooks",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "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/20170710202319.22110-13-jacob.e.keller@intel.com/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/786370/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/786370/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 hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\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 3x5xVv4xpDz9s3T\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 11 Jul 2017 06:23:35 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 2DC0A889BB;\n\tMon, 10 Jul 2017 20:23:34 +0000 (UTC)",
            "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id 5Rmh8FAVO+os; Mon, 10 Jul 2017 20:23:30 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id C0B2D884A6;\n\tMon, 10 Jul 2017 20:23:30 +0000 (UTC)",
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id 274981C0DA7\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 10 Jul 2017 20:23:23 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 80EDA2FFCD\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 10 Jul 2017 20:23:23 +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 xySf7jcCvqC9 for <intel-wired-lan@lists.osuosl.org>;\n\tMon, 10 Jul 2017 20:23:23 +0000 (UTC)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby silver.osuosl.org (Postfix) with ESMTPS id E0B372FFC7\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 10 Jul 2017 20:23:22 +0000 (UTC)",
            "from fmsmga004.fm.intel.com ([10.253.24.48])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t10 Jul 2017 13:23:22 -0700",
            "from jekeller-desk.amr.corp.intel.com (HELO\n\tjekeller-desk.jekeller.internal) ([134.134.177.230])\n\tby fmsmga004.fm.intel.com with ESMTP; 10 Jul 2017 13:23:22 -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.40,342,1496127600\"; d=\"scan'208\";a=\"285198883\"",
        "From": "Jacob Keller <jacob.e.keller@intel.com>",
        "To": "jtkirhse@osuosl.org, Intel Wired LAN <intel-wired-lan@lists.osuosl.org>",
        "Date": "Mon, 10 Jul 2017 13:23:16 -0700",
        "Message-Id": "<20170710202319.22110-13-jacob.e.keller@intel.com>",
        "X-Mailer": "git-send-email 2.13.0.615.gb09ed6e59a40",
        "In-Reply-To": "<20170710202319.22110-1-jacob.e.keller@intel.com>",
        "References": "<20170710202319.22110-1-jacob.e.keller@intel.com>",
        "Cc": "jekeller@osuosl.org",
        "Subject": "[Intel-wired-lan] [PATCH v3 13/16] fm10k: use generic PM hooks\n\tinstead of 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 c6e8868f6fce..73be7b9eac9f 100644\n--- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c\n+++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c\n@@ -2264,36 +2264,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@@ -2308,36 +2291,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@@ -2457,15 +2431,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": [
        "v3",
        "13/16"
    ]
}