get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2227525,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2227525/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260423212316.3431746-8-dmatlack@google.com/",
    "project": {
        "id": 28,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/28/?format=api",
        "name": "Linux PCI development",
        "link_name": "linux-pci",
        "list_id": "linux-pci.vger.kernel.org",
        "list_email": "linux-pci@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null
    },
    "msgid": "<20260423212316.3431746-8-dmatlack@google.com>",
    "date": "2026-04-23T21:23:11",
    "name": "[v4,07/11] PCI: liveupdate: Inherit ACS flags in incoming preserved devices",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "47fa18e3558ea16de3fbed0506305a3c83f3079f",
    "submitter": {
        "id": 69449,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/69449/?format=api",
        "name": "David Matlack",
        "email": "dmatlack@google.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260423212316.3431746-8-dmatlack@google.com/mbox/",
    "series": [
        {
            "id": 501248,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/501248/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=501248",
            "date": "2026-04-23T21:23:04",
            "name": "PCI: liveupdate: PCI core support for Live Update",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/501248/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2227525/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2227525/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "\n <linux-pci+bounces-53075-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-pci@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256\n header.s=20251104 header.b=o9QrzpOE;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-53075-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=google.com header.i=@google.com\n header.b=\"o9QrzpOE\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.216.74",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=google.com",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=flex--dmatlack.bounces.google.com"
        ],
        "Received": [
            "from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g1q0V5K2lz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 07:26:34 +1000 (AEST)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id DE9573034CAE\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 21:24:42 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id D703B3C3C03;\n\tThu, 23 Apr 2026 21:23:41 +0000 (UTC)",
            "from mail-pj1-f74.google.com (mail-pj1-f74.google.com\n [209.85.216.74])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id CF5E33C198A\n\tfor <linux-pci@vger.kernel.org>; Thu, 23 Apr 2026 21:23:35 +0000 (UTC)",
            "by mail-pj1-f74.google.com with SMTP id\n 98e67ed59e1d1-35fbb5779e8so8012730a91.3\n        for <linux-pci@vger.kernel.org>; Thu, 23 Apr 2026 14:23:34 -0700 (PDT)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776979420; cv=none;\n b=rYoAk5hwrDOBgZVokSDqtctVAq9t3OVRDD1BZrVUwwlMNi6b0Z8KeROm/XvhVrFaHZrL/ACikfxbKKsnL5B60nOqzMnSRADlKuhHrIfHWxWlHorqcUjPM4vXXC1wLUxAFz0r87rGEfRfJwnxJStKGigQ4iRvtovV5Lfb75gyJtI=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776979420; c=relaxed/simple;\n\tbh=k0MqtokF5x5FrnuJGyuULJNyUYCZIUvKCsZhPGRTT5M=;\n\th=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From:\n\t To:Cc:Content-Type;\n b=MZ4N5u50/wJ+2rgRrJ+HG46O23CjJDuMMXh2MIxTYEODAbdf2stnowpITvckW5zLxeCzy44iEE3XjiGnpyMGgQ0WLeNYAO0p85Abe9DBgxq/K0DWYmE1qHDbHg2wXvuCDooI3etw56zE7bkne5m0tBlUP3g53yHAR5KDtHbhIUk=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=google.com;\n spf=pass smtp.mailfrom=flex--dmatlack.bounces.google.com;\n dkim=pass (2048-bit key) header.d=google.com header.i=@google.com\n header.b=o9QrzpOE; arc=none smtp.client-ip=209.85.216.74",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=google.com; s=20251104; t=1776979412; x=1777584212;\n darn=vger.kernel.org;\n        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to\n         :date:from:to:cc:subject:date:message-id:reply-to;\n        bh=ys4uatxpJYM7Kl1KgUYRndxIbkLNusGMab4h1bmL7Us=;\n        b=o9QrzpOEoG27XXUFVJqcJBtO11q92FrGntzJZz5mtF2nn6Hu0VYdUkvfA6EiSqVQFq\n         sP+TbIFvXazbxKgYUDqQOAVgu10q+2+HM7qyQ5EUxWZSHJJvj6jnCr2uE5JDNFYN00Qu\n         5yM0c79bo8yHIYNIyjqhDZ24d3CRez8ZKHVJOm/3rCC/rwi6ezuhQy6vymXvhxKA1S1s\n         nel1hpOYqiV39X1XE1tMtnJfUlE0NtRZcUrkTEkvyfO+gSRRmIumvaGq+enqMz4plyaX\n         bZK/COP7o0lMy/skFw034jke/umUFw5Pfjf5nGn3Q1Es/Z3UxT6su5VuCnU1ElRE+GMU\n         GLHg==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1776979412; x=1777584212;\n        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to\n         :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n        bh=ys4uatxpJYM7Kl1KgUYRndxIbkLNusGMab4h1bmL7Us=;\n        b=ERg2Upo44XRO7TcS8oc1VHtwywEXdicBKfMrsnjVKfxRO7rFDx/ReEmE85fsH5weTH\n         bPIwURS3dX97HsKg/N2zO1MxQtr64whkbuoXMpogbIGa3JlcAk7Zy9lPYypWdRx/vxLU\n         Xv91tHEOfYCulexyQG+gdbab01URCS1F7f8p8BjIvqbdC7mrWegqEz0Jjrx92+mwNfHb\n         EE+TsPX5eIYwFheHVEhdgoLdzVe65DlmBsTQtNMrzNwoIAn/5g389RMgWEiL5g4KTGfo\n         QTO0jS6Sy5+B8UnwV+2W/xvyu22ucoKBIdCni1Vu1DcorQRBf53oRTC3AYTWK3Qeg2+l\n         GXMg==",
        "X-Forwarded-Encrypted": "i=1;\n AFNElJ+vE04g1pseUPo1Fg6y3i4MqEusVy8XZWDsBbggtn6TxgMeh5Q3reGU+i5xHOFSFI8vlygVf6ac9r4=@vger.kernel.org",
        "X-Gm-Message-State": "AOJu0YytEj7Reli1CnCPULcHgWm2O8ZyEzuoPzzhn+ewLQziSFt2xRSt\n\tOUjjQVJUXZOjGlThC4g00I9IRMbJjvGy6qIAv9jSIkfAKb8nZWb8HtbDTT1kfx/YCnHJDg+6yK9\n\teSaocDz4AD6rqBg==",
        "X-Received": "from pjbbj17.prod.google.com ([2002:a17:90b:891:b0:362:b5ab:9cd3])\n (user=dmatlack job=prod-delivery.src-stubby-dispatcher) by\n 2002:a17:90a:51a3:b0:362:bb93:f25e with SMTP id\n 98e67ed59e1d1-362bb93f462mr8872524a91.23.1776979412273;\n Thu, 23 Apr 2026 14:23:32 -0700 (PDT)",
        "Date": "Thu, 23 Apr 2026 21:23:11 +0000",
        "In-Reply-To": "<20260423212316.3431746-1-dmatlack@google.com>",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-pci@vger.kernel.org",
        "List-Id": "<linux-pci.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>",
        "Mime-Version": "1.0",
        "References": "<20260423212316.3431746-1-dmatlack@google.com>",
        "X-Mailer": "git-send-email 2.54.0.rc2.544.gc7ae2d5bb8-goog",
        "Message-ID": "<20260423212316.3431746-8-dmatlack@google.com>",
        "Subject": "[PATCH v4 07/11] PCI: liveupdate: Inherit ACS flags in incoming\n preserved devices",
        "From": "David Matlack <dmatlack@google.com>",
        "To": "iommu@lists.linux.dev, kexec@lists.infradead.org,\n\tlinux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org,\n\tlinux-pci@vger.kernel.org",
        "Cc": "Adithya Jayachandran <ajayachandra@nvidia.com>,\n Alexander Graf <graf@amazon.com>,\n\tAlex Williamson <alex@shazbot.org>, Bjorn Helgaas <bhelgaas@google.com>,\n Chris Li <chrisl@kernel.org>,\n\tDavid Matlack <dmatlack@google.com>, David Rientjes <rientjes@google.com>,\n\tJacob Pan <jacob.pan@linux.microsoft.com>, Jason Gunthorpe <jgg@nvidia.com>,\n\tJoerg Roedel <joro@8bytes.org>, Jonathan Corbet <corbet@lwn.net>,\n Josh Hilke <jrhilke@google.com>,\n\tLeon Romanovsky <leonro@nvidia.com>, Lukas Wunner <lukas@wunner.de>,\n Mike Rapoport <rppt@kernel.org>,\n\tParav Pandit <parav@nvidia.com>, Pasha Tatashin <pasha.tatashin@soleen.com>,\n\tPranjal Shrivastava <praan@google.com>, Pratyush Yadav <pratyush@kernel.org>,\n\tRobin Murphy <robin.murphy@arm.com>, Saeed Mahameed <saeedm@nvidia.com>,\n\tSamiullah Khawaja <skhawaja@google.com>,\n Shuah Khan <skhan@linuxfoundation.org>,\n\tWill Deacon <will@kernel.org>, William Tu <witu@nvidia.com>,\n Yi Liu <yi.l.liu@intel.com>",
        "Content-Type": "text/plain; charset=\"UTF-8\""
    },
    "content": "Inherit Access Control Services (ACS) flags on all incoming preserved\ndevices (endpoints and upstream bridges) during a Live Update.\n\nInheriting ACS flags avoids changing routing rules while memory\ntransactions are in flight from preserved devices. This is also strictly\nnecessary to ensure that IOMMU group assignments do not change across\na Live Update for preserved devices, as changing ACS configurations can\nsplit or merge IOMMU groups.\n\nSigned-off-by: David Matlack <dmatlack@google.com>\n---\n drivers/pci/liveupdate.c | 10 ++++++++++\n drivers/pci/pci.c        | 10 +++++++++-\n 2 files changed, 19 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/pci/liveupdate.c b/drivers/pci/liveupdate.c\nindex 88125f9a2c6b..a9a89f7bd3e5 100644\n--- a/drivers/pci/liveupdate.c\n+++ b/drivers/pci/liveupdate.c\n@@ -118,6 +118,16 @@\n  * This enables the PCI core and any drivers bound to the bridge to participate\n  * in the Live Update so that preserved endpoints can continue issuing memory\n  * transactions during the Live Update.\n+ *\n+ * Handling Preserved Devices\n+ * ==========================\n+ *\n+ * The PCI core treats preserved devices differently than non-preserved devices.\n+ * This section enumerates those differences.\n+ *\n+ *  * The PCI core inherits all ACS flags enabled on incoming preserved devices\n+ *    rather than assigning new ones. This ensures that TLPs are routed the same\n+ *    way after Live Update and ensures that IOMMU groups do not change.\n  */\n \n #define pr_fmt(fmt) \"PCI: liveupdate: \" fmt\ndiff --git a/drivers/pci/pci.c b/drivers/pci/pci.c\nindex 8f7cfcc00090..e615b7c3e430 100644\n--- a/drivers/pci/pci.c\n+++ b/drivers/pci/pci.c\n@@ -1017,6 +1017,15 @@ void pci_enable_acs(struct pci_dev *dev)\n \tbool enable_acs = false;\n \tint pos;\n \n+\t/*\n+\t * ACS flags must be inherited from the previous kernel during a Live\n+\t * Update for preserved devices (which includes endpoints and any\n+\t * upstream bridges) to avoid changing routing while memory transactions\n+\t * are in flight.\n+\t */\n+\tif (pci_liveupdate_incoming(dev))\n+\t\treturn;\n+\n \t/* If an iommu is present we start with kernel default caps */\n \tif (pci_acs_enable) {\n \t\tif (pci_dev_specific_enable_acs(dev))\n@@ -1041,7 +1050,6 @@ void pci_enable_acs(struct pci_dev *dev)\n \t\t\t PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_EC,\n \t\t\t ~(PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_EC));\n \t__pci_config_acs(dev, &caps, config_acs_param, 0, 0);\n-\n \tpci_write_config_word(dev, pos + PCI_ACS_CTRL, caps.ctrl);\n }\n \n",
    "prefixes": [
        "v4",
        "07/11"
    ]
}