From nobody Sun Oct 25 00:00:15 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1790609126; cv=pass; d=zohomail.com; s=zohoarc; b=Yobwij51v3j3/7JZplDYNPBWO7CMI6J5FHmyNn6ifT5kI03rqIXbc+YLrrxG/0ZoW463hxpeda+cZ3wWlisbflUYRPb3sYFw9r4lO0ev0J4E2jm5SqE60tUlwfz9/utAh3ltO4V3+PzzghLxL7PFPxHG22lE4BEnVCoKHl3abe4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790609126; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=O6b14v4vHop7466fz+QxStpogsHwqTDpaKbLqBVVOxM=; b=Zx6QNJkxG7Moo/KEmvfdQkfLp/isH9V+vMB+sUqO7EWr51wQ2AkSa0dXhGYLsCSyecInST1OGCbQdMH5l/OJha47MKz6RJCuNK2D6NKrxZxzWEbuT0qTKIgn9zSrA0gdin1w+IYtKinOKhWldkrqp1LVKp5drmoD0xQKOHfRmpg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790609126106389.479159615227; Mon, 28 Sep 2026 08:25:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xBDDk-00014b-TC; Mon, 28 Sep 2026 11:24:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xBDDj-000149-34 for qemu-devel@nongnu.org; Mon, 28 Sep 2026 11:24:47 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xBDDe-0002k7-78 for qemu-devel@nongnu.org; Mon, 28 Sep 2026 11:24:46 -0400 Received: from pps.filterd (m0127841.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68SEflM01869208; Mon, 28 Sep 2026 08:24:38 -0700 Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11020126.outbound.protection.outlook.com [52.101.85.126]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4gxbk5kr4c-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 28 Sep 2026 08:24:38 -0700 (PDT) Received: from SA1PR02MB8368.namprd02.prod.outlook.com (2603:10b6:806:1f3::18) by PH0PR02MB7301.namprd02.prod.outlook.com (2603:10b6:510:1b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.24; Mon, 28 Sep 2026 15:24:34 +0000 Received: from SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2]) by SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2%6]) with mapi id 15.21.0451.022; Mon, 28 Sep 2026 15:24:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=O6b14v4vHop7466fz+QxStpogsHwqTDpaKbLqBVVO xM=; b=dkS+ee6VIYkeyoLjx5XZ8FYjAGOh8WdHBhfKFXM9Wv7wUcDlnSklZ2ZhL bAM5N9LbWLCZ8/H5gW+/ruD+7ZB3/nk3Tls9OimP2xbmcfdlejxeKoWhqWImnHb+ 83nnzmesAEAebrRsz5aPv5FiRmFQ7Zhhq4bWcZYyqgwSYcOvTnj0lfdJqe8gbT6a 9C3snJhOmDuskwMRI6G+t/nlbY/Nk46+OpzH64wugiQ4LHPX7aHPmXeD5HHvFwUP FfCOUfZoIFrkBKmZtvuAGTltX0KzCYotQEjtmm9k9G77/lo1YKPkx+4Fuj7LH8V4 Ie2Ko7pBsubz1tXfxXk737aXUm/Dg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ha1uKATvvFY070IpGS5ptMGWbg4kb+l8rQRBYxoBDTQFVpeu5lS3qe8kYAq5aK1JYIXeDKrOD7ozgPY0gMVsGA1+UDP/tTe+8UEGso6nHmyWjOlTiGLkiX1cVv0GZgva4ynHgXITfJVS0laM/2cp70np1QkLpasWcOONparekl4X+cuzOILuhCBqebNbSevLOoCUfpzHFAmmhjITckg4cm2Q6F3ABbyRirVbEZ7eV0hfUxEkwnryHALOtwYjfrK0Rgb+mTsxHZaSKZlZJPsiy34370mFSKETSh2Bzhw38JSB0URv2/MPsjChxJiBr6LuKweAsBrNZrQKdJBu8lXR+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=O6b14v4vHop7466fz+QxStpogsHwqTDpaKbLqBVVOxM=; b=R3Q6zKy2vCFP9SD1UlJUccXcDE5BaMxaAUNY0PxuCW1s9mWf10WpTD/BxBjdSqQI5VC9f3W3BjCJKYyrjWmTmzZIwqGsTCbs5jkhrYXOzxhIFeTxfVUKLizWaP81Py/9JadtZr00EN0n0Yx9zNOFwDWkeGpwLTFJSYMuhA90ZXmTAFFovViUFEfQaG/Mk/RowXiONLvv+t52PAufMQUX5Nww51XkL9tabDvx/3RorTT7GsXYWc1+ZcgkLluI+p5UU53WOmHVe4c7NVtbSLHxi9Lv8B0vGArhxaUQv+CjQGA7wdQW9Dmv2dcDv4g+Va2lj+u469eDZRDh9bZRtcoz8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O6b14v4vHop7466fz+QxStpogsHwqTDpaKbLqBVVOxM=; b=go8nQGIdo0i3xn81m5BeaHL0icctJ2DAFA+enRI10bb/fMGor1sc+QzTvpOR6m9q5b2wxhLdvP11meGgNbHA3AGrTFpuYSrKbLni/eRFGJAv8GPMs/lCVD+Ze/mTuiw/dJh3qCmKIgpiEQI8DQG0I+FgyZb0XgutpAkkcVNkj/gXT1q+hi6nlI6BAvapyHHbwMGjxI2jfyGL6FisqrEby5t2OKZ8N6bMPKmyJw4/m8YOtKha+dZIXweAq8FUR2741zdITBwzpFPI62FIX1RUYWIXb89aEKzoLfyomXlGrRl3V6xWRtcJIdbWWGNHrbQhcfUgpo6G8nWtwaEArX2A7Q== From: David Vrabel To: David Vrabel , "qemu-devel@nongnu.org" CC: "Michael S. Tsirkin" , Zhao Liu , =?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= , Paolo Bonzini , Pierrick Bouvier , Gerd Hoffmann Subject: [PATCH v3 1/4] hw/pci-bridge: Add generic PCIe switch upstream and downstream ports Thread-Topic: [PATCH v3 1/4] hw/pci-bridge: Add generic PCIe switch upstream and downstream ports Thread-Index: AQHdT112ZaIgEnSEtkyeUVlOP5Qh1g== Date: Mon, 28 Sep 2026 15:24:33 +0000 Message-ID: <20260928152431.310363-2-david.vrabel@nutanix.com> References: <20260928152431.310363-1-david.vrabel@nutanix.com> In-Reply-To: <20260928152431.310363-1-david.vrabel@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nutanix.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR02MB8368:EE_|PH0PR02MB7301:EE_ x-ms-office365-filtering-correlation-id: 1fde72b9-9adf-4443-70ab-08df1d749994 x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|23010399003|376014|3023799007|260925021311599003|260925022911599003|260925021911599003|56012099006|10067099003|5023799004|38070700021|18002099003|22082099003|13003099007; x-microsoft-antispam-message-info: BvOewUiRIfkD9UDNQeL78VZqA+XtOfClCPeuh5tRE231lw+bXwynSgZmlpdYvDDbNM4hSnLeER9/Dz0X8w8le7bEhJD2m/t/3OmJebZX48HE2b7KbjTqWUGP9O7fSS/PhHyuGcSgNBMj6YesMBUgq93TjIe6jg4XLFeoxAIEutmVWGc4wiTCCQlZG7q4yFFBTq6h+3shs+AkA2oaoJQ3PnhKX6JZatwmcGJ2hX1HyuD7LFdZB5OkrNMKeVmvZmPoH5I9P8aPuxZ9rmn5wgXeRk6WZmTxK9277bNUTAFTmdDn3+MKfDBxAOp7BcJQkUCn1rzdU+e/zOqUhbIx9AFA1n5FSqFnKH/+6MaST7W84UOHn3rmu0KoH58iKgDaVZbv5Z53OBK2qR++5yG3mSpy1E8S6IEOXOc/jJn/kl4WIP8RAOORBvhN9QwZXFrf/LZp+YQgSYlZpFZmFCAKziWwKtGiFtcBZ9Kv07xHfNIVgXCL9VfGb480X5LDMebDRuDXrbgcRRwxWFYQUWzEYqkVDO8pOPv1FXjHALEMBH6yH3PdKqxMAANkW14fal7EKzpSywJG6CVzfVvfE06Hp0onjvS5GsZag8xYGgAlRTdj2TodElP8yAn/bvy57hsyyaDg8ecSamnMySLBTiRmv33r1hrK1pdPPSW0XoOPkcyAV2oKZ0cbSbYLDqX/P02Ta25B x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR02MB8368.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(3023799007)(260925021311599003)(260925022911599003)(260925021911599003)(56012099006)(10067099003)(5023799004)(38070700021)(18002099003)(22082099003)(13003099007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?xqWbXVHeXdgc4AcijUFjsgquDnRPVII8C7LiWXX2TRPuRBKJfSdEIvb+/L?= =?iso-8859-1?Q?xrVHJr+6hNurmBHc5WWxCa+fngHtQNKX0dTuFiFT5CgzlLwGn+inN8zmn3?= =?iso-8859-1?Q?wwpLNoJYUwERwBwu45XKVL1ypBw8p19KI5ltBnGamzY0k/hoCnnV98chyb?= =?iso-8859-1?Q?eZsOSFUYrr0dZ+NtNTHQGLUrTVjwyfh0qLeh1qAn+Xz6FUPSlGhKqBbU18?= =?iso-8859-1?Q?ya7TgrfNfbG9R5whumFiCX6ZwY6t7bpi2tj/fBgm3OpWioWOByd2drRbj9?= =?iso-8859-1?Q?XwMQsjMpMs3SgtegZSL4EdBbT3fHy2A1zQpJr4NJsyJg8KBMIXpyWl39ui?= =?iso-8859-1?Q?em2aM0O95EJmZ6SK3nvI7yKq0EU+1jePF9D78/1UenLVaQEAZMfVTl9XGz?= =?iso-8859-1?Q?51vo3kE3+xD758wz8AiC8xDCylLETneVdsqtCc+Qn/wh0VVw4ogWirvY1L?= =?iso-8859-1?Q?z7v0So9rQr00h3uqrxhjpt/HkCPdsO7v3DRfAGyAfOBHFFZdJTaBCYqLW5?= =?iso-8859-1?Q?XFRfVpUVov/5OkOlbTeDCZkPGfhpUU30hNSQ2gZ3L+6XrgYXxO8c3hpW82?= =?iso-8859-1?Q?SQqKmO7SCcfaJ19tCer85iVGNjmp9KhE0wZZuv/2yWmzbJlsnl9a9Gjm3d?= =?iso-8859-1?Q?ahzHYtrH91wb8MDCpJhAE6rhO6JaqW2k+fpccwEGywUwexqNgMZ4HzZ1J8?= =?iso-8859-1?Q?cmho6owHpbTAPKVEbvgA0UJYWhgKNjxoHVpnpDXPuaPd/in53e5qOp47dZ?= =?iso-8859-1?Q?OSKGSBcstDq5gh6WNwnqS4myfeDyYvQ5gnwQnwqiC+n0ZWHY+qHR1acyII?= =?iso-8859-1?Q?+DgTxE9hNHHrwIZwTiZnJMTTbucbD8seBwzsfbPcDnYKQ3EDLxpjHnJoJp?= =?iso-8859-1?Q?AGBKYDzXT0zpHJrOjNIv2K8l5cPTWBeKks+xqogAr47kHwaZN7rhnprBp7?= =?iso-8859-1?Q?5aTit0IMR6VbHqs3xUCnBJL5iHbovKPpOg1fT+YpwdutLFqeXD7axRzuif?= =?iso-8859-1?Q?95Xb3GHFQLfzY93SlU/juHgiCr9FfDcUOTsyIu1DpwJvgJt0Ji7VuKFNEO?= =?iso-8859-1?Q?qGjojU0vCv6a9diurSJqfhFaYAtn7Vp/NcQj8vIlbUp8p9rcFuDVN233Fl?= =?iso-8859-1?Q?+KqD13mbbzouVE/yZKHaM5eD3CrfuEK3Xy2q1PZ9ZF1hZg3w8TrioFKEjB?= =?iso-8859-1?Q?y7/AJrpdvVSiYfp9lGVA4dQVkLp5tV8Ds0lMpg/MqB7ww9HJGroyy7WCiF?= =?iso-8859-1?Q?2+y/RcrlvMVV/Ucuf8udJPhc3Iic7NdzMnzCtAjqTKkxcXvxGqww5pNuff?= =?iso-8859-1?Q?lKhNssH6Ftqi7r9gBhLqsZGq36r7xB2VAizFkfJr0gRszYB30rH1iXjz4p?= =?iso-8859-1?Q?5rRxHjls/h6ZvGAqbjlR3TKSZMJAy97eIBXbhDTYmmqoXuUE7oi+Zczp1+?= =?iso-8859-1?Q?xkx+2pxwtYC0oiw7pnQxhuyfVhoY/rYvpwZCclK9PIyH+b57InYRWmgoAV?= =?iso-8859-1?Q?C7W5mldUQBXbstEB+g/ElN788WLRhSLFjnt2HAbmkaxaZy6JUF/tLLrN+Z?= =?iso-8859-1?Q?xvd+b3/LjwhWYq5RTya8lUwlbCPjvoWSlI85SqS3uei2BziDtrb7WsrJO+?= =?iso-8859-1?Q?mZW5DSvEZZCYB/BgUEh16UrM2TsGsi8LRnBLyTTXbnZwJPLWL3We5Z/jV8?= =?iso-8859-1?Q?ppFftbfpFpZKskM29kuJhSkiKbqyVKXKQnKe6ayB5ndPPrZ7APj8t41mZD?= =?iso-8859-1?Q?n/7jLsTHpuRfNkB21bHJmhYfYmgE1VBSsD0wOn0toxMCQ1nCCnP7oJcYEe?= =?iso-8859-1?Q?NZREmWfPpOo8sTqqzR44G874Si0RoIE=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: DrvLQDVvfY42sdJ2LDyJm7F3WLzlZM80cjjs+VLoFndx8Hcr/sStPaUY/l6CyY0A635F3dCZND7Rlv1m3Zs4eBxlNykq5FWoJT4T/sNHt3lBU4y4Tq6UevT768LNeNl2EcYT5zNR8Jm5W6GBdtUlHN+TEDYMfuNpe9cK37joDuXPx+KTL1k2hxH/VRHhGvWcX7eas1M/RE2yHOw2Ktq6TN9I7HuRHFwy4V2NerYdRnqEXIpDi+c3wIskNYRjgqBDYocT0LZt4OUpJkicU4nsMFMxBn4FclVSojY+gTPMD5Hbb+XRajsi6vioMMXKD/jp6RrmE89mJ/LDJhBY0tOvPA== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR02MB8368.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fde72b9-9adf-4443-70ab-08df1d749994 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Sep 2026 15:24:33.2675 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: gN8bGkZDrLUHDW+GWOhOKcPkF/ncx/kWY9lJrbLCv190xpU5hp2Oqe+1579KK/X3yaQHG18Vd1qd48CS453Mbzcq5OOYjTQxhyXKHt7Quf4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR02MB7301 X-Authority-Analysis: v=2.4 cv=T6EZ3PKQ c=1 sm=1 tr=0 ts=6aba86b6 cx=c_pps a=w1Ugl8llyohtshnQLMHy5g==:117 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=8nJEP1OIZ-IA:10 a=VdqzKS8jKosA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=jxMXjlTPpCISP5mWtjnE:22 a=vTr9H3xdAAAA:8 a=64Cc0HZtAAAA:8 a=20KFwNOVAAAA:8 a=59scvrWWz1I71DQtTbwA:9 a=wPNLvfGTeEIA:10 X-Proofpoint-GUID: oE-R4Els6vni5W5_2VLUBtTJWraFVA49 X-Proofpoint-ORIG-GUID: oE-R4Els6vni5W5_2VLUBtTJWraFVA49 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTI4MDA2MSBTYWx0ZWRfX9sbfxIimcuey Ln0O9bdVwIZIMkHEOkFlfoJ22xHkIo/IW8z2y93LTYg5HE3tJDhQwbvHNsuRW350U/WBFaJehmL rKgpox4tngnqyROjIryhq9Ehk3bMChM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTI4MDA2MSBTYWx0ZWRfX8HA126aVOcWT HQLCugrR0tlCAQbPqHTqhbPUTj122KPPiqhwtlDuuxoF8mN4DAC1/CMT496WJIhkaF4BHTkjRH2 Lu6quuB1SQJRk62FL8YctbD8Ooa7bHi78txVSJwq9sNQX0AuZd4pyblUbqUb9ZqHcT1aHsKL3hF HCbjPA7YJdkGh7Yx3W/yPQ/wVbT/FgIAu/8mkcxgvNcgOQ2uSCrFOkWosHyodOlcMoQgWBuXs+5 dA5Xjzzbtf8e9pjRB5wezGEzLHsK39BVZJZA9mlms1GruN4QkEMWmYyk4864hXebZWxYskELLdE oD4uK97We4RtcPA/hiMhKqtEwza5mUwIEQQ4wwEM6dCdarxXPjWlu62lzq6Sk3fPaeAVJ9G8vPU x3r/XoEexK/Y/24o6/pd1kQ3lKZ3RyrcAX3EKqbeWCP0zkvtXyuBUDVleaBy05ko1NjscdWx/4K Kn9GDm0uHJ2xH6V7fzg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-28_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=david.vrabel@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.238, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1790609128115158501 Content-Type: text/plain; charset="utf-8" The TI XIO3130 PCIe switch is a vintage Gen1 device, so we add generic PCIe upstream and downstream port devices that are Gen6. In guests with pairs of passthrough PCIe devices (e.g, a GPU+NIC pair) often need to place the devices behind a common (emulated) PCIe switch so in-guest software (such as NCCL) can correctly determine that P2P transactions between the devices is possible. NCCL also needs to be able to determine the available PCIe bandwidth. If such a guest sees the TI XIO3130 PCIe switch, then it incorrectly calculates only 2.5 GT/s and x1 is available, but the real hardware might be 32 GT/s and x16. Instead of enhancing the existing switch and claiming it is more capable than the real hardware we add additional generic PCIe upstream and downstream port devices, which matches the existing generic PCIe root port device. The speed and width of the ports are configurable. Signed-off-by: David Vrabel --- Cc: Gerd Hoffmann --- docs/pcie.txt | 6 +- docs/specs/pci-ids.rst | 4 + hw/pci-bridge/gen_pcie_downstream_port.c | 202 ++++++++++++++++++++ hw/pci-bridge/gen_pcie_upstream_port.c | 177 +++++++++++++++++ hw/pci-bridge/meson.build | 3 +- include/hw/pci/pci.h | 2 + tests/functional/x86_64/meson.build | 1 + tests/functional/x86_64/test_pcie_switch.py | 98 ++++++++++ 8 files changed, 489 insertions(+), 4 deletions(-) create mode 100644 hw/pci-bridge/gen_pcie_downstream_port.c create mode 100644 hw/pci-bridge/gen_pcie_upstream_port.c create mode 100755 tests/functional/x86_64/test_pcie_switch.py diff --git a/docs/pcie.txt b/docs/pcie.txt index df49178311..f12a9daaad 100644 --- a/docs/pcie.txt +++ b/docs/pcie.txt @@ -85,7 +85,7 @@ number of PCI Express Root Ports per PCI Express Root Bus= is 256. =20 Prefer grouping PCI Express Root Ports into multi-function devices to keep a simple flat hierarchy that is enough for most scenarios. -Only use PCI Express Switches (x3130-upstream, xio3130-downstream) +Only use PCI Express Switches (pcie-upstream-port, pcie-downstream-port) if there is no more room for PCI Express Root Ports. Please see section 4. for further justifications. =20 @@ -120,8 +120,8 @@ Plug only PCI Express devices into PCI Express Ports. -device pcie-root-port,id=3Droot_port3,chassis=3Dx2,addr=3Dz.2[,slot= =3Dy2][,bus=3Dpcie.0] \ 2.2.3 Plugging a PCI Express device into a Switch: -device pcie-root-port,id=3Droot_port1,chassis=3Dx,slot=3Dy[,bus=3Dp= cie.0][,addr=3Dz] \ - -device x3130-upstream,id=3Dupstream_port1,bus=3Droot_port1[,addr=3D= x] \ - -device xio3130-downstream,id=3Ddownstream_port1,bus=3Dupstream_port= 1,chassis=3Dx1,slot=3Dy1[,addr=3Dz1]] \ + -device pcie-upstream-port,id=3Dupstream_port1,bus=3Droot_port1[,add= r=3Dx] \ + -device pcie-downstream-port,id=3Ddownstream_port1,bus=3Dupstream_po= rt1,chassis=3Dx1,slot=3Dy1[,addr=3Dz1]] \ -device ,bus=3Ddownstream_port1 =20 Notes: diff --git a/docs/specs/pci-ids.rst b/docs/specs/pci-ids.rst index 261b0f359f..60cb0f7db6 100644 --- a/docs/specs/pci-ids.rst +++ b/docs/specs/pci-ids.rst @@ -100,6 +100,10 @@ PCI devices (other than virtio): PCI UFS device (``-device ufs``) 1b36:0014 PCI RISC-V IOMMU device +1b36:0015 + PCIe Upstream Switch Port (``-device pcie-upstream-port``) +1b36:0016 + PCIe Downstream Switch Port (``-device pcie-downstream-port``) =20 All these devices are documented in :doc:`index`. =20 diff --git a/hw/pci-bridge/gen_pcie_downstream_port.c b/hw/pci-bridge/gen_p= cie_downstream_port.c new file mode 100644 index 0000000000..d9c182e881 --- /dev/null +++ b/hw/pci-bridge/gen_pcie_downstream_port.c @@ -0,0 +1,202 @@ +/* + * Generic PCI Express Downstream Port emulation + * + * Copyright (C) 2026 Nutanix, Inc. + * + * Derived from gen_pcie_root_port.c: + * Copyright (C) 2017 Red Hat Inc + * + * Derived from xio3130_downstream.c: + * Copyright (c) 2010 Isaku Yamahata + * VA Linux Systems Japan K.K. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qemu/module.h" +#include "hw/pci/msix.h" +#include "hw/pci/pcie.h" +#include "hw/pci/pcie_port.h" +#include "hw/core/qdev-properties.h" +#include "hw/core/qdev-properties-system.h" +#include "migration/vmstate.h" +#include "qom/object.h" + +#define TYPE_GEN_PCIE_DOWNSTREAM_PORT "pcie-downstream-port" +OBJECT_DECLARE_SIMPLE_TYPE(GenPCIEDownstreamPort, GEN_PCIE_DOWNSTREAM_PORT) + +struct GenPCIEDownstreamPort { + PCIESlot parent_obj; +}; + +#define GEN_PCIE_DOWNSTREAM_PORT_AER_OFFSET 0x100 +#define GEN_PCIE_DOWNSTREAM_PORT_ACS_OFFSET \ + (GEN_PCIE_DOWNSTREAM_PORT_AER_OFFSET + PCI_ERR_SIZEOF) +#define GEN_PCIE_DOWNSTREAM_PORT_MSIX_NR_VECTOR 1 + + +static int gen_downstream_interrupts_init(PCIDevice *d, Error **errp) +{ + int rc; + + rc =3D msix_init_exclusive_bar(d, GEN_PCIE_DOWNSTREAM_PORT_MSIX_NR_VEC= TOR, + 0, errp); + if (rc < 0) { + assert(rc =3D=3D -ENOTSUP); + } else { + msix_vector_use(d, 0); + } + + return rc; +} + +static void gen_downstream_interrupts_uninit(PCIDevice *d) +{ + msix_uninit_exclusive_bar(d); +} + +static void gen_downstream_write_config(PCIDevice *d, uint32_t address, + uint32_t val, int len) +{ + uint16_t slt_ctl, slt_sta; + + pcie_cap_slot_get(d, &slt_ctl, &slt_sta); + pci_bridge_write_config(d, address, val, len); + pcie_cap_flr_write_config(d, address, val, len); + pcie_cap_slot_write_config(d, slt_ctl, slt_sta, address, val, len); + pcie_aer_write_config(d, address, val, len); +} + +static void gen_downstream_reset(DeviceState *qdev) +{ + PCIDevice *d =3D PCI_DEVICE(qdev); + + pcie_cap_deverr_reset(d); + pcie_cap_slot_reset(d); + pcie_cap_arifwd_reset(d); + pci_bridge_reset(qdev); +} + +static void gen_downstream_realize(PCIDevice *d, Error **errp) +{ + PCIEPort *p =3D PCIE_PORT(d); + PCIESlot *s =3D PCIE_SLOT(d); + int rc; + + pci_bridge_initfn(d, TYPE_PCIE_BUS); + pcie_port_init_reg(d); + + rc =3D gen_downstream_interrupts_init(d, errp); + if (rc < 0) { + goto err_bridge; + } + + rc =3D pcie_cap_init(d, 0x90, PCI_EXP_TYPE_DOWNSTREAM, p->port, errp); + if (rc < 0) { + goto err_int; + } + pcie_cap_flr_init(d); + pcie_cap_deverr_init(d); + pcie_cap_slot_init(d, s); + pcie_cap_arifwd_init(d); + + pcie_chassis_create(s->chassis); + rc =3D pcie_chassis_add_slot(s); + if (rc < 0) { + error_setg(errp, "Can't add chassis slot, error %d", rc); + goto err_cap; + } + + rc =3D pcie_aer_init(d, PCI_ERR_VER, GEN_PCIE_DOWNSTREAM_PORT_AER_OFFS= ET, + PCI_ERR_SIZEOF, errp); + if (rc < 0) { + goto err_chassis; + } + + pcie_acs_init(d, GEN_PCIE_DOWNSTREAM_PORT_ACS_OFFSET); + + return; + +err_chassis: + pcie_chassis_del_slot(s); +err_cap: + pcie_cap_exit(d); +err_int: + gen_downstream_interrupts_uninit(d); +err_bridge: + pci_bridge_exitfn(d); +} + +static void gen_downstream_exitfn(PCIDevice *d) +{ + PCIESlot *s =3D PCIE_SLOT(d); + + pcie_aer_exit(d); + pcie_chassis_del_slot(s); + pcie_cap_exit(d); + gen_downstream_interrupts_uninit(d); + pci_bridge_exitfn(d); +} + +static const VMStateDescription vmstate_gen_pcie_downstream_port =3D { + .name =3D "pcie-downstream-port", + .priority =3D MIG_PRI_PCI_BUS, + .version_id =3D 1, + .minimum_version_id =3D 1, + .post_load =3D pcie_cap_slot_post_load, + .fields =3D (const VMStateField[]) { + VMSTATE_PCI_DEVICE(parent_obj.parent_obj.parent_obj, PCIESlot), + VMSTATE_STRUCT(parent_obj.parent_obj.parent_obj.exp.aer_log, + PCIESlot, 0, vmstate_pcie_aer_log, PCIEAERLog), + VMSTATE_MSIX(parent_obj.parent_obj.parent_obj.parent_obj, + GenPCIEDownstreamPort), + VMSTATE_END_OF_LIST() + } +}; + +static const Property gen_pcie_downstream_port_props[] =3D { + DEFINE_PROP_BIT(COMPAT_PROP_PCP, PCIDevice, cap_present, + QEMU_PCIE_SLTCAP_PCP_BITNR, true), + DEFINE_PROP_PCIE_LINK_SPEED("x-speed", PCIESlot, + speed, PCIE_LINK_SPEED_64), + DEFINE_PROP_PCIE_LINK_WIDTH("x-width", PCIESlot, + width, PCIE_LINK_WIDTH_32), +}; + +static void gen_pcie_downstream_port_class_init(ObjectClass *klass, + const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); + + k->config_write =3D gen_downstream_write_config; + k->realize =3D gen_downstream_realize; + k->exit =3D gen_downstream_exitfn; + k->vendor_id =3D PCI_VENDOR_ID_REDHAT; + k->device_id =3D PCI_DEVICE_ID_REDHAT_PCIE_DSP; + set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); + dc->desc =3D "PCI Express Downstream Port"; + device_class_set_legacy_reset(dc, gen_downstream_reset); + dc->vmsd =3D &vmstate_gen_pcie_downstream_port; + device_class_set_props(dc, gen_pcie_downstream_port_props); +} + +static const TypeInfo gen_pcie_downstream_port_info =3D { + .name =3D TYPE_GEN_PCIE_DOWNSTREAM_PORT, + .parent =3D TYPE_PCIE_SLOT, + .instance_size =3D sizeof(GenPCIEDownstreamPort), + .class_init =3D gen_pcie_downstream_port_class_init, + .interfaces =3D (const InterfaceInfo[]) { + { INTERFACE_PCIE_DEVICE }, + { } + }, +}; + +static void gen_pcie_downstream_port_register_types(void) +{ + type_register_static(&gen_pcie_downstream_port_info); +} + +type_init(gen_pcie_downstream_port_register_types) diff --git a/hw/pci-bridge/gen_pcie_upstream_port.c b/hw/pci-bridge/gen_pci= e_upstream_port.c new file mode 100644 index 0000000000..e86eff099f --- /dev/null +++ b/hw/pci-bridge/gen_pcie_upstream_port.c @@ -0,0 +1,177 @@ +/* + * Generic PCI Express Upstream Port emulation + * + * Copyright (C) 2026 Nutanix, Inc. + * + * Derived from gen_pcie_root_port.c: + * Copyright (C) 2017 Red Hat Inc + * + * Derived from xio3130_upstream.c: + * Copyright (c) 2010 Isaku Yamahata + * VA Linux Systems Japan K.K. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qemu/module.h" +#include "hw/pci/msix.h" +#include "hw/pci/pcie.h" +#include "hw/pci/pcie_port.h" +#include "hw/core/qdev-properties.h" +#include "hw/core/qdev-properties-system.h" +#include "migration/vmstate.h" +#include "qom/object.h" + +#define TYPE_GEN_PCIE_UPSTREAM_PORT "pcie-upstream-port" +OBJECT_DECLARE_SIMPLE_TYPE(GenPCIEUpstreamPort, GEN_PCIE_UPSTREAM_PORT) + +struct GenPCIEUpstreamPort { + PCIEPort parent_obj; + + PCIExpLinkSpeed speed; + PCIExpLinkWidth width; +}; + +#define GEN_PCIE_UPSTREAM_PORT_AER_OFFSET 0x100 +#define GEN_PCIE_UPSTREAM_PORT_MSIX_NR_VECTOR 1 + +static int gen_upstream_interrupts_init(PCIDevice *d, Error **errp) +{ + int rc; + + rc =3D msix_init_exclusive_bar(d, GEN_PCIE_UPSTREAM_PORT_MSIX_NR_VECTO= R, + 0, errp); + if (rc < 0) { + assert(rc =3D=3D -ENOTSUP); + } else { + msix_vector_use(d, 0); + } + + return rc; +} + +static void gen_upstream_interrupts_uninit(PCIDevice *d) +{ + msix_uninit_exclusive_bar(d); +} + +static void gen_upstream_write_config(PCIDevice *d, uint32_t address, + uint32_t val, int len) +{ + pci_bridge_write_config(d, address, val, len); + pcie_cap_flr_write_config(d, address, val, len); + pcie_aer_write_config(d, address, val, len); +} + +static void gen_upstream_reset(DeviceState *qdev) +{ + PCIDevice *d =3D PCI_DEVICE(qdev); + GenPCIEUpstreamPort *usp =3D GEN_PCIE_UPSTREAM_PORT(d); + + pci_bridge_reset(qdev); + pcie_cap_deverr_reset(d); + pcie_cap_fill_link_ep_usp(d, usp->width, usp->speed, false); +} + +static void gen_upstream_realize(PCIDevice *d, Error **errp) +{ + PCIEPort *p =3D PCIE_PORT(d); + int rc; + + pci_bridge_initfn(d, TYPE_PCIE_BUS); + pcie_port_init_reg(d); + + rc =3D gen_upstream_interrupts_init(d, errp); + if (rc < 0) { + goto err_bridge; + } + + rc =3D pcie_cap_init(d, 0x90, PCI_EXP_TYPE_UPSTREAM, p->port, errp); + if (rc < 0) { + goto err_int; + } + pcie_cap_flr_init(d); + pcie_cap_deverr_init(d); + + rc =3D pcie_aer_init(d, PCI_ERR_VER, GEN_PCIE_UPSTREAM_PORT_AER_OFFSET, + PCI_ERR_SIZEOF, errp); + if (rc < 0) { + goto err_cap; + } + + return; + +err_cap: + pcie_cap_exit(d); +err_int: + gen_upstream_interrupts_uninit(d); +err_bridge: + pci_bridge_exitfn(d); +} + +static void gen_upstream_exitfn(PCIDevice *d) +{ + pcie_aer_exit(d); + pcie_cap_exit(d); + gen_upstream_interrupts_uninit(d); + pci_bridge_exitfn(d); +} + +static const VMStateDescription vmstate_gen_pcie_upstream_port =3D { + .name =3D "pcie-upstream-port", + .priority =3D MIG_PRI_PCI_BUS, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_PCI_DEVICE(parent_obj.parent_obj, PCIEPort), + VMSTATE_STRUCT(parent_obj.parent_obj.exp.aer_log, PCIEPort, 0, + vmstate_pcie_aer_log, PCIEAERLog), + VMSTATE_MSIX(parent_obj.parent_obj.parent_obj, GenPCIEUpstreamPort= ), + VMSTATE_END_OF_LIST() + } +}; + +static const Property gen_pcie_upstream_port_props[] =3D { + DEFINE_PROP_PCIE_LINK_SPEED("x-speed", GenPCIEUpstreamPort, + speed, PCIE_LINK_SPEED_64), + DEFINE_PROP_PCIE_LINK_WIDTH("x-width", GenPCIEUpstreamPort, + width, PCIE_LINK_WIDTH_32), +}; + +static void gen_pcie_upstream_port_class_init(ObjectClass *klass, + const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); + + k->config_write =3D gen_upstream_write_config; + k->realize =3D gen_upstream_realize; + k->exit =3D gen_upstream_exitfn; + k->vendor_id =3D PCI_VENDOR_ID_REDHAT; + k->device_id =3D PCI_DEVICE_ID_REDHAT_PCIE_USP; + set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); + dc->desc =3D "PCI Express Upstream Port"; + device_class_set_legacy_reset(dc, gen_upstream_reset); + dc->vmsd =3D &vmstate_gen_pcie_upstream_port; + device_class_set_props(dc, gen_pcie_upstream_port_props); +} + +static const TypeInfo gen_pcie_upstream_port_info =3D { + .name =3D TYPE_GEN_PCIE_UPSTREAM_PORT, + .parent =3D TYPE_PCIE_PORT, + .instance_size =3D sizeof(GenPCIEUpstreamPort), + .class_init =3D gen_pcie_upstream_port_class_init, + .interfaces =3D (const InterfaceInfo[]) { + { INTERFACE_PCIE_DEVICE }, + { } + }, +}; + +static void gen_pcie_upstream_port_register_types(void) +{ + type_register_static(&gen_pcie_upstream_port_info); +} + +type_init(gen_pcie_upstream_port_register_types) diff --git a/hw/pci-bridge/meson.build b/hw/pci-bridge/meson.build index 2e0eb0d233..fd0ad188bc 100644 --- a/hw/pci-bridge/meson.build +++ b/hw/pci-bridge/meson.build @@ -2,7 +2,8 @@ pci_ss =3D ss.source_set() pci_ss.add(when: 'CONFIG_PCI_BRIDGE', if_true: files('pci_bridge_dev.c')) pci_ss.add(when: 'CONFIG_I82801B11', if_true: files('i82801b11.c')) pci_ss.add(when: 'CONFIG_IOH3420', if_true: files('ioh3420.c')) -pci_ss.add(when: 'CONFIG_PCIE_PORT', if_true: files('pcie_root_port.c', 'g= en_pcie_root_port.c')) +pci_ss.add(when: 'CONFIG_PCIE_PORT', if_true: files('pcie_root_port.c', 'g= en_pcie_root_port.c', + 'gen_pcie_upstream_por= t.c', 'gen_pcie_downstream_port.c')) pci_ss.add(when: 'CONFIG_PCIE_PCI_BRIDGE', if_true: files('pcie_pci_bridge= .c')) pci_ss.add(when: 'CONFIG_PXB', if_true: files('pci_expander_bridge.c'), if_false: files('pci_expander_bridge_stubs.= c')) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index f2448e941a..6520886855 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -121,6 +121,8 @@ extern bool pci_available; #define PCI_DEVICE_ID_REDHAT_ACPI_ERST 0x0012 #define PCI_DEVICE_ID_REDHAT_UFS 0x0013 #define PCI_DEVICE_ID_REDHAT_RISCV_IOMMU 0x0014 +#define PCI_DEVICE_ID_REDHAT_PCIE_USP 0x0015 +#define PCI_DEVICE_ID_REDHAT_PCIE_DSP 0x0016 #define PCI_DEVICE_ID_REDHAT_QXL 0x0100 =20 #define FMT_PCIBUS PRIx64 diff --git a/tests/functional/x86_64/meson.build b/tests/functional/x86_64/= meson.build index 0353b2af8e..0ce49764a2 100644 --- a/tests/functional/x86_64/meson.build +++ b/tests/functional/x86_64/meson.build @@ -43,6 +43,7 @@ tests_x86_64_system_thorough =3D [ 'multiprocess', 'netdev_ethtool', 'nvme_migration', + 'pcie_switch', 'replay', 'reverse_debug', 'tuxrun', diff --git a/tests/functional/x86_64/test_pcie_switch.py b/tests/functional= /x86_64/test_pcie_switch.py new file mode 100755 index 0000000000..7088b85059 --- /dev/null +++ b/tests/functional/x86_64/test_pcie_switch.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 +# +# Functional test for generic PCIe switch upstream and downstream ports +# +# Copyright (C) 2026 Nutanix, Inc. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pa= ttern + + +class PCIeSwitchPort(LinuxKernelTest): + + timeout =3D 120 + + ASSET_KERNEL =3D Asset( + ('https://archives.fedoraproject.org/pub/archive/fedora/linux/rele= ases' + '/31/Server/x86_64/os/images/pxeboot/vmlinuz'), + 'd4738d03dbbe083ca610d0821d0a8f1488bebbdccef54ce33e3adb35fda00129') + + ASSET_INITRD =3D Asset( + ('https://archives.fedoraproject.org/pub/archive/fedora/linux/rele= ases' + '/31/Server/x86_64/os/images/pxeboot/initrd.img'), + '277cd6c7adf77c7e63d73bbb2cded8ef9e2d3a2f100000e92ff1f8396513cd8b') + + USP_VENDOR_ID =3D '0x1b36' + USP_DEVICE_ID =3D '0x0015' + DSP_VENDOR_ID =3D '0x1b36' + DSP_DEVICE_ID =3D '0x0016' + CLASS_BRIDGE_PCI_PCI =3D '0x060400' + + def command(self, command: str, expected_result: int =3D 0): + command =3D f'echo __begin ; {command} ; D=3D"done" ; echo "$?/__$= D"' + output =3D exec_command_and_wait_for_pattern(self, command, '__don= e') + lines =3D output.decode().splitlines() + for s, line in enumerate(lines): + if line =3D=3D '__begin': + break + result =3D int(lines[-1].split("/")[0]) + assert result =3D=3D expected_result + return "\n".join(lines[s+1:-1]) + + def test_pcie_switch_ports(self): + """Boot a q35 VM with a PCIe switch (USP + DSP) and verify topolog= y.""" + self.require_accelerator('kvm') + self.set_machine('q35') + + self.vm.add_args('-accel', 'kvm') + self.vm.add_args('-m', '1G') + self.vm.add_args('-device', + 'pcie-root-port,id=3Drp0,slot=3D0,chassis=3D0,bus= =3Dpcie.0') + self.vm.add_args('-device', + 'pcie-upstream-port,id=3Dsw-usp,bus=3Drp0') + self.vm.add_args('-device', + 'pcie-downstream-port,id=3Dsw-dsp,bus=3Dsw-usp,' + 'chassis=3D1') + self.vm.add_args('-append', 'console=3DttyS0 rd.rescue') + + self.launch_kernel(self.ASSET_KERNEL.fetch(), + self.ASSET_INITRD.fetch(), + wait_for=3D'Entering emergency mode.') + self.wait_for_console_pattern('# ') + + # Capture lspci output, to diagnose failures. + # + # [0000:00]-+-00.0 8086:29c0 + # +-01.0 8086:10d3 + # +-02.0-[01-03]----00.0-[02-03]----00.0-[03]-- + # +-1f.0 8086:2918 + # +-1f.2 8086:2922 + # \-1f.3 8086:2930 + self.command("lspci -vtn") + self.command("lspci -vvv") + self.command("ls -R /sys/devices/") + + usp_path =3D "/sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0" + dsp_path =3D usp_path + "/0000:02:00.0" + + # Upstream port is expected model. + vendor_id =3D self.command(f'cat {usp_path}/vendor') + assert vendor_id =3D=3D self.USP_VENDOR_ID + + device_id =3D self.command(f'cat {usp_path}/device') + assert device_id =3D=3D self.USP_DEVICE_ID + + class_code =3D self.command(f'cat {usp_path}/class') + assert class_code =3D=3D self.CLASS_BRIDGE_PCI_PCI + + # Downstream port is expected model. + vendor_id =3D self.command(f'cat {dsp_path}/vendor') + assert vendor_id =3D=3D self.DSP_VENDOR_ID + + device_id =3D self.command(f'cat {dsp_path}/device') + assert device_id =3D=3D self.DSP_DEVICE_ID + + +if __name__ =3D=3D '__main__': + LinuxKernelTest.main() --=20 2.43.0 From nobody Sun Oct 25 00:00:15 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1790609111; cv=pass; d=zohomail.com; s=zohoarc; b=Js8AAUszFH9WIZT92hf+Q+2Lfrow1KlKdC7f4t4/pa9qrBBppbFyNvmQa4Tpru6KbZSXwg3DG0Udnci4hBm4CkjXf3spVrMSgUTnQRbYfMOHSKg1pBpsHaNI248SW+2P5LK8zCsqLMCsQFSSGVJ2YBvo8eJeYLOPleoI3TLwHVA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790609111; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/yPiW38VaqKpIZs32bQnFrg09Tc5/pU7jQHCKiD0lMc=; b=J0ZjjVYDFfoJV4QeTynw5DS48lAwuhEaitA3ROS0sa4WbFbR8Yk25IrrKahVjUon2ldDarAKjv1GvzgfHJPJQkuIiNZ70MfzrXDkBgW9Gv6mcShEYEFqaMNqPYUtvqkg9qMj4kFGzHKK/kEHmwUSPa5eWeDOZ5kfgjp7T8374ys= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790609111351114.9860347127593; Mon, 28 Sep 2026 08:25:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xBDDh-00013N-QY; Mon, 28 Sep 2026 11:24:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xBDDg-00012i-0d for qemu-devel@nongnu.org; Mon, 28 Sep 2026 11:24:44 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xBDDe-0002kE-6I for qemu-devel@nongnu.org; Mon, 28 Sep 2026 11:24:43 -0400 Received: from pps.filterd (m0127841.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68SEflM11869208; Mon, 28 Sep 2026 08:24:39 -0700 Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11020126.outbound.protection.outlook.com [52.101.85.126]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4gxbk5kr4c-3 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 28 Sep 2026 08:24:38 -0700 (PDT) Received: from SA1PR02MB8368.namprd02.prod.outlook.com (2603:10b6:806:1f3::18) by PH0PR02MB7301.namprd02.prod.outlook.com (2603:10b6:510:1b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.24; Mon, 28 Sep 2026 15:24:34 +0000 Received: from SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2]) by SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2%6]) with mapi id 15.21.0451.022; Mon, 28 Sep 2026 15:24:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=/yPiW38VaqKpIZs32bQnFrg09Tc5/pU7jQHCKiD0l Mc=; b=ZcF/9WUVzU+gUWNsGudpr6UJv974olDpBxu9fFJG0E5qZP2kVZWHWuqM6 A1Uu1onchzbF52trtg0qsiSo4IHypktLb6SYGunB7K4zkjDoWSmJuTyfhwISWIdx OLsd2BvYN4iUY+ZMxypxYgepy+qjrhbuwluhA++QhCWqyjiJ0rFMQG2i7Dl7AnLU JpZAkX06RZOAKa85tfULlQ1bkTJ4pqMaQIuhkerE/jNEhjS4zVw1is7HcFBRQawF +dyrWbkK3J/qBRQlFECSZQpMetJs1a6MUcNncnrHje6AVnYDTUCbppr/YwxpvXos 81wzWJxm5OlhMl5CkXfR+sBb/8GuQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=U+xZa7OM32nE56R5VWsDlfuF10j3lRCOr9VvIi+S1LeaCKq8gV3OGlU3VKmkCNSeC609g4LxdN1RxdhaDI2gJ1EFLT1r6HQBHiks1pJYiKKBeDC4APA3TOw5dNe7Xcz3qOi78lCn5kls+lVEyistqf6EQLrKtyXoN3YoK46iJivDCxmOsK+FFXIzkT82KX7I7TLqzOluYD6KklO/HHfNGIykEBO2uHZo36aAJWmm4x24YFhgmpfT3tjfTyaRu0Wx+Zj5UEH18T3knnXJrOv97SDxrlpz63c7FV/zwM0nlqMm8uhr19bPb4x47lm0V173UiF+GpeQdBf/9ZUxxka4+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=/yPiW38VaqKpIZs32bQnFrg09Tc5/pU7jQHCKiD0lMc=; b=pcb0Ws1eVtdaHooxPXwXrthP7v5fU82N82FPW4nbwfL10W69u3e+FVPeKrprzFurgMxEg0DxMrtGh3B6IBNoeFDX32VHfi6WXnsp24JTMEZwwk2ug/Q+7p05cHQnXfJeCaCZTz2gBh2MwnjewrXGXvroztVCCfBaMHPmVKR38n11krC3/WRNYE85jXbTrWJBUDI+ZEF6Fqi1A0jrgZCYg7/hwbdyM/+3SVgyWew0xu9t/npFUTcdrrH1Dh4iPqdbKiDoXHz9u2j6DpbRfRook7aazBoLnVAqeMHfmaUJcKVfR/joOWut9nUTD5xHtyQDFKjHhJfX4mVD2iN5qgUyMQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/yPiW38VaqKpIZs32bQnFrg09Tc5/pU7jQHCKiD0lMc=; b=CceZw/N4nzwDdW6SV10KHh9lAc2RbWQKjAAbcztzwsrprJ83kVmtgpDIWGM7hKhnY8Lz0jevbKs+7C0mpjPlkAU5W5zl2xYU6ifOmn89QLgpKvCr0JJXP9KS2SZ/7CKsVkm55/owroAVawuPOlyUrLG+AqeErbpp59aWS7iRW0l+EV5dgQBt1AWzxbPHbOwd07/W+XWIfHQH52tqme0I0Tq99YbD+6WGczLJ2XOpDSwylS+ebA9YrgP1QIaXxWeFgCpqMnw7ZXmo4zXkip5CKFVi/KiJK/DyEI8IN+Svpa7wMAncu3tLEA2DPN+lNx88ciFBNv/uvYL2RiYLf8RKmQ== From: David Vrabel To: David Vrabel , "qemu-devel@nongnu.org" CC: "Michael S. Tsirkin" , Zhao Liu , =?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= , Paolo Bonzini , Pierrick Bouvier Subject: [PATCH v3 2/4] hw/pci-bridge: Make speed and width for PCIe ports non-experimental Thread-Topic: [PATCH v3 2/4] hw/pci-bridge: Make speed and width for PCIe ports non-experimental Thread-Index: AQHdT113qem2t8GxZEa6fZlCkjnbwg== Date: Mon, 28 Sep 2026 15:24:34 +0000 Message-ID: <20260928152431.310363-3-david.vrabel@nutanix.com> References: <20260928152431.310363-1-david.vrabel@nutanix.com> In-Reply-To: <20260928152431.310363-1-david.vrabel@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nutanix.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR02MB8368:EE_|PH0PR02MB7301:EE_ x-ms-office365-filtering-correlation-id: c535acaa-6a7a-4ad0-2868-08df1d7499c5 x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|23010399003|376014|56012099006|6133799003|10067099003|38070700021|18002099003|22082099003; x-microsoft-antispam-message-info: Ta8U5UF94k6zzces3ymf1c6j59w5cun7JAIjutObNre/P2GdrHhHICwVCnmhmUOxo5jYyP+0FCO+zD/uVX4nHhIItXdPOMlKXC57A5UgzNqw8jKc8F+xVOlcsWIod6Js/wSct2u6UwrKF8m3fg4Gpl1c1ChArWe9LD0+k3GQcL22I44dizyEBOInqQgD+Dw83NLbpScH7D+6mS7XpsF0axqQOa1TAAGCaCkxPwk390hZgdZeE6bntcopPcXjYYMzPaV5GlTzfeD1Z6oli1UuYyQkkqax+W5OgOZg3MQ2xR/IZjzDVSdklZK3SX0cQsQvNTTzVkdPwamZUQt6ZySu6b80m6TTY9SBCNqlolr7Zxqm0NScshcV9ff/mnuqSxVkiLxtPR9tsOy4l3P4dY0STaDAbzn6709gxIjHe3O+yPxwiF09963r2nODiPxLj9wD9H/SPbk5iVgCQDDKuuAs33tk1JXPjNdEB0HF1ycoQsWJhjyKaYv2dMm8KHhjq7zGWMcSZSjKERBU2CCzBTU9tXpwqqQSsYlBwyyGccNO/SddT9qEyHfdrTpHOgjxDPWhmNhwp93weY2Y1SaUjLFvkP9UbjWjs6McY2sqtJa2IyHKxdiwZprCPN0+NRwR+3BqzILSbPJ3les40krpcjr98wXcjEbt43tl1dOvRXTFAtOUtSYTOlwIIwWsqz8SZZJfDw70J9hMmZEuNRWevCDlLXxseHLX+GC8/hAiCADZkH8= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR02MB8368.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(56012099006)(6133799003)(10067099003)(38070700021)(18002099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?2MK3Drqi1T2sUyBFpChXNazTK4xlwOi5mjdF394ZxqbaWLQlCLe60jpWUg?= =?iso-8859-1?Q?9vDe40P/0nfDj3xWp+VVtJA9BfNT68GfBVo0eVdsFFFtghuWwRXXx5bbxY?= =?iso-8859-1?Q?wCPxJEyEeK4MUNS4w0y0Fyf99yE3ORyqi9z4ThVywVrEGwMWsJwaOXqBmh?= =?iso-8859-1?Q?R94LQoMn66DM0iO1rHxcNfuiWhxDB8j0ulPRnNQ58f+MpQrA2viyERp+3i?= =?iso-8859-1?Q?IFhnZxePecQ1EVpy79ym3zp263AJ8wU2clXLVhkw3lIXRMYvu+0t707kjK?= =?iso-8859-1?Q?HlatExKG7LsWYvhsCmdN5rYLJ+SCUoGUB/Qo06Y8zuSzs6EXjkfze87+/P?= =?iso-8859-1?Q?gAId9HrWOo4QUxFTT//kTTV0ujMx5AVJuCbRbl7rcbzkJJMnbfuXlIbRK1?= =?iso-8859-1?Q?xUkzvQt5tln7PSL9d9OXoH9NYrtg3r/g/qJPE2n/AvdQIi28xnfE39WJqd?= =?iso-8859-1?Q?URgnId8dhwHeYistfLZIpDZCl2PxldzmRsmyJPsXPbipOV3mKXKJpN1FxQ?= =?iso-8859-1?Q?+eNsipPJ/NSxpT+1CS65gRx/vbTQfC7Qoay9YUa/WfqhtOeMr5bOCY50J/?= =?iso-8859-1?Q?Mvu0zJ1l/fKp8gtkH23KcqLpxqGMYqewMoAJGqs3SfC46KlYphBX0TB3tu?= =?iso-8859-1?Q?3tkJE6PxJFBtPTaKeseHDCso3E+sF7BID4uyLb8fkgfOriwypJk1HPc7q3?= =?iso-8859-1?Q?1JVgCQLqruaZ1npIJHZdCDXE98I2fn9slGFRW7R/PIFAZv7TDYWQvzqWw/?= =?iso-8859-1?Q?6c7Z48LDrIMJK2aLMVoqPFsgVLi9OIcSgltirQ6XPcKVx3e84vxJYGyd8n?= =?iso-8859-1?Q?46m6i+cEElixTTNmHXm8Vb8UYqATvlEAJ1qDcAXhYNnAAr9KxbrYhbNtcf?= =?iso-8859-1?Q?rN5MSVUXe5jqouYz5rYw/v/+AhtugnuBGwj54sSW09MajdyKsMt8HBODWL?= =?iso-8859-1?Q?xRnbxLzabwjkJONpZW0PNwJ8kqaVRWkqvJYwcNP6oV0PrgRJ5mhVFJTpCf?= =?iso-8859-1?Q?LDPCvLSSK0RugaY7Tf+AxUA7OYF9CmwB2eBa88fLbhhJNJ1hBUG/s3GDY8?= =?iso-8859-1?Q?XhVAKVCcUNipaBqX7XQcCGelm/Q+6YZtLO1Q/IKpFaU+ukEeMEWDgEr0z4?= =?iso-8859-1?Q?QIujgfPCB7lt+jyl0m8zJ2kh7SYPos15kW5+hOI75OSnVoaGFf6YsRLA7H?= =?iso-8859-1?Q?BjvIpHneT7lTrqthbZaBJJeoHh8Je0c5HPuAABhBuTNgi0uRLSm2eInd8T?= =?iso-8859-1?Q?9UgIIBgee4syU/Z8u9Xyt354ds4jMKHbDu7jjtrqnpyQcLR2s2/LF5ajWJ?= =?iso-8859-1?Q?cOCG6vJJUS7x+MB1N2kaKgbIGukELtmQf4IfINbEK0oaSsIVGkrebIs0IX?= =?iso-8859-1?Q?GAB+jzhrYjih9IU3Ff4Q1fSGHUxP8UswWiQI+6uEz+IMf+XcBgZpeJTgQu?= =?iso-8859-1?Q?V5dHFtHmry9I9H8yxVZ21IxeMAfh29eZ8W0WjSJDQZ2ZAHHN3k7/2zLwni?= =?iso-8859-1?Q?reuDq5ejlqu3npXMahFLNGXc4nBm3cfVZl6CgiKwlzXcEuqiTvytirQzGG?= =?iso-8859-1?Q?AJSHFs/GCBQhhJkQu130eW60m3Gx6ho3feHHx4UXUuDYwhyecNLCWOo0cW?= =?iso-8859-1?Q?oSWIH2pc3P3HejAPM2oPVswWw9UPwepyhLlnbDcUXSzhXSnPv9Xl7cIR/G?= =?iso-8859-1?Q?8YX0RvasVTycGcE8dLiRVK1OLoKtBCvJAXh/eY2T0zzOZsltemDgWWAgiS?= =?iso-8859-1?Q?V82mJp2pgmPoEh2Si+/tbR0gI20JlYh0Toc5aSJ5s8rdWwQ25Gh4kGUeUx?= =?iso-8859-1?Q?gMtIxWD3LFm2m/vwF/R0KO74oBHjaCk=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: mUTOHZDLGBql4gc6x+b6d3ufiaLLDhewwtDXOihfXzz2aLCqmELNgkraSipLZVh+x5d+O/IFaVjIo9+iSQK6uPnsmHnsMqx7vbkMY9c1MsbVNhtYyLocYBaoDWuaUltAtzgZdgioOINH+cUtLIP4Lh/mmv1DC5apn5ri2tOOzEohNBoJaKZLCKxKIGkqinUdMRELtyf0vnaO/DGZILqxGVkVmlTT6lrnUDpjjOqlZBZHODE2VYuGjP6GW7GVFqnncfQp1OHGkwP0ospoiAdOncnVfOSsu+6k+hHvuc3Fw24pASAvh4hD1wFtAIbCmljbV3dhZDA83jEOAjHf3/almw== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR02MB8368.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c535acaa-6a7a-4ad0-2868-08df1d7499c5 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Sep 2026 15:24:34.2225 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: UHTeiNWPw2voWjvrXraWhDuJMWR4047y8L3S+JAPTnB8gM54y6SDZNZMcanL4vxREWSvxR5aKyX6tWuoZTuCbBCeQgqYd2tkbDRBBq9ZHMo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR02MB7301 X-Authority-Analysis: v=2.4 cv=T6EZ3PKQ c=1 sm=1 tr=0 ts=6aba86b6 cx=c_pps a=w1Ugl8llyohtshnQLMHy5g==:117 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=8nJEP1OIZ-IA:10 a=VdqzKS8jKosA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=jxMXjlTPpCISP5mWtjnE:22 a=64Cc0HZtAAAA:8 a=Ttky8AElcTD8thzn_3UA:9 a=wPNLvfGTeEIA:10 X-Proofpoint-GUID: PP5_te12DBPcGqhph9bQ2WDzZO_uSPwM X-Proofpoint-ORIG-GUID: PP5_te12DBPcGqhph9bQ2WDzZO_uSPwM X-Proofpoint-Spam-Info: AW1haW4tMjYwOTI4MDA2MSBTYWx0ZWRfX7r3U/uyOdneu 0yTtjxx8J2lpJd85/TCcQtGUliQMPKHm4vvk0ZB1LBOMm0XQNGoJ3vKX5+3AMXHj+CZjMyfAIwi btfkUm8A5MnsmJwaCARiW0Gbcmz8oaI= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTI4MDA2MSBTYWx0ZWRfX8lM5CXtXxd1E OHuQcaJdhn44IClUsCZ6S4CAoLyIDa4Z7IitybWZUgwlEvfvnyD3dB1X+OE0s6FjkJEXZYgT5oV a4Dcm9zcIrRbLjuUACFRiOnaOL8hZ5Q8g2g2OTNYHLzFTlgs81bTEWlYVMVyXIi+RWLrGHxN4PT mfA/Hagc4ErEez8343ES5xXMGa+yiv4Yx81RsPKqy1jsuwrb+Bm3rIqXGGU+8K3x9mrcmYVQ3NH qOJLbiGzYe4w7bD4G4GYmTppeXzR5tO5GeY8EY+SoeWhQjG4kROgku7UIfQR6scMzxPNLl/hJPq TZejFaTdVfHEsxaZrXvoqeZeixlb8ued0L7g606F3IC+j9jVoHrT/18joHk+loGHSxd0bGA++Dq ggMqftrnOHygLPaMwZAGK0b7JTGy3D3Fe4mP0xumbzNcu+gOychnczsp7O3HimWedT6HPnLJEan bukh/iBjIEVePeI7+sA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-28_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=david.vrabel@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.238, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1790609114044158500 Content-Type: text/plain; charset="utf-8" For guests with passthrough PCIe devices, in order to make the guest PCIe topology have the same apparent bandwidth as the underlying hardware we need to be able to set the capabilities (speed and width) of the virtual root, upstream, and downstream ports. Promote the existing experimental `x-speed` and `x-width` options to non-experimental `speed` and `width`. Signed-off-by: David Vrabel --- hw/pci-bridge/gen_pcie_downstream_port.c | 4 ++-- hw/pci-bridge/gen_pcie_root_port.c | 4 ++-- hw/pci-bridge/gen_pcie_upstream_port.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/pci-bridge/gen_pcie_downstream_port.c b/hw/pci-bridge/gen_p= cie_downstream_port.c index d9c182e881..d00bbd55f0 100644 --- a/hw/pci-bridge/gen_pcie_downstream_port.c +++ b/hw/pci-bridge/gen_pcie_downstream_port.c @@ -159,9 +159,9 @@ static const VMStateDescription vmstate_gen_pcie_downst= ream_port =3D { static const Property gen_pcie_downstream_port_props[] =3D { DEFINE_PROP_BIT(COMPAT_PROP_PCP, PCIDevice, cap_present, QEMU_PCIE_SLTCAP_PCP_BITNR, true), - DEFINE_PROP_PCIE_LINK_SPEED("x-speed", PCIESlot, + DEFINE_PROP_PCIE_LINK_SPEED("speed", PCIESlot, speed, PCIE_LINK_SPEED_64), - DEFINE_PROP_PCIE_LINK_WIDTH("x-width", PCIESlot, + DEFINE_PROP_PCIE_LINK_WIDTH("width", PCIESlot, width, PCIE_LINK_WIDTH_32), }; =20 diff --git a/hw/pci-bridge/gen_pcie_root_port.c b/hw/pci-bridge/gen_pcie_ro= ot_port.c index 5434d693d9..d3ace7f0db 100644 --- a/hw/pci-bridge/gen_pcie_root_port.c +++ b/hw/pci-bridge/gen_pcie_root_port.c @@ -129,9 +129,9 @@ static const Property gen_rp_props[] =3D { res_reserve.mem_pref_32, -1), DEFINE_PROP_SIZE("pref64-reserve", GenPCIERootPort, res_reserve.mem_pref_64, -1), - DEFINE_PROP_PCIE_LINK_SPEED("x-speed", PCIESlot, + DEFINE_PROP_PCIE_LINK_SPEED("speed", PCIESlot, speed, PCIE_LINK_SPEED_16), - DEFINE_PROP_PCIE_LINK_WIDTH("x-width", PCIESlot, + DEFINE_PROP_PCIE_LINK_WIDTH("width", PCIESlot, width, PCIE_LINK_WIDTH_32), }; =20 diff --git a/hw/pci-bridge/gen_pcie_upstream_port.c b/hw/pci-bridge/gen_pci= e_upstream_port.c index e86eff099f..61ae3a294a 100644 --- a/hw/pci-bridge/gen_pcie_upstream_port.c +++ b/hw/pci-bridge/gen_pcie_upstream_port.c @@ -134,9 +134,9 @@ static const VMStateDescription vmstate_gen_pcie_upstre= am_port =3D { }; =20 static const Property gen_pcie_upstream_port_props[] =3D { - DEFINE_PROP_PCIE_LINK_SPEED("x-speed", GenPCIEUpstreamPort, + DEFINE_PROP_PCIE_LINK_SPEED("speed", GenPCIEUpstreamPort, speed, PCIE_LINK_SPEED_64), - DEFINE_PROP_PCIE_LINK_WIDTH("x-width", GenPCIEUpstreamPort, + DEFINE_PROP_PCIE_LINK_WIDTH("width", GenPCIEUpstreamPort, width, PCIE_LINK_WIDTH_32), }; =20 --=20 2.43.0 From nobody Sun Oct 25 00:00:15 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1790609123; cv=pass; d=zohomail.com; s=zohoarc; b=HhILOAR9QOGdigCOzO4GliCYM0C4HcCx745UULBlFzIK+j2ehPUViBkxPKbZMVUzWTaVuYz8CqNWHmYAgkQe9fwo+C/vTb06DvFaheVflzEyyIipkoAc4/xo7VYT5vsV1VrD0Qqer3KcNiOtPalm3UdwmICkR+CAcFkJVAeAcfg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790609123; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vZmYj72iHJ8V7z9AcIHn6DbbP+fcNBu+7PWRVwxtwTw=; b=R0QY2H/6aLpC9ZeVpgJTrNVPmFHvbGgWIN8vovaR4/tO/bSuditBQMonyf01rYQyPg5m+Ha1xRk+txZWqO0fUCwxlFf9xknXKQlKX3VIwihRWpUBV5FVADfQygflyKlpfaY06EXTSjv+9g1nqGBJMSJro/VYLAToNh/2MfX040w= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790609123087883.4025948417843; Mon, 28 Sep 2026 08:25:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xBDDi-000147-SJ; Mon, 28 Sep 2026 11:24:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xBDDh-000135-8r for qemu-devel@nongnu.org; Mon, 28 Sep 2026 11:24:45 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xBDDe-0002kF-75 for qemu-devel@nongnu.org; Mon, 28 Sep 2026 11:24:45 -0400 Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68SEhU4v1856331; Mon, 28 Sep 2026 08:24:39 -0700 Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11023119.outbound.protection.outlook.com [40.93.196.119]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4gxd4em6ux-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 28 Sep 2026 08:24:39 -0700 (PDT) Received: from SA1PR02MB8368.namprd02.prod.outlook.com (2603:10b6:806:1f3::18) by PH7PR02MB8884.namprd02.prod.outlook.com (2603:10b6:510:1fc::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.24; Mon, 28 Sep 2026 15:24:36 +0000 Received: from SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2]) by SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2%6]) with mapi id 15.21.0451.022; Mon, 28 Sep 2026 15:24:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=vZmYj72iHJ8V7z9AcIHn6DbbP+fcNBu+7PWRVwxtw Tw=; b=FWVOC8n4M2RoaiKpS1pCJ3K4Ca5foTU4KgjusEK9X8NMAhDlSWCeLVKQb bkU5bsSTKeeWeK9wrV0akLRbyhCJ2V/qxjxZ8qxSAXR+CPeMMPGvaia536Z5L4sa QQJLuHgQNFRasXe3c4u3glvS17WVhzEhS4L2GuIZg410BeFfJBZIbvlsqAJy5x+5 Melh2JNXC5Zl1u809BcyXBB/90kUim9//GHAd/6Px7eiErhMBSwib7fWN0443+bY rsszU524o6V0K4JkknPoJMp/hfhpJcLVcQ9+cDsR+kMOV1Y1lwFrc/drvgz7/20N 1AhxbYTloH/OV/l2irKckLSl/9n5w== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wJuit9eLT3SYoYVEL/idYOYQE892OPcdeD82CXMe5+B/dtZMsdFNO8CFw6iDI5aOybLF9WDmONKIf69ylrAoeGHCgu8R+ggfXOib/KL+u51AzcdcFUOTNFaS3ZGdk5T3w4jfhEd/eOxZlailr44LyiTLYRaimvShwrgJyFaKYpltnsqLLD9NV4BbdeY+byd5KkkrPQCgT6iPXQAwbcmFpS+afM6b0W8DXmcRAdo8Ay0oYuWN6QLAZEI8dpYAjnHK06K/rd20etWELQFcHqdJX9eN6MpMJ0dtZahfukQ+GMjGU7hd1aM6EpgcRw+qIKBnGHLHZaODDS8C0HZRoxM12A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=vZmYj72iHJ8V7z9AcIHn6DbbP+fcNBu+7PWRVwxtwTw=; b=P67Tx8uBfNO4MVanlAu7svucshk6U9Yl1TZI7P7hXq4jx5X9w+tiDP0WSOCl0EC8HUn9Pr43dW8dClnGyTwyI/32NN1mLupAQlKKTeX0cW+7F2A2udlpozeByUCts9tJq9CHx2FZjnc4Ptg7nIzLbNfTrkAz9xFUaNJ05gP5D4GWETcm62OWOUPExanLMmEd0cDKrmml7AjsjZAw9yDa6yGwjzos/elsT80qWOQKTeKyqMnZtzRqtWE6hr8yaElUFkrBFlDP6egS1rd2YYIPmKgZZg1NFzGyLBSS4+JU5/bnPzlTkFWtIyynkmWxolQYrXsJWB1JkwQdU75muKSBdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vZmYj72iHJ8V7z9AcIHn6DbbP+fcNBu+7PWRVwxtwTw=; b=a0QawDjnZl1KM3rcjYs1x4LvjNomd++Y33floZJTPPCAbMEiRU1X2FYQGLHH3sAZ81bS1t1IE6TaiEXpXwGFZMQNXlpxHREUqCnyI9y8SOc7naxUoQ3d/1KYFSSj48F0SV514IGCk/SqAjZBSn/a0f8x5R7ezwcRC2v4g9VXCowp/Qua0g7fbcXhSI7OXlOAFverwIPWMNBjbdhFErTj3t7keZ3x4hp8ZCiZjN8EhG8yS1LU5nV5Qltj3Nq6zTfEIuL98rfL0ll7uBeFIvWsobeGo8pGnW0Nfdrn+4AQFYzkkOt614nH8Y10YI6hNjeFqZS/B5A9lgpY9h2YqNTvAA== From: David Vrabel To: David Vrabel , "qemu-devel@nongnu.org" CC: "Michael S. Tsirkin" , Zhao Liu , =?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= , Paolo Bonzini , Pierrick Bouvier Subject: [PATCH v3 3/4] hw/pci-bridge: Default the generic PCIe root port as Gen6 capable Thread-Topic: [PATCH v3 3/4] hw/pci-bridge: Default the generic PCIe root port as Gen6 capable Thread-Index: AQHdT1137xFeNrVPfEeOwK1dP9HzBw== Date: Mon, 28 Sep 2026 15:24:34 +0000 Message-ID: <20260928152431.310363-4-david.vrabel@nutanix.com> References: <20260928152431.310363-1-david.vrabel@nutanix.com> In-Reply-To: <20260928152431.310363-1-david.vrabel@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nutanix.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR02MB8368:EE_|PH7PR02MB8884:EE_ x-ms-office365-filtering-correlation-id: 5be54be5-00bd-4100-e25a-08df1d749aad x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|23010399003|376014|1800799024|366016|10067099003|6133799003|18002099003|22082099003|56012099006|38070700021; x-microsoft-antispam-message-info: TS5wmNyZVje5XiHu2nIPqE9BJL12jVBVj4hqZrh5Wj2xefqvPyBOeKUIoVf3ql9lwhD+Sna+r9jSQfbMVi0tBhKLqQvCr18etyW5yu2IudD4ZwiplFs7XpRlWo5blF/ZyduS7GqG1i0EX4fEqBt0r7focX1AO1u7pLsv9/xIxlG2NXUAkDCROSu8NpW2oryYq06GWD3EfTASOdEYOn/01Bx7hK/f5tD+gxbaR6D75AOf7OjN3fnethE6djr+4ueXR753fGuhlsEpjg7qBu/KlWSLF7/QNVFySLdJnph/N7JawNwjBciv6pVe2q/FDZMcLuwZpV05WKRzkPEccCl8brY/UnG0pL5etga4jNQ+bXklStQxLNC0odQrlBM8jKin3YgnI/12VJIoCX999Kli3vZaF/Vux1HVenug3DBFwkd2rtX5PqdCrZlYnXmfqE7nz3cXQIvEFHUOWGTaquz3/4BFODbHXyjrwt5GKsyd/ldunwkHyutbWvUZnjidvTje03dA3R4TF9hfbz1WXA3TYphNKBT2XmwkC+xtUA/MteekrdfEAqZ4ugM65b2uSkjBey3FZntMMR1ulhzJ9EfF5ypMjoLXYqzKzx2Vi6ESZzu11LsRO1uQLOuR0tWOUNYB9Bp2q2yz3T4qtEWy9rI4arYALqjnAl8C0SQx7dhT+tt8oklLJL/rk1xaiDd/cVg4mWviSjpcrQMmtlhKA215mjeQcnEDQ361DgbPBxcwitA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR02MB8368.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(23010399003)(376014)(1800799024)(366016)(10067099003)(6133799003)(18002099003)(22082099003)(56012099006)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?tepalKYmSJxlbocb1ylHwZTGDtWYpCEKwQXQjReCKYAIIWOJP8NvD0Zbw7?= =?iso-8859-1?Q?uamJGqca/UszECGl2L571ifo2jeN1rlT0I8AzY8IRSbfoPbhviQ6g0K5kf?= =?iso-8859-1?Q?qWCKG8XxQzzqhf0P7KbQ9g02zGuABIBAuMO7zVhfcZLCP6Bx5migPRUEKP?= =?iso-8859-1?Q?kwQj5ht4LOQneCDi3JxCsTQQ3QR+C+QC/SQbl7GGFM3zo+PrvH9rCNsrE8?= =?iso-8859-1?Q?bDGVXbl+tptt20vEeTK9o8Qp21LJW0WbIHkLAfdwUP/12BCIPhIH+ng3xZ?= =?iso-8859-1?Q?GguUQ3n+1LdDUW+Hgn/DYRqpSVhj3gMbDjs65hyocISG1vjrmbsPuoquOu?= =?iso-8859-1?Q?kRvs0NOHnE0OcnpGvtpBiRnU11vD+wEP5PXkIv0Nn23sCCBSHxnQak0UXO?= =?iso-8859-1?Q?q77oASrFVivXeNh2m9qNRskn3d+bc1qvBwQiu0ybQgPPGZgZEFNzyQk8ao?= =?iso-8859-1?Q?lJlgcahtzOZzFr2eNnxwXdYfwPWEIITe/SBFFB/x80LR66Xdyi6YWfZNSR?= =?iso-8859-1?Q?UM5+9APoySgO8EzgENtnKRfh7yYl8TDH83Z7N3orMXFrj5H7lIKbJ37jcB?= =?iso-8859-1?Q?pZwcKRA6Rxah5g7Voqri5dSDWy1FSw2yMrDBxrd1GPad/dPmCmJFReTyTw?= =?iso-8859-1?Q?OCVqxSCkoqbxTXYYo+nF0YzqwF+PsySqc9Zj52Ko0Ts1IX1jKCG1GskZ15?= =?iso-8859-1?Q?ljW2YS5Vrk1IZYYcK4yKagksGvZK+NBD/2n9Q0MqgpFyxWVi+jupPV8j8x?= =?iso-8859-1?Q?a35+1A0BAEHqZzyc6x02lN9PtHUGnw8Z6QRlnz20BP9AK3D8RztLyiO+R5?= =?iso-8859-1?Q?e4pUDN+hRmgHgmX9JASlIA5TFUi/0fciqyP9lRLAUKffO/4InJ2mOEAXqp?= =?iso-8859-1?Q?MbMX70WbdEgeNu53zlLU1iY8euCVzjQ96iX/fgEVwgOy8tDsgztJ1GmJRp?= =?iso-8859-1?Q?JpfjE4zbXwjRCcGT3IiwN4K7gMksoJxPomsx+5mXlFEv3KPjkfuUWsAruu?= =?iso-8859-1?Q?UfZMouW+hJJUuZrheRxk31uLhfiZ2kYXw4bz5GkzSUbwTS7yKwxxX2dAWG?= =?iso-8859-1?Q?t5VwDFj77GbcprjGlc55E3AiNfuZG+N2JuJvCH1qzxEatvGoifoNbwFs95?= =?iso-8859-1?Q?B6+VoqbgKFMsabq+A4I2ZP1AfGDqwzyJWyZqXKWMAGGlwGEYBNqwTqQU7g?= =?iso-8859-1?Q?TjZo/GkEJSNHlU+VisY+7Ie/W2/QxTBWf8VdT5+e/LyJO/4VQhaHJESHgC?= =?iso-8859-1?Q?65wp/awPO/bGBkuTL4VQC47MMQH2TBD+cn5GadDshPJXbtGw2jtCR2a6be?= =?iso-8859-1?Q?CGgFoOXprwB6o9kA+uY7Z4muZrpibwNM7zIK0mFLWaNL1HLX5pa+JV0wVH?= =?iso-8859-1?Q?H+sH5h/cl1RbsAyrUSsB/EWo8jUsGgJrpE4L3E/195AyMMQH5LMfa8fPOO?= =?iso-8859-1?Q?W9LLHixBiR/pTQ5gGPdaVdrsp/A8zZ32MQwj/uJOF9Fea7yjsCj1KNFR5P?= =?iso-8859-1?Q?TNJqxhhq7fFWAk/eLJY+KPRoRGi2APvm/8KH54xtisLCXLeMt4lkTxr3+3?= =?iso-8859-1?Q?NcX1ZiwNxSk8neQ4geAeryh8kz0/UDCE9hSi3+bjwfPBspumhtb5E+NmF3?= =?iso-8859-1?Q?qP0srmrXbSJxmzcb8FAZyryShaIzTMaV1Z53urhMI9YJsUS4ZfN71hwrvi?= =?iso-8859-1?Q?cXulpYVEHn0bsy109W0QuRGPP6xTSGpbbdhOC+puABFz5P46SwmkQjJVL5?= =?iso-8859-1?Q?0hDm3PSbibhNMgiXWjwHgX8n8cdF1guI3Tp9NSWqM3Uku8JOKFuBxkS/Q9?= =?iso-8859-1?Q?vEWGIXwbOrjZfII7RJ4gZTtQdCO0n20=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: 2/1E+Bfl37U9hutm/u2nainW6i/BNzfBwOFF57gaxjHFdr2oKhlN0+4XUCbWOhxwzPDOYq31nqqKeF2P6eNXPdP9Zf6ZsAlAkKBNGvSTcLgQWyr5jNlWNEj6L31PAJ3xaNQX76wqSh6AVAVT0PAmeikXta7MhIBFTTahVL9ZiL3R7PKonReYCr2TOAMH4kZ1H/Od4DGQMILGWGpHtIDamz7vDO9/QZ8WyuaNq5ZKDJV4aLKwxl1XEDJ+oh2erTbgVeriYwogdh+S9Ki8Yz+SS1tyGzkmF7X4HgO9nYkfd1+zhxfLSRC408or7cJKF7o1TBWdCXzeWuxh0yp1Roozmg== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR02MB8368.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5be54be5-00bd-4100-e25a-08df1d749aad X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Sep 2026 15:24:34.9695 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: oGEhmWTAb1Huoxo9EsfjtRn6hnYdSYHva+QfcyMEaMtxxrQUjo+E0t/wWs/vj04h0ubZHAGJlUOZPCeCULmiRHv0ynosKP+4oHD3IKlhJsk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR02MB8884 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTI4MDA2MSBTYWx0ZWRfXw3MXn0wAo7YT GGqbeG76vBVI8Z2+/c9kBLRo4VvoUga8f2fBQTGbT5nZGfRZwj6WlxFvE8q7qOFUI63Rh8BlPfP bwq2u/Z1Dfz2GdbCyMueiZ1I7S/IWvc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTI4MDA2MSBTYWx0ZWRfXxEj4/oo32vyz dJwdviJgJqRyoC4wZ0UHB2xDYiME8ObaaKlRBVu1BKBFUSNIJyceszCs31/B/VFq3x3e/cmYgvu 8afIMBEpdoC9lTZ+YzUfG7mFIt30DwVC8O7yjkK9OeJOKKXV4jimoQCtD/IGonl1N1t/pancPu9 J8/lrtzGqqPATq3xg6ShXEXA1flT8Q6zfD3HDx60/T27mfGDx0eMBE41KK7a4OWTcyd5F6/qDuo mbGmJN/8gtR0Fc6GXkFr7YcehwdDFNKJdyPcCXAIr0Vd7j+aFWUKIIp1qyU7QuzUcrUJuf5yxVN SiUmU7q/rLr/IChe8wp2a3PQ3FrGHbSNxcM9pjLAugsjUbF3nPREGvJPHUNKUU0lA2ST53WxLmC mQOr/RWnQrTOz/KgCw3HTcAgsw+4IcQyfqWp5jbBhEmvSqooVxDSprM2HwD8iOP9P3NMCpa3Ee4 XjxfAxe8wAWeZlEiSQQ== X-Authority-Analysis: v=2.4 cv=SqMFe/O0 c=1 sm=1 tr=0 ts=6aba86b7 cx=c_pps a=SNRzDqNuYCMO/bT9QdJRMw==:117 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=8nJEP1OIZ-IA:10 a=VdqzKS8jKosA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=BlouRpKd5MmS78s8ARwA:9 a=wPNLvfGTeEIA:10 X-Proofpoint-ORIG-GUID: rh8GOOa3NNMk8YUSScT7vb1llAuibs-8 X-Proofpoint-GUID: rh8GOOa3NNMk8YUSScT7vb1llAuibs-8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-28_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=david.vrabel@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.238, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1790609124196158500 Content-Type: text/plain; charset="utf-8" As part of making virtual PCIe topology having the same apparent bandwidth as a the underlying hardware, make the generic PCIe root port support maximum speed so by default it doesn't appear to be a bottleneck. This also makes the three generic PCIe ports (root, upstream, and downstream) have the same link speed/width capabilities. Signed-off-by: David Vrabel --- hw/core/machine.c | 1 + hw/pci-bridge/gen_pcie_root_port.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/core/machine.c b/hw/core/machine.c index 8939ae1666..c4ced7a8c1 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -43,6 +43,7 @@ GlobalProperty hw_compat_11_1[] =3D { { "sysbus-ehci-usb", "x-migrate-fetch-addr-64bit", "off" }, { "pci-ehci-usb", "x-migrate-fetch-addr-64bit", "off" }, + { "pcie-root-port", "speed", "16" }, }; const size_t hw_compat_11_1_len =3D G_N_ELEMENTS(hw_compat_11_1); =20 diff --git a/hw/pci-bridge/gen_pcie_root_port.c b/hw/pci-bridge/gen_pcie_ro= ot_port.c index d3ace7f0db..8cabeadac8 100644 --- a/hw/pci-bridge/gen_pcie_root_port.c +++ b/hw/pci-bridge/gen_pcie_root_port.c @@ -130,7 +130,7 @@ static const Property gen_rp_props[] =3D { DEFINE_PROP_SIZE("pref64-reserve", GenPCIERootPort, res_reserve.mem_pref_64, -1), DEFINE_PROP_PCIE_LINK_SPEED("speed", PCIESlot, - speed, PCIE_LINK_SPEED_16), + speed, PCIE_LINK_SPEED_64), DEFINE_PROP_PCIE_LINK_WIDTH("width", PCIESlot, width, PCIE_LINK_WIDTH_32), }; --=20 2.43.0 From nobody Sun Oct 25 00:00:15 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1790609098; cv=pass; d=zohomail.com; s=zohoarc; b=chRlL8BJVzSgLs5Adp8Jejo2UimuD4qajEkcYOyH2J8nnMjFkzuHNSn4ZG+bpg/5XM/wgDLwxVygi8Yt5j5k+ts4EpccJtWgv/5oU4dV8PNMfq+UEESjVVXXDYW6LFxM2vaKMgiLnKVX8/7RyEUenheE4Nkyo993qB3MMzm2L1Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790609098; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4pwOWGwIiL0Gbn1VNRLx8zNm0wYvkWXFlLUCo900kYU=; b=P8OS0Wmip+6zXrLfqqXGGGHz0rQWWR6yEDDSknALdfUGv8YkabWWbaBK/+fp/P1YxoYxeh7eJS6lU6a7zuwGZovFazuAQefalQivN0cazcFM9c5XTF8V98K/QJRw/cvyOXYl9spe2ix45Giq/Vri0AN+9iVrt8NTG/5grcBYxAA= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790609098767360.8229832149161; Mon, 28 Sep 2026 08:24:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xBDDl-00014g-Lg; Mon, 28 Sep 2026 11:24:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xBDDh-00013O-IT for qemu-devel@nongnu.org; Mon, 28 Sep 2026 11:24:45 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xBDDe-0002kI-V7 for qemu-devel@nongnu.org; Mon, 28 Sep 2026 11:24:45 -0400 Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68SEhU4w1856331; Mon, 28 Sep 2026 08:24:40 -0700 Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11023119.outbound.protection.outlook.com [40.93.196.119]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4gxd4em6ux-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 28 Sep 2026 08:24:39 -0700 (PDT) Received: from SA1PR02MB8368.namprd02.prod.outlook.com (2603:10b6:806:1f3::18) by PH7PR02MB8884.namprd02.prod.outlook.com (2603:10b6:510:1fc::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.24; Mon, 28 Sep 2026 15:24:36 +0000 Received: from SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2]) by SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2%6]) with mapi id 15.21.0451.022; Mon, 28 Sep 2026 15:24:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=4pwOWGwIiL0Gbn1VNRLx8zNm0wYvkWXFlLUCo900k YU=; b=yxj64p5mI/NHxoqGTvK56GChCJHpRJg1fenSj26iUYWKCFfzq470z54UA 0FCtcSz8IFf4+5QAvNQLXTc1DWLLe7P2nzhhENEY+ip2uNKLu82SP958VZVNNSKB VK14ugyQFEiNRIH+d1FuI9OjM1brZTHXH7O6ZOBTMokmcuZ3sLcHqr3SAVwJe7ot ybkKRjQVM5uQjORIGfd67BWQBZOsgTLA5AMxg07j6P9zUJ8xeJc4BTZsyg6gWy7M jRhQys8oTPcAN+ac1JnvHJMWeBqINHLVOV6AATdvsmvbreGF5dgISS8i7o14eVfP RZGMwAht5BHdC/XN/jKpBSi9sgNOg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eX+5aytPJzZiVxaXtik+ube8bdqgDIJxtUIUXgaR3q8ie/EXp2lJt9NSIB2FYCWV1x6aC64Z/J2P8XAyY936F0mM51ASw0sTiGjkjt7FnustxaBt5TJMSMWsI/jFGHMkpbmpe9XR4lYDgzppFI2ZGpmEMtcvirWEdy395BImqCrNkfZPGQM9UfhJ6beTJH6X+RwdeOOae7h05yZmNK7eFWCXzYWH2sggonrWk1BjUcpdn2dwmv1aL5hXTifSNyij/kqpcmVniJ2cK70B+2xe0VUE+bC+RHcZ6oc/yCqe7oDVtloSpgHRBN+L/75m9V+6e6N1mRmZjT5e5xi72PwQtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=4pwOWGwIiL0Gbn1VNRLx8zNm0wYvkWXFlLUCo900kYU=; b=E8w04WiP5l3CYW4TLaHIIGSMWd7Oprw861hJvYaE4sxSE0jQjRKMamDf2bEzC68dCxAoaGRayOJWWVmfss7okF1IdclGizGyHuhiIhB0yBpNwCsqVvjpHVjMnXr1jVefpzxYXiivijOWSqjmsfr+cnnZxchXm00p4rV/VDuq7LZ7V4HZgSeima9QtdV5EtsdYI9ECdRhI4m9NygBHBc4AAO7JEElt0xD3iVKexycEKiP/t3r4irpVqSnu2Dl+KyfAB4f0cQ4pJOmPv9EXGLoWS3TuLtcmYE8Z2p8VPBFtREvDZvLqEndFob/Rgpk5q+vpEy/6meTiIIGwuwj/FSP1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4pwOWGwIiL0Gbn1VNRLx8zNm0wYvkWXFlLUCo900kYU=; b=TUANdfWosTHNaGelKRaMYLtp6KT/iMC7GJw4AVBDewmklnBWIz2KVJptHFuRG8c5lAR50v96Ru2xcOiYJQnLrh3nK+1U5+vZ3FqsX0URlq962YnAn3QLLa5jJX1pAKfT9mxhqVf4ERO2JWGBMJuuqd+AGep1oAKzGS2R2RfWaBHgGlqRKf7XPZtC+u9Gcqk1qKSKfoLhZY5jWwuNZ/7M5XPT81OFbRUy4rg+ZOVIUBbFtDs++cYs8ACeP/0+yZJ25eWIIHrTsQtiHDTromPqWCcBYM34xPtrch1Q1J0glMgolsNSPLdggDgoLYx4m115M6EK2NOWDDSzC53Bqbaj5Q== From: David Vrabel To: David Vrabel , "qemu-devel@nongnu.org" CC: "Michael S. Tsirkin" , Zhao Liu , =?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= , Paolo Bonzini , Pierrick Bouvier Subject: [PATCH v3 4/4] hw/pci: Ensure PCIe link speed/width is consistent between both ends Thread-Topic: [PATCH v3 4/4] hw/pci: Ensure PCIe link speed/width is consistent between both ends Thread-Index: AQHdT1140g0hFNsIW0ykC5A75kwnlw== Date: Mon, 28 Sep 2026 15:24:35 +0000 Message-ID: <20260928152431.310363-5-david.vrabel@nutanix.com> References: <20260928152431.310363-1-david.vrabel@nutanix.com> In-Reply-To: <20260928152431.310363-1-david.vrabel@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nutanix.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR02MB8368:EE_|PH7PR02MB8884:EE_ x-ms-office365-filtering-correlation-id: e55ac8a1-1762-4600-9044-08df1d749afc x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|23010399003|376014|1800799024|366016|10067099003|5023799004|6133799003|18002099003|22082099003|56012099006|38070700021; x-microsoft-antispam-message-info: 26pPqSRFGcZsdLiiT3XZbVpzgPlB3Bzx5HR33Tf2cNh9y+aksiLNla2fg4phhTEcUkSjBj3mVpfejA7hjveC2wBOTQ+pzxUPlImsx2ug3Xzdr2WE7C+RGw5vl0fcwyqcHSNxud7BE0esmgB6SiVq/qg1GW0aLvcvKYCsXrYUDBUmy2GcVa+vLs42cELSJBckkS55VR83y98oVsFFQTtPAWdBVhP3UC967Kdp9JfC5giGi0RErMADhWUF713zaGbrfP2kv+dJKcu0qSNBWYst6F6LSf2qqWFNOvCG1e9uJmH9eD2B1bkPgZ5b6JWW2XjQPlD07fa0jH7/axuGfL5iavkkix+TThpTqKIuSFHz1Cf71i2uwFYxTdmf5dYEFLaY7id6OrJC2j+lcHwiI9/aD/INdDd5UMjxYrkSxhvXnyz5yg0sRxym4pXWx8IWWpTPXIgyxXRZx/rmjNODSg7DyJfNdRUeRsx7nLOXTkyl7wUGHRzuzHrjMiLu8X0QdtfPHYKB74coG+Gdrh11copRvHG9i6WrhIMBpg/z/2l9dkZVp8rOWx4eyGVydKGc0ZEl8L5UN5LuWHBuYvihq4Dj7gRb5rNDTjxjjBUQKBl2hZj+qBdhDUTKOsOwzqiI2XkdSXxXtLccxfmtR/7ZipACN1p6mOp5bbjl/SY2vw7o0OTaGolzq9u/HzZFRRG4dgT4Q9AGXbCbUlB9SO3ufNHO6iw6waAw7kJio0L6tp9rn3w= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR02MB8368.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(23010399003)(376014)(1800799024)(366016)(10067099003)(5023799004)(6133799003)(18002099003)(22082099003)(56012099006)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?P0EJBvTInvanffZjOeWF5uMMsvgYJrJ1tya2EQol/2/sLO3vK+EYgJ0Sxr?= =?iso-8859-1?Q?JKKPey41O/3NAYezrvqBX7FKbGsrG0t4KYTwvfUFIl+D8hshzGjXVha2d7?= =?iso-8859-1?Q?ghPvRGRB+2H0pdeUrC+uOlCSNDsizAi9E0gfQnnOKSzeIw8KoYpCO3DIJP?= =?iso-8859-1?Q?/mez2kngWK4cDo9NbeVega0vErEgmLq0V6U3lmph+cWxO+PHvoCkuuOKvs?= =?iso-8859-1?Q?VIyv3grjaFqCYy9FuA3H3BL84Ldz/lUN/bDupyxHJZb+prswRjn1K+Ldqi?= =?iso-8859-1?Q?O7jThQDt3icb1RMeSVw5Im2BNkl8eFQNtsW+UnyGcGAt29u8aTbRlQFJfj?= =?iso-8859-1?Q?0LhuzMAhklM3PkPEWsuqimooDGNbCVtYEbJmALoXhoETQI2EmcRCFZJTmQ?= =?iso-8859-1?Q?uTP/MKheUH1O2spgBxvgaJGa9LOwLCCAmdUR3d/pMxAI/EKPG9FuUMn2hZ?= =?iso-8859-1?Q?jLLV71ynNdFThZpa9uOqi7fIzN5kDNtWuGmoC80v9i6SMOcncS2nkZi6xm?= =?iso-8859-1?Q?sVCc99/x/QAxaqV3CsuBLXLLOmWv8UhIqaaa+U6aSGcpIFRsES3boFl55O?= =?iso-8859-1?Q?GcDSiR2FqwAI6yzZC43ksD/ptt62psm5i11LGj3NtGRqENW4eknG419lwh?= =?iso-8859-1?Q?YppLzX0jY1OzKucWcekEGUUFBl2cxUa9+tL9tfmOIQg/xo/GtI2EFAda9y?= =?iso-8859-1?Q?XCR4Jac6kFoiuk1egsl1LU1XKZNcnPjZzswk7XqaUPnaA6Z/oOXKS38+6T?= =?iso-8859-1?Q?rmK7Ph4bPGFq7/4R5vsYgwRYkUq+9Xg70EE0cgQebVbqmc6BmvbIPqLsbK?= =?iso-8859-1?Q?vKrt1p7/nkrOmd2h/BRVdTXwCTe0/UJJhxPVHyoKXvi3BMJofSQAiVyYE6?= =?iso-8859-1?Q?U3aD9TNUgPtSAPGb218Y9YHQDBZ7EO7jGLej2OZLyiMCaP7e8RIlQw3CDE?= =?iso-8859-1?Q?8b+VgvlYuxCwM1Ovl+8o5Fra7A4OpmyVvy8tFMdQZpyRdQ24WNULNnFdlh?= =?iso-8859-1?Q?7rWxCsO/6nwPYSa5AGgXx5MP/HCssYpaD2xvYJbUxrskDeGOVML63a5Tkg?= =?iso-8859-1?Q?V5wEYzmKNQTCccEK2uSnoqlGBuCXZZLXWa/3Hq7149RWGKRkV1sYArZb2n?= =?iso-8859-1?Q?SrxyLOY+jzNZgXWDVZ6cq2w3WLwOmfPl8f2VQ8ebRiPYE9WstFAVcTdK2I?= =?iso-8859-1?Q?LUHoBl4AQG3ep3S9eny5zsswn8nc9tBmjPetSWC+uXyoOLnAIsKVJ0R/Pe?= =?iso-8859-1?Q?vGFNFDD2lgjvHx67MmYXw/+b8GQdX9Sm7/2Q+T6gCS758hjekluFgsBKXr?= =?iso-8859-1?Q?FygfDmKOo5IaW8X1JnY/AjaUk7qTZs9vAS6favJL3kmznZSNST9Z9JNSjG?= =?iso-8859-1?Q?0PcFtvvcGVYT01dxKDgKO2Sa4SLvEVuBvRJ2CAArvRjd7WZJtr16n4gDbw?= =?iso-8859-1?Q?31lpV6ZAQJQyirFR+z+p/G1ublRNxupL8o97mqsyy/VffO5aSi6AbktnGo?= =?iso-8859-1?Q?uL9KQien9fET5+KWqTSHgwzMGWuXJea3OsIH4bSa6KVFbCqYxKXm04il29?= =?iso-8859-1?Q?afdbgIFnz0HkyunRLQEsOaPGEGvZtsbp/6+ZSjQuLueKp9P35kQDRLhzCW?= =?iso-8859-1?Q?w1c/uBh8IkIYoIwAOrfvcSdPi4L/o0amO8dygtLNBzxY2qw4AcySfppWxU?= =?iso-8859-1?Q?PVkcVDgKBathF/jXjWNdrP99Gr484IrRNlk9Mjqqb6mSLRtMhuqwJKzKu3?= =?iso-8859-1?Q?A2hUR/6iZHKvFdzwEZEbciuVB+phKnHrG6+3m7d9p7IP2PbSHdnMTaY1MA?= =?iso-8859-1?Q?TiSTnYR88AeYgGO8eP+KKc+tzdwbHcc=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: Q6GeE0I/crYklTmnHxs8MmfnI3v7VGiv0YF4/3u2/PHEcsLcjL/bD8KX4cWpId0BpWz69r/orqTzje+rx4VBwcz6Wno7Nm1Ea0kJs1dg3TNHoCS/QzE+mPKiXS8qrsbbsXEO2VSdlLK1cT808BfZq91nfSHZkD/AUrF0vgi+d/bLWltfOggAJ70QfVKmOI3mTs4yKXuUZXK0SQNMNLaf4dtODR1QrBBFtttFETcERUOG6fkRC67xFuBhmiOBCpwlx41I169Con+HkAcCNqvq+otxkSnh/IMfiYuHcWGqWUvCw9b2IzUV9uR61feR1zKGVEzgNWEk1F1rfJYR+xVhEw== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR02MB8368.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e55ac8a1-1762-4600-9044-08df1d749afc X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Sep 2026 15:24:35.7021 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 32Xp4lriTOsGko+2aewDhCdmFRAgjSElPKREmilF8eVvLib2xaphbZBbB3SyuRjzQaNGy0L9T26tcsoVLZX4BLDiO65CxzArZ7G6dm88z1M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR02MB8884 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTI4MDA2MSBTYWx0ZWRfXzYQ5891V0kR7 UGL6onxRxyJJ57pFrYFJMfYMcyY3Z2jO/crO3UXifnzkDlvOJHkBBcqFF3hionbdYOclo8xQGgT KNfmq+fIh9Sy5Qs9gx3oixwtmkr1d0U= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTI4MDA2MSBTYWx0ZWRfX6vgrSVf5R0T4 nir71DWTenfb8QXTwZfIKLx4FAghIRn3vo2EPSGuIvyj6LRwL05ioonhRGBj8ivTvDzB3z+9kvK wfn0NSiIFEeFOiTzfQjyUcale6JUZFHnofLlkxCbbO+zImzDTT5s6VkQj58t80bGDbhX8HrvNlx dH7OUkO5fxUJaw6JyiUPG2tyGCTsLi1m6Lz+KHaPQlq0S9LyfNk4QpBe2lSbiOr+8zkGRCgjjy0 0m27IjA6nTjYsvwBamV4NlzPxDqmIZI1T1e5kpo33G8y3kgYx0ORkOT8uaPUQuCJFj8O/XTyM9C rkGf3NF86v5dljrytbNW9O+dH4FEbcil1xMC9YBphImcQDRNPGDLymsKJGnz00ot8xzL1U8ajLu 5spivLmp2eNq0x6X3iRyIO/eQlLKywswqYyNszPdg2zjVHEIQWqhrIPNRb2ZnnctcRfejW0rdMO iIf79+P0vrEGlE9WP1w== X-Authority-Analysis: v=2.4 cv=SqMFe/O0 c=1 sm=1 tr=0 ts=6aba86b7 cx=c_pps a=SNRzDqNuYCMO/bT9QdJRMw==:117 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=8nJEP1OIZ-IA:10 a=VdqzKS8jKosA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=dcECTNVlaVxwar02G84A:9 a=wPNLvfGTeEIA:10 X-Proofpoint-ORIG-GUID: oqte04CdEQbcBsnG6gnqRnThoppi-Ci8 X-Proofpoint-GUID: oqte04CdEQbcBsnG6gnqRnThoppi-Ci8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-28_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.151.68; envelope-from=david.vrabel@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.238, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nutanix.com) X-ZM-MESSAGEID: 1790609100332158500 Content-Type: text/plain; charset="utf-8" If an emulated PCIe endpoint has higher link speed or width capabilities than the upstream port it is connected to, ensure that the link status on both ends is consistent by using the link status computed for the upstream port. If the PCIe endpoint is a passthrough device, the link status continues to match the real status and consistent values requires the emulated upstream port to be at least as capable as the endpoint. Signed-off-by: David Vrabel --- hw/pci/pcie.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index 42bcb9206d..bd00305ecc 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -169,18 +169,36 @@ void pcie_cap_fill_link_ep_usp(PCIDevice *dev, PCIExp= LinkWidth width, PCIExpLinkSpeed speed, bool flitmode) { uint8_t *exp_cap =3D dev->config + dev->exp.exp_cap; + PCIDevice *upstream; =20 /* - * For an end point or USP need to set the current status as well - * as the capabilities. + * For an endpoint or USP, set Link Status as well as capabilities. + * Provisionally use this device's width/speed, then adopt the upstream + * port's values so both ends of an emulated link agree. The upstream + * LNKSTA is already clamped to the negotiated link capabilities via + * pcie_sync_bridge_lnk(). */ - pci_long_test_and_clear_mask(exp_cap + PCI_EXP_LNKSTA, + pci_word_test_and_clear_mask(exp_cap + PCI_EXP_LNKSTA, PCI_EXP_LNKSTA_CLS | PCI_EXP_LNKSTA_NLW); - pci_long_test_and_set_mask(exp_cap + PCI_EXP_LNKSTA, + pci_word_test_and_set_mask(exp_cap + PCI_EXP_LNKSTA, QEMU_PCI_EXP_LNKSTA_NLW(width) | QEMU_PCI_EXP_LNKSTA_CLS(speed)); =20 pcie_cap_fill_lnk(exp_cap, width, speed, flitmode); + + upstream =3D pci_bridge_get_device(pci_get_bus(dev)); + if (upstream && pci_is_express_downstream_port(upstream)) { + uint8_t *up_exp =3D upstream->config + upstream->exp.exp_cap; + uint16_t lnksta; + + pcie_sync_bridge_lnk(upstream); + lnksta =3D pci_get_word(up_exp + PCI_EXP_LNKSTA); + pci_word_test_and_clear_mask(exp_cap + PCI_EXP_LNKSTA, + PCI_EXP_LNKSTA_CLS | PCI_EXP_LNKSTA_N= LW); + pci_word_test_and_set_mask(exp_cap + PCI_EXP_LNKSTA, + lnksta & (PCI_EXP_LNKSTA_CLS | + PCI_EXP_LNKSTA_NLW)); + } } =20 static void pcie_cap_fill_slot_lnk(PCIDevice *dev) --=20 2.43.0