From nobody Mon Sep 21 07:24:50 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=1788882817; cv=pass; d=zohomail.com; s=zohoarc; b=n1PkSrCLbeT9D5Ib4nzLK0yOH0zs3eLsVSU+9W3noQ2okfaTAMh5htnK8Eb7hARGu2WWPrhWPzqC4m+LgpXSuecI3KlB4Xp3D/TAUFjzmrO9G8JsdN2LlX+fUSIVu1eRAYZCTW/qBlekH1l0t79BygEpmTzJSZ+t0fPOh4gDDG0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788882817; 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:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=56WreGBft8lDEyBHYNsZvPU20/y4YVjn6WcAexfMaH8=; b=hCRgoFJAPnTwuGbsOqHyuxUjfPR4FHkryKpLuFAo4kjuS474UNA8d0gjWASrduTRFizBULd5QzthxLCtlTyaSq+dyc64iUmLkqHxuM/gM9cFieonFugX9GIg60CVYtvOwNG9GYMK6AvNZB5WJr4n2SvG66vzA7x/11iOwLOs5dY= 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 1788882817828287.86978236369123; Tue, 8 Sep 2026 08:53:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x3y7k-0000mX-Bw; Tue, 08 Sep 2026 11:52:40 -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 1x3y7h-0000jM-QN for qemu-devel@nongnu.org; Tue, 08 Sep 2026 11:52:37 -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 1x3y7d-0008El-6J for qemu-devel@nongnu.org; Tue, 08 Sep 2026 11:52:37 -0400 Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688Eh6ir3514602; Tue, 8 Sep 2026 08:52:28 -0700 Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11021081.outbound.protection.outlook.com [52.101.62.81]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ggh6ex0sq-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 08 Sep 2026 08:52:27 -0700 (PDT) Received: from SA1PR02MB8368.namprd02.prod.outlook.com (2603:10b6:806:1f3::18) by BN0PR02MB8064.namprd02.prod.outlook.com (2603:10b6:408:149::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Tue, 8 Sep 2026 15:52:25 +0000 Received: from SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2]) by SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2%3]) with mapi id 15.21.0406.005; Tue, 8 Sep 2026 15:52:25 +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=56WreGBft8lDEyBHYNsZvPU20/y4YVjn6WcAexfMa H8=; b=N2CmIAhYfvayqlgOVeCpGo72A2mU0JUO9kabdUVeP2QTTfKYdfqPKLrXh I9sE5zump0jNFCS4wr/bqz6/fW156Wtw/GtdqgWzn7JyDyfjFH96N23lvLzJKgc0 swSj9yH8UifMBcUACdgMgGwjx78JFFL9/AysE8QyeC00aY81dqnrBcbHAktOH8Xy QCWkM1p81brTQLR5TIr69RU30vyArg1ux74S8lVvLWK0BRcKRKPIQglEuovnYtSK 0GDRq8p0D3quwaV6z4/YOOsZ1aA8wcuu/S1akdrBno1ZrtcgSEWcIcnZQdKWpyRN 1I6+HTPOfEZx2YssJT4oBrbXi1E2g== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vICOc8gvqef2DNpuexuAZ1cXBBx/XGeLHghTCkhSD5GRNkysUT53o+tdKjDby9C1+GVbPIlpEM25pUIcP+kCc6xecQljK7hDe89rHvuifJrLEvR9rR5g/pphFDzxCejWb+kRr6cbzU2lZhUha/LatCFWD9pgMEkhJtJ1iFY3zCwTD8DX5geqGSxrUCFDrfcfiAaLQqDf0VChpXPkx7tI+EYQv/rykCWoNzKCQJ5H7iGTrM21pKrcWcjwy0T1v4yY5vVJlB5Wl70luM7zYPgASHOCb/817Uo+I5lJbvnEGL4RRKzc+tGFlvfriB0y70v8AvOyCoA6FejtLDGQFYfz+g== 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=56WreGBft8lDEyBHYNsZvPU20/y4YVjn6WcAexfMaH8=; b=MlPymJVOtIhckPvaxGlCo40SwT6YdaCidkFBZCwT+HKNB/YvTXGGP3ZmD9EK58YevGxjX0f3z1gZ/zGLVGmW063P9XI1SMpg7ql83aNYrn+J3FbeOoEnnn+e1iDdF210Srtvu5LLXU6ad/lEqNoor1A3cMmPDvx8AcP+4VSPfH6j+LR/YRzM+PfwDkKYYKLH+Oif0W8eksTxsxMDAL6h7uV+lx4PanxGvkBvlbIjHvHIa/CU0BZ9wQGhY4j1adx/p4UOfFIpnD7FzRf15QSqTXT8ifQOgLAqDXBEHXUpGm2TCmTgj7D0dqwM1arAeGYvDdSWa8CVr1gyDWGcZefRTQ== 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=56WreGBft8lDEyBHYNsZvPU20/y4YVjn6WcAexfMaH8=; b=YNWU8LHobkhlFeofxzweEPYaClt8li1GAxuUydP5CoWKxZRd8r/zFPeB+HEdoy/jiYc5mOWr5tVwcN5b01hfHMj4nuMregnf+VnQKgcG04fJBIoDzXBD7YdSaON4eKpcZxWoDjY4gKlp8vrTfM6iBsIwhIEqObkTrMKK11Sq7JjHCOaWexT+4lE78kRVdTa4RGHSEO/CEgnOkMZD1AdbiqV59HEUvwl3xSePy5Tr6PZkQllCbh8i3yFnhOWu+LKqH/3Dufbd6R/4ElnXIoEOMZbV76y0RVdl7dXIxfWd9pJItNjMfKx6Kr1pf4OteuJytO0COqutgIaVLhz1YIFwNQ== From: David Vrabel To: David Vrabel , "qemu-devel@nongnu.org" CC: Pierrick Bouvier , "Michael S. Tsirkin" , Zhao Liu , Paolo Bonzini Subject: [PATCH v2 1/4] hw/pci-bridge: Add generic PCIe switch upstream and downstream ports Thread-Topic: [PATCH v2 1/4] hw/pci-bridge: Add generic PCIe switch upstream and downstream ports Thread-Index: AQHdP6oKoOxDpQhQrEW6ShZWnXVwPQ== Date: Tue, 8 Sep 2026 15:52:25 +0000 Message-ID: <20260908155223.164787-2-david.vrabel@nutanix.com> References: <20260908155223.164787-1-david.vrabel@nutanix.com> In-Reply-To: <20260908155223.164787-1-david.vrabel@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR02MB8368:EE_|BN0PR02MB8064:EE_ x-ms-office365-filtering-correlation-id: 954a1c8f-2bf1-42c1-8c8a-08df0dc12dd3 x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|23010399003|1800799024|13003099007|18002099003|22082099003|38070700021|3023799007|5023799004|56012099006|10067099003; x-microsoft-antispam-message-info: Hdgddk99SPUVaQ9rrMDZef/Q8ehf7WJ/PcWTDi1kFfd43MXkOWqdkruR398Y0EhpaO058cqUGbfR4H7V5v4XjXi584MDpn+8wg/8cNh0j0OKGrUcZtP2N8cJeam+QzpDCB68Ov883+vBfjvv6m+ONmE9+KGA3HcvGYupiOklrT11Vyx+3/6IvneYVzoIjXqUH3gvGFEeE6T+Nbsw5VODMO5vFAPxC6LT9OAw2YHes4jgjdDaLmQ6bWtER8bXcfgVAtxgD/9ANek0EjGhy3TwvgDe0s/Xgotr0m3Nj1xuWv+ktfcc+8Os+PRwwOoM4Oi+uRiP6bGdFqGywBwNsQry4l74Qwy5+xeL6+P9m+n07CmBmBtf7IMHMk0MIWfer4yIAd+xsjr6MYdaUwLdwe3TsUcQsubTH4121xhnxu+MjGAfqrs7CSBUIPWIPHGZ4KLCV/jgxKzYTTGd6M7znmxUfR1ITbvpjRLWdPLtb1cy/2dE1X17SvslPvxqCuYL/EMPkNiZ2cMUwWW3wkthvgmenEaQpt5UzXutOtBF/+pVba5XwGKaWuwGQs2+RkDVSvxbYklA87KskN2f4IefMD50wWy4YsphqevLQhqOlaQtJiwC3an8tvv4DJYz3RKMtecdy8o40a/Clkfd1HqFFY3g/kng8OMVhdezmgCOF3QiQf4= 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)(366016)(376014)(23010399003)(1800799024)(13003099007)(18002099003)(22082099003)(38070700021)(3023799007)(5023799004)(56012099006)(10067099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?v4jqV+WW3QoJgDLxfd9kFNO7/cDOCzilFmCRMWozodG2PNXRImtanJUSI7?= =?iso-8859-1?Q?T7R9a/97dJYxub5SoN3ZPq7jXUCowWB9EUwj0L+26lphxfiBDmNFWjO4Fc?= =?iso-8859-1?Q?8LeyEHzbyNbtyhAxBj8V5LLn4zZpfqgAgk5VplTBrvmZiZEjkhinAN3Ms8?= =?iso-8859-1?Q?Il2TLpZFDZ37s8warmPFvvhKT3+3hlz8DKZ2fKTcMXMf6//Au+r/3vNOlI?= =?iso-8859-1?Q?dEbi58GQ43Mam49xR0DCEbIS1Bkf7KcRTSLwxtQFF0Z/G1acDSI0G7Rp8g?= =?iso-8859-1?Q?j/V9kFyPss7Cx5bAJ/Qy7YdmI9w9Mc9uz6LBdWVWVHD1FgjgatZyPlbQ0E?= =?iso-8859-1?Q?4InHPhvYJLMSQiNP4o24cEt4mttLVcHEYXrJKzoLGZUTXs0/2+Le9iH3AH?= =?iso-8859-1?Q?ubaKiLDq2+rfInyWv206h/CU9sA2VHrk5Us3WDopeym2vqsIFD129pV0bu?= =?iso-8859-1?Q?dxKc3D+sDyRkHy+AfZ9WNEMNWGyL1LrqFkPI9GeqYnShigcv4I7lx3gv9/?= =?iso-8859-1?Q?54ratCCpOV7LmdB1KO1EDH/eugOUwP/G8KVepQkRn/xTRQyq/F0k1IDdfE?= =?iso-8859-1?Q?ox2f/vQ7HPHpeHau0knilI/J7SET02bboEhP1NXjR6/QwOvGaSKEwFp+S3?= =?iso-8859-1?Q?RrlPfeybIqBKAa49pUWFwdHc35hQ67Jhh+OnSG8Kyt4aJQavFdSyX7LFhz?= =?iso-8859-1?Q?Ff1y+s3/0AQ90BFxGf1CxDbUO7xLvWBspCC+u9nLNRtJykPnKFIOOLgfnJ?= =?iso-8859-1?Q?0tjWEyzSfK2rvMxBjQixFWtd4VFuArhh4SnFpSfcAY/mWb3zDXb2rJ3ifj?= =?iso-8859-1?Q?FmBtVqrGn3xtcz29VmNXeAleDGw7Kw5153XwBypukHtohDmv0E6Kq/r21S?= =?iso-8859-1?Q?gVswmwdC8gNfWEskMbTegUGDPD5RXCg/ba2smXD1vgTWy9bBQKFZcIVxYl?= =?iso-8859-1?Q?Q+9uKEeTOSG3n++AgIe6EL8Qh9LIfMgsUnBldW9osIH7qA/BF+aBpj3txG?= =?iso-8859-1?Q?Rtl5niYVn27XHfC7PAwsaTzTAiuSWC72/dsa5gGEKGhQBEV3DukdnBygao?= =?iso-8859-1?Q?90dASIh8ogr4RaKQ47CkEv/jBZM9Ro8fu/Fw8gl6ujbv2AFqFwD4kbPar4?= =?iso-8859-1?Q?4mZEWZ9cpHLDfeBzfGSQZt00DHG/RgyqRd6YAhrQS4sdfLceYyyqjvb9oP?= =?iso-8859-1?Q?4Y9C6pXv8C8nCVlGZ6iVD4zUsP2s4D8wbgj6nlpVsE0shE0OTd/PnqDijW?= =?iso-8859-1?Q?EBP1gwffkdpCWZMKdxriYRNnPhFPH4JkxUKoZJrnNX3ZxBQc//tlzNe9tG?= =?iso-8859-1?Q?Wi8XTivZUaPnoaMtYiX3Ij1PQn4tURa/WpWuTcQlQnAbMgtwYiWdkkQZKA?= =?iso-8859-1?Q?+FRg+r4nUNIQLMaT734VuXBj0d51I7/6y+IOck/21Qr2VJLNbbD50fUsM6?= =?iso-8859-1?Q?o6H2vm7gXiH1i5usfONCZmFq5FqGIgOKWDvSl1tXOQNxHbCzrlUame4lJT?= =?iso-8859-1?Q?9AmEbn98sHhyIM2D8ez2Gxf4bdeIN/nV4aX6afPY9DiZDhLnMLN3Yjk+sG?= =?iso-8859-1?Q?SZxw6fJdrQj/L4xnopibFoJcTYD3Io1Nuh8pu/EDhRwzaiIS/orWz8TaIC?= =?iso-8859-1?Q?2aM/3kSf0RXr6nASih2h1NDBet5uz3wYAMnmu+u6qbrdhuB/cXZzPwLxxd?= =?iso-8859-1?Q?MhlNpuLzf67TAZ7STDNmTHQrM8Az5IkX3WzrGFiJ5Z1jzRpTjJ7KJ44uXe?= =?iso-8859-1?Q?ZjkHea7Ovt8nBPIhi1iDJikrc0AYXK5a3nOKLYHs2iXN//C9j/iKevIGCp?= =?iso-8859-1?Q?CmpMruNfSG85uun5IRGCwttUrsyesUk=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: b5tjxscYBnplcpIB1eOWu5P6Ue5RWjN2gL7UD9b2aYUdkjYwaku2ezMbbnb9QKyNA/DpTEF8Y+B7XWnKLMxglcxvm0C1WIkeEY5EyIK9OG3yJO2vNXQMhpdRAcORFcvbgQnQIGeCXecUXU7uG+6v4lqwqzFpHLa4R5Lk+VkRfTtdtgEm+wx6mYk/Ef/ATV4y8lDVYOPbWBOi8bkVPsWO/f1ipsuwXKf1ZivArVInsDIkanBeE3wAyjEc7OJ8KEYYy+yoBFNUpBXZOZEpPYQyFV7cmfzOT//CBFvc4XL4ch5iyJ1KfsgP9aISWsFqFfhkFVT04jvRfyVJWW8/n8VG8g== 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: 954a1c8f-2bf1-42c1-8c8a-08df0dc12dd3 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Sep 2026 15:52:25.1538 (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: VD7q+dv4DS+ZyaBqD4nGIyh+ED75eaNfMg9XHaLIJZHp9vAAY8g4ALCq1/h+rBtHwCi8C2TPSGIRhmcOoLwp1AWcYqq6sAVZfriMuX9Yjv8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR02MB8064 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE3MSBTYWx0ZWRfXxupdC4mjtPKb VI/k05UJ76D2mF1yOBxIRZi6E8o7i2VNQecxFhhHPOS2WzbnYf+lwP3+pZmHCIrms/cMjlgBwnj JOwnhjR85s+D5BJQVvXWMxBxywclEzdjEyDIPbZOju/Dwfoy+tAqeE5BEbYbe/UBMVyRKnVwplv bOz8P8LS/dCDRrGA9mQ07/OHD9JBqCaympWblqRD1CmMx4Kob6/Iapeiaq1Q2kplaKLhu040QCA ltAu/PxtgcdaYijLI+Y/+9izFbZfQ8D6pRf9B86Od5n+jYT7pZd+BWrq3x+hb26JBf9Eij9Ni0f hFvprWxGSU0YmvCbuLuzh7rGbfL2kfkaPepSy3cKhX02Iz84t43plilhT/RoMRDyL4R1WnFhh8h wpAoCGbAS3WB23/DdFLYqsFYS2qu496qfumdfy94M2j7GrB11aihUPmXn4WW5MMMcQr9xRTkbM6 ppNgcX8Ba1gB7d6sFBw== X-Authority-Analysis: v=2.4 cv=I4hVgtgg c=1 sm=1 tr=0 ts=6aa02f3b cx=c_pps a=7ywGlyDdJUFJDTdbuALIzQ==: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=dEe9Ve2bX-KnNSUMM2s9:22 a=vTr9H3xdAAAA:8 a=64Cc0HZtAAAA:8 a=59scvrWWz1I71DQtTbwA:9 a=wPNLvfGTeEIA:10 X-Proofpoint-ORIG-GUID: bLvtBPxt38ZXQMrQ6tY_PnJ2fNMCZLSw X-Proofpoint-GUID: bLvtBPxt38ZXQMrQ6tY_PnJ2fNMCZLSw X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE3MSBTYWx0ZWRfXzURoDnT8gPfY 8qbJv7YPsd+1nyNAz8pxIm+u4oOLXZxVjnuJpjyIMfZe9YzHkvmrEuPw1MJ2CZCsHyeNbDhA0yt 2YRkGDF40pJ0L+i6zVm3y8z0HJLNbTM= 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-08_03,2026-09-08_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: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788882818590158500 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. Signed-off-by: David Vrabel --- The device IDs are placeholders and will need to be properly allocated from the 0x1b36 (Red Hat, Inc.) vendor ID space. --- docs/pcie.txt | 6 +- hw/pci-bridge/gen_pcie_downstream_port.c | 206 ++++++++++++++++++++ hw/pci-bridge/gen_pcie_upstream_port.c | 182 +++++++++++++++++ hw/pci-bridge/meson.build | 3 +- tests/functional/x86_64/meson.build | 1 + tests/functional/x86_64/test_pcie_switch.py | 98 ++++++++++ 6 files changed, 492 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/hw/pci-bridge/gen_pcie_downstream_port.c b/hw/pci-bridge/gen_p= cie_downstream_port.c new file mode 100644 index 0000000000..d593846ac1 --- /dev/null +++ b/hw/pci-bridge/gen_pcie_downstream_port.c @@ -0,0 +1,206 @@ +/* + * 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) + +#define GEN_PCIE_DOWNSTREAM_PORT_VENDOR_ID 0x1b36 +#define GEN_PCIE_DOWNSTREAM_PORT_DEVICE_ID 0x0016 + +#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 + +struct GenPCIEDownstreamPort { + /*< private >*/ + PCIESlot parent_obj; + /*< public >*/ +}; + +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 GEN_PCIE_DOWNSTREAM_PORT_VENDOR_ID; + k->device_id =3D GEN_PCIE_DOWNSTREAM_PORT_DEVICE_ID; + 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..57d7e09485 --- /dev/null +++ b/hw/pci-bridge/gen_pcie_upstream_port.c @@ -0,0 +1,182 @@ +/* + * 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) + +#define GEN_PCIE_UPSTREAM_PORT_VENDOR_ID 0x1b36 +#define GEN_PCIE_UPSTREAM_PORT_DEVICE_ID 0x0015 + +#define GEN_PCIE_UPSTREAM_PORT_AER_OFFSET 0x100 +#define GEN_PCIE_UPSTREAM_PORT_MSIX_NR_VECTOR 1 + +struct GenPCIEUpstreamPort { + /*< private >*/ + PCIEPort parent_obj; + /*< public >*/ + + PCIExpLinkSpeed speed; + PCIExpLinkWidth width; +}; + +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 GEN_PCIE_UPSTREAM_PORT_VENDOR_ID; + k->device_id =3D GEN_PCIE_UPSTREAM_PORT_DEVICE_ID; + 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/tests/functional/x86_64/meson.build b/tests/functional/x86_64/= meson.build index 27b31f2e96..8a83b3188e 100644 --- a/tests/functional/x86_64/meson.build +++ b/tests/functional/x86_64/meson.build @@ -39,6 +39,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 Mon Sep 21 07:24:50 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=1788882798; cv=pass; d=zohomail.com; s=zohoarc; b=RRuY/W6ILY8j2+MHtdZxuBsxSCTUU7psGPyORRN7avYbS4xV2na2Klm3MV5AR11ZizVo2VRy/EpUaqzU2Y5oGmII4tUPnlD+oOMbV7rFMI4jRS30mSdyF1j2eC032+2A3ImPgML43Wu/8Sz7c1yP1hDKxtCSdZjXKGZg5ZbgfMA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788882798; 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:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+LRlt2odqa2LYTlePZq3/3nHiT2YEOcd07D16IRHZ1A=; b=Ara9OIdaIgAKZjEE7+S4kCX8A8VbKThAFfe7LRbcF1u8fdGrMAYFPevA9EJvUDpCi28ph+PWSvrGdYoxNOu0pjzZyPXKIkDjMbIFjgbC0aD1PCXJUQJ7BmREPx8Z0nCX6NTGkkvG0hJrALf8mV+/JpwP9lCEJquvMKlARQ+2qi0= 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 1788882798252478.46653338529984; Tue, 8 Sep 2026 08:53:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x3y7g-0000ie-Ms; Tue, 08 Sep 2026 11:52:36 -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 1x3y7e-0000i2-Rp for qemu-devel@nongnu.org; Tue, 08 Sep 2026 11:52:34 -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 1x3y7c-0008Ep-On for qemu-devel@nongnu.org; Tue, 08 Sep 2026 11:52:34 -0400 Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688Eh6it3514602; Tue, 8 Sep 2026 08:52:29 -0700 Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11021081.outbound.protection.outlook.com [52.101.62.81]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ggh6ex0sq-3 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 08 Sep 2026 08:52:29 -0700 (PDT) Received: from SA1PR02MB8368.namprd02.prod.outlook.com (2603:10b6:806:1f3::18) by BN0PR02MB8064.namprd02.prod.outlook.com (2603:10b6:408:149::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Tue, 8 Sep 2026 15:52:26 +0000 Received: from SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2]) by SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2%3]) with mapi id 15.21.0406.005; Tue, 8 Sep 2026 15:52:26 +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=+LRlt2odqa2LYTlePZq3/3nHiT2YEOcd07D16IRHZ 1A=; b=Q+bUwWXns+8bphzilKHv79BljuCZx47q+0X80OjmDq4BXJ5ptMpn+hqgs bzIpC0ufeQvajv69GoPSZDTVdBuoaqkeYOMksg0UJstf0YSRGcoD2Mqq6dw9k08r 5nXh8zDZ8g69ZFlEVXNhryQTmDoZKp6qhb8hT/KzHq7ozSeB5dVMPKOEV8X+DgmG eFm8TOUoqodega4EnZfw+/tnh6pU00slh7jTobbAegXcsphU4nOjpytb3GKTZalM UcRY/IDX8MPCrzqIR6J3fKeabsyoD/9XIJAYTrtM4kYHkHyGmn9j8FVns8i0IFi1 4H5SYPhU4/qiKMlaN21QkQvRliFPA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ThD4H0KK9ggnIw5wa0qOBbVL0ee/OmTL9Fi9Q1FZOPBoDil7mN6KAfcV6SJlE/ME4YG2bzy1HftUZCQAv37DBdmh9dY0oCdSlehCEZ6rtr2zETfo0K0MVZzW609mxrQY/3y7JdQhb/gXw2cxypif4gEnFhIseCnrkIUh8e5ASYa3+TLgNlGKywwD/SzP7/BAyKxQMjDZBBQCz4KmlPxcewVv08XuTh4jssPyu6p0YICvzcuEmInJ/oaJO+zLHbJIDLtHBUOMv7lKzsNfcdJEBEarm+vOIcp3Zg2K+GRsCgF6D+ESKArGzfbvSA+lsgBw99fY/RmZxvldTO/8aoQWVQ== 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=+LRlt2odqa2LYTlePZq3/3nHiT2YEOcd07D16IRHZ1A=; b=wgJl6rPqsHO/CBXP+rjf66+w6s+4npFFXIthYw4AZNkp7dKTLnh0X3mnvoKc8JbejqJjKoJCfbynTiqrizMMoco0NTcMgM50VYppmYP/nQAKWcE5uO2AqQIwi6oFeDeOYvTm178wL4c4M+bYZYGe2BH/EwCu5tja7cJYF172YwvhC4GEoxOljlDlTxd+BH/F2VDfGcu+vm5E3sqyjoJC1mlmEtwwyirP5KPWHQnto/joqFNMAuwaunifU6f1jc0J9xdkNFndLKdJp9RScm/vPQDkf46BUPSPK66ZdGJoHj/YnKskDbTjUT3uagPmgVJANwWqaCCIRd7PtEEvpekodA== 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=+LRlt2odqa2LYTlePZq3/3nHiT2YEOcd07D16IRHZ1A=; b=ONnbnCKlA2lZaFxLSyBsPyoklnmrkLd4eFMPtBTLrGdBiyNybGO6oJy7PQfWSz7Rvn9aJ+gW7PlBtUvHIUM2K1o/jsbdpyeL2G4me1cDhfTGKE0NB2UsRQGGucX4QlUtuTUgN94AeHIKe4sNLhU8qKcy+FR1Dckl+ipu+B/D+3tAd5wPN0bW2Gn0HA73rzGPiCU+Wke9DOJwyaUdtflUYUdzHdc0NSEbPEJly7Afz4LjIwJ6Tc/Ga2CCp+qttAQd5o1+o74ZP5tNmONjfyMYFf/MvlSJcieosB9FJ1fcFSGbCdyCR5AwGWmxeCciDBBcc1dfswDrXKtCwdc5eVchOA== From: David Vrabel To: David Vrabel , "qemu-devel@nongnu.org" CC: Pierrick Bouvier , "Michael S. Tsirkin" , Zhao Liu , Paolo Bonzini Subject: [PATCH v2 2/4] hw/pci-bridge: Make speed and width for PCIe ports non-experimental Thread-Topic: [PATCH v2 2/4] hw/pci-bridge: Make speed and width for PCIe ports non-experimental Thread-Index: AQHdP6oLwHQa+tJpwka5vcOpmDca9Q== Date: Tue, 8 Sep 2026 15:52:25 +0000 Message-ID: <20260908155223.164787-3-david.vrabel@nutanix.com> References: <20260908155223.164787-1-david.vrabel@nutanix.com> In-Reply-To: <20260908155223.164787-1-david.vrabel@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR02MB8368:EE_|BN0PR02MB8064:EE_ x-ms-office365-filtering-correlation-id: b3d0d18b-78cf-4206-7f56-08df0dc12dfc x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|23010399003|1800799024|6133799003|18002099003|22082099003|38070700021|56012099006|10067099003; x-microsoft-antispam-message-info: jblzAHdc7CRhGZXi3QROpdQjy2+0m83gKBHu+0fPvv+H2T+ngy/nwvg6TuwyhJPSIKkCy3lSP+S9X+u7Cv48/Eno+yX+3nBEhTio/ABhswIBKKJM9cJEDNXLbJjOY3jricKJA1gZxO+m129uwKoFlCfl2Z9jRi2h1gGa1sb1X2KMZGs7JSXgfGVurUl1XS/MWRNrBgLMPAiOITapahRcum0z6eSMFjVXK8hGIAtjlVqO4oHUtcyGG+v3tvYWp1yAqfjvfF6RewXDI6uuOn5EXEHOoIFQdE+PQh5HCS8U92+kRt9hEaSmQcxA8Fv8Wgl1vGUccfMm1XzdHRJdDqtqersieY2kzALSr9aU3BwcT1In70kOr1bLIV3o2hHCsTeGU1x4353IHQH8s1kOqI7gvnXJVWT+INW7TX3SQ391hNqjRWHlDIIqVi1VwfA/RZ+fMNE6HNPOHQyL17wix9Ns9ZE9J3sXZfeh5Uk9d6opCakKvjGjNE/Gxy3DFkLnoHv5Hfbz93lPCQYeaHeOy+V7L08pQ8QZ3SZ+wuuVTQZnWaXKjowq6uqYiYirQIi/Y1hSoGnfUJq5pDzfzqs6JyNsdQgq/tzHE7iRQCB0DMvOKWdXqjM2v7/A0mWlPau+cpbgFEzQmfpII7g3LYlCEkQYr5uBjqNDIjuAM4DOJWCYd7FHfjpZSU0QGFyDMlVtJBrC4siUobye8PCijWPNehPRqZeG1aoP4F6XmPuGKsLXcm8= 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)(366016)(376014)(23010399003)(1800799024)(6133799003)(18002099003)(22082099003)(38070700021)(56012099006)(10067099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?bnRvjVis62rjiApM9PGZJ6OQmW7+1vMWcdBLP+fSCiNTpGXzbzsSKETMbu?= =?iso-8859-1?Q?dZA4EWe7Sm9jPmRwPZiVaphFFlwTO/aXSFSVR8XBVBWoWE8tpBjbXPYPjW?= =?iso-8859-1?Q?Gy/Du73GU7u87R+AMD6j2pUZBLaJk5kmJDrPDlyC5iBSCSLY3JFN67ANbU?= =?iso-8859-1?Q?m/O813+r/ntC9b1jA/DJYLJ4iHoN+KKNM9O4YrKs7at2sfsrbR8Bwy//FG?= =?iso-8859-1?Q?UGS9BNIJIqe9M8ZacGXrsMStGw4ohppbdBcuQOkLfmQXV5V3j84EnQhJxO?= =?iso-8859-1?Q?CGjVadCzRG8HS14iOLyr0ebwpyyPe+QQztd8dTyioDkIuGYGeDB6v3GZbS?= =?iso-8859-1?Q?8LrKiSs/kUJ01xkCDKIx2VAUuVmdOTYY2QO4vnyRNSM1LhV5RLlSDx0Z9F?= =?iso-8859-1?Q?FmfcyoNJrvlGqiwjQ7zT7tfNx9bI7YKN4UonYx1X6FHQaHiSaZvDPs4qQV?= =?iso-8859-1?Q?E/14qCuZ6Et4nCOgIqAXb/NGHWDAQLNziF3KSHfdDLOR7zzj55K9+TlwZo?= =?iso-8859-1?Q?trJ6KA0zKfOuptNTL8utIobV6FFlEDQLqfy6CMRSQXjjhXM9Dp+hwgJKK3?= =?iso-8859-1?Q?/204+yRfC8c+c26uR6VZIKs1PzLgtXTxOhZtr3zhW3JWIfWe8Oe4U8JRj1?= =?iso-8859-1?Q?kXbFjOTyuhyyOVwkcxyEyXffLR4xtP+moYKKhkKt5QMOBns7CZQZrMHXyL?= =?iso-8859-1?Q?Iu8lcxjgQBhrtbTISHD0RI0oMJkfKf2g9OIZRWxbvAWMioTAolddt5oUR4?= =?iso-8859-1?Q?C7dZ0B+PihAdNMRSMGVY3+amhgCSQihdoYjQC+cCk6mR7QyMGYF7NbKMhn?= =?iso-8859-1?Q?aw9v/Yyqf2tWyo0XI2BwcnzxRlhc2EJ5UTfequIN+0stXVFIXekHAi2sc1?= =?iso-8859-1?Q?GN1HK7fA6lYAevY3Hxzpf/zLojzm0XK8xoBoNKySLBy526l0x0G03iNFry?= =?iso-8859-1?Q?iv07w3X7m9pb8mAMX0k/KSbcbMgmWxQ2gmmWNCAabVrz2xobPKq9lklcLm?= =?iso-8859-1?Q?ZuJTy+SOrIdAIhg8cEXHBoeO6y6pdJneVHSatdU1SbB/u3bUSBSCGgjPXA?= =?iso-8859-1?Q?ht7n0Favg+iChVNiYMTqRdLuvPvW4vja4Ht3z6Qk9H5PHARxv8Ea/xuH5U?= =?iso-8859-1?Q?CUQD3dcSJn6wtnaZiENl5+Ogxmv2f+JI4addka9QhG6COcD34adYzNMO3I?= =?iso-8859-1?Q?QYqZKgieQbDdPBfWtMSIj8XVFXRLsoW9o7xApRwE3hChw/Mzhgx//OlvpI?= =?iso-8859-1?Q?C4yMHsqyU4Oczpxc1/GCt7aJbohpPGltacZg3q5VrKSCNCV0RQ1KmYrjAK?= =?iso-8859-1?Q?ZTdmurHxMYmQsu/mq2pXrdfil2js7gLcORZvz5kKnJ7ZOuoKJQIp1pgNgG?= =?iso-8859-1?Q?qxV93BFsX/T02j7gB1ah0A1UROVT2dmS54b2bwjPgO/E3XmOKQ4euZITDE?= =?iso-8859-1?Q?W+2o5xsBN+z5xPCC82cO9SFw1wjRVovCngJFqZSJLkxvrgH5ih8znPV88y?= =?iso-8859-1?Q?nQhWz63yYHGZUkg6AzuJJSIDLos0tARLLO4etGGspe8DRdflgNkTvWpyVr?= =?iso-8859-1?Q?NnYcrSylV7QFf6OCllisdg0wEBjNhaZ+I9SK/Iq0ggvnqmAImuLCss/vDL?= =?iso-8859-1?Q?t4s0i1548K6XgzV2Ezjxyms3wKGg9iEtNiI2fB2hDsokkzEsKaGkGQStot?= =?iso-8859-1?Q?CpsuCtk23pUYCpvV2DtyE+djgOq6OluzUpXKCVd7HRHtkPeLlk1ozlpMi+?= =?iso-8859-1?Q?ae/a/JmADpJy4XbNjf09Sd5J7a4E+FilN+Cgcm8O5d9S71UJEqNd4x+JGD?= =?iso-8859-1?Q?EsmE2QC/or7cpzp1wazrRm+o3oRQcXo=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: qlmeV19/WZK4TfnJgzktL8BchHecMJegDBAZv+1/05sx+el25iDnt3+z8ACrtvxPAwEFxplPxq3ulTMAvKkh2pzEQlVSBdIKdiCC1EylWcE2n5FijVhdZ5EOHOsrWBqQcvWIfhKx3eTW6HTek26UDq2i6N5ZZ3PpmAYLHXak0Obp6WghqKDbmXC8MstYWkT2YmkuVITDLTMV6cHbB3p7tf/EQE2x2yhoAwynkRP2D8KReSWO5cLbj9l/U4blWEtj/vXelz+1InAbEyITFR2KIFkp492cVlXQQ8zqm5mj1p3G4craszZeOTudre5f0D1vJtM6FMbX4cWFBXay7sF4sQ== 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: b3d0d18b-78cf-4206-7f56-08df0dc12dfc X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Sep 2026 15:52:25.9619 (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: 4FezhIsl/aNy5g7Lr9nG23mp+QamPF2wRpic89wZ0Hjo4jglHpvfRm26JD2cGOnNg6hnd/2lBcmu4oAFsPx963+Ya8fDpRe6nFLiHhcVTW0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR02MB8064 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE3MSBTYWx0ZWRfX2/Y4MiD/aUV8 BzIjJayPcvv9nlk5foyfgaHcXhBFv7PwYNFabsYK9CdgXqWr84cEoaNF2fJWbRNJ41/c/l3MGeF sxB8NwuCjhi+NdtpuRUMklv8M7hrN/dPE+alqTMfrmguYhM8p8oX+VpYa5yiCclcZSlnUY1qMA+ Qk44FhrEko6grl0sx33j9m+LJz5Bl+kHftx3pFwe/wd18T1y5No2P/DS8IY0+nkWRHy9/VBK4PW WrFQIhU7MUDM4OxLbSx/bNmHrB2rhvIyATsxW1BwjR5bcXsVgFaNMF1jplc1Tb6W3j228Hr9dwq G40k57pLV0Vf/7cFKeoentjg4BJmjQdDzlAsMe5FA2FcraQZ/QbFfbrW+znvvFOe9XDyqHL1Jqu wAqILfXOBlLh9fij8wiVnvCCsuHgmLV9zgmsHMHSKW6eCtEPuN5EzMlL3Npq1COjXuw9g1weg89 iJL7oa9B6e3WHLf/OWw== X-Authority-Analysis: v=2.4 cv=I4hVgtgg c=1 sm=1 tr=0 ts=6aa02f3d cx=c_pps a=7ywGlyDdJUFJDTdbuALIzQ==: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=dEe9Ve2bX-KnNSUMM2s9:22 a=64Cc0HZtAAAA:8 a=Ttky8AElcTD8thzn_3UA:9 a=wPNLvfGTeEIA:10 X-Proofpoint-ORIG-GUID: vajVlrBTr1xs1BMGGjqsEzCcCb7s7xm- X-Proofpoint-GUID: vajVlrBTr1xs1BMGGjqsEzCcCb7s7xm- X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE3MSBTYWx0ZWRfXw3lIXSzUu94Z co9QNUaNHH+76wL97MNQy7+wZeD/SlZq9HV72F5Q6X+gtKrvYxLT3aJOAdVbSoSdFz/Xi6m5C+O /HArXkpHJs2nJddUV7tiwro99QGtG58= 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-08_03,2026-09-08_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: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788882800337158500 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 d593846ac1..8fe71382aa 100644 --- a/hw/pci-bridge/gen_pcie_downstream_port.c +++ b/hw/pci-bridge/gen_pcie_downstream_port.c @@ -163,9 +163,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 57d7e09485..edd5bfcafc 100644 --- a/hw/pci-bridge/gen_pcie_upstream_port.c +++ b/hw/pci-bridge/gen_pcie_upstream_port.c @@ -139,9 +139,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 Mon Sep 21 07:24:50 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=1788882775; cv=pass; d=zohomail.com; s=zohoarc; b=OgGY6mHJ1D/RuODONN8KdWUtfH30mFiISNLfQyT2cBG2ERv2Q0xYqcpjKu6icYycpJ7zVJzPT5p69oKMOD+iaiL1RNKaGqcsWDe/7JxOypMiqIcuR8992jMJQ1g1UUCs9zquC/P7MwvPoHGwd0l/WDxKZ9YJfN0aLKd5rDOqyFc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788882775; 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:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wiFFRE6+ON8aeTW3VlDC2hQimoGkEyiv84+mAQ+Wt0k=; b=KMhKoaOsSdNv9WrjsCi3pEiDsYPlmgt3EIDETs89YNb3EslZOdIl9/5PFgQ2/lAJ/+dz0PgmUyiC06WGdrJfyhI0h/cOk4qPmBX0MCILJSSecIjTpXGyCwNRQafNS+mCg57gK02vB4AlYitWbuH8wOgcTGGwSeP0K9Lmy/sAAx8= 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 1788882775173274.6379738046161; Tue, 8 Sep 2026 08:52:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x3y7l-0000nG-Ra; Tue, 08 Sep 2026 11:52:41 -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 1x3y7g-0000iT-HX for qemu-devel@nongnu.org; Tue, 08 Sep 2026 11:52:36 -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 1x3y7c-0008Ex-NG for qemu-devel@nongnu.org; Tue, 08 Sep 2026 11:52:35 -0400 Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688Eh6iu3514602; Tue, 8 Sep 2026 08:52:29 -0700 Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11021081.outbound.protection.outlook.com [52.101.62.81]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4ggh6ex0sq-4 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 08 Sep 2026 08:52:29 -0700 (PDT) Received: from SA1PR02MB8368.namprd02.prod.outlook.com (2603:10b6:806:1f3::18) by BN0PR02MB8064.namprd02.prod.outlook.com (2603:10b6:408:149::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Tue, 8 Sep 2026 15:52:26 +0000 Received: from SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2]) by SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2%3]) with mapi id 15.21.0406.005; Tue, 8 Sep 2026 15:52:26 +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=wiFFRE6+ON8aeTW3VlDC2hQimoGkEyiv84+mAQ+Wt 0k=; b=Zjfl9O6MGm0EBr/Qvkb51s6/BaGrct5Rzj/YpAOVm7ZQGOim33H5oFQYg 7ZGTdL9OqJ5Kvk5sbUrSSfrl3fPwT2uCk+Dg8Wv2MzB87ZDe+d9GFZQpGp2JJEra tALI9G4/MWwfl5ZNGup2OwVJucPC8qMEQbD3wx59hUnZ3oQbtjBIZPzzUHhGQqre aBFn1wP4Ol0uggYSWwQGjTFs5+lVk98ggfeBi/f37ppMLqE127RQNBnS5A25wXE0 T9745cGf8XTmxKWmzKt458G7veDmn0PJaMWZeZwgo4Hy5mxRZpxsTEq1o1ZYwh31 ItwSscW7+ruR/WrZgxE+iXY5ZMDvQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WXRvNrzHbTAYntgUCV0R83anvrZgMyOxgsmfYICOsnJmLPhblNZW1xlU7irNJi1qZZVjBHi8yT9pr2QMCTC0sjRMlH07vlmrJZZDitKmiUAPYdnyCxEey5l47grv4cn83TfiHiGD/fN+74+3Puf6PDLWT87iSlQtL39F9vO3nE48GorLfo2eQV5+Oj+EDNYnwohUmdfQ2nMBVsYN7bHOhgECHdCfpFI3sYDwNE27zX8Wy1gVWTFsVRnoQMC7s3VWWpXj5xgRam+fvgF2OUfwmfhf7XOcAex1OJ2G+TuMiQeg78WuwrEfJc5Spb0H2x+87P79osPkg7rgKGhG94zdpQ== 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=wiFFRE6+ON8aeTW3VlDC2hQimoGkEyiv84+mAQ+Wt0k=; b=yRgW2knDUHSbuzEN8gTUBySGULQ4dcIZgc98utdZVeTQh7WSC+eOfzw1tf7nTEqYq48ZuXC2TpSl4VU1rhN7jq7OuQX0euFxyid9RRt/kqnTxP9qMx6iBmUyZ79UCIUfDsAS63+t6YcotFqpWezzOY79Hl06rnxMrbKPwO+dDXfBv54EfEuDC8+d1l9wxR2jcBgkvYofOUDgT5Vx+cz2RAmf2mCGtzeUaqTlICk26bBEPZuPmZ7ToiXIWVa5jRsLMo0DNWTjX4CeExQY7KFLyvGDexKH+9NlCEi485AFQTcf2AtG6JRgJGcmtxIjLj3cv0TVFxig5D7ncWQVBpDznw== 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=wiFFRE6+ON8aeTW3VlDC2hQimoGkEyiv84+mAQ+Wt0k=; b=TJrBgHPBMGiKfYOFW39bwynCsZ/o6+/jeUFTqov00SXobCUUgY9SWm+SuF4gKt6mQ/VAolHpyzXvNBfvcxeCNHbnd/X2vfgiBV+HSvgCaqeISsIZxMcry+u7hOrHBM1TlyATXU6dCu1LKxyHIF8u6sB+f/LNXHbK+JqXvbUujC4wcFZdYP/2egNWneF8oH5JomMPh/fLpAPXHenr0aWKsPotOFA/SVtApOraCwfTFYxcxFJULlDg/stxF6xTx6eetAA8SQXeZsoSlJ/iqTKcz1X3jtwtPC3w0ZqNVZBhXf9v5M73JtIWihEpi17qhp0tm1uk/tRdGdHG1zIsz78VVw== From: David Vrabel To: David Vrabel , "qemu-devel@nongnu.org" CC: Pierrick Bouvier , "Michael S. Tsirkin" , Zhao Liu , Paolo Bonzini Subject: [PATCH v2 3/4] hw/pci-bridge: Default the generic PCIe root port as Gen6 capable Thread-Topic: [PATCH v2 3/4] hw/pci-bridge: Default the generic PCIe root port as Gen6 capable Thread-Index: AQHdP6oL9O9Mw2/ps0m1xjmZ4zrXdQ== Date: Tue, 8 Sep 2026 15:52:26 +0000 Message-ID: <20260908155223.164787-4-david.vrabel@nutanix.com> References: <20260908155223.164787-1-david.vrabel@nutanix.com> In-Reply-To: <20260908155223.164787-1-david.vrabel@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR02MB8368:EE_|BN0PR02MB8064:EE_ x-ms-office365-filtering-correlation-id: dbe985c4-3b62-4a9d-3185-08df0dc12e5a x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|23010399003|1800799024|6133799003|18002099003|22082099003|38070700021|56012099006|10067099003; x-microsoft-antispam-message-info: asapG6vLV0t4D4YIPGIiyDZ5n8DQilP5TqNrscLW3Mto6guX16L4gCulmsJsDaY679bXe3nbjRKhn7vXHMa67/PIIHuJLHJHd/iTDHhO70ICqv0wIE7jxzsma6yQYm+W+/gr9qDFgTkOx/y392xJoIKrJwIFJn6hlSQhEg0GBxEf5l87KMN3Zw8hX41jyia7Rw8HZDK1BIFgaKs0KRqN9v5VABj2Dhr7i08ALko1iz8tmRcQaclngLAM3FoSrCdRO90xpcLiIFksKENdfInn3RiywOKy/kCMCMj5OERsoB///ZW8TFthe3s6Koibe5x49ow642oXHBajEBWmKpKeg0gF/iYhQzgXs2RJImF06tpDINQ8QrkYxfS6ljZYGBB8RAexQUGAgU8lj9q+oTZTpDPRTbxi9EmVZFVq3YTXCDhFuKdOz59lqanQRrkIpdLsbWt8Yb5RLyQH2MoCiklQkzNW3ZsXCuM6HXXeozhhidJsvYCltENESi8GnkqUtRI2nzggso1ZGBvQm8kysgNcVdyvXKu3d3EAdRJzUjS+rNN02rLpXkv0Ek2If0wRs/ufsQLOlURRR61Hrp35YNo0NYHVmre6fsHNZ6yoe8n6Bq9fLBZJIyiM/UABbE4qbJPBFPE3nYWSMMIFtDlpiI4k9P8qsiG99s9uqtaiaEwjYsO1KJsXyxV0+1t+2AyFsunkMu1RHjRAAlZWg/oWFYjD3pK1KQTTFMya6to3RiJdQZU= 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)(366016)(376014)(23010399003)(1800799024)(6133799003)(18002099003)(22082099003)(38070700021)(56012099006)(10067099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Zg6qHGHdgdd0V4mINjx4Op3QdNqu86gXsT4+OuLvFx0leh+wh+ELolXqJz?= =?iso-8859-1?Q?K4ULI12CVH2HSp22q9XOzhoo4ZYAXc0nsZPnHcR1opoxPWAay7NYsu5ZNO?= =?iso-8859-1?Q?g792ZKmG99psZ0m4taQjIaOVzBuj5UgRnCOz0aiyGRYfWhOMOLV1zy3x23?= =?iso-8859-1?Q?tsIcxeBZHv+i5xLplqwv/KKL2yK2qR3K7NL72izHpdVpnJgLsQGYaoJaav?= =?iso-8859-1?Q?d+IMIouVgPFYLOKg8yN9dp84CjcP9xvdjPftiQT3jMcfMhyiGPWRt0Vz2G?= =?iso-8859-1?Q?XO88UtBXDAPxJPkSNXto+LLjK2MLjTPaU3nVp+Sc0JVtJz3cJS+5QCaAyg?= =?iso-8859-1?Q?p3PZGw6oVzEbyzZ727nGsthPcrw3ZO3wr296ne9zyq27JjolaUMgvpxVDX?= =?iso-8859-1?Q?IphEuzA+KMiJF7NDh4ktbS82nbTQ/FpnQM2lcFR6bVFoY1JIsxQQvOdbJ/?= =?iso-8859-1?Q?EYGkY30xYo9aDJFGDtjrAMLs/T2PFbO51ibqBIvWF+BG6yksgUmru1yMlc?= =?iso-8859-1?Q?q8RGzSQZjYO3X5glbggCvZQjht+NSnL9bZ9JTlbI/eaIwRGmkKum6ANzQ7?= =?iso-8859-1?Q?W/nO8xzEt8mPDcdT19cDqvwXb/VUUDt149RKkmp0qofkAXBwDO0BLzBVGk?= =?iso-8859-1?Q?cKbSfqJUxNs29yFXKQNcchzuMlBFrsWLMtMpgRvwV26ltApYIQ1wOfBbgK?= =?iso-8859-1?Q?hkZQ16ibi1KGE1wojCIDZUmDFnD5/ilmQgdaqieYXcBRW1FQxAWV4/jB5k?= =?iso-8859-1?Q?fUEJcxv814S2l5ee0C0i4hiYkfbOL05XhZwTSemDsL2xKZswCbdwwCaO+S?= =?iso-8859-1?Q?bHukPV8EMtYOJ4Xgy1jon7oJIs6TdoHdIfRVyI/AIQ5eLkS3T/HQg2sbCh?= =?iso-8859-1?Q?HMxwBdpfbNpPmwWeP+ruV8Z47VMymVLeAyUryXQuVVGiqjjOQEyOWfm8UV?= =?iso-8859-1?Q?fbmwAprZpp3SnI/JtuiSjF2Ht6+FewCb6ku5LhxyiA4u0kAeT/7I1kK/zC?= =?iso-8859-1?Q?6KLTr8spsGS8riSGtNEwV5bQfffsjNteVewI7PyCwVXLZw8D3KsflMQSeC?= =?iso-8859-1?Q?aKpJ14+sthcRbp97AwdgDKwhAHl4c6hhMeft54wr58SXbVAsgnZKwDKFpa?= =?iso-8859-1?Q?G+OcXnxv82b6bZsOpdfbTyGjVB2ljN8RPF9ss7s2eLoA2Ym9CuGnFlAjts?= =?iso-8859-1?Q?p5r0gG1tiZQpsiqk2qO5L8VzyrJ5U1AY0xfBO3kOVGtt/3RTXOWjIzYSF6?= =?iso-8859-1?Q?hEmNWro/sf8BVs+lAI0o6HrhjUxTF2mB4ovZDToBO9sTXS3M8hsGMqUjl7?= =?iso-8859-1?Q?T1v+qjLVwiCM6yeCvLmuIgTq3QQ42z3tA/90W61L1bBJAMPvn6j07FtPUI?= =?iso-8859-1?Q?G3Dj4c8Q2L31W/YIuxRqjpK54r69jMAbazhD/cvLJiIFxlrWXPb/Z4RQIR?= =?iso-8859-1?Q?6Pxr2oZyjMIzfhmlgFztG9dgECLZqGBs74VNPJ+YAmXxr9To5uLKt5Rn+I?= =?iso-8859-1?Q?0+mDTBU1tuar5fAFUovX2VEXgSdlgjO34jL1d3R2GoM84ax+gz3zz6V/8Q?= =?iso-8859-1?Q?6ZKLxhnPgvgAz8GvC+ZEqV/fl9ZD3JGXKfTkt9EZQkVNTBcRhnxjtt1jVD?= =?iso-8859-1?Q?D6yDndBRjHWWOsDiZm01sqivUxqUvfV9Cqu6UQUMRv8+J/nEPnorpgiAqq?= =?iso-8859-1?Q?B8Ptk9d2j3NPxuiXwy9FAvBW9GYR5zXqJTuhskuytYpiVf3au7I9Ws1bDx?= =?iso-8859-1?Q?42Ug0IOrWm/++xy9rZ3gjATtGZAOlfCj7GStB36BySI6DbYsAIC5OqfCmn?= =?iso-8859-1?Q?MvFdAwcPq4N2exnNw1aAoK/dslYMJWA=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: QP83+JjJy7s1WDIuTjig3ZWe08fvlhS9SwaR2jccQkXRzAJZoW4I9ovb/RvvxOOBGjXo3672cJ4OOU9SIx2hkY5DSwtQU5DhalUibqbm2idDXe+0WnVd/NFsP4mBj/lClxygy44zk5ZZmfgEjkWc8Kmdw8FjxVmoZNfkJSKf8O439OAl29M7A53HdiEFhLfAAXLBQRdqELX5EJ3gLasVBi971SYR8dkEBScjlECLUM3prywX/GZtZUj+w6lPCLx6QzDxroFyPjGwn0Ht5HV+S37TdmzrKGkUYurebqQ/ePZo9cpnCXq8R7L9tZVLfUp8Wq+TxNWTiY/IIYbMDyUGCg== 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: dbe985c4-3b62-4a9d-3185-08df0dc12e5a X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Sep 2026 15:52:26.7102 (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: l6ja07iWkClo9cVHIlOEOXObtzgput/5WZq55GX54hHtWpdtdMl21vMNoDOESC4vIfxbLB/Q0RLQKwmQr3TJ+703Nd4f2IdM0BaPfyfH5UA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR02MB8064 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE3MSBTYWx0ZWRfX7hKSSmfMVx3g hcbXU6ukahhPcVnfE4d2zkMG3dJAHaanmVlvflrWli9uqLy3Or/uaKURoCdyfKnzB4TYv0MGviu 0ijnfxR8uFWkExxt8H5VJnEeKoFe54y+XE6gyOC7shzCgF3TFvQchYrAT/Ce+qhaJbNUq9c46+7 u7bUYlHYVtvtUP9P7/01NyaggGbJOTzQzT1usiE7pSYzObkPSfq6n/m41IuJv0yjaQGWHAh480f PA3RGj9W0oKWTY3lMRub+hrZ1akmnqOedC+1i3/VgzfN5HiytUHh3xRmouKUFX1PWbu31QYuwGE bd/NzqSdbcZavsVvXDa9CzWDhmByEfHe19+4UgHsBC3pw1qQRKaCaU1/5d76atbgf/XOBG9Okl6 R1Iqsn5qD5pgP290uEitqzDhU657e7kCR98UZHAqUQg7Xr8tp3h0o6VbaQ4G9uKG7Ze11oLxsSQ wh/Dypy3xfuO5DfFhVg== X-Authority-Analysis: v=2.4 cv=I4hVgtgg c=1 sm=1 tr=0 ts=6aa02f3d cx=c_pps a=7ywGlyDdJUFJDTdbuALIzQ==: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=dEe9Ve2bX-KnNSUMM2s9:22 a=64Cc0HZtAAAA:8 a=BlouRpKd5MmS78s8ARwA:9 a=wPNLvfGTeEIA:10 X-Proofpoint-ORIG-GUID: uxDqjkX8HWlI5qAPkaYo5X3kvp35v8mf X-Proofpoint-GUID: uxDqjkX8HWlI5qAPkaYo5X3kvp35v8mf X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE3MSBTYWx0ZWRfXzlttyjGeVHAG urDBvv3OApo/hI9+u6Rq/lCflNOY6lwB2vUFAymfNGLQWJqBfJvhrGDbZJuddjVd2riw1Z4HlYl KeXGvwxHuIuCBfRDIdJFD2APG6EG2cg= 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-08_03,2026-09-08_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: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788882778487158500 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/pci-bridge/gen_pcie_root_port.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 Mon Sep 21 07:24:50 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=1788882813; cv=pass; d=zohomail.com; s=zohoarc; b=gDy8KZ+JMdoUP7f6S8cQ72JI4UEdZvJfHRKmvd8PJCenas9NMOD/hvAx9kRpXpw9v6vWywcBjqAhUzY6ImKh+ihHwEVfbm27xSzZxowcv0r77hjqFDc4BbgkQPOL37nskgZmf4Y3AXFGKH8k2ShLVaABPa77agulaHkpZbLDsU8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788882813; 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:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=z+PvEz5EPQiDb+/CHwvatj37cufqyPg7mig/bb5l22Y=; b=Q8Hpuup03Ty+VuLN7jSXaEFVT3KyKogUdkE+FeJ4mMKHQb8jwJ8ntwbiCJIAko1r3fO3n+4v/uY6o23Z8YrUJTeTmuY149Hvtew9UgvbbLZz1yYX7HB3YAxD3ao0onhuDMPRsmj4Y0l6NDcmHiI4oFnlVDF0rrCQ/AjV+9td51Q= 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 1788882813157726.7938762804599; Tue, 8 Sep 2026 08:53:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x3y7i-0000jW-8j; Tue, 08 Sep 2026 11:52:38 -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 1x3y7g-0000iS-E7 for qemu-devel@nongnu.org; Tue, 08 Sep 2026 11:52:36 -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 1x3y7c-0008F1-Pp for qemu-devel@nongnu.org; Tue, 08 Sep 2026 11:52:35 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688Egaqk3328601; Tue, 8 Sep 2026 08:52:30 -0700 Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11020118.outbound.protection.outlook.com [52.101.46.118]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 4gjaq3hm7n-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 08 Sep 2026 08:52:29 -0700 (PDT) Received: from SA1PR02MB8368.namprd02.prod.outlook.com (2603:10b6:806:1f3::18) by IA5PR02MB11930.namprd02.prod.outlook.com (2603:10b6:208:605::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Tue, 8 Sep 2026 15:52:27 +0000 Received: from SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2]) by SA1PR02MB8368.namprd02.prod.outlook.com ([fe80::6ac6:4d2c:c37f:5dd2%3]) with mapi id 15.21.0406.005; Tue, 8 Sep 2026 15:52:27 +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=z+PvEz5EPQiDb+/CHwvatj37cufqyPg7mig/bb5l2 2Y=; b=w80KHVjI2MCpO9TXQ4OmIhLxS13bhX9Hou+SSX6W6wnrihwg5WHkkaqiQ QfH4e8+849C2vWSSwNExuALhEyTkLhdG7m2enImEFnwVUuYeG8I08WBXYf4eXFXW 7UFG3zzwPzgW6L3rvkg9Lomg6e4VHhqmV2LaNqA9S2lX89BMB9S599M5C3OIoNSU OEV72aVeGc+zS3LHj8/cVbCjCrx17jQNBQ5VFytSpSTOwPeUF2MLgH24CD3uFcAt wAfbOTDZ+NDW2p9ODKnzK33FjKj6gHayZSVq/ei3Lz5vcxAU2Ui5/7sTS6lrDWGU +s+TDtmgUU6Lz5cgh5I3B3FPQLrCw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=piAlUIGmNxUvcJRzALdrtkwLsfRaqgH+ZEeW1WC7Gmshzo0R8MkP1hzV+5QnkmMyy8PDAdpScNY0BEI3TESC99fxp13P68WY9M+Bq/rSmLbdWZBd8ok9BjYi31od7ru0AAs5iBJS58yQF3PDFJ5KvL+z/kbWEaF+2sk+5FZPFfi510NwHFEGEDq80XL+NAGYiKqsSR5vxqrTRLuQshz52Q8NumNV/YMTExB8h+2q8cEJlJkU6sgcTfGe7Zjn3iIauh6KQ1kWDr4/Ug2tv0kwWQMBrnaeWRS3f9FF+apOCiyRlmt7DdFhHTcONpANNZyfaHPzsPEBRdaT9YCDFB2iuQ== 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=z+PvEz5EPQiDb+/CHwvatj37cufqyPg7mig/bb5l22Y=; b=RV8DH5q29O3ZhVjSp2WrY+DnZdzXgOLR1Am5yvWXA9wmXztnQYFKaTKGuSOuKO+XKpskMDoP62zUfPg83q5HtGVdOSZ7UFj7ZhzR0bJahKuo28f2Bk6cgUp0v6zw8eyBa13agDZC9s1+PnYai5U3yuJMM+sMRV4/hFXGiziegvvQSAsDbdRAriNQ0yMo+Y4CVqIFcfWqpONVhSXfNrSHzu4RDZ0bxkvQYcUjucMQOeZ2s8R6mIjHAhkm7XwbUqSpjNE49X9oyfyS4Y11w5fSegTr2XyOfy/S5dR0+j5OtCCiBCW5/Q6DANapqJkktYbJkxCLR+pfio0B4sNcw5sEqg== 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=z+PvEz5EPQiDb+/CHwvatj37cufqyPg7mig/bb5l22Y=; b=RBq5ejbDMOAmbCdtFkpZbJNLglwxtpnVmXy7ymDHmyK40k6szWVuqR5NGsK4j8IUXXQpZuW2QpQh6fUW3i7nuGmx6SNeUuvuE9t+G2jh2gLvA7XJwlP1cJmskc9sDeHH6kJB0hmBQYvBrG9G7Yob+5OV0c/s7wiOtzkg8viK0aPPQX+KiI5nnMmi9ejof9FVdbnozRA1/SVMHDISDPAcopeTqK394nHinyumHz40FtqnwYoNEaAp6z8zFia9cTTSkZOqdvNHg+hF4OKRbdQg1xH57VxeVk7Iz7fi8vOthin30YOao9vh101O6K3LOoVxvtN1JLEsRAHpBvF7D/57Zw== From: David Vrabel To: David Vrabel , "qemu-devel@nongnu.org" CC: Pierrick Bouvier , "Michael S. Tsirkin" , Zhao Liu , Paolo Bonzini Subject: [PATCH v2 4/4] hw/pci: Ensure PCIe link speed/width is consistent between both ends Thread-Topic: [PATCH v2 4/4] hw/pci: Ensure PCIe link speed/width is consistent between both ends Thread-Index: AQHdP6oMbYXDBfDPrUOXG+73fbrQEA== Date: Tue, 8 Sep 2026 15:52:27 +0000 Message-ID: <20260908155223.164787-5-david.vrabel@nutanix.com> References: <20260908155223.164787-1-david.vrabel@nutanix.com> In-Reply-To: <20260908155223.164787-1-david.vrabel@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR02MB8368:EE_|IA5PR02MB11930:EE_ x-ms-office365-filtering-correlation-id: 5da101d5-9e60-4e5e-2887-08df0dc12ed7 x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|23010399003|1800799024|6133799003|18002099003|22082099003|38070700021|56012099006|5023799004|10067099003; x-microsoft-antispam-message-info: QmniqyebOia/b8VL0+Q3RxcHe7JRfJTdgtFnZhUjmyVC/T7G4bQqqRUxHIzNSQxwcBud0zVAAWvfOzjInmzjvzuF9e9Fvu4sZNyaqfs+3kLcSGpCinNEmN7rLOOI2xcNsxZhAqWSca8QaRBTcyyupnSlFg4pmLrJ3omLSpEGoelmoHGOkqfHxwAkMONOd3lyQegKsHIBvXKTRdL0BU+AXd9ifY6a01UBpYYi/AJRKsuE+3SxXJ3ScDiYXfgYvFmeHLg6GMd4y1iOriCSrr5HrYEOMJw7n+pCCxKqvhey37Ty45xhmzKjdhxELVYFZpZPnDZIIBeshrQhZyHT1F0dEc5Eh9G3TgOvKyeyLak2iJdMOUKsWK9+AwCtb2vSiRyLCWB99GlcXlMYX87gZHfuTSfOrXHIyYo0xYjuEevF02R7alIdZKZY/s5Zv9IwpbPPonDdDuLAV4pB6PvZlt2GhyZUXLtZYN4VAVHWKDStEmxM4q15vsGV+NbS5GoI3SJScGzDHxL0MZcKEScy2NzUasJBet1xgkHg3QfTG3lZBQlBO0diDACsmZQAwLqpj2Bjoy4385loPDz4lCrD2G3llaJVZ1U6jP4v0Jtoz+2XBEx0/sQeNxHTaHW4WseJaloMPFOORI5GsPAY5Nfap95mgoS3eIy6RetGcNzeLYtPfahloWWLeOZhSoZFEkemeN6ziYfPOndJnio1CGr7nmeOx77vFIUuHNlEyMl6WEzGFT0= 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)(366016)(376014)(23010399003)(1800799024)(6133799003)(18002099003)(22082099003)(38070700021)(56012099006)(5023799004)(10067099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?cV0YRwleeutkQuWQmsQnxoe+ZrSngMUt3KtNKrxHQHVk3Dkvosmq9p9NNJ?= =?iso-8859-1?Q?BPHjIrnGgzN61PWyLHb6wV67V+ibyw2pHRsAfjVSUEaeZ5bZffpshLLgtQ?= =?iso-8859-1?Q?4nIhl51QxdaI/45WEjlYjgSn37iyhrWFjRlbn9vxR2owPFVWOB1l6tUYxH?= =?iso-8859-1?Q?XmG4l0BGlsqB5nW3G7GeHUirlnGeeVeKqImtzl/jBAxfHavDtxaVAjlSnL?= =?iso-8859-1?Q?XT+wtMfpOCIFtukkqpjS1igLsYgXPD5aM4NU3o1paXzucSM4eg0JgINwrE?= =?iso-8859-1?Q?e+IQZ9ufTQX9U4hRBqmwz1BWjo6fENWXP9rpsVy5WmmrhdxxAfIN0yX2P7?= =?iso-8859-1?Q?qMK6cr2S+i2qHoFeqa6+v4hhmisTRpy7sXaf621uQiuJbcKvPeNiwreAy7?= =?iso-8859-1?Q?MJJfIhqWawvvjIvJst4EhRaPUDT/M/S+9wRZ0rDMFNGPCLh7hX2DNY7UaE?= =?iso-8859-1?Q?n/F/ns63lPWzPEkNiOLufJ8uLgDV7phtMBv4+1vlSgpqICi4ft7ViTv/nR?= =?iso-8859-1?Q?DnQU4xQotTB2TTM87gpygFu7PSjdPfw68mv75VHqyQW41cW9bPmL6HAiFn?= =?iso-8859-1?Q?5t+GQtDryr67Z6yUBkzNv6jMzyC1SjpKtKW6Z7WwAjNAx96I9kfIenHAhT?= =?iso-8859-1?Q?5qXs6JicWx+73cH5PdebTzBD9llVUSvVLNE2GFRNMp88tV/uafz8YncFmg?= =?iso-8859-1?Q?5LCCmv4Q99exoBn276TwUy2ymz3Wy5gCdIvHEIxNQ1MVzkaLDKFbGav39Y?= =?iso-8859-1?Q?hFpDh2/8hZQHVqdptUh71T/r2dDrDT+PgHAMlFJoOY9RGkoeqvy0En6zv/?= =?iso-8859-1?Q?izK1qVBEyeSZCkFjEtSfKlQDBmI6GEHVfZ4JAR+idl5pltvs8jNigUlGvc?= =?iso-8859-1?Q?n0hx2IrjcDN/lXGuCxVE3Nx0lquG/xFu40TAKNQNxCSdo8n5G/hDS4dprB?= =?iso-8859-1?Q?KsJXN/msV/I/b8haQLr5qktjtnxPwIcww7z+mIYZZ8ej8qq5AUTcouihqG?= =?iso-8859-1?Q?+FlnSdGAVGIKqtRDrZJteIyNGzmEN09vbosPx7S3Cu10mmp5GJQIrcZBk4?= =?iso-8859-1?Q?v4VV8ySnGWZoLZ2CMw3a7cbiCpx5I4RBl/bazznj9E0hvhGvQ9UI1AhKKM?= =?iso-8859-1?Q?De5D0Pd8gk69k9WnNS42Mb1Zb9dy2ze3siWOLEQ+dhYdYMFa8rviCq16AI?= =?iso-8859-1?Q?RKLH/dEq76RSqjHlMoX40gW/jE9FrWlY8Ak9L0tgFwsAbfpXlpmKexvs8g?= =?iso-8859-1?Q?OrMzRfb/FazBg9WggzoFPVbxbI8dgmUxr+6KhTunviQf0mhZVThXEURpNk?= =?iso-8859-1?Q?zLLhFCBz8m7O0FhUMc1Lr6ENtXCKO20SeZlJ/bG7+PLM1VNor4B5jtqJea?= =?iso-8859-1?Q?Kfn/kNcrjoiYor/2nLeC46mXC2tuE3R1E7Gtz+O9Cpc9XW6LE+6YDhh1/d?= =?iso-8859-1?Q?X85G0H/E5dzOr/X8M8WWNH8yDigD8jk5Zmhh0IRjjc3XEmSq+XxtW9lqtJ?= =?iso-8859-1?Q?U8a60VQzLHQjgwf5MKNCCkjfOm1bY0p3BK3iL9pjLPBxBohmUWSKi4UT9D?= =?iso-8859-1?Q?DtShr6RSLVRO2roAzAohzCtteEbCke09Pa9YrEZTGtb8Qz/IJQRgvFNd+O?= =?iso-8859-1?Q?oR+MAWFVD23Ok9IyzwDexASJqjy96nYY3C4On2+0h+jgAMufq6XTw1wTZZ?= =?iso-8859-1?Q?tt3dDkZ1oVNYPx6BF7YPjzRRZjflb+2Q+5rPesODMmk6BK8/eEMCT8CvFW?= =?iso-8859-1?Q?HGTHytp/VZIkFvohH8NMra4wh4VB5erDmzZ5hW8PaHtm9ON4oUqh5Lk9g0?= =?iso-8859-1?Q?PGQ0BYLnUw3qbNCUMf6qRaBVr9g7u3E=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: TeaerTXGRaf0JjGKLrtBtx+LZLmz/BSiiUg0zlbo4MsWQgeD0zL+uylB1X00XiglIZt2bVeQg32m26SRql5geQMYM+Nmjb9OEDsxptmDoWIlMgyJSY2Sp9ojgC2tVgU/3iUe82QkXYeCyIvDMgeIiJqYcZ51XJrOur66I1lc8AGhocGnQJTnn73Y5PlvJl58ZV9IpTh4X2ap4NXNXukdYpZg6WZ1YaX5s/WHD8IKXCZ61uCXWiUD5BUmes/JaM8TJuvUqSBapz2VnrjYt1mv40d5sJeC+V1H3MiXl2HAbS6VR5mHpMQ5ys8mH7UX7iUD4d/TWUT1oH7gd9h5VOMElA== 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: 5da101d5-9e60-4e5e-2887-08df0dc12ed7 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Sep 2026 15:52:27.4983 (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: Cn8YhZoWFca6htpNvNC38TE1MkrLbJiPXZNrueXgl830GjF9Dh1B8u4VZv8F7mmEFcghdHyYROKS4QW2proimQBXMbb8FOC5bi8k77nFmCE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA5PR02MB11930 X-Proofpoint-GUID: nXNxs1qJDZYbfRdQJ-Pj4AeaBegi0utP X-Authority-Analysis: v=2.4 cv=HdckiCE8 c=1 sm=1 tr=0 ts=6aa02f3d cx=c_pps a=Pshx6wbRF4nJNM9KARsp/Q==: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=0LlEyIVc8U2lsR7dKhuH:22 a=64Cc0HZtAAAA:8 a=dcECTNVlaVxwar02G84A:9 a=wPNLvfGTeEIA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE3MCBTYWx0ZWRfXyB5wNqd04AYc YeP3GTyy8FWICSDlZ8FeTXz8eynhmq3plVQAToW/hv41D808PVH3I6en4tdfBAe4bZMe0ds6YSW IjjXc98CEnFD7L9H6x/7pdSRm1yHBjug+qvp7bTAMxzph3vl16TcnblcnZYvykZFdF1WPFDlfT/ Dt45N7bvvb9qinzvxyNwJ6KxxAXVoIUKZnmSf56puAzbZ/BV5SZYLNHnHSNo0c8uQWUkxqLbneg v4Bnw1NIUcjnd5pS6lHlDIUsEoQyfy9w76pfs6gNuVeWtklp+C/iyC+3SAt68x6sMiMLaGWjWqw 1vrjyjhCmGwit+Z9TRTjRqRr/gcDJcgTAzUlNQx54/yeDr7Zoos3x+7hW2E61X1S7Ry59HMI4Ex +/ljzliZ+tzL/8GAqFoIXb0HCJBjhOfB9wspdSv9uoH20mt4zuNlRuqpgS9NLj/ztWucAq0r4JQ JTW3uyMhw5HeRKovUWw== X-Proofpoint-ORIG-GUID: nXNxs1qJDZYbfRdQJ-Pj4AeaBegi0utP X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE3MCBTYWx0ZWRfX7H4lMMDLIxO0 1Bgtmn+CE3aU5WpUXQ//QpOkU7ke+P1s7VFDeHBswWSzAy1bzOLDcmFflGG+LS99ClnTPwrEFZu fYw0cmIBqvT97FGtGmYBY6gGPiwcyJ0= 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-08_03,2026-09-08_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: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788882814513158500 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 4622c75e48..66d778413d 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