get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2235171,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2235171/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260508183717.193630-8-tdave@nvidia.com/",
    "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": "<20260508183717.193630-8-tdave@nvidia.com>",
    "list_archive_url": null,
    "date": "2026-05-08T18:37:16",
    "name": "[RFC,7/8] hw/arm/virt: add pcie-mmio-window machine property",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "9f2477a581f8b8ad1f42bacfcc7de8065ebb1d53",
    "submitter": {
        "id": 89928,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/89928/?format=api",
        "name": "Tushar Dave",
        "email": "tdave@nvidia.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260508183717.193630-8-tdave@nvidia.com/mbox/",
    "series": [
        {
            "id": 503429,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/503429/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=503429",
            "date": "2026-05-08T18:37:09",
            "name": "hw/arm/virt, hw/pci: PCI pre-enumeration and fixed BAR allocation",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/503429/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2235171/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2235171/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@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=feqEb2E1;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nvidia.com;"
        ],
        "Received": [
            "from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gByZw514yz1yCg\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 09 May 2026 04:39:36 +1000 (AEST)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wLQ5g-0006lw-Bd; Fri, 08 May 2026 14:38:24 -0400",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <tdave@nvidia.com>)\n id 1wLQ5T-0006ho-9R; Fri, 08 May 2026 14:38:16 -0400",
            "from\n mail-northcentralusazlp170100001.outbound.protection.outlook.com\n ([2a01:111:f403:c105::1] helo=CH1PR05CU001.outbound.protection.outlook.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <tdave@nvidia.com>)\n id 1wLQ5R-0002b2-AT; Fri, 08 May 2026 14:38:10 -0400",
            "from BY5PR12MB4179.namprd12.prod.outlook.com (2603:10b6:a03:211::8)\n by DM4PR12MB6205.namprd12.prod.outlook.com (2603:10b6:8:a8::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Fri, 8 May\n 2026 18:37:56 +0000",
            "from BY5PR12MB4179.namprd12.prod.outlook.com\n ([fe80::2036:e8b:9b3:f325]) by BY5PR12MB4179.namprd12.prod.outlook.com\n ([fe80::2036:e8b:9b3:f325%4]) with mapi id 15.20.9891.019; Fri, 8 May 2026\n 18:37:56 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=rI97G3liEXjcNSlX6jLZjuPcqx7mZRKXA5bNCd7/8uABHQ0DbzgREhOKq4EbwS+xiRet1QO2JOR+7utpAx5A3YpSbDrZUZxbR27tKNHD0+IOnb97ULxzqdvvOx70EmpqkPcNCBCh9O1AFc4/BOPP+ofCLXHhLT3X+PYP75SIwihuFqjNICwB7sOb02BCJu6r+qOEB1/5w4DRsI/Qh5p+cFOjJVNEpD4OoyT655CT5x72mCzoJMkI/vPn5JLSuwjRpI+f6RAcOK4sj/LT+0QvY8VFkEXTKBNnFPUEfPnIq0ZoR4kMfJlf8d/QDAZha2O93JbLxZspbwkAMdrjTAnIVw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=s1a9TJhPNEvWPxcpxTaxPFxtgFtp645kI9A9RF51YJg=;\n b=pSrSpDZcWcKBnN6jQQAxQtLqc8ZCJSNYn3hwUNamZDr2LKhszqEhPIiWIKSgJord0YIa18k/FvcxtGOhlYjU0neVGmiuCEBwJr2aPmK6SIhjbWVAuaWRR+7odzVLLIqvOqrAMvFjpkbA0ySngkYJZTADgzlbb+SKor6ZD6ITATh+N6c4SoQ7w4lhW4TSoQa50owBPOQl5RsEy0fIgXBy+eDFJR6kSBbzwSdrwzgTm1ff+dWWoT6A77DaTi9mb2z6Qw9wXOTfr0oRf6BDXcNVG2dHXcIUzWRNsVH+vj+IYhEXNm8w3L5MztX/A0MZBBNIe5GdQRPEBPtQgchqhjy7Ow==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;\n dkim=pass header.d=nvidia.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=s1a9TJhPNEvWPxcpxTaxPFxtgFtp645kI9A9RF51YJg=;\n b=feqEb2E1s/rOB9OFvD3kmtK7n1z1WDpHDf9Ds6lwv/egWfjoW4nJmaEPowXF2fN80bYjz9JGgouM+0a/OwJbti4AP4SVhzmv0ChA2wS+2qJeqi4wXMhqp3wFq4ghdLgWAi8IsoBw9bWrHYHOKL3FJhdkK4j948OtHJUldzbLqVT5Veh96+wrY4t0ToSYyETH0C4juRdmXZgfdJlRwTKdRa11vE3KD7uUdagVbnktIueo5naWajQfuCO5ZxcrFX/vDxpi9ZoGiGGwO4+5EtVmoILxud6MSff8vLiKRlC0uGglfmO/s0x2MOZll6VRtAfVl0+ho0I+KTv43QWoklqQpQ==",
        "From": "Tushar Dave <tdave@nvidia.com>",
        "To": "qemu-devel@nongnu.org",
        "Cc": "alwilliamson@nvidia.com, jgg@nvidia.com, skolothumtho@nvidia.com,\n qemu-arm@nongnu.org, peter.maydell@linaro.org, mst@redhat.com,\n marcel.apfelbaum@gmail.com, devel@edk2.groups.io",
        "Subject": "[RFC PATCH 7/8] hw/arm/virt: add pcie-mmio-window machine property",
        "Date": "Fri,  8 May 2026 13:37:16 -0500",
        "Message-Id": "<20260508183717.193630-8-tdave@nvidia.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20260508183717.193630-1-tdave@nvidia.com>",
        "References": "<20260508183717.193630-1-tdave@nvidia.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "MN0PR04CA0024.namprd04.prod.outlook.com\n (2603:10b6:208:52d::14) To BY5PR12MB4179.namprd12.prod.outlook.com\n (2603:10b6:a03:211::8)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "BY5PR12MB4179:EE_|DM4PR12MB6205:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "7de8b9c6-6042-4703-44ea-08dead30ebda",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|366016|1800799024|376014|22082099003|18002099003|56012099003|3023799003;",
        "X-Microsoft-Antispam-Message-Info": "\n GxoKxB7fpRQqfXpWR3JGb/CDaKGusN4OgSPu+OVi+CbatVBG+AXw2jpOCJxJcbBvx46sYMs15iEPmvCYY1BIVUa25sjUh8Mva/v82v5DnxH9g5CiqSCagCPZDyID9+qQ6C76mSdvcte0KUjUtLAtws+dN0+etbTcsQThftlDdONoezz+AvwbjCvAT7iT9yw3mRuXAkkjpugl///3T5OxdFMyYr5styaSacDpfOd54H4teBzXiPeVjraaNnn+NT/cyyASekevbYJxC/fyh6V8s2DjlBbExcLmWkaxnNLZgYgzTSZ6z4rdIkuPgFM00ysRLdI3RvsyGPRQIEC9bTs5NuXgoglLfA7iP+4g9TileyrKhFIwZkxaU0Px7k26KJFxF6+kir7CQJfEgF2oUCqzupej58kelZ9a439S3nGmBKdq1beLq4J2k5n3240TWzXC08uG2uVhcTJzPgwViLN9OgdRe6RwQSErhX57ZtZZ73l/PPR39VBPH2IAfbKCg05bVHdFdk5tipUZ1oSne+1NPFZZDD+ENBkJwureDRI6fXnoYII4usi5ZPzGplXw1O4C4SZOzKn8pzOuCPd0Iuj1TJzlim5oLBQksHpIikqNe6pUX+HXIf7bksjpoj81dkggL76GBysWg1PgwBiqCRFsNGJB1ACBNKYC6QJA1od6MdblznM0XlIF+gVCK0ABBkIV",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:BY5PR12MB4179.namprd12.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(366016)(1800799024)(376014)(22082099003)(18002099003)(56012099003)(3023799003);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n UnKVJdV7U8spuyhlSHLHMSp70pdOzOg9HYAAcjDU347pP4D0fDbYpnfDTjv6j2X/+5OX+vmsA7xPIrweIZWBFjwLZuYh+aOZ9E5+zsRL/+/d1N24/Djfv8eGmhez3jWG7fATlhR8VQnGXxCF10tFNUJ+1PexYWqpQ/O5BMAje7wmi9YFU1XDzPKgikGVXyYJlaSYbjCvmAuLbNZxRVaP7kR2/4pKYW4m3HNZOvy7Lq57tqBHE+/wkD/eXtZFtWf3+aVyMAoQX5SBHf1KvYJhNNi5U4XeVaGi3hqsWAmgmykzXLhM8r7ePQzBNq/9RszwkfnXpwo/KpWfBfEZ8wPyx6K+UivK3TO2n3iObwsE92Fqpmp7JppflEd8tvKcJFb+zjf3fJdZ2hiLV9ri0i0o7gX7gJDtMg+cYODzA8X3mpk4vWRf7kBoEOSnbMLm//txo0d+/1OAwkSp/o/TWEPl/EAqAZipNCxODXQS94UmikhpbFSYPu4a/ZnsYJssYgGeJDHwTLoaECQbrMbpuZM6QRqOLhREmfqtrAn+AnQAubqsFpWnvnLawozBxUYcsxlUiCY9ZowEOt6ch/HMT12ca4WNyK5xoXI3YIB13GkrN8RU43dtjX/8W09nlHgxPjLkm/kFb7ZARmSKwcHXY+i/KXZFXHbD2lMVbmdQyO5yVkISy05LSCRjJiytJX+grzIH/RbQTRxhm08CZ3qwQC+BpxQH42sE6e4V0PcK0ekj26iR8qR1GoSKRr0ChH7CeJmjmIo4aoG0NxpSOg7GXW00zVQm44AuZoBvHSFhq8rU5VonQ85CP5QewQPIrSg1uFQTyWTzvsh5llxUW/ynzSH6tZmaKvoX9krQNYY6g62tE3mPAav8S+rY580BqDl5KOnZE4sYL7qrQ1q5SgRdPgXZwzIyO3MTJrlARQh1ADtVV0I1zAFlP0jDMDxSe4lZMZspa80nvuLKUIjHKvv41Hu6aGuQeITXmzSevQLu1KGCj9xs3d+yzXVp7yHRz/KIIkUwonfnmoZwZ8F6phbwJBYefptqE/B/UzUSb4iESNgdbWySnyc1yPFIHaSGmGiKao+7FQx+TphilSL/GUjTlBNAmgdd8ArpWKPHXenfr8LBjP9kkbsrwOXDSKZoTZGXID7EB7xlDT+w534le89fpxXblp6L5aZLZuv0onoCUTRSc5Nn2A3TLOSFFu8KZL11GEZc/WH/+vWnZSNf1yi3YquP7SATRGC4JMnEBs2H/X0vKJC3RmuGCKX4lIufvQbjeJrsG0My3zPI/UWXbMRIHv1cX5MU7+H4FlUCMNkvZxNg+dr3ORSshavOKwq/+6zzi8jkLG9IDa1b99dcsa3hti2neUa/Zh3kVKI8CX2XaNlBPecUA9Zf9o+qjNZR/b8Q9HvLC+/M4qyBqcQVbM/w6Zxwe0Rb4uDEay2nOH2Wd1eaObRLYwO0JViRc1mYnjAoiKKbT6adkdx6YwSYugJAuJ5yUpf8xRlNayiOUVzhiC/TH4/osZaUCegTLYSxrhdPvC/swWPqbuQ8UoJRIyUqqMlXDhPwTQblLmejd3bBggF0znjnNeaJwDDmL1/nO6mbVajcE6unSHmP0jDJcBlrX52T8p/srvbhb2rt3+hIu28WbWNH6YW1IVYr+m8TxTZzjQCb36bfmf8YyrvHQU+XoV6TEPYdv0xJIZyu65xYlgVI6gwebVpBNgzYR/QgqRFCeiIzH24XebUl8T7YbNj9QDsO0A==",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 7de8b9c6-6042-4703-44ea-08dead30ebda",
        "X-MS-Exchange-CrossTenant-AuthSource": "BY5PR12MB4179.namprd12.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "08 May 2026 18:37:56.1197 (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n g8FcgVU0Zmzzj940pP7QltM/ZojV6KikAbnsHR9YcyTPZBHQlPEB9G4zBVjEHGhDTloya6dZD6yOFESvyDfC+g==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM4PR12MB6205",
        "Received-SPF": "permerror client-ip=2a01:111:f403:c105::1;\n envelope-from=tdave@nvidia.com;\n helo=CH1PR05CU001.outbound.protection.outlook.com",
        "X-Spam_score_int": "-14",
        "X-Spam_score": "-1.5",
        "X-Spam_bar": "-",
        "X-Spam_report": "(-1.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.44,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001,\n SPF_NONE=0.001 autolearn=no autolearn_force=no",
        "X-Spam_action": "no action",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "qemu development <qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://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 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"
    },
    "content": "Introduce a machine property to explicitly set the high PCIe MMIO\nwindow as BASE:SIZE, and apply it in the high memory map.\n\nUsage:\n    -machine pcie-mmio-window=0x400000000000:0x400000000000\n\nWhen using the fixed-bars property to assign guest physical\naddresses to PCI BARs, those addresses must fall within the\nmachine's MMIO64 window. The default aperture may be too small\nor not cover the required range.\n\nThis property allows the aperture to be resized or repositioned\nso that all fixed BAR addresses are accessible to the guest.\n\nSigned-off-by: Tushar Dave <tdave@nvidia.com>\n---\n hw/arm/virt.c         | 87 ++++++++++++++++++++++++++++++++++++++++++-\n include/hw/arm/virt.h |  2 +\n 2 files changed, 87 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/hw/arm/virt.c b/hw/arm/virt.c\nindex ec0d8475ca..55f41c7e46 100644\n--- a/hw/arm/virt.c\n+++ b/hw/arm/virt.c\n@@ -1915,8 +1915,31 @@ static void virt_set_high_memmap(VirtMachineState *vms,\n \n     for (i = VIRT_LOWMEMMAP_LAST; i < ARRAY_SIZE(extended_memmap); i++) {\n         region_enabled = virt_get_high_memmap_enabled(vms, i);\n-        region_base = ROUND_UP(base, extended_memmap[i].size);\n-        region_size = extended_memmap[i].size;\n+\n+        if (i == VIRT_HIGH_PCIE_MMIO && vms->override_pcie_mmio_size) {\n+            region_base = vms->override_pcie_mmio_base;\n+            region_size = vms->override_pcie_mmio_size;\n+\n+            /* Check for overlap with prior high regions */\n+            if (region_base < base) {\n+                error_report(\"pcie-mmio-window base 0x%\" PRIx64 \" overlaps \"\n+                            \"high memory layout (must be >= 0x%\" PRIx64 \")\",\n+                            (uint64_t)region_base, (uint64_t)base);\n+                exit(1);\n+            }\n+            /* Must not exceed the PA space */\n+            if (region_base + region_size > BIT_ULL(pa_bits)) {\n+                error_report(\"pcie-mmio-window [0x%\" PRIx64 \", 0x%\" PRIx64 \") \"\n+                            \"exceeds %d-bit PA space\",\n+                            (uint64_t)region_base,\n+                            (uint64_t)(region_base + region_size),\n+                            pa_bits);\n+                exit(1);\n+            }\n+        } else {\n+            region_base = ROUND_UP(base, extended_memmap[i].size);\n+            region_size = extended_memmap[i].size;\n+        }\n \n         vms->memmap[i].base = region_base;\n         vms->memmap[i].size = region_size;\n@@ -3004,6 +3027,60 @@ static void virt_set_gic_version(Object *obj, const char *value, Error **errp)\n     }\n }\n \n+static char *virt_get_pcie_mmio_window(Object *obj, Error **errp)\n+{\n+    VirtMachineState *vms = VIRT_MACHINE(obj);\n+\n+    if (!vms->override_pcie_mmio_size) {\n+        return g_strdup(\"\");\n+    }\n+    return g_strdup_printf(\"0x%\" PRIx64 \":0x%\" PRIx64,\n+                           (uint64_t)vms->override_pcie_mmio_base,\n+                           (uint64_t)vms->override_pcie_mmio_size);\n+}\n+\n+static void virt_set_pcie_mmio_window(Object *obj, const char *value, Error **errp)\n+{\n+    VirtMachineState *vms = VIRT_MACHINE(obj);\n+    uint64_t base = 0, size = 0;\n+    const char *endptr;\n+    int ret;\n+\n+    if (!value || !*value) {\n+        return;\n+    }\n+\n+    ret = qemu_strtou64(value, &endptr, 0, &base);\n+    if (ret || base == 0) {\n+        error_setg(errp, \"pcie-mmio-window base must be a positive number\");\n+        return;\n+    }\n+    if (*endptr != ':' || !*(endptr + 1)) {\n+        error_setg(errp, \"pcie-mmio-window expects BASE:SIZE\");\n+        return;\n+    }\n+\n+    ret = qemu_strtou64(endptr + 1, NULL, 0, &size);\n+    if (ret || size == 0) {\n+        error_setg(errp, \"pcie-mmio-window size must be a positive number\");\n+        return;\n+    }\n+\n+    if (!is_power_of_2(size)) {\n+        error_setg(errp, \"pcie-mmio-window size 0x%\" PRIx64 \" must be a power of 2\",\n+                   (uint64_t)size);\n+        return;\n+    }\n+    if (base % size != 0) {\n+        error_setg(errp, \"pcie-mmio-window base 0x%\" PRIx64 \" must be aligned to size 0x%\" PRIx64,\n+                  (uint64_t)base, (uint64_t)size);\n+        return;\n+    }\n+\n+    vms->override_pcie_mmio_base = base;\n+    vms->override_pcie_mmio_size = size;\n+}\n+\n static char *virt_get_iommu(Object *obj, Error **errp)\n {\n     VirtMachineState *vms = VIRT_MACHINE(obj);\n@@ -3582,6 +3659,12 @@ static void virt_machine_class_init(ObjectClass *oc, const void *data)\n                                           \"Set the IOMMU type. \"\n                                           \"Valid values are none and smmuv3\");\n \n+    object_class_property_add_str(oc, \"pcie-mmio-window\",\n+                                  virt_get_pcie_mmio_window,\n+                                  virt_set_pcie_mmio_window);\n+    object_class_property_set_description(oc, \"pcie-mmio-window\",\n+                                          \"Override the high PCIe MMIO window as BASE:SIZE\");\n+\n     object_class_property_add_bool(oc, \"default-bus-bypass-iommu\",\n                                    virt_get_default_bus_bypass_iommu,\n                                    virt_set_default_bus_bypass_iommu);\ndiff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h\nindex 5fcbd1c76f..410df857c7 100644\n--- a/include/hw/arm/virt.h\n+++ b/include/hw/arm/virt.h\n@@ -187,6 +187,8 @@ struct VirtMachineState {\n     MemoryRegion *sysmem;\n     MemoryRegion *secure_sysmem;\n     bool pci_preserve_config;\n+    hwaddr override_pcie_mmio_base;\n+    hwaddr override_pcie_mmio_size;\n };\n \n #define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM)\n",
    "prefixes": [
        "RFC",
        "7/8"
    ]
}