get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 812230,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/812230/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170911065606.40600-1-aik@ozlabs.ru/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20170911065606.40600-1-aik@ozlabs.ru>",
    "list_archive_url": null,
    "date": "2017-09-11T06:56:06",
    "name": "[qemu] xhci: Avoid DMA when ERSTBA is set to zero",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "920e8f2a66f19a5e54118dc467b94067a1e7a8bc",
    "submitter": {
        "id": 7621,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/7621/?format=api",
        "name": "Alexey Kardashevskiy",
        "email": "aik@ozlabs.ru"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170911065606.40600-1-aik@ozlabs.ru/mbox/",
    "series": [
        {
            "id": 2443,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/2443/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=2443",
            "date": "2017-09-11T06:56:06",
            "name": "[qemu] xhci: Avoid DMA when ERSTBA is set to zero",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/2443/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/812230/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/812230/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
        "Received": [
            "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xrJdS39JPz9s2G\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon, 11 Sep 2017 16:57:15 +1000 (AEST)",
            "from localhost ([::1]:55738 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1drIec-0006WG-LU\n\tfor incoming@patchwork.ozlabs.org; Mon, 11 Sep 2017 02:57:10 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:60628)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <aik@ozlabs.ru>) id 1drIeE-0006Vv-0n\n\tfor qemu-devel@nongnu.org; Mon, 11 Sep 2017 02:56:47 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <aik@ozlabs.ru>) id 1drIeA-0007Ds-1o\n\tfor qemu-devel@nongnu.org; Mon, 11 Sep 2017 02:56:46 -0400",
            "from ozlabs.ru ([107.173.13.209]:46606)\n\tby eggs.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <aik@ozlabs.ru>) id 1drIe9-0007Dg-Rr\n\tfor qemu-devel@nongnu.org; Mon, 11 Sep 2017 02:56:41 -0400",
            "from vpl1.ozlabs.ibm.com (localhost [IPv6:::1])\n\tby ozlabs.ru (Postfix) with ESMTP id 1E1EA3A60001;\n\tMon, 11 Sep 2017 02:57:21 -0400 (EDT)"
        ],
        "From": "Alexey Kardashevskiy <aik@ozlabs.ru>",
        "To": "qemu-devel@nongnu.org",
        "Date": "Mon, 11 Sep 2017 16:56:06 +1000",
        "Message-Id": "<20170911065606.40600-1-aik@ozlabs.ru>",
        "X-Mailer": "git-send-email 2.11.0",
        "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 3.x [fuzzy]",
        "X-Received-From": "107.173.13.209",
        "Subject": "[Qemu-devel] [PATCH qemu] xhci: Avoid DMA when ERSTBA is set to zero",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "Alexey Kardashevskiy <aik@ozlabs.ru>, Gerd Hoffmann <kraxel@redhat.com>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "The existing XHCI code reads the Event Ring Segment Table Base Address\nRegister (ERSTBA) every time when it is changed. However zero is its\ndefault state so one would think that zero there means it is not in use.\n\nThis adds a check for ERSTBA in addition to the existing check for\nthe Event Ring Segment Table Size Register (ERSTSZ).\n\nSigned-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>\n---\n\nOn pseries, the SLOF firmware initializes XHCI and sets non-zero value\nto ERSTBA. Then, it jumps to the guest and the guest requests the SLOF\nto quiesce devices, that includes XHCI. SLOF removes DMA mappings and\nwrites 0 to ERSTBA, writing to its high part triggers xhci_er_reset()\nin QEMU which calls pci_dma_read(PCI_DEVICE(xhci), erstba,...) which\nends up in unassigned_mem_accepts as IOMMU translation entry for 0 is\nmissing (and it is missing always on pseries, at least in practice).\n\nHowever the very same SLOF driver does not cause EEH (that would be\nhardware reaction on missing IOMMU translation entry) on the real POWER8\nsystem with \"Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI\nHost Controller\" passed via VFIO which made me think that this patch is\na useful thing to have anyway as this is what the hardware does,\ni.e. tolerates some misconfiguration.\n\nAnd yes, we will fix SLOF to reset ERSTSZ in addition to ERSTBA anyway.\n\nThe XHCI spec, just in case:\nhttps://www.intel.com.au/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf\n---\n hw/usb/hcd-xhci.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c\nindex 204ea69d3f..d75c085d94 100644\n--- a/hw/usb/hcd-xhci.c\n+++ b/hw/usb/hcd-xhci.c\n@@ -811,8 +811,9 @@ static void xhci_er_reset(XHCIState *xhci, int v)\n {\n     XHCIInterrupter *intr = &xhci->intr[v];\n     XHCIEvRingSeg seg;\n+    dma_addr_t erstba = xhci_addr64(intr->erstba_low, intr->erstba_high);\n \n-    if (intr->erstsz == 0) {\n+    if (intr->erstsz == 0 || erstba == 0) {\n         /* disabled */\n         intr->er_start = 0;\n         intr->er_size = 0;\n@@ -824,7 +825,6 @@ static void xhci_er_reset(XHCIState *xhci, int v)\n         xhci_die(xhci);\n         return;\n     }\n-    dma_addr_t erstba = xhci_addr64(intr->erstba_low, intr->erstba_high);\n     pci_dma_read(PCI_DEVICE(xhci), erstba, &seg, sizeof(seg));\n     le32_to_cpus(&seg.addr_low);\n     le32_to_cpus(&seg.addr_high);\n",
    "prefixes": [
        "qemu"
    ]
}