From patchwork Thu May 2 15:29:19 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: 1930654 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=mg0A+T+I; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdGb4VJvz1ydT for ; Fri, 3 May 2024 01:32:23 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YO4-00048h-Kz; Thu, 02 May 2024 11:30:20 -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 1s2YNm-0003yB-6R for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:05 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNk-0005yW-1E for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663800; x=1746199800; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=SJ1YCWl5qPAPbgtTpbIIOYagtuq+mMLnpiag2CWvi3Q=; b=mg0A+T+IylR9fP4vGforNWMFYqe5oXywmaND8ek53NPjsUpsVhCyM4ZE YWthMD/Om3CWsgBav3wAH1YLx2G52uvNDOTANk1+ckRM5Uve/H90XUYAa yXDkLidPcdnvWpYxfSVZZg8BxjNUsuc3g7EEtviWjMRS+KFqryus61B/4 yXlGkTlM3YbphzaC7pWJPnp3iRtwvrHUl3hPEwQHLbZehiyi1NaKKBp9R QE4H2lU9GA86F2eCescSRweNxMQUS455tuTvVdix7ep6jdf6VKBbXfAMJ ExDvOufITPTNHIW1QlVeOJswb2mduRW5HOAGy/2a9ScNlLuccMh5bHYWN Q==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785887" X-MGA-submission: MDHDnbPocZIM7UPS0lgJkGyCQRsFEKCgvg/s5Kgyg3DTBaKXws0NoDkg0XGZhQWWGIOeXVaOlGIPSerfOVfdkIaDIu0CZN5u2QslsTj3BcFtpYqjfwn5cosmXCkxwh4YtI9MCtabNwBvFMMU3fbAYvHJPDj8cz9Ko45StpLae2H85w== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RmgFPK8HSfMHIZyqGGZCuDVb1J86o2ADPyV5MUkdSSDf5qgSL591p6xnb33OEkq4tGl8K393IUHtOemxXel/86N3Z3ykr8UTclr/iujdQz+R+WdfI1adJleFoHh9jaIxaKsotnhedXzp57+mZOGor9THsahvGOSu3BvDplUYPq1ax7z6lUFdALqW0dbAhphaNjvyH4+Tqr4AiXgn0jl9jCoSBJx79Czg7vFVfTiarOMkm71vZp1mPbEIlBCwW3bIAw77o/kSg9Alui1rw/SGGHfNHr99J3tYSh36+YUoMu4HD3Yz8w9QHl1ri2UomkH0YIWNTYxKHMGGPTwe7KNYwg== 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=irSt+PMEULVP7PKdxA+lLFH5qfZYT5wDcw/f+gdbrdkvPgdGJ5nMdA8pR9IgnWqNJH3RR0XKVcaSFM2k5in9ce2FHrbo8fJ7gciPBiN5zt1njYmGrKRLVlIcRwYL1oxnW8uUTbNSjf+jzexeeYJXJd0wSzjVmUuG2mgbzLEdUryQ5lNrgsv5OjOIlccdhPsivQxNAI0dmqn9rOdErGbdy1BcFEzZ+l34LchzMv2ewjZnMX1Lip2UoJsGBXr5lI0/JNSbHSKjEJyvGpsd8TuC1o9yICODh7ijlO6aSD1bwzjJVov7VJvLR7g3j1vVZdkk48JyquD9guw1r0kvRm/BSQ== 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 PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:19 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:19 +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 v1 13/24] pci: cache the bus mastering status in the device Thread-Topic: [PATCH ats_vtd v1 13/24] pci: cache the bus mastering status in the device Thread-Index: AQHanKWAPapiaRw7i0K7512F3ib09w== Date: Thu, 2 May 2024 15:29:19 +0000 Message-ID: <20240502152810.187492-14-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-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_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: 16b1bb00-7e21-4991-9e73-08dc6abca2c4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?hCaF3v7TrReLQ/GmbVIKcymIEe0GdbR?= =?utf-8?q?J1cmcamQ4jEgcSqUiDobU3ky2xIyFqVWySNYE74JuYfaW9ekW+1RM6PdC0ZeYeGdQ?= =?utf-8?q?ZI4ddC8bHQEtcDGrq4XKKcCNvIGtBWseOqJo34QhNlC8BBT6zejYsqZcDIWSbNPq4?= =?utf-8?q?3G+9ssFvJCkF0/ZqY0M2rVlEFUU+pD67Il+vAqQgucVt2R0nM0yLW+dD34+/iobw7?= =?utf-8?q?pWHpL/y0mFxO8oP0Jks3loWUjmHnSAXwJWXZ2x4sU/ZIwHiU60a6iHl2i0+klLZxW?= =?utf-8?q?jUuIrKe7tBgTX4hrACka93g4ihWmCM/bHlz/m1FgTSCStRLVffmkrahdATCKy/cZD?= =?utf-8?q?fseA7l0anM9FP3gEcqlQsQhUBR89xIidbTRBhJgv942g44d4cSVt/MV9Iib56wxCO?= =?utf-8?q?Qan+pNvqigK5PrWi1ve0yuB4YB1cGfSx/rkyw/LNiKf4/KiBWjT74oMmALYb0Y1RQ?= =?utf-8?q?PbqHA0xHpQWYN4RMqZzhOputBf6WHEp15/Rhyjye7NzabWBKyaeYM3Yk8Tg3xZpz8?= =?utf-8?q?g05vi2akyatGmzxMSi+KgaX/6C8IZ+jy8ZcG5YUwJCnLY2pXXdigWWerCY62Bpd9y?= =?utf-8?q?oSEeRoE9FtJQHDHpVzmjlzUKjiKuTL7TV0D/uP5wYSyOC/Z2sl0XwCJCv8042wRhQ?= =?utf-8?q?ngfkLvnrxz2HgEpfd234/3tt4pmpOx4a1Cx7zwXreUJbhmPRFYmof7Z8Jz0ZKlRF5?= =?utf-8?q?1ZmdE/yAHCyZvDYof2/26AKLGQFwonaabJba0IzsiCUUk9sIUp+0tbtIU5YZ5hPab?= =?utf-8?q?NYaRVXaeIe0gm4GZ18YRz8E+kxGBhEI1+5+NgcVdmueA4BJf3v/F1qZXv128v2oWm?= =?utf-8?q?jTAxIQnjoAhWxFaPssdr86H4ZeRt4TKPBxLNiid0T+h8z7El6z/0gCaGWhSxvBE7+?= =?utf-8?q?PmKZCYCgyCAAdCIwzX58AtpY4a5BGyJJkzgOpfPK3zw8XYjf9Gc2RrUujN7mfsR2R?= =?utf-8?q?13KqV+Cr4KpvCNEY+jX990ZTBYkpLV3rx4VzAlyrMNQlfzqVPEyBJej2iP31C80Z8?= =?utf-8?q?sA/HpMqhBIy1atX/OMxmBfihDMButWclbb+pSIXkuNUXFdFJI8wfaNDSlmgvZR+bg?= =?utf-8?q?r+P36ZQjswATVzIRccpSFzae2NkBPvU7a0B/2fWh7pnbj4+RapObcd2+U8JaSvXe1?= =?utf-8?q?8T3t7mRJ44eLJ20Ins5WVRzzMc7GdfYU4LRju8IgazLfrjZnUeMF/Eic81z/ZyVdN?= =?utf-8?q?zcR0DDYEIxiVsck8Ovr9Oe6Ds9RUk08mIGRVNCK0lbR1QcMsisxbqAYAmWtdTXfom?= =?utf-8?q?8ATmsN7pIvNbYr/7aPEpYmeQrKI7lAAkLuw=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)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?oUzp1j+mBr/bXEc0O+1KK5bhHpTq?= =?utf-8?q?S1+Kf0k+kbHgFH7BZBHb1ESLfCAa2RJie9773D/WNTxTRizazS0gibPXY2oKHk9Fd?= =?utf-8?q?YVd3iFYvrdx6dl5tDRJj7tKi4fdIhuF532hvUzEOENeaDNoIhf0E/S8g9dTdIDXcN?= =?utf-8?q?Ge8yNqOrzbocLf2JIGqx9KS/w/puqqp8h1GlsAynQrqZM12P+zCINurgjtLigzvOG?= =?utf-8?q?uq3siMT06INHmom4GMIqx4eDHPDJCJT4xG87EpKDDd8ZcFCAegrkCy6oWEdSYmWNp?= =?utf-8?q?Z0qGbmnjCqWLmnmMTtyo/rzUFX1rUniKUtinIyllhtzIJhCWQxiFNoHspzVLuFzv/?= =?utf-8?q?pK6XSPK9ZxBGESgFH1Vh6hVmJP7gxkBTlrtpCEY344ajtYvmQaGuzjsBDikyshVP+?= =?utf-8?q?Ocboj8ZtMB0xCVOycl1Cl2hhfRqc3ExrBSC034vJjmeSv4Jjhi/1nGEfIhbmDENTP?= =?utf-8?q?8mZR2A09ih5qFpSx6VESy4OyP93Gdy3vMwxeGIlvWeWXsq4GS8HhoewuGIOv5dbdw?= =?utf-8?q?ZIHg7parAYMLvjR3mU3fyya+oEaf62G/X0eTKyIYmYve7R+WT1B71uxSe6Zr3Cfls?= =?utf-8?q?6ioOu0MHg1eVCzI26fTzkoJ3MLhaq2nnOloTcjHgD3BZjdENyF7VFW9a7/WtMoasb?= =?utf-8?q?RSI6X6WtPPKHjASew0wE6n2haj43M3t4ndbpzlX6+g0BTy5VOJlF5FG8CuNs+XL8+?= =?utf-8?q?Hmgrlhq7LbaeC2qQiQiS18eTltgBFBmQ8nQ+0bwd0L6Br90ZaW9ftuOlhA0UuLTxA?= =?utf-8?q?bVfKdes6L7rpBvtKak24IYNPzyAd+nFIPmdH31KrzS4hAVHB1SyOxC1ZKCtMoBcZz?= =?utf-8?q?C3OhN6BVZbSKHCixioYRyXbV0LuZ3cpWctPn0gApO1rISzQ/7su+7wleoXqDR/9AM?= =?utf-8?q?RozQmQSw9q2EK+XCZ+Hb9AcZlJha9SNZhTWN/fRbbnKF4QSNOlhyabZc//4IFM6id?= =?utf-8?q?7LiOl3jwXfegqTRQOvk962DQVb76jLPxOILfmzPINQ9+ujViN+0j44bGpLv1fLzUA?= =?utf-8?q?Hslofu/LJ0uyXhOTk/dmy+qmtht7y73jPJTvQqhBZK+soev+dugkcNz+m5/gqP0mN?= =?utf-8?q?gIO/lyOh6aN9FPdN6FahYS+Bl9eO33fvR6CRFtmlWgiS4cN1eL9s3h0lWIJk4fRNi?= =?utf-8?q?YqbKkkfcZj035oMmw7h83/HpFaFI67xT+wrw4ELGB8aKRvALOAt+Cv5fw/VURA89Y?= =?utf-8?q?BJ9hw8i1Lx2JVHW+r+iR1varD0Vb33uJV7TlH0nmUhCBAMXRVfXuyEW7KoeJAMU0G?= =?utf-8?q?CPjXgPmjXzbtsDj4bWkQM2Y0Drc3eYJicKkTzXN6+SHMAWL/OvVOK+wZ6+XeqZuWi?= =?utf-8?q?Wry8uBqoP3jT2/FclaUTabh6UVZr53M2gzffC4CqJ4KCRSDMNmhx4U/ZE7yiQhPTr?= =?utf-8?q?fYOfsmCqg//4H2gEGxPQoSZBU6N+r16J219gHxeZsvvc08SLSxmhL1L7PlxVAZV6f?= =?utf-8?q?H/U9Phpb3xOklvL6yir2jAhD794c2LU5dEZB3Zrq6tVhMfIRMdQ4kGys4jSTYXBYL?= =?utf-8?q?pvV5LwcoSx5ZeVhVk3W4sogV+WmzbtX2qM2YOPa3V92tTAf6plNIr4g=3D?= Content-ID: 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: 16b1bb00-7e21-4991-9e73-08dc6abca2c4 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:19.6633 (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: vnKB2hV7eB8qE4c5gJJDGGAFHUdErkL7kwW2E0AICYf/g8MPUYcwBmk66FVfIkdqMytTCHsePIYqV1+H2RQL4bpWkbUxCr2FTX0Ol/VTzRQef7LJ138CQbiipaeBSyBu X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.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;