From patchwork Fri Feb 21 08:07:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13984966 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D6220C021AA for ; Fri, 21 Feb 2025 08:09:49 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4Z-0004ZT-EQ; Fri, 21 Feb 2025 03:07:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4U-0004Ww-3o for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:42 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4S-0005j1-74 for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125260; x=1771661260; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=4q+FNgT9HVsk5swidj6jJeI6FoYQL+sITZhOOFRxzsg=; b=mx1ZRS586zUMbJqHZZ/iP2z/CpcVhKZRF1Nw9z5/KbqP+JD0kgl0GX5s FD4MQyPasCH/9rbl5STJ83SLpCX48ejrH2K14sQiNHHlTYSoBeO3ek9aI XMSzx4j2fxFrBVBqoN7GZ2W+JGD/XCaAsRNh8w4XYF16/SYER9toWC5qC Qw2wwPoHF5a2vfJVSGOGFRx80rdWtU1H4n9ai/Qjb1QTxZag6g/UMl4oM 02grqmXn9lcPEb93th1TWFOjx55QLywtXlp/17Pf+YQaJrSy9tZ1cCkac 3GcDxmUE86QUv3OJV+tHkv5T+ys5YSflcsCnF1vjjMyFvZiDnzAA/j0JQ Q==; X-CSE-ConnectionGUID: YLsvwXuZRmq83KijIZl2Ug== X-CSE-MsgGUID: Hjw5MI5bT4GRZGLQ9inNjw== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394134" X-MGA-submission: MDEbh+Jbs1DblYRiT1T26lelfA5oOsJSLTpXCLTgpSkxQL7FV/AKy3dlfmzMR1LdtHQNh2/hWkzUeoqsslFgyAv+hGlpD6pCm4xj+bNxU4+c0ZHvVwxnYsdpAAOPEOPcrp3D3wbNsvNx0o7j6W8R+WQaj9hqSOqtTwx4PRRImZ0z0A== Received: from mail-db8eur05lp2111.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.111]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:39 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XxRH4jIoK2v3R/Iz5KNywhx3P1NF42TF+X82CphmJ+lJpTlw+3ewen8DHxVulGwQUMVCoy2LQl40rqgR8a4WoP350n34wpqzDglZ6pao3RC7jhvsnfIbVA4f18WSQ/0igK4qgLjoSJB3A8IrCJYJ+J8/sSOdlq7nA6NQEC0zkDvG15cbrqGiAtZ2UUGXUMBNVFlTMr/2zozm3MDAR0+qsT4/8osc/SC7J3qqao6i09ThF/lRrsBncDpfqkD3jJ9ROgLRgdeLArOOzRGYHFHBYV6nsWDvb4H7mr6F/L0DgVJ9PjNaGqnnZWnWhohgIm2dn7/pahbQOs5icCTy5v0AZA== 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=MEmwoWOY7veZvqndImfbubbycqeBF+qn+7KqkGGtMWw=; b=bLh10glC8Z4+/FwAPaa5ZlDUZhMFUpR4Ofh06jR9Y++IZuJPjY7bs6N3a9962xM1elz7Wl6dA0ScPzRikDTtjZbdiUVpl+4AiimUUFmwtJbOlODS8/p0SjPoOrup3kODJOC0KLt9Qqvs1fKiW6n1Bw02fz7pJEaGeHtaFkHLZvAD0gEP9LJWjlN7NOL8jXUy8gvad68IuLOshOjK09f02OSmG9n1qPsK/La+2K7EL7rzLbnoC8fEgJt+XM820V0zYLtc49i1NBTIwuhTwIaxoFthn7ui7R/ncp9cEY82nDOTRcyFVXwygYaCs3q3JQbh73L7yn6Q0zfHApxGlIXGog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MEmwoWOY7veZvqndImfbubbycqeBF+qn+7KqkGGtMWw=; b=YMFSVcXAGAv5CjEtLO/flfWEOGfWxJkojL4Epk+jW2QL8t+Jzd8+W/mT1Rxjm9YZj3pSwcO2FaLIDKRfkE5V/qppE0Hw1yvEyNhFfTwPiDNYs2Nd4jMFm43ZIjOxWB/2V/bnGYH/CvAn4osAY9pz54zEkec2vs72UxpK9fGDMGWBFPjV0rkFz+C8AyWgadXsgpPmsb5LXdUn0c6Ctqxa7CHmbcf+gTxQWfB4j/BOD14CxtmZkxeSkrZAlxxq1rNcKRAyOP+ZFIpUTzFh1tYSZuJfEyCXdlFn7RsuwUkXg0u6tbJsFS4nrg6Tce47B+aj5YobjRkIetT4cUN8AgWMUA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07:37 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Fri, 21 Feb 2025 08:07:36 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v3 08/19] pci: Cache the bus mastering status in the device Thread-Topic: [PATCH v3 08/19] pci: Cache the bus mastering status in the device Thread-Index: AQHbhDeryfK2GuqB9kmdnlUzetIV/A== Date: Fri, 21 Feb 2025 08:07:36 +0000 Message-ID: <20250221080331.186285-9-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: d4ce08e2-ebb6-4e8a-90da-08dd524ecd7f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?bCdK67h27PZpBMcLGTP82WKhFj?= =?iso-8859-1?q?vrgku4fWh61P5k3OyZZOFMjqcjpZISaR75wByER6Zgg12i3AtQJUYdxGNAi/?= =?iso-8859-1?q?Rba2a38dpnBdtcy7/RECdLO4HlFrf1Iw1JIJLUhdMbITvz6++ur8blc5vWXf?= =?iso-8859-1?q?J/G9p8KfQuPBe99x7o5ZykV4J0P+1KCSo+lLotddmUUuhaaDqXQLCrzKPUEM?= =?iso-8859-1?q?MdCd1GFnnoU8Ki3V8YJF+/DE6ULb4iwDKyPPApIf4ysIlbD1GSfQuQsyHFZ+?= =?iso-8859-1?q?a9nFMFNHanJI7KIyBLRHaDDFB9Jy+T4ypHxI7L+kvIi/cWPcPXfHAyM0CTyj?= =?iso-8859-1?q?8Nw3FLpYDoJ9do7nUFlY4M7fWUWLkLFcsLlAtZc6ljrFaR20PljhaHFcKGmH?= =?iso-8859-1?q?uNx9coXZwNDN5u9Em8zCALYK5cgpah1bKvimCJEF7ffwv4eqMCzoZPTwfAJc?= =?iso-8859-1?q?vNRQ+xWaJdfBQBEtxyyTiNg4W3tWZK7AEGOmbiSTrryoWz98FtdHriNnQkxf?= =?iso-8859-1?q?HzUsKwVKZA5v/f/qPK20DJPn9SZq0yxrQjmhEdY3xihnyaRym4Mww9xoy8ay?= =?iso-8859-1?q?Y8svbHwLQ4wuFojv4Psr9gzbwbdrxzwjLbJmMGK97MxwyaG5hxO5SnKvLYFg?= =?iso-8859-1?q?j/ypcmEMh00RY3N86dfOuKHMyKJTRNLcOZz205jEXwmW0IbYDx01z7N/14Pz?= =?iso-8859-1?q?i8AkDSTqEb/Kba2FpceIf4naKq4mNROQ591AqmzIzAFK7aKMxS0hT/Jb11gl?= =?iso-8859-1?q?JuawefEEBfIanWAQRl9+3xVdEJFIV6CDW7f4VJZT0WVd4RXuzpWi0C5zle3/?= =?iso-8859-1?q?mS/dObr3eQ/dfqS+Z3KCxsH4z2rZeH0Io8EC8W+EwmLnjYu6ptPH23/i3bsj?= =?iso-8859-1?q?T8z7t7qp5LBNh/vnSozjZzgGTVKmcSD9+VSFEWktTXYHrlEqYoVR9ZKagcqZ?= =?iso-8859-1?q?wJQ12TkHLdenBw1lRLGTzMydBYqbtMvM/xKgcllgya7+Mja9n0sAIbA+uGCk?= =?iso-8859-1?q?/LyiY/ehkfQFFDKNueHJ96ZTvrmBBgYBZ9hpOuIpF8eV1p3CSHMZTSvRUiv7?= =?iso-8859-1?q?1BS1u3jzuhLOPDQftLec85rKrH8tujmVabSHmwsXQgpSOs1Sq0y6iS31eRJp?= =?iso-8859-1?q?xxcJFzcYQHuzXOf6gcn8y7jxZSXy44rNO1BCOFyMR/MA2Hl1vgdkOK9jc24U?= =?iso-8859-1?q?SYdGPAAfHJG0tXOHWhl+pLqNhSdYVP2Uh8o+46LZJzLui7MXk83Ti2GlBqWc?= =?iso-8859-1?q?H2GTJZliIgcfktjBd68w5C3KZUKmqYo6FN9IhscbMLm7g7TeJeWOUdUjmN+/?= =?iso-8859-1?q?oF/q5c+mlYRPHzf9TTZgeZaeov+RWisUpjbxiOq22LQttXsv+IyK5r2pRGxg?= =?iso-8859-1?q?+0Rg+FWr9Vwaw2PesZwFPEi9zVcOuYDzwESjNXzPzLErDW2dIQHygdhskTqC?= =?iso-8859-1?q?dGs705XiMQRqpm9672oeJnsC716pJARi1f8GlJgsPeHxsTFoCxZUmlaNszjo?= =?iso-8859-1?q?JbII8n?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?hPnis01xy6wuuWtsRqU2pR/?= =?iso-8859-1?q?6XH2oK3OmuooQc3Dq1qYmbuyoSrOz+V9vmgLoHDjrwrW6Z83Q/mPgDxzMRbm?= =?iso-8859-1?q?2ZPKzIr/fExsSzXGZ7oNMM2E1nERL1dnZJMFxIHGnyS0DW71Nohz44OBTRsB?= =?iso-8859-1?q?FLmpkFYAeanbqtqrS+iY53EymoEBnZLK0ZVUeDQRUYnH+t3TANo22yLzS8QP?= =?iso-8859-1?q?tqFEMEVf0TPXzcOYG7U2NNySP5ycYsv7+5ivDHTtz5f2W3jtG6S/AQW9NOdZ?= =?iso-8859-1?q?69i1jEZ8Dccr+ZCOXC1P/qVxDeOsv1idV2iuV5EIMs5goFK6YYKbZXAMYxxt?= =?iso-8859-1?q?irpGrwXLk6MSai3e6CL4cOSyGaQzE+f1bCjIJpTKVa7qS2RiMeD4Hhu7jSaU?= =?iso-8859-1?q?3j6HMZTYg5g8MRDpOIEdQ7KC8p+bxxByeMkfneB3o3PgtHPfwxR9XGiZAADt?= =?iso-8859-1?q?QLMk9G8/1RTroTlmDla50aOAQp0/uMdNvvKodKVrMIb9ZINdsBJLGQuf0JfO?= =?iso-8859-1?q?ah7Uc1zxfsJnZiZHCAo/PqRqj9sJqC64Gbtm+9WITUF73KcN5iiKnGE/PqxE?= =?iso-8859-1?q?pnXyu8LVmpVubETsl3hYRdaQPiDKp9KAeNUslaE1h5bj7HtZeQRJwADUUoGB?= =?iso-8859-1?q?l8ASvVyNIA0t+Ul3cP/7lJKb2zfyCGb9AEhISb/BrNxHfTgVjalEou7tRwgz?= =?iso-8859-1?q?8oM98m+zRCiL1OYSPdCe57ClmO6WtCTkyrlfbqc40HrMQOSloUYefw12n4VN?= =?iso-8859-1?q?RfDGu0YL1eaL0LIHzZCCv2z3pIftyEn9mvlATrI/FOqscoLHPwMx2bCoq278?= =?iso-8859-1?q?mLI0Xe+9MCfnl65ipzc6RWMcMnWK92wBN8e4NGouNGxfWa2t65z/E7fyfmT6?= =?iso-8859-1?q?XKxNn4iXo8tjATHAtexPeHFxY0Z1NTCZ/CSUOJvMsGRFmWxORsmg35ln4SyD?= =?iso-8859-1?q?W2DvlJQ2amR8+4pwN5G7NEB/xG9QSgMJnaOZLHLMfi1VSxf3g2OruuKjcCoU?= =?iso-8859-1?q?prBsi5SFsCOcmigwydwgJtHQ9MmnRfizHwtJCtFpiI6Mr+pZdjvlesJMx6W0?= =?iso-8859-1?q?z/6KI+yJyXbKOv9nZ32Tz7ODl+uZYbgN7wYAdKThax37FUB+fucyHHj/itpo?= =?iso-8859-1?q?eRvnUt3x6d4erENEBQ9s/bcSbfWxbVa9/vsHGJ/yGB1uw+jwgG9Ch61hwxI5?= =?iso-8859-1?q?Af/wzIAY1whBCBzFigkm9tVOeB6BjuVpDveVPt00cXSEYCigRMA5WL/nqzr7?= =?iso-8859-1?q?AVIMiS8+H0byfNZqxFEP1E53p9AxSlSExpPUY7X1Q5JVyLxyoLQv5a0+YOKM?= =?iso-8859-1?q?MDMz2EHiQiSDeVDLp7Cy/8hR0RZGdiyvzALkp039x3TZvXCuzWnjZBcLNBvU?= =?iso-8859-1?q?BHJnZhCq0HOFecQmtHRP516d4byLxlVw2SH4C0j9jdW6XcgVlJdyGcj6oLc2?= =?iso-8859-1?q?t6eMXpv3RIngU6gsP5Km84CdEJbQFNS6ksEdJ/fGyFWRMy2hjvIapaIsztOn?= =?iso-8859-1?q?MFx4BOcayBg0QYnJuOc1JcLt46kyKsyu+a16Eaq4Kt0sQQuhcwcLlKXFig5w?= =?iso-8859-1?q?xo550az2rJFix7QSIv4m3rj+rBhKUTbsWM2+wrAoQdEppyZNXPSw0/0Ur2pW?= =?iso-8859-1?q?1R6ghFbiV7bn/f7Ra88cL3+G6ZpLFFUege0IKkgsKVJVv5/84kpvQEQufVZ0?= =?iso-8859-1?q?=3D?= MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d4ce08e2-ebb6-4e8a-90da-08dd524ecd7f X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:36.4768 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7d1c7785-2d8a-437d-b842-1ed5d8fbe00a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lh5VYBDJ308vhF8eyADQZgGuOfYN82FNrmbHOZogN4PtwfHVRYtchQNP/PZ4YoRvtv9vSJjpayocRD1ZGZrUwvSeDY4MEVty8BQuFv0qdUmB7undgASO3F7rW8I/QnUz X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Clement Mathieu--Drif The cached is_master value is necessary to know if a device is allowed to issue ATS requests or not. This behavior is implemented in an upcoming patch. Signed-off-by: Clement Mathieu--Drif --- hw/pci/pci.c | 25 +++++++++++++++---------- include/hw/pci/pci_device.h | 1 + 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 2afa423925..164bb22e05 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -134,6 +134,12 @@ static GSequence *pci_acpi_index_list(void) return used_acpi_index_list; } +static void pci_set_master(PCIDevice *d, bool enable) +{ + memory_region_set_enabled(&d->bus_master_enable_region, enable); + d->is_master = enable; /* cache the status */ +} + static void pci_init_bus_master(PCIDevice *pci_dev) { AddressSpace *dma_as = pci_device_iommu_address_space(pci_dev); @@ -141,7 +147,7 @@ static void pci_init_bus_master(PCIDevice *pci_dev) memory_region_init_alias(&pci_dev->bus_master_enable_region, OBJECT(pci_dev), "bus master", dma_as->root, 0, memory_region_size(dma_as->root)); - memory_region_set_enabled(&pci_dev->bus_master_enable_region, false); + pci_set_master(pci_dev, false); memory_region_add_subregion(&pci_dev->bus_master_container_region, 0, &pci_dev->bus_master_enable_region); } @@ -727,9 +733,8 @@ static int get_pci_config_device(QEMUFile *f, void *pv, size_t size, pci_bridge_update_mappings(PCI_BRIDGE(s)); } - memory_region_set_enabled(&s->bus_master_enable_region, - pci_get_word(s->config + PCI_COMMAND) - & PCI_COMMAND_MASTER); + pci_set_master(s, pci_get_word(s->config + PCI_COMMAND) + & PCI_COMMAND_MASTER); g_free(config); return 0; @@ -1684,9 +1689,10 @@ void pci_default_write_config(PCIDevice *d, uint32_t addr, uint32_t val_in, int if (ranges_overlap(addr, l, PCI_COMMAND, 2)) { pci_update_irq_disabled(d, was_irq_disabled); - memory_region_set_enabled(&d->bus_master_enable_region, - (pci_get_word(d->config + PCI_COMMAND) - & PCI_COMMAND_MASTER) && d->enabled); + pci_set_master(d, + (pci_get_word(d->config + PCI_COMMAND) & + PCI_COMMAND_MASTER) && + d->enabled); } msi_write_config(d, addr, val_in, l); @@ -2974,9 +2980,8 @@ void pci_set_enabled(PCIDevice *d, bool state) d->enabled = state; pci_update_mappings(d); - memory_region_set_enabled(&d->bus_master_enable_region, - (pci_get_word(d->config + PCI_COMMAND) - & PCI_COMMAND_MASTER) && d->enabled); + pci_set_master(d, (pci_get_word(d->config + PCI_COMMAND) + & PCI_COMMAND_MASTER) && d->enabled); if (!d->enabled) { pci_device_reset(d); } diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h index add208edfa..40606baa5d 100644 --- a/include/hw/pci/pci_device.h +++ b/include/hw/pci/pci_device.h @@ -88,6 +88,7 @@ struct PCIDevice { char name[64]; PCIIORegion io_regions[PCI_NUM_REGIONS]; AddressSpace bus_master_as; + bool is_master; MemoryRegion bus_master_container_region; MemoryRegion bus_master_enable_region;