From patchwork Tue Jul 2 05:52:37 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: 13718992 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 894C8C3064D for ; Tue, 2 Jul 2024 05:55:00 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sOWRb-0007y9-Cz; Tue, 02 Jul 2024 01:52:47 -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 1sOWRY-0007vC-LC for qemu-devel@nongnu.org; Tue, 02 Jul 2024 01:52:44 -0400 Received: from smarthost2.eviden.com ([80.78.11.83]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sOWRV-0006Un-EX for qemu-devel@nongnu.org; Tue, 02 Jul 2024 01:52:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1719899561; x=1751435561; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=xaxAGyD4o2O8sCWULUZmUAxQhty2kaey6TC3HEo4ugw=; b=BoIjCKwmxYWeEl1Mh+YGloGufo7COqD1eHD98+pIuzZZF1AGk6gE/1ie bg2Icq5ut+Gg49LQj1zXIKD+oGdwXMkrPHhFWLOMEnsRejO+buJJH/4lP Vl+3IbmCR2a7OF8vKg8gIxt1n9DmaqMF18LBuWaDts1+xaHykkTVNntum g9nSADwJhTSUvUf8yD93ECgk5Lz7fyHZvndljmyKjsNf/Ozd68eYrAQix RayPlPThmU/pn6EkQokCU7SpfXDHtrBuE94OJ7Ga9pNwTh4HPKMridnON +GXihuVfSgb7AoF6qqQe2vvY4wvKECsGeCYZRqKQWpZUpAYqvjCSY5HQ9 A==; X-IronPort-AV: E=Sophos;i="6.09,178,1716242400"; d="scan'208";a="15721521" X-MGA-submission: MDFYoE9tbcJ6B2npvCda6XPRaKqmw+1lDiukpcLyiA4H/T/XBKq82twj3YCKmV7NOY31yxKfJ/y4dz0cWrU7MgdXuibeoCNSBzuJLdpne1bF8uiZlp5XD4NVyJrQA/NNU0585dMv3hZ+zu8KSwH+L87O3hlzgoF2DRQU0ksVbOVlLA== Received: from mail-am6eur05lp2110.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.110]) by smarthost2.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jul 2024 07:52:39 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XpHXm1lTY8/8TeYs7XpMG7Z3sWjOy3iVyEPZR1caXOTaJt0efizzRBmi0/Q5KyyKdMbSWgxUpSavCPp1kDyOf6XdU9LOtd98GhJy5pmvY0J1IfZhPlKzey37Zb0unRa3s5p7+TAwoGW093y5WyrqgCsAGN8qcMUtITiLtJbfSkeCoriGFtgQSwJzIvdjkDz5AJpFb161Wq3RI4Ne62gLlbfpM+57HaDCLnzR4K617ukWAgnjP4ffDdmBsZfvfjnuvOsu+p1HompvVrO3KcyIGPrN6s5NuEVy07N66v7zDdM3i/X6PmGdvQVHYTcLNDXnKuo1zHazgwETD3h93wMtwA== 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=xaxAGyD4o2O8sCWULUZmUAxQhty2kaey6TC3HEo4ugw=; b=D+w+tC+Es6ZSuWvazmveG4yHm/Y4GbBwOMdZpUCCSOu4fQokIPRuv8+Vs6252SByuMP/MD9TXcKBVVYK3KpeXUAEfolXXsrgWWJm/GKnyY2wmQdTo8KEVULzWo4iM34POk/TtjwDIzFAGlO2+nulrgxpscP0thqNfwVBmxdduvAi84dmtwwMMseQtFvbW17sLhfyN4If4o777h5YHqVVefacr5jDcE4Nn1bFug2iBfjnPkLP4bZ61MEPp/VfK+hozMMRx/5jZbB826WXYu80vE+cUKUXLUi9QOPdjzRpbsY64XDSnhMVg379+zPnnE1KzVFlfiYQSMexJJioW4DBaQ== 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=xaxAGyD4o2O8sCWULUZmUAxQhty2kaey6TC3HEo4ugw=; b=pZBAFwxnVvpw7+QEnGgMpqp7QhUYdlHsKdWT8iTCFDe1nNK86yLdcvpGDwzAcEP23ksdJLbQCgBb5dQHzyGLRxowArcXD5LjK9lx8HVzXemLg7/64PGqpXO005WbsrvEoCJ1KdyFsj2PmkS6RQrvK5aKDtUuVlH+GFNBK86ZbDC11/rtA8wSfJnzyTFP/e4u2HCcbgKDidjylQQ/2fh17vXst8VQ3V2EYxdtoQbyC7Nb4vh5GZi5WkjbZ1X1txJgOeBdWMNTCyvDtasxl3h8mgBsC5MwiaSyWFWZFsBjxCTgYCMMHHk4Zho0glI1oUpSMeWGbhsBsL6lZDr5lg6HOg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7080.eurprd07.prod.outlook.com (2603:10a6:20b:239::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.21; Tue, 2 Jul 2024 05:52: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%4]) with mapi id 15.20.7741.017; Tue, 2 Jul 2024 05:52:37 +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" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v5 09/22] pci: cache the bus mastering status in the device Thread-Topic: [PATCH ats_vtd v5 09/22] pci: cache the bus mastering status in the device Thread-Index: AQHazEQKdi6Jv3RtX0yfGUZA/khw1A== Date: Tue, 2 Jul 2024 05:52:37 +0000 Message-ID: <20240702055221.1337035-10-clement.mathieu--drif@eviden.com> References: <20240702055221.1337035-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240702055221.1337035-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_|AS8PR07MB7080:EE_ x-ms-office365-filtering-correlation-id: a4f7b8c4-a2c2-4606-eeb6-08dc9a5b2d7b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?q?0JmqRQbqvr0Bw/Xg9tacO5n+nqSHtxJ?= =?utf-8?q?JxM8HBCmrT9l2i4NL7nA/B0qCLZyMAkeAbLftWsBHDTa+o1sWD3UFedUJ4AWJmDLU?= =?utf-8?q?01WzwkLosmxjTsLRt3Jm9Qu/Uh/oqjppavU4vggUGvqHuiVzsK7P5t9UClO9R7hUY?= =?utf-8?q?Ay/u05vhSmYZFO5x6mT5xiaScKvV5Z+04jdfXFVNGE5EbNX94xblI1zidtgVVPipV?= =?utf-8?q?HEURO+aBgbf8fIkqQ/ogM44Ntr0O9frxUkQVDwCLbXx/T1KovPzQWY8W8HILIbCDi?= =?utf-8?q?bYTbwjdJVJFqQiOaUwrGntfh2BjVyNExKwDB3LNLR2JEMMb/gBI6vS1jnSwEyXP0s?= =?utf-8?q?+qiDbLYWWGpQcvIRBx+My4/oCFZ0A3KdBXjjwOqxw9zbRD08KJ/2QDeNJw0OR2Vdx?= =?utf-8?q?YLSFovQ3tBUN8CVLr+L250fIJJz7tBmVYIxIUH8q51EsMWCN0xGZWgkqwCbyDK/zj?= =?utf-8?q?84aAC3iqVrhzDwhq2jEpk9F7HVQlQ/mFLbPtRzLISbUnXq56FLwcn0ClD/jqza9T6?= =?utf-8?q?R4TDixhX9xDjVY+lzGgJPjCwe2fW9z2S4grGZVO4Xx8SabSZfK7VtRL7ldpWqaPF4?= =?utf-8?q?F6+HZYY3Hc+04ShXYCNKRuvJlXFcO5s+LoerQzTXzcF1rrBgDFLJz1GeXcW2mLnHx?= =?utf-8?q?PP7Z6kR5hiiaeud3590HCPI8CuCP/EyhzNbDAFAiA9y3W7BhsILMQ+b8viUWWhCN1?= =?utf-8?q?UwuRtMu6peB2DsEM2VUfLX9e2C64xDmqGFJTASLND5oALqS+6eltV6jTT/TkSr2tb?= =?utf-8?q?UEYNpaqPkDVf/Qad4rX5kf9KOxYBnyrle+Nqh7qMdy/3CO/g2iMV2L33VbHoLprgO?= =?utf-8?q?dbn6QW2kgHHVwv4ZyiqmJP1Iemow3p9zWX9FWp3D5Ll/3ktGE+oIFaOz+q4PQsS2/?= =?utf-8?q?SxcGonm0m6818/a93DX81H4oogyF6UuBo+1CS73prUVHgyskDGrWmDGW1wQ3YxU0R?= =?utf-8?q?kby0/nSVMQZmE1PU8H5gh23ptlr4APY+ZEntIqUXa8Nha3G75zOvc8uulsx1/LDrq?= =?utf-8?q?KLFNp4yVQA9OCo1XKH2gjFwCCvVoGfLpRraTNz/kIhG3r82S44dYWLSyIXjcquQjF?= =?utf-8?q?bsK+ILLhUOED7IAYoNX2dAy7O5L4g0ga+aRNfMG3/Bstqlg7I36ie/rQSDvWPFB0h?= =?utf-8?q?10vosS/0Noi2I8v6MKN6nFNrkYYKkZB0PW0PTnPPyuUO4HwVWBFvofr52egixoqhS?= =?utf-8?q?PwNx6W5W5EKdZNIsZBYDvHyrOuvi+gnfOSUEsBN36QDd485f0BvEad8xq85Rz1bJ2?= =?utf-8?q?iSD5TD1jahJ0QxQwmvwnHIaAOjtcY188Ly5BAXoIUNN2l9hXMSlkunJ00MZISgo3j?= =?utf-8?q?1mHBwWHSGDrSSb+T3GX/7QUTwVQ9SYvETA=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:(13230040)(1800799024)(366016)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?TgTvZMZzOOWxacf0ixwukwUkq+KH?= =?utf-8?q?68d39zHCkQHPynLbeKYEbrOTqjHXe2g1wgOG5EmJgN1M0dV38hpeOfJyuXM9D4S8e?= =?utf-8?q?uBolV5/6anjs5NDwJWIGf8yOxdZ+QDtKo+QGY0ilY9MGAiRQ+hghmMoAguX3tztXP?= =?utf-8?q?31LREkxrf85KS9xhgP9gYmKMbDX3p/dfrZ7frm+ThVaq2+vtT56UwTcvS3eSdQHq+?= =?utf-8?q?k/BA3knYEl77e7UUkSnCTJE+0CqPzLfNbAV95gFUxQcQagCL965d/MWMvDxoNjnlX?= =?utf-8?q?IvUWDZHtoD+hRYK0Ma/oQSpFDcEP+qqCoqoCrG5zkPQiB833lT0Hhwh2Ob6gYGfL6?= =?utf-8?q?OeKA4EkliecOBxR6Zxc70M+SbEvvENaBl5VTXk3Qv6cF0aVcn7geOo2jmr9OlaTS+?= =?utf-8?q?abFXm/v7/Tt94XVlqjahMQqk4gtakjP07mSRBMXiCow00O0HZT/JL+Y2PLW8qy7Lo?= =?utf-8?q?mMXD14W6kju/p+3hCQ3bIeVwE0B9R5+06/H4oZcuUWswpJNRj4nTpnpSdnXSWQ7gz?= =?utf-8?q?g8YID19SLV4NnvzpIUgGIpVvy1KsdgUN/Ra9Y2H7xIiU6m/C4e1iBWEGjKLTmBykv?= =?utf-8?q?8OFmE2OuYtf+SDG8fm7BIceLFY0OebUQf3ninUzYWU+BE4mq3k+pNi0PP9P1AsUO2?= =?utf-8?q?gAI19r4kSBVaeEW33J111GJlQpvXstYXXg9M3S543ViutvE0v5A1z6rPbXvUxKkN2?= =?utf-8?q?9IvR4BV2YzG2vzrksBfQdq4cNzDGx4zrrxKB7nxzw2D1KG4y/H/8UdNa2PT8rmsMR?= =?utf-8?q?k6F7hW9Loh6qbtHxjKypnq1rfnZ0dbvPuJd681k2u+g1Khxkpfc+LEqXz00sEZ87j?= =?utf-8?q?R4vmz6LPP9GoNGb573VGE1vvm8EVJw+yTE+zg+NFW9bTjuBFcJOnOMXen+xQiWEUd?= =?utf-8?q?gS2FvWSIk6LdkAYqsjF9S/bpHjL+5Tp0OcD9UEkzB2SG3nPXc6tk3uWKOCHdK/iXi?= =?utf-8?q?Wvnlgfm/6Hf22ojO8DZeDxD6AGd3eMoX+84iTnqTZY+xZRz/G8qU6hhT1c5eJnzbS?= =?utf-8?q?n4+iN6bRSsylVKzbXVlxDIWdbBnBprXOralkA5ZgUEJUkXSZjGrxQeh7kWet5wty4?= =?utf-8?q?9yxUBHFHuNn7LoaXFLwJxdz849LUtkvyLtndJyrjARph2KS/OiDyjBG5D5TY5lnHp?= =?utf-8?q?Q8+3ZieMlkhiY9hB+QpXZT+flCjJD0HAu7IIR3ZphDoXPAFXXzGeWw8VO356Ky3la?= =?utf-8?q?WpY9Z4z+fSNbcn3PH/+oePz2qVpe4CiV847X0aasayj7JON19fQ8uw3Wc5nMxVXcI?= =?utf-8?q?R0C1kzmvdWgdcVwd3PMXlHBslHnTebTJrucHUevUBi98BTVB8bG4y6IuY+ER/xAsT?= =?utf-8?q?RVtCXhtO5Xrnd3aDDhAXJtI/WP9Msp+MbrUFZKqExphY/bXbMAvibXgdprPArtDES?= =?utf-8?q?ymQCNoEeheMacIZVCnKI+d3WGP6Wc0bJcvqPdfTWBncc6lE6vAtLIduCSmDlS+m5p?= =?utf-8?q?6OjdK6numZbYSEndpi+jiSD2LHQhgmcidzXN2TJ8dpDtxAueNm5ItIxkXGrQELO34?= =?utf-8?q?rh7lkyA7GU0ozOgMAGwskcMf/Sk8o/eits2O3k0miPNo37YUh2h9KR8=3D?= Content-ID: <9F1B17DE31F2584CB2DDCC2E5C7D9DBB@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: a4f7b8c4-a2c2-4606-eeb6-08dc9a5b2d7b X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jul 2024 05:52:37.5268 (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: 05dRWd4oLmFAFJ0ocYmjjfvcWa5Y4Iq8dx7SWaXv7NrV1MmSaehrNRGo+6rJrrYBRKzQCuD8bNysFY/cvvkSsJGM349ZUiVtrDTLnNBEhL3BXdWPalF4+nHAAmgWdtFd X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7080 Received-SPF: pass client-ip=80.78.11.83; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost2.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 From: Clément Mathieu--Drif 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 c8a8aab306..51feede3cf 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;