From patchwork Thu Oct 20 09:46:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 13012937 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.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 CF825C43219 for ; Thu, 20 Oct 2022 09:47:55 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.426340.674749 (Exim 4.92) (envelope-from ) id 1olS9R-0003Rv-Rs; Thu, 20 Oct 2022 09:47:45 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 426340.674749; Thu, 20 Oct 2022 09:47:45 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1olS9R-0003Qm-Kx; Thu, 20 Oct 2022 09:47:45 +0000 Received: by outflank-mailman (input) for mailman id 426340; Thu, 20 Oct 2022 09:47:43 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1olS9P-0001OM-H0 for xen-devel@lists.xenproject.org; Thu, 20 Oct 2022 09:47:43 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 3db54171-505c-11ed-91b5-6bf2151ebd3b; Thu, 20 Oct 2022 11:47:42 +0200 (CEST) Received: from mail-sn1anam02lp2043.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.43]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 20 Oct 2022 05:47:39 -0400 Received: from SJ0PR03MB6360.namprd03.prod.outlook.com (2603:10b6:a03:395::11) by DM6PR03MB5003.namprd03.prod.outlook.com (2603:10b6:5:1e7::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30; Thu, 20 Oct 2022 09:47:38 +0000 Received: from SJ0PR03MB6360.namprd03.prod.outlook.com ([fe80::9f90:6ba5:5b44:c254]) by SJ0PR03MB6360.namprd03.prod.outlook.com ([fe80::9f90:6ba5:5b44:c254%3]) with mapi id 15.20.5723.034; Thu, 20 Oct 2022 09:47:38 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 3db54171-505c-11ed-91b5-6bf2151ebd3b DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1666259262; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=CW2Sjpzu+EEGZpXFIVYipeQNHkgG59ttaeRSs3lrE/g=; b=c2Xbyv/S7A1T+mKZu+VnK2Gu/JE+oeZP3u03hKehieRCpwnbYC7NsjwL iAKunzI3zfM/CHn9ZZt2fDjkYPg+flP35cqZcPzxYSHQ09fmW1zuzjjqT RB9n7K1l/wXugjbPXV0xTIFaUID/O1QBtD4xfee0ZwDpLBZ7RyokKaBDf 8=; X-IronPort-RemoteIP: 104.47.57.43 X-IronPort-MID: 85669466 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:f1ROfapG/MSzAn/xKsJYQKlFlU1eBmJiZBIvgKrLsJaIsI4StFCzt garIBmEM6uJNGP9e9BwOt+wp0gD6JfVz4BgTARq/ikxQXsV9JuZCYyVIHmrMnLJJKUvbq7FA +Y2MYCccZ9uHhcwgj/3b9ANeFEljfngqoLUUbKCYGYpLeNdYH9JoQp5nOIkiZJfj9G8Agec0 fv/uMSaM1K+s9JOGjt8B5mr9VU+4ZwehBtC5gZkPKgR5AeH/5UoJMl3yZ+ZfiOQrrZ8RoZWd 86bpJml82XQ+QsaC9/Nut4XpWVTH9Y+lSDX4pZnc/DKbipq/0Te4Y5iXBYoUm9Fii3hojxE4 I4lWapc6+seFvakdOw1C3G0GszlVEFM0OevzXOX6aR/w6BaGpdFLjoH4EweZOUlFuhL7W5mr NNIBB8/aFe6t8Hu7569EbZVqe4AM5y+VG8fkikIITDxK98DGcqGeIOToNhS0XE3m9xEGuvYa 4wBcz1zYR/cYhpJfFAKFJY5m+TujX76G9FagAvN+exrvC6Ok0oti9ABM/KMEjCObd9SkUuC4 HrP4kzyAw0ANczZwj2Amp6prr+Sw32qBNxMfFG+3uNBsFqQgVEQMhQ9dFy2/NeQsBaXRM0Kf iT4/QJr98De7neDXtT7GhG1vnOAlhodQMZLVf037hmXzajZ6BrfAXILJgOtc/Qjvc4yACcsj 1aPltaxXzh36uXJEjSa66ueqi60NW4NN2geaCQYTAwDpd7+vIU0iRGJRdFmeEKosuDI9fjL6 2jihEADa38716bnC43TEYj7vg+R IronPort-HdrOrdr: A9a23:rE/ohal2o5r048uXgmWY41TMPJDpDfO3imdD5ihNYBxZY6Wkfp +V8cjzhCWftN9OYhodcLC7V5Voj0msl6KdhrNhR4tKPTOWw1dASbsP0WKM+UyFJ8STzI5gPO JbAtFD4b7LfCdHZLjBkW6F+r8bqbHokZxAx92ut0uFJTsaF52IhD0JbzpzfHcGJzWvUvECZe ehD4d81kydUEVSSv7+KmgOXuDFqdGOvJX6YSQeDxpizAWVlzun5JPzDhDdh34lInty6IZn1V KAvx3y562lvf3+4hjA11XL55ATvNf60NNMCOGFl8BQADTxjQSDYphnRtS5zXkIidDqzGxvvM jHoh8mMcg2w3TNflutqR+o4AXk2CZG0Q6W9XaoxV/Y5eDpTjMzDMRMwahDdAHC1kYmtNZglI pWwmOwrfNsfF/9tRW4w+KNewBhl0Kyr3Znu/UUlWZjXYwXb6IUhZAD/XlSDIwLEEvBmc0a+d FVfY/hDcttABKnhyizhBgu/DXsZAV4Iv6+eDlMhiTPuAIm30yQzCMjtb4idzk7hdAAoqJ/lp T525RT5c9zp/AtHNNA7Z86MK2K40z2MGbx2TGpUCPaPZBCHU7xgLjKx5hwzN2WWfUzvegPcd L6IRhliVI= X-IronPort-AV: E=Sophos;i="5.95,198,1661832000"; d="scan'208";a="85669466" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PbKTDR6ps1JcwFL/ihu0dhIjFZL/m/MUetodNn7mEeGkzx4MITqqBlipbLZi33s8ds6YNbhrINqqgIA43C11FdEnkM22LSH87ig283d4VyLZ71tW4CZgfhapx78IOE6QgFstXcEx9r7hIR7HkZFWx5p22Hfl8EUwmP3Ztq/Ij6IERFlgVVYwFIiYw9+PPBS55qBJZJijfgLyAnjzULoAUqmr0zU4hj2jXgVd8+I3Fjyldy/Ze1It4QZxawDSxnT8YCI6m8muantJVLrYxYsH/oUrjBSiIJoBSON3W2hv5CSmv83lbyfIHUH9Pb/nmBdWxYLn/pvncKS+rM0K2CdaGA== 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=978VHNm8HL9oE714Wo1de7N2hjymmg8SC4PEXMhjlqM=; b=WytDwgb09+7FH+9KS6eKm2RmTZEDXSaVqXwaXA6vl5B3Q58EW0h2jYQFss8/koCS9MhGp7QMgsxVJY77TLWGpuX/EGcX/SIyy+QhzbeDDtwnJKs6j/6YmvPqTrSYbNghRm5aCho+jke6goQmDwqcaqSy1y4k3hcAVIW/Yg/2fjVGMdTpxV/dB1P62s40Ax12Fw3DplSv9JpyOpEs0wrPJElrti2PcIiXDXp4eBpXm/tQ1ZiIQt7BcUYdYBuJuk1ZiUqVSxrrGBHR9kO+05VAARsYeQZAvrgtZOdRTyIaKqm41NVlOs71bFWvA3QSj15roSCaxleDj0DWqTICGjay2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=978VHNm8HL9oE714Wo1de7N2hjymmg8SC4PEXMhjlqM=; b=p6jYpCGjkYoZ8WKlZhMYiJM3u4h/x0VlVA0I8ASPoRnDibZDTPr+NNEYaSqqqjstwifdTsaJETkwrtGE8wdASHm2+JfNrD9zNGM9HNMUp2o+VpYTSSpd5TvWU1NhXKEHUdFXu2yKUSQbK47TVH7jFk9WZ+dpcGNyA/YtWblMjKc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne Subject: [PATCH for-4.17 6/6] vpci: refuse BAR writes only if the BAR is mapped Date: Thu, 20 Oct 2022 11:46:49 +0200 Message-Id: <20221020094649.28667-7-roger.pau@citrix.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221020094649.28667-1-roger.pau@citrix.com> References: <20221020094649.28667-1-roger.pau@citrix.com> X-ClientProxiedBy: LO4P123CA0115.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:192::12) To SJ0PR03MB6360.namprd03.prod.outlook.com (2603:10b6:a03:395::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6360:EE_|DM6PR03MB5003:EE_ X-MS-Office365-Filtering-Correlation-Id: 778ec23d-40d9-47cf-f873-08dab2801f6d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5y+vkFWCOT/9Gxr51dmne/8q3Ly+4u92aF6lTTBk36oKt8L0UKwHrmB/cRWLtCVYOuKp7YSRWfEogkeXtKGEdcbJle/Iz+lp3TzZeoctCB6ycitItSBLyOZ+B4RBfGwYwwGAaxabPbOIcRBVgCT/YABNsBX0JSkTcOLcbqCr+bZluv5qrD03leCghcVLHgsBD4Fp5TDBSPNMV37U7RSdeWBv6H9orDqzZZF2R+hTuUdJs/8Q9eneLbek3a1aVLPD0SZnQEoMgjgM2qL/Dr/E1KrygcytOLt0MFJV2a8vJeX7Dbt9ROJGQFNWA2/4knehKfKhjiOoabYaOHDgUC2MEqxWC43HjgNFJYhKlx/EifXqRYNxPm3+jp3gjU9ZCQEkpcTt/EugEykXR1LsmmczQ7uqkStJG+7I7WYo9xjyHF7BtIj8KlcOObB4b4bqlBCaIlntKZAtx0AMp6YvsUDh6SnLe5Fga1qmKdBU0qZif6J5LoCIJWRRV9v8b8lc39S0SPcfjOx5SFN+4JBq0H4/pe+PPQyPPZhtt/aB0J2ftZfntLjSIc+UGeRJ6Bs/70ZKOEfxgXRhseL0ExjE5IyxR9y1FWwaxynXi2wbvZBt9pbQrzi4W3MCffAjPEQ0ep0iRxAEl9aUIwHTAT54j8EAh/qteGw8nFs13rhEmc9DUqoTe0Pi+B82MVzZgKRF2wb+62iywc3e/grMaGjiVjaCdg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6360.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(396003)(136003)(366004)(376002)(39860400002)(451199015)(6666004)(41300700001)(6512007)(107886003)(8936002)(6506007)(6486002)(478600001)(4326008)(6916009)(8676002)(36756003)(186003)(86362001)(1076003)(66476007)(38100700002)(82960400001)(2616005)(26005)(83380400001)(316002)(66946007)(2906002)(5660300002)(66556008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?jVdedgmk9GCQ5/tol5gBjDOCtXYs?= =?utf-8?q?581H5J3R6qpHjuz3jrU2oWwrwoDVyl99Zil+obYIFL41BD8XgcNYMJsFn1cqXnzJa?= =?utf-8?q?PuoIKP6fIQ2GHrjfa4ltF5e9Z02Denabpj/CNXuHCNkP191RtIsnJ5ms5eJWml0N+?= =?utf-8?q?m9/OYoeaeAtIhfOdJStyYhfWwtVyPM5lZn+WgxWyX/uxQlaGi4mrdj0yuLtHjOlh2?= =?utf-8?q?PNUzbIQ/kzGeisQmPAlaVfLVTKBhRmXqUWBY7W/8NxdF5LQkX6XBLVF5RZdndgCaS?= =?utf-8?q?cKpO0NGNvE/JkSC0KsjmTA4j40ePFWLFd/HzoDdxlQnJQT349UlckT/xLqQykmeKQ?= =?utf-8?q?PTL+ssrgnG7lw1paThrqyKybMysEDfwu3hpGyvZnwErMUDBo+asUBPx0LkLqzu5yO?= =?utf-8?q?Rde/k9NEU/S+Nw66IGWUdsMlGtsrVxCS9FSgbRd1MwUZWmPS4PtAHp8FQUs4ttm7t?= =?utf-8?q?pyAfV813rByU2FEk6rhIAYQY/Yz2Se86VSuklPec6mpkcqVE95o3krp4wkQDZbebH?= =?utf-8?q?akj+tnxWR5Z1uYhIFKZypiSHbJOtIKZp3gCd1xCx9f+y3lQMJi51NPJvnWfAXTsom?= =?utf-8?q?I1JXUeFxv21AEVTdEFFLmxJg4SBo66faFD2QhTxRaqOkZW+eWs7vAddHD3TEdTL+l?= =?utf-8?q?BypPoJnwazeCLMSFZcZIXOXxTPdH2sILKSnzILG5RftUwWGMNLaimscA38EzZQPBw?= =?utf-8?q?MOZv06dx2wlpv/Y9nvI5zTGbWes+ITs9lydTgZXQb5gj/TekOu2+kUOnAc2Tdfhq2?= =?utf-8?q?FemLwBv4nOtJdjn/drvxaLUDpVZSWeWBn33PdIx0YIjMdEU6o2RROXXadi5KnViLA?= =?utf-8?q?IpO7mQ/PGTGHnebCjjANN+cz1hmJrUjhVXVAJn864yGRmdOCETGvdrDw847vhO6V4?= =?utf-8?q?WVIdCEjH9ngAvlqf9yPTg/PThJIxJglSQaA2T995/Sl02PhOqelKycQ6KZ7KmxBhB?= =?utf-8?q?OqgXNZ0np7ObO/+ssi+CbP2VT/vj1d6C2oHBL6DQqSxaxP/40fBKweMRTXJl9ZOBw?= =?utf-8?q?Vgdh9JHrC01RG0J9rGuQLfw+TJUun2l6/9c4MGZOKAYZe5SqpltMjPn1lZpZ5ZvRJ?= =?utf-8?q?H2AqZpvvXEgTtmXDNs2WlAIvw+YLHKq+S16EAezYXJG4zFpX38Bs2NY2TQUCKPqyu?= =?utf-8?q?fGOJIb0bJSmmXf9xrUNKhmEX/6TLtgJnrsgjOoZ3LdNs4FcAhdhIhIPCx0Z2c0idW?= =?utf-8?q?WjfRo1HQMr5m25zH9NYF5vvQskCKEK5OSCusisllXTdR3OP/5fbmVWMfYHpYeAZTf?= =?utf-8?q?M8E6oqN3b3Qv3f5yDz22yyaQargDiJa+jJ5IZLb57BzvmpzaGOW7LVoZMoopWelki?= =?utf-8?q?WypKAXwWNzGfoz256bT6dLHixOBkGyxAtjcSVHA/8j9w6JW+gPWQ3DoxfbAYppqvF?= =?utf-8?q?B6ccFQ9K8CUq4fKHw7B/BqR+5hHfWQ5jJXVJK5zDWz53a+cJQgj7bw7XM3B69NuWX?= =?utf-8?q?LWvzwF6Bd8sRPG612f8W93fd/jXlaKLa5bti5Hj62M7oYm7KoeJ33q6/x0tbzT372?= =?utf-8?q?+KGkqXMRaz2U?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 778ec23d-40d9-47cf-f873-08dab2801f6d X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6360.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2022 09:47:38.1548 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: g780mqa9nZWzkJC/j/dTr0mxyGd9O5vTTS1ETmOuskuS+SLJxUIDgwlSC3cfQC9NCZ14Crb2OXNW7rHjqUD9RQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5003 Writes to the BARs are ignored if memory decoding is enabled for the device, and the same happen with ROM BARs if the write is an attempt to change the position of the BAR without disabling it first. The reason of ignoring such writes is a limitation in Xen, as it would need to unmap the BAR, change the address, and remap the BAR at the new position, which the current logic doesn't support. Some devices however seem to have the memory decoding bit hardcoded to enabled, and attempts to disable it don't get reflected on the command register. This causes issues for well behaved guests that disable memory decoding and then try to size the BARs, as vPCI will think memory decoding is still enabled and ignore the write. Since vPCI doesn't explicitly care about whether the memory decoding bit is disabled as long as the BAR is not mapped in the guest p2m use the information in the vpci_bar to check whether the BAR is mapped, and refuse writes only based on that information. Signed-off-by: Roger Pau Monné --- xen/drivers/vpci/header.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index 4d7f8f4a30..4b39737b76 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -388,7 +388,7 @@ static void cf_check bar_write( else val &= PCI_BASE_ADDRESS_MEM_MASK; - if ( pci_conf_read16(pdev->sbdf, PCI_COMMAND) & PCI_COMMAND_MEMORY ) + if ( bar->enabled ) { /* If the value written is the current one avoid printing a warning. */ if ( val != (uint32_t)(bar->addr >> (hi ? 32 : 0)) ) @@ -425,7 +425,7 @@ static void cf_check rom_write( uint16_t cmd = pci_conf_read16(pdev->sbdf, PCI_COMMAND); bool new_enabled = val & PCI_ROM_ADDRESS_ENABLE; - if ( (cmd & PCI_COMMAND_MEMORY) && header->rom_enabled && new_enabled ) + if ( rom->enabled && new_enabled ) { gprintk(XENLOG_WARNING, "%pp: ignored ROM BAR write with memory decoding enabled\n",