get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2222235,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2222235/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260411003959.30959-3-emil.s.tantilov@intel.com/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/1.2/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": "<20260411003959.30959-3-emil.s.tantilov@intel.com>",
    "list_archive_url": null,
    "date": "2026-04-11T00:39:59",
    "name": "[iwl-next,2/2] idpf: implement pci error handlers",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "cac2027fe493940c91d162c7916cf7bbb46fded0",
    "submitter": {
        "id": 1670,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/1670/?format=api",
        "name": "Tantilov, Emil S",
        "email": "emil.s.tantilov@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260411003959.30959-3-emil.s.tantilov@intel.com/mbox/",
    "series": [
        {
            "id": 499519,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/499519/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=499519",
            "date": "2026-04-11T00:39:57",
            "name": "Introduce IDPF PCI callbacks",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/499519/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2222235/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2222235/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@legolas.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256\n header.s=default header.b=85OQxkhu;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=140.211.166.138; helo=smtp1.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fsvvh4V0Rz1yH7\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 11 Apr 2026 10:39:59 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id 38FC68089E;\n\tSat, 11 Apr 2026 00:39:57 +0000 (UTC)",
            "from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id mMfnQSwmBumV; Sat, 11 Apr 2026 00:39:56 +0000 (UTC)",
            "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id 6C5C4808C8;\n\tSat, 11 Apr 2026 00:39:56 +0000 (UTC)",
            "from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n by lists1.osuosl.org (Postfix) with ESMTP id 10770237\n for <intel-wired-lan@lists.osuosl.org>; Sat, 11 Apr 2026 00:39:55 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id EC77F41753\n for <intel-wired-lan@lists.osuosl.org>; Sat, 11 Apr 2026 00:39:53 +0000 (UTC)",
            "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id wW_Wo-pEH8PQ for <intel-wired-lan@lists.osuosl.org>;\n Sat, 11 Apr 2026 00:39:53 +0000 (UTC)",
            "from mgamail.intel.com (mgamail.intel.com [192.198.163.16])\n by smtp4.osuosl.org (Postfix) with ESMTPS id E96304176E\n for <intel-wired-lan@lists.osuosl.org>; Sat, 11 Apr 2026 00:39:52 +0000 (UTC)",
            "from orviesa010.jf.intel.com ([10.64.159.150])\n by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 10 Apr 2026 17:39:52 -0700",
            "from estantil-desk.jf.intel.com ([10.166.241.24])\n by orviesa010.jf.intel.com with ESMTP; 10 Apr 2026 17:39:51 -0700"
        ],
        "X-Virus-Scanned": [
            "amavis at osuosl.org",
            "amavis at osuosl.org"
        ],
        "X-Comment": "SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=<UNKNOWN> ",
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 smtp1.osuosl.org 6C5C4808C8",
            "OpenDKIM Filter v2.11.0 smtp4.osuosl.org E96304176E"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1775867996;\n\tbh=Y4az8BwuwRWFhUdTKKOHRgA8Byx1kMdoAmSgdSPZ6T0=;\n\th=From:To:Cc:Date:In-Reply-To:References:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t From;\n\tb=85OQxkhu3r2y61IU2DyHh3ihQxWRjkcTFRtRE4200aVs6AZGN4cRmp0vAt/tU8rYU\n\t a0CjkvKwJ9SOQq4NGXzcCldNP5PaL4Zkk+ZkcTVvt91KaqO1VpiT6xI4wMiGFr3mrJ\n\t YMJFZStzWW6OmtTi8oFXOF9fYBk37U2lYojxBOtHHKSuyHiRjz8iuIW7VOhZjLSbzI\n\t iP20zv3jbySTPWqu6+z8AZuOKTt8ORzk0W+KircZYYEvz2A9bmrysnmvXJ2fAAGvb3\n\t 60atBUhmsCL4Qa2eZ3d/OqtVm1UQVVIaAgyayDtKro7Lg4/+ZV5aa+QKLa60wayrcX\n\t vwWHp1bkwuIyw==",
        "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=192.198.163.16;\n helo=mgamail.intel.com; envelope-from=emil.s.tantilov@intel.com;\n receiver=<UNKNOWN>",
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp4.osuosl.org E96304176E",
        "X-CSE-ConnectionGUID": [
            "BIEj/h8uQ2qua/YhhKQ3ng==",
            "QiR4Bm+8Qqy9358d858MpA=="
        ],
        "X-CSE-MsgGUID": [
            "120ilS9FRr6YHTsjmZY5eQ==",
            "qHRd1gUYQjCWskEwzr2Qzw=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6800,10657,11755\"; a=\"64423732\"",
            "E=Sophos;i=\"6.23,172,1770624000\"; d=\"scan'208\";a=\"64423732\"",
            "E=Sophos;i=\"6.23,172,1770624000\"; d=\"scan'208\";a=\"228392494\""
        ],
        "X-ExtLoop1": "1",
        "From": "Emil Tantilov <emil.s.tantilov@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Cc": "netdev@vger.kernel.org, przemyslaw.kitszel@intel.com, jay.bhat@intel.com,\n ivan.d.barrera@intel.com, aleksandr.loktionov@intel.com,\n larysa.zaremba@intel.com, anthony.l.nguyen@intel.com,\n andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,\n kuba@kernel.org, pabeni@redhat.com, aleksander.lobakin@intel.com,\n linux-pci@vger.kernel.org, madhu.chittim@intel.com, decot@google.com,\n willemb@google.com, sheenamo@google.com",
        "Date": "Fri, 10 Apr 2026 17:39:59 -0700",
        "Message-Id": "<20260411003959.30959-3-emil.s.tantilov@intel.com>",
        "X-Mailer": "git-send-email 2.17.2",
        "In-Reply-To": "<20260411003959.30959-1-emil.s.tantilov@intel.com>",
        "References": "<20260411003959.30959-1-emil.s.tantilov@intel.com>",
        "X-Mailman-Original-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1775867993; x=1807403993;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references;\n bh=CBYUwMJK9e/8mCc8Lx+DTlbe4j30OVzY4cQtWJ5dobY=;\n b=AjKeuPf1m1YO0Eal3mIcJYbsokKE/SXygqmQmBMVpDxY+10OZdF7vekD\n qxJMyOAmZ6OHr3cCJnlgi8hIQc1EjRyVwqfrNOg987HeIhyLdA3M2+x7Y\n N4A+CImYSdWfbIL+6PVD73AnCAw5GnZftXjk2WHla2JUK2xmHxJzbe1Oj\n 1hhHuxlQHqXyk+/Q2WoMBk6cFnAerG0xNrmVZsZrcbxmqA15BFV8S4P0Z\n Hlbu5U7Fs+kzwonuc4gRQJHp6QqWoOboGGGsPlZH46chrP8poj8wtlUL0\n YyRjqb4mzN3xf40HkH0wX2La8ejnhiIx9tvQzCAIZnrDdVgMlO39IEJyo\n w==;",
        "X-Mailman-Original-Authentication-Results": [
            "smtp4.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com",
            "smtp4.osuosl.org;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.a=rsa-sha256 header.s=Intel header.b=AjKeuPf1"
        ],
        "Subject": "[Intel-wired-lan] [PATCH iwl-next 2/2] idpf: implement pci error\n handlers",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.30",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n <intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <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 <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "Add callbacks to handle PCI errors and FLR reset. When preparing to handle\nreset on the bus, the driver must stop all operations that can lead to MMIO\naccess in order to prevent HW errors. To accomplish this introduce helper\nidpf_reset_prepare() that gets called prior to FLR or when PCI error is\ndetected. Upon resume the recovery is done through the existing reset path\nby starting the event task.\n\nThe following callbacks are implemented:\n.reset_prepare runs the first portion of the generic reset path leading up\nto the part where we wait for the reset to complete.\n.reset_done/resume runs the recovery part of the reset handling.\n.error_detected is the callback dealing with PCI errors, similar to the\nprepare call, we stop all operations, prior to attempting a recovery.\n.slot_reset is the callback attempting to restore the device, provided a\nPCI reset was initiated by the AER driver.\n\nWhereas previously the init logic guaranteed netdevs during reset, the\naddition of idpf_detach_and_close() to the PCI callbacks flow makes it\npossible for the function to be called without netdevs. Add check to\navoid NULL pointer dereference in that case.\n\nCo-developed-by: Alan Brady <alan.brady@intel.com>\nSigned-off-by: Alan Brady <alan.brady@intel.com>\nSigned-off-by: Emil Tantilov <emil.s.tantilov@intel.com>\nReviewed-by: Jay Bhat <jay.bhat@intel.com>\nReviewed-by: Madhu Chittim <madhu.chittim@intel.com>\n---\n drivers/net/ethernet/intel/idpf/idpf.h      |   3 +\n drivers/net/ethernet/intel/idpf/idpf_lib.c  |  13 ++-\n drivers/net/ethernet/intel/idpf/idpf_main.c | 114 ++++++++++++++++++++\n 3 files changed, 128 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/idpf/idpf.h b/drivers/net/ethernet/intel/idpf/idpf.h\nindex 1d0e32e47e87..164d2f3e233a 100644\n--- a/drivers/net/ethernet/intel/idpf/idpf.h\n+++ b/drivers/net/ethernet/intel/idpf/idpf.h\n@@ -88,6 +88,7 @@ enum idpf_state {\n  * @IDPF_REMOVE_IN_PROG: Driver remove in progress\n  * @IDPF_MB_INTR_MODE: Mailbox in interrupt mode\n  * @IDPF_VC_CORE_INIT: virtchnl core has been init\n+ * @IDPF_PCI_CB_RESET: Reset via the PCI callbacks\n  * @IDPF_FLAGS_NBITS: Must be last\n  */\n enum idpf_flags {\n@@ -97,6 +98,7 @@ enum idpf_flags {\n \tIDPF_REMOVE_IN_PROG,\n \tIDPF_MB_INTR_MODE,\n \tIDPF_VC_CORE_INIT,\n+\tIDPF_PCI_CB_RESET,\n \tIDPF_FLAGS_NBITS,\n };\n \n@@ -1012,4 +1014,5 @@ void idpf_idc_vdev_mtu_event(struct iidc_rdma_vport_dev_info *vdev_info,\n int idpf_add_del_fsteer_filters(struct idpf_adapter *adapter,\n \t\t\t\tstruct virtchnl2_flow_rule_add_del *rule,\n \t\t\t\tenum virtchnl2_op opcode);\n+void idpf_detach_and_close(struct idpf_adapter *adapter);\n #endif /* !_IDPF_H_ */\ndiff --git a/drivers/net/ethernet/intel/idpf/idpf_lib.c b/drivers/net/ethernet/intel/idpf/idpf_lib.c\nindex 7988836fbae0..1e706beb0098 100644\n--- a/drivers/net/ethernet/intel/idpf/idpf_lib.c\n+++ b/drivers/net/ethernet/intel/idpf/idpf_lib.c\n@@ -758,13 +758,16 @@ static int idpf_init_mac_addr(struct idpf_vport *vport,\n \treturn 0;\n }\n \n-static void idpf_detach_and_close(struct idpf_adapter *adapter)\n+void idpf_detach_and_close(struct idpf_adapter *adapter)\n {\n \tint max_vports = adapter->max_vports;\n \n \tfor (int i = 0; i < max_vports; i++) {\n \t\tstruct net_device *netdev = adapter->netdevs[i];\n \n+\t\tif (!netdev)\n+\t\t\tcontinue;\n+\n \t\t/* If the interface is in detached state, that means the\n \t\t * previous reset was not handled successfully for this\n \t\t * vport.\n@@ -1908,6 +1911,10 @@ static void idpf_init_hard_reset(struct idpf_adapter *adapter)\n \n \tdev_info(dev, \"Device HW Reset initiated\\n\");\n \n+\t/* Reset has already happened, skip to recovery. */\n+\tif (test_and_clear_bit(IDPF_PCI_CB_RESET, adapter->flags))\n+\t\tgoto check_rst_complete;\n+\n \t/* Prepare for reset */\n \tif (test_bit(IDPF_HR_DRV_LOAD, adapter->flags)) {\n \t\treg_ops->trigger_reset(adapter, IDPF_HR_DRV_LOAD);\n@@ -1925,6 +1932,7 @@ static void idpf_init_hard_reset(struct idpf_adapter *adapter)\n \t\tgoto unlock_mutex;\n \t}\n \n+check_rst_complete:\n \t/* Wait for reset to complete */\n \terr = idpf_check_reset_complete(adapter, &adapter->reset_reg);\n \tif (err) {\n@@ -1984,7 +1992,8 @@ void idpf_vc_event_task(struct work_struct *work)\n \tif (test_bit(IDPF_HR_FUNC_RESET, adapter->flags))\n \t\tgoto func_reset;\n \n-\tif (test_bit(IDPF_HR_DRV_LOAD, adapter->flags))\n+\tif (test_bit(IDPF_HR_DRV_LOAD, adapter->flags) ||\n+\t    test_bit(IDPF_PCI_CB_RESET, adapter->flags))\n \t\tgoto drv_load;\n \n \treturn;\ndiff --git a/drivers/net/ethernet/intel/idpf/idpf_main.c b/drivers/net/ethernet/intel/idpf/idpf_main.c\nindex d99f759c55e1..cd467695047e 100644\n--- a/drivers/net/ethernet/intel/idpf/idpf_main.c\n+++ b/drivers/net/ethernet/intel/idpf/idpf_main.c\n@@ -234,6 +234,7 @@ static int idpf_cfg_device(struct idpf_adapter *adapter)\n \tif (err)\n \t\tpci_dbg(pdev, \"PCIe PTM is not supported by PCIe bus/controller\\n\");\n \n+\tpci_save_state(pdev);\n \tpci_set_drvdata(pdev, adapter);\n \n \treturn 0;\n@@ -360,6 +361,118 @@ static int idpf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)\n \treturn err;\n }\n \n+static void idpf_reset_prepare(struct idpf_adapter *adapter)\n+{\n+\tpci_dbg(adapter->pdev, \"resetting\\n\");\n+\tset_bit(IDPF_HR_RESET_IN_PROG, adapter->flags);\n+\tcancel_delayed_work_sync(&adapter->serv_task);\n+\tcancel_delayed_work_sync(&adapter->vc_event_task);\n+\tidpf_detach_and_close(adapter);\n+\tidpf_idc_issue_reset_event(adapter->cdev_info);\n+\tidpf_vc_core_deinit(adapter);\n+}\n+\n+/**\n+ * idpf_pci_err_detected - PCI error detected, about to attempt recovery\n+ * @pdev: PCI device struct\n+ * @err: err detected\n+ *\n+ * Return: %PCI_ERS_RESULT_NEED_RESET to attempt recovery,\n+ * %PCI_ERS_RESULT_DISCONNECT if recovery is not possible.\n+ */\n+static pci_ers_result_t\n+idpf_pci_err_detected(struct pci_dev *pdev, pci_channel_state_t err)\n+{\n+\tstruct idpf_adapter *adapter = pci_get_drvdata(pdev);\n+\n+\t/* Shutdown the mailbox if PCI I/O is in a bad state to avoid MBX\n+\t * timeouts during the prepare stage.\n+\t */\n+\tif (pci_channel_offline(pdev))\n+\t\tlibie_ctlq_xn_shutdown(adapter->xnm);\n+\n+\tidpf_reset_prepare(adapter);\n+\n+\tif (err == pci_channel_io_perm_failure)\n+\t\treturn PCI_ERS_RESULT_DISCONNECT;\n+\n+\t/* When called due to PCI error, driver will have to force PFR on\n+\t * resume, in order to complete the recovery via the event task.\n+\t */\n+\tset_bit(IDPF_PCI_CB_RESET, adapter->flags);\n+\n+\treturn PCI_ERS_RESULT_NEED_RESET;\n+}\n+\n+/**\n+ * idpf_pci_err_slot_reset - PCI undergoing reset\n+ * @pdev: PCI device struct\n+ *\n+ * Reset PCI state and use a register read to see if we're good.\n+ *\n+ * Return: %PCI_ERS_RESULT_RECOVERED on success,\n+ * %PCI_ERS_RESULT_DISCONNECT on failure.\n+ */\n+static pci_ers_result_t\n+idpf_pci_err_slot_reset(struct pci_dev *pdev)\n+{\n+\tstruct idpf_adapter *adapter = pci_get_drvdata(pdev);\n+\n+\tpci_restore_state(pdev);\n+\tpci_set_master(pdev);\n+\tpci_wake_from_d3(pdev, false);\n+\tif (readl(adapter->reset_reg.rstat) != 0xFFFFFFFF) {\n+\t\tpci_save_state(pdev);\n+\t\treturn PCI_ERS_RESULT_RECOVERED;\n+\t}\n+\n+\treturn PCI_ERS_RESULT_DISCONNECT;\n+}\n+\n+/**\n+ * idpf_pci_err_resume - Resume operations after PCI error recovery\n+ * @pdev: PCI device struct\n+ */\n+static void idpf_pci_err_resume(struct pci_dev *pdev)\n+{\n+\tstruct idpf_adapter *adapter = pci_get_drvdata(pdev);\n+\n+\t/* Force a PFR when resuming from PCI error. */\n+\tif (test_and_set_bit(IDPF_PCI_CB_RESET, adapter->flags))\n+\t\tadapter->dev_ops.reg_ops.trigger_reset(adapter, IDPF_HR_FUNC_RESET);\n+\n+\tqueue_delayed_work(adapter->vc_event_wq,\n+\t\t\t   &adapter->vc_event_task,\n+\t\t\t   msecs_to_jiffies(300));\n+}\n+\n+/**\n+ * idpf_pci_err_reset_prepare - Prepare driver for PCI reset\n+ * @pdev: PCI device struct\n+ */\n+static void idpf_pci_err_reset_prepare(struct pci_dev *pdev)\n+{\n+\tidpf_reset_prepare(pci_get_drvdata(pdev));\n+}\n+\n+/**\n+ * idpf_pci_err_reset_done - PCI err reset recovery complete\n+ * @pdev: PCI device struct\n+ */\n+static void idpf_pci_err_reset_done(struct pci_dev *pdev)\n+{\n+\tpci_dbg(pdev, \"reset: done\\n\");\n+\tidpf_pci_err_resume(pdev);\n+}\n+\n+static const struct pci_error_handlers idpf_pci_err_handler = {\n+\t.error_detected = idpf_pci_err_detected,\n+\t.slot_reset = idpf_pci_err_slot_reset,\n+\t.reset_prepare = idpf_pci_err_reset_prepare,\n+\t.reset_done = idpf_pci_err_reset_done,\n+\t.resume = idpf_pci_err_resume,\n+};\n+\n /* idpf_pci_tbl - PCI Dev idpf ID Table\n  */\n static const struct pci_device_id idpf_pci_tbl[] = {\n@@ -377,5 +490,6 @@ static struct pci_driver idpf_driver = {\n \t.sriov_configure\t= idpf_sriov_configure,\n \t.remove\t\t\t= idpf_remove,\n \t.shutdown\t\t= idpf_shutdown,\n+\t.err_handler\t\t= &idpf_pci_err_handler,\n };\n module_pci_driver(idpf_driver);\n",
    "prefixes": [
        "iwl-next",
        "2/2"
    ]
}