From patchwork Wed May 15 07:14:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13664767 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 417B8C25B75 for ; Wed, 15 May 2024 07:16:30 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qe-0004cB-4P; Wed, 15 May 2024 03:14:48 -0400 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 1s78qM-0004Yp-IT for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:31 -0400 Received: from smarthost3.eviden.com ([80.78.11.84]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s78qI-0000oi-Bb for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757266; x=1747293266; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=SJ1YCWl5qPAPbgtTpbIIOYagtuq+mMLnpiag2CWvi3Q=; b=pESl+BuWp7iJ826tKY5E9zFj5Xxe/W6U1+FVV5koEg/zrVLbh9OyOaKa nn/PSXi8hDaf9YBKTTfMmeglYZFhSinlMPgL1hR3n4BF6BptxjNFqUi3w y6En9IPyITmY2Qq3ULMp8vQp7xh1FEeByXOOqG6b/m9k+1dX+OiGEkWbf NQtYfkKlHbBYNL22ouAbOmUp//d1P2M8HkDghbjSSxZxY+hMzT+dQKCsM +MYuveIAYaLmLM5pVRzhw81iMayRNCun9nfhDTaOxmyJf5/9zRUEMwht4 UnBCYTgDr0Y4CbCAohAbYcSfssz4BIWZVzUgAX2d1+y0541A5gdtD4HXu g==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581800" X-MGA-submission: MDHx4whN9SMVnaGGfYV6BBWX1XOENwqbVQjwRr3GMD/I9NpWYPl2iRmaeW0wcyCHKaOCzxu7/5290ykULNAyUTbFLU43x8ieiuo05xPzkASpAJ6jr+pBhK4rFNq0Wf6jWOOiDkQB2XbWbJBm0q5WSxsfcDXYUsC1+VCR+PxE4Ic/Jg== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO outbound.mail.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ajf136jKUmPKMI9P1Ijy17shvdhEFLSpYgfBehiDfwR0WKa4QqCJr/tcdJqCgwkM0d+C+bxDNFverjo2O88AMQV7pmOyT8KYWFwQYpUXeWJquUQJFHkS4I+f1GrUtc4E6YJpjxd4mziN0ZFqVlkYMu08IvDVwToyIZ3PCosl1WjcSgePIkOka6JP+ZQyjEMZJpI3nQrwERKmmnswFjal+6nlgCVcplLcbyPi9dx891kr+EgOgkh1xLlaXV1TzwkJ6Q0DPsoHW0Ok/t1+tqIO2aM4CMIEXqDIvmnQoR3IYOuhbcrzXcScaYBusutz5Qm26NDu1KZNeKVBUDgiYHlbzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=SJ1YCWl5qPAPbgtTpbIIOYagtuq+mMLnpiag2CWvi3Q=; b=GDNmgWlAXCTXodH+jvvFc+dgUHj4mZ6+3oh7x80pPX6pSxQaj2OcweW9A60LNlnXDZuBi3Ga83UroOSp6cPfLxrYo4j5r2HpJbMFW6ChtJOyhgUQYfoXCWAvpfbEiJYmVR3XAjtJfPpluOKyMdaD7IuwYzNDnc3DgmQS7pGyjLobVNHDYUt/U0rgKQDXNAbUFy88RhzXXFk6fXe6NHtvvIS8c8qoKdOyyKW7I6ZWzh0DyttYCJeuGoJHzEZn1Aqg1ibRnDPH7PxDVPJbjSLq2tYOuezUzpHefreCqyR6QXfGG83zOnVP5u1BsGJf5O+knjTE+um3r1St3ut2zW/VTw== 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 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14:17 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14:17 +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" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v2 14/25] pci: cache the bus mastering status in the device Thread-Topic: [PATCH ats_vtd v2 14/25] pci: cache the bus mastering status in the device Thread-Index: AQHappd/gqJL+7/DAUC7s2Qdjeq8ZQ== Date: Wed, 15 May 2024 07:14:17 +0000 Message-ID: <20240515071057.33990-15-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: d893a9f5-e861-4dee-a7ef-08dc74aea263 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?3Tw/CqwSfU9aKbthQThVr1dupNu0P+F?= =?utf-8?q?3y6JTOXi/Mxs9RPfvMOCTnXwHcOtIaHwQgEDzUjDJV/9WTX0Ic0DZ+0YyQNEAZY2v?= =?utf-8?q?ixlCEtJAxbOVJtgVyapcX1/gJcLFrMai9AXwnPs8zdf6KuE5XuETqMrlWQoKDyofc?= =?utf-8?q?VkI5HKDr4/oSrfmCii1Ex28hvJlgMyVyaNe5hr8nXMTxcvcz7/02+lxabRHWfA3zb?= =?utf-8?q?eCrkKPk6/4Hj0E8WEjKZ/epi4Zp+2ZbfL+otomCUdsFlbSd4gI0Z+r2YILiV8oCm1?= =?utf-8?q?5ufxdshn42h23m5ciPy4abd9g6SlwrlnJ7PYkeGhQ26fVIMQAd3/5io6NRQCWej/4?= =?utf-8?q?FBV9s607M/ZBiqezdKwuKUcTDZMSm9GuXtE4/nshb9bYq3zfUSLJkQc7HRf2lTydw?= =?utf-8?q?f+L7xhL51xO0B4D7zQ5XOXK4njLcnsz43L7YTZ0q8rNg6sv3/nADpnAlnJdrbcFmN?= =?utf-8?q?A75PAKbcyEBh7JJcWGdt7ZkzrliUCuEtpumevovqAaG76T3VrmFvheoo7sDe2LUcE?= =?utf-8?q?K2P2KvgRiLfJC3cmobum7hHTpvSPsYbVXHi/e7eAWIqkv4yfdGeGHXmDNR6DBLG1q?= =?utf-8?q?3MlxmUwZXGd8KW8va4m/x2924lvMhN8IQ6DU3TrxyWqc5w6RmqGalLHc6DjjwATR5?= =?utf-8?q?d3PloImzrhmj9RJBv/bXiPRaBgi1K7J1bQAUVtctxc16mHA9YfZ4CbJah9GwEf8FR?= =?utf-8?q?p1Rk8NUOE680tHJnneKy0cRdtw5AeripHOlVJSpggAMLxgiXRKn9iAIIM/Far4xSx?= =?utf-8?q?RmO9obXVOw+oplEiCS/p+4BpVd44g9So0FT6vIvmV1BUatgMli1HcAs5LzVRdSDKa?= =?utf-8?q?KM0eetUtARemOjjyAk/BhAlcaAJKTYijk2S116UPxIME2fBCl2MZJO6GuuYTN/tgS?= =?utf-8?q?0e70f/SlEEet3sHalqcYMzFly9jgwWrMscMmwlOiatGkBOxI4hw/Ug39buhOHqvBI?= =?utf-8?q?EKKEzosjrigDJFoodY1HVrkVH3EsptwNMkykEbfC9NudSlzC8L8zWl/wf5TT5Y7K5?= =?utf-8?q?bWAofE9vUtqqKFuVkEox9dLJK17+GJnHdZswPuh/dP5jov5NvmlVg/vyyt2xxx8Gr?= =?utf-8?q?AQ1yGK4nBt4ZLYbsxz66jj6OQ1XKyIt4vjo1FWn+lazzCtYtxZE0kyIvMOHwMhYPD?= =?utf-8?q?lCMwtNSbmL150mZcmnojdwfQtgao3j9PIeSaT6pmXg8RVubKMF1kFdQOWxQeC45Cu?= =?utf-8?q?Bpp+13Pgoruf6tcGYYG9ceoV7OkF+JqsTUWD649sUaaFkDriGsUHzjfXm3+rFp+K3?= =?utf-8?q?qFCxDunFWNsES5STyXcID25a/2Mb1pwbTzQ=3D=3D?= 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:(13230031)(366007)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Ef98th9wtwqryBt/l6V6+mVLDSLF?= =?utf-8?q?a0Oy3em5+akp+jSMTsaqSzR3g0ZNerGM5vE4v7YRCTb7kh17VOfNiQftkZjaGnv/a?= =?utf-8?q?adK22aBynkSqZvz2m41Vx0kVN5i6GwEpKYwhlqqxRT/+gN3v7xDc8nCa4v/sAyqUD?= =?utf-8?q?VET5Cqs/p7bW7xUpH/f++6xszKHfVkkjfGHTMMqSz6+V6UkxmAugtlQN7Bm13ceMI?= =?utf-8?q?I0DAViURATFVyQrXNgJ1RM88e4pMP5ezLHALmPB9UBjNneFrSM0LHdT3Xy+juJWVM?= =?utf-8?q?C1JjgvWQdncwo41s1mnxtEMOYJOcS0UGza8CyidXCFpEmO6XGaIB2TVBhpGvhKSnW?= =?utf-8?q?1BNaJYyfmnZwIfRj6hXNk7CT7lAVAPajWIm4Wi2inwCA9Zg6hbm3WNG/WkJMcrmSf?= =?utf-8?q?HCXus24ibSVFAgB3SQSmXnU/nxE9OEvQlBHuOBsvlE6DEzKFmLqidzIo9W9yevUfO?= =?utf-8?q?YjXBH/LFDQ4oPdXeOZRBlpVZokNXYIcxFR4qFNTTdOHbnuYziTKBwkOLNzx1SbPCS?= =?utf-8?q?t/fCPz4DP/Lu0YynlQ5FqMS75sLrRlnxGbMSLtIg3FvcMcEhoKV4YxsK0nfKWY4ZF?= =?utf-8?q?IelD854vmQf/kVPLho0VPifuMu9SXJ8XyBqBLBi1Y8G68cNNFVBqD94Oq1g5tjfxs?= =?utf-8?q?gjAOe/DtPZd5aA2Rze5WnTWvpdS1WFRbZyXuOK8dEhuJnhpeBXDKNnNbmENoPVUeV?= =?utf-8?q?dnms6Ln0HXit+EJWb3sR1IvSS2bYqbRBIzHwEhhU2KOzJpDL/uhx/fEFFyw2LtzaG?= =?utf-8?q?g7X1hetU4C0dIfA9rtTAR+VPOpzh+KCcKNVMdC3QuZb08FAIkHX35w1waPeINWRrb?= =?utf-8?q?3z7BFubtKAGbBOYNCqgvP+0CyvyXojwPbDhI7OEJHvbkYV7zDg71LjFbBuSwBUAB6?= =?utf-8?q?J7cbt2Aku14SCcAJ/67mZUTexHkpLUVhTPFeAEDtlmtNI1QPHaFoWz1a4FVtzkOCV?= =?utf-8?q?rlX9+LaTMeIb89utIxh6gKJuxvDNcPFjyMwlFCn66r+xYJWEaH9GQ5xvkY7BWN1+e?= =?utf-8?q?Nnk5sTR4KECZIZiC2EPh/2QBZHkOjlClc0HsNJ2K63wM2faN0EcYL7wKLmiXZk3d+?= =?utf-8?q?fyUQv2LPUR7CtlZwMGpRysytzuuYIdJi4HNAYUAjHH14nRlmsrJVMDU2uH6Q7oGgV?= =?utf-8?q?6HYDtkdaxy4aFILia3cjt02aQH6jWrHeRNG02CRwAPD9qSUWwkli9RMHmLjktKCcS?= =?utf-8?q?XY3npTx6m/6vMcymX3ZYwrv4v6/hhNyvMJLiYDikSBmzH6iu8Ojw1dnfLIoNeDLUt?= =?utf-8?q?RIa3upFT4hp4qL1lrH/WTibPcH6JRl2oucLcUjsYzTcJdI20I+lertNYaZFGTIolc?= =?utf-8?q?gt1AeU7Nxybj7kUNo8Rr581YgeSpqX4nYSXSk/HyMWKqGQkGnLZc7Ip6vMRr62WiI?= =?utf-8?q?s8ufFB4mt/EkygiBCxJx9ProciemXNbgEvEn6Ioe4+KJgimr3Y3U6mUWinFYOJeLB?= =?utf-8?q?vH/C7KrK1Fpe7ztC+m72aR0VNnwMgBQ+KIZGh4VgkIo8EM9Z5RkDka3x6yk0QMN5z?= =?utf-8?q?KbF4EkZs8oBSbQU9S/0vWbZkvSwIZsz4KadCoyDYOHyNacdBx76hAao=3D?= Content-ID: <921FC55D6BC800498C420BF87A923D17@eurprd07.prod.outlook.com> 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: d893a9f5-e861-4dee-a7ef-08dc74aea263 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:17.4443 (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: bGzeTpUmP0lHsF5qXyxYDBj6joEKFJ552y5WQkPdBYMgIc8UGO4k8pmUSi90mJdz2xUyRNm6EMieeHeLNhHzqDGG/mNk5hMEXSc90sjezifmZORmS+d5wmPblnIx9xc7 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 Received-SPF: pass client-ip=80.78.11.84; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost3.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, 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 Signed-off-by: Clément Mathieu--Drif --- hw/pci/pci.c | 24 ++++++++++++++---------- include/hw/pci/pci_device.h | 1 + 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 045d69f4c1..e5f72f9f1d 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -116,6 +116,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); @@ -123,7 +129,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); } @@ -657,9 +663,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; @@ -1611,9 +1616,9 @@ 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->has_power); + pci_set_master(d, + (pci_get_word(d->config + PCI_COMMAND) & + PCI_COMMAND_MASTER) && d->has_power); } msi_write_config(d, addr, val_in, l); @@ -2888,9 +2893,8 @@ void pci_set_power(PCIDevice *d, bool state) d->has_power = 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->has_power); + pci_set_master(d, (pci_get_word(d->config + PCI_COMMAND) + & PCI_COMMAND_MASTER) && d->has_power); if (!d->has_power) { pci_device_reset(d); } diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h index d3dd0f64b2..7fa501569a 100644 --- a/include/hw/pci/pci_device.h +++ b/include/hw/pci/pci_device.h @@ -87,6 +87,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;