From patchwork Tue Jun 29 12:53:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12349817 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05A1CC11F66 for ; Tue, 29 Jun 2021 12:54:13 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id AE84C61DE3 for ; Tue, 29 Jun 2021 12:54:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AE84C61DE3 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.148030.273381 (Exim 4.92) (envelope-from ) id 1lyDFe-00028f-8R; Tue, 29 Jun 2021 12:54:06 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 148030.273381; Tue, 29 Jun 2021 12:54:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lyDFe-00028Y-5Q; Tue, 29 Jun 2021 12:54:06 +0000 Received: by outflank-mailman (input) for mailman id 148030; Tue, 29 Jun 2021 12:54:04 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lyDFc-00028L-DS for xen-devel@lists.xenproject.org; Tue, 29 Jun 2021 12:54:04 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.111.102]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id ef57f87d-8817-4ae0-9ca9-c9824f20a7c9; Tue, 29 Jun 2021 12:54:03 +0000 (UTC) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2059.outbound.protection.outlook.com [104.47.13.59]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-8-lOfWBJs9Ni2Afeco7YpR7g-1; Tue, 29 Jun 2021 14:54:01 +0200 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB6173.eurprd04.prod.outlook.com (2603:10a6:803:ff::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18; Tue, 29 Jun 2021 12:53:59 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::99d3:99cd:8adf:3eea]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::99d3:99cd:8adf:3eea%5]) with mapi id 15.20.4264.026; Tue, 29 Jun 2021 12:53:58 +0000 Received: from [10.156.60.236] (37.24.206.209) by PR3P193CA0030.EURP193.PROD.OUTLOOK.COM (2603:10a6:102:50::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18 via Frontend Transport; Tue, 29 Jun 2021 12:53:58 +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: ef57f87d-8817-4ae0-9ca9-c9824f20a7c9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1624971242; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=T+KmuULkjATHsJkpBCbdQw5XA9fzShGhY+AfPy7XXqk=; b=GW0mdIl42Rn67IlRdwV7lkkiFIWbK2LmZEnb+xtXNSmAN8mJlUIq7Iu99uiowt8kbLC5yo j94W4UjzXBKZeWD9uneUmOEqMECjuvYm1GAMutyvYQn6J04Vu5tVYCYFlYF6AhGE9xZ7RG OMivXR8izP/MT7lTFWy9hSrcNtLOVLs= X-MC-Unique: lOfWBJs9Ni2Afeco7YpR7g-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fJp63VXxr6xepdm84a+yyqUxl7uPfYouhqPTE4A9msOjGJWuFo8OAgwuqbSDVazY4hHCx7czaZnmUFuds56khZH3X9ai8Ik01cuOwRy+vvWd0vDdnVCD5i3mGbv62WeGRk+HVMJNydaqfTLa9dG/7PZYTGRKg1nOhz93dDoV698LFTlahapQDfxtNysYBNumTw2aNmPe+csO7E3qdwYedV1XzY16X1qYavC/8rYhb2RE08pl77G8Z4xYwJeZAoRk2J6Y4XoNFZG8L2a4YM7PCOjJ6umo6D2rPuv3MyuqpxvElpFQC4KTr0FLrPoKuHcS4sBkabSXdMbqZwtSZcHt4A== 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-SenderADCheck; bh=T+KmuULkjATHsJkpBCbdQw5XA9fzShGhY+AfPy7XXqk=; b=TKUCEGsCho7705fA+y8Wl7Yj85Jz134ObhNFPuu7RiflzwAVA35hzpB8oh9KLNaS2WHoGo/tC+6sxokpX/r3Z+PxzWWG06GuwOtye++TXoukpqAARRVsFd9Yas7i1bfAyyDKelP3d3rIDo8/cFJ3d8KgRlqy+Mc3CmUMfC1UAsVa/kXv/gzfOSFNZ3+PSYE0IXLw8pfaGTgXnJD+dAV7tXDrNZOyf1hpYVQDQ3c2z3ZOyINBYmEGxlYwj+j2sSPy3er0tkgzljYgOH0geGqMLOyPxV7im3+liNyXuZ9fBSyy3IucyAmyQlxcsPR+ty49ZrD9z0JqJs2I7AIrrhcQCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: citrix.com; dkim=none (message not signed) header.d=none;citrix.com; dmarc=none action=none header.from=suse.com; Subject: [PATCH 1/2] x86/mem-sharing: ensure consistent lock order in get_two_gfns() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Tamas K Lengyel , Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: Message-ID: <932211b2-c3aa-17f6-9fed-ca762e189786@suse.com> Date: Tue, 29 Jun 2021 14:53:57 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 In-Reply-To: Content-Language: en-US X-Originating-IP: [37.24.206.209] X-ClientProxiedBy: PR3P193CA0030.EURP193.PROD.OUTLOOK.COM (2603:10a6:102:50::35) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e2559226-2be0-4a85-649e-08d93afcf64d X-MS-TrafficTypeDiagnostic: VI1PR04MB6173: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3968; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: P8VcGnUHIYnv+6pewCXD/0Z7cxBpynvDmlpqY/4743HLzqHJTUt44pIe108Bi8379xR+ytNB9xcgmApFk4t/XwVwnQuZOaoGUWiXXyREXkK51wcWEHj4wZ5c7NaG3hFcjMBzgfpU45IbwRtmEhkcOiUpdnt3O5ICC702i3qxXrx7FAz1fgj1bvECF2rn89prOWgxQUxCE7yZzBxLJuQ42Q9nAPJnGQlrX8tWLpyYFt5qkWPmqMjYGnzzuOgUG5otd6bgmtYr2PUtkRsVJQaPTbyyP8rz1SsOJar2+GTb+juYmMziUSexXu16bEq88rTqZ1nldiLiD7yaK8Vt8RttHiSCj90oe/qwrPlRNBxyMfpcO61KeEfoUw0IWNGycUBmSm2lbltRYtvfarIoaUNjbcjZuEpC/DUrL4IYVWkotclrWieKFj1i4X33zLL1bAzSO+VyDe5w6dXrqPI3x7gas2zyLQn699I1GZ+XQ1zSoYlGYdWX/HSdHl8+GedN48CZvx1hNQ4m4OBzGXJeku3vw7Js/kNBUO+uaxViMv2GQxLLkRhS536mbs/EZTr9bqJjNCP0IWxgO5nFD4RzOaQtkILsH+eqpe1lGA3NXFqP7ozm31KNkF9m6dpxIBTd7iUMQqV1B4EikwRRIVVfQAKbRVr2wtMLfhqijt8G+PrboxIBssDMrChwY2Rhvfn4skUgkO4RqKHlmxRb8HRnv96Jvqxcm+AZmRwYr8KImgpjF8M= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(39850400004)(136003)(366004)(396003)(376002)(346002)(6916009)(478600001)(5660300002)(66476007)(66946007)(956004)(4744005)(66556008)(8936002)(8676002)(2616005)(31696002)(86362001)(38100700002)(4326008)(186003)(16576012)(316002)(6486002)(54906003)(26005)(2906002)(83380400001)(36756003)(16526019)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?ZcPgwgDRPCKfwfA4CMESrX9i22k7?= =?utf-8?q?pcwiE3GG5Gp+iXESCLQVNSeWhpVvcAHRbpunJnrs/XertXFdfiNqOk8FRfB6S9DG9?= =?utf-8?q?4SSJg4VcDgYsIt30leHJLpiXhPfF552+2QYcdjS+XtR90ywy2IGwHm0156u/Uw1jG?= =?utf-8?q?jOWpz/JmuxHSBZSWYLgDO/TITMrPzRz0R8sG7WPWuFfL7P8fKgwMaEq0Qmdz/WdU7?= =?utf-8?q?xGnyODxxChtHotozfSN02JGstpwMjg70y9t+gg1MQu+dIjEaOybr5+UD7ash36oMA?= =?utf-8?q?UJrDoI/+b1uTQ2L+yvVJSx6wI27D/TYpn/IfFdKQ/41fpcJzBLY2RMeIimtxTYNYQ?= =?utf-8?q?5ts76SqfwUDui6GUg1wNIxsVZL3SPmgtTSCmY5ekcIdYLU80TVR93nxjEFVVxOed4?= =?utf-8?q?QVu9t0UQ44xoCtYAzqnRGGsyP3R/ddInkcx1/bzB16Xeh4aaUC8r5s6WYdsI7aCQI?= =?utf-8?q?fD0yu7/zS3ssSzzgxIvpoBzsShh5sXrbVOYVJh/HH1+rCz+DPbHXWoaYUejzVN37y?= =?utf-8?q?Nc6IhL/CCgBrWVoVuBJprEJ/HqgHoV1gNx233ON/6L5gOb+VtVhyGGXl4ECJ2+WXz?= =?utf-8?q?A4QBlmkE01VSIFSfffFvs/WFKHFltvjfx1epVzCnB+6W2keLzIoZjybDf2xx0L5mB?= =?utf-8?q?3lDjHsQn943m0xit/djVc3odkE4L5394Zu1qrAGD1mJQHHFRSp9071b8mmyWdAA5l?= =?utf-8?q?uG3oxoMB0vp2oRyBqnWkcm3/9TqPfsNh99xfSRL+8LhpmVduz1Wxf/EnXeKzlSbvB?= =?utf-8?q?ElOshAGDsa6y7hPf9Ph2AOVtgAIug7VT5KqK6xmXnYrjv3YS8AeFCyGLDpviWdVyD?= =?utf-8?q?WZ3cxaj+tT9iVo+3pstc76/zMhXAxurJXU3YN8ko3bW+FLU5HmCRlF5q9g8cpApOT?= =?utf-8?q?JZ6LoM2YG5RTGTeS4OQF/2upgs5Qih9sCpSNEwe0Ft3Q15jSHz9tIEbADUdHlPr2b?= =?utf-8?q?dFb8GH7i4o0BZ959Dm7IqRNx2XgFfY5gVP+tqrW3mXK52mw4X9hm23ekaulMdaNX3?= =?utf-8?q?4vg3td4FOTZYCb/mCkBlpLLEghQA7ddsDBzEKTL9KWr2pqVKnEpnhqJ7bEzyw4/xG?= =?utf-8?q?PtmqIiq4C3h+g68iYmV9cGxoXJecZ9q1DebhqiAI1AiYNqYuzXmdUH78Ks2Ew1H4y?= =?utf-8?q?5XtG7Ss1CeyovUYT4W/tUvCJ3U1qG0hMLSArGu6X85fLecJA042bSeuZCdt0++75i?= =?utf-8?q?mf/D3Uh05DpMAoMc76hET2McUBnGOS7NHE+bKLy/X6kO9HFYO9qIVuIQ0Mn1+O9iy?= =?utf-8?q?u9O7ru71DW/u7GfE?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2559226-2be0-4a85-649e-08d93afcf64d X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2021 12:53:58.9062 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 551Q3KUvvOJr8Smxpnd6k7c407l4Ox9Sph4ylRooHd+S+HvqT3RJwNOGAPvkKjvX232TX8OWCDYhksEaOVZbbg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6173 While the comment validly says "Sort by domain, if same domain by gfn", the implementation also included equal domain IDs in the first part of the check, thus rending the second part entirely dead and leaving deadlock potential when there's only a single domain involved. Signed-off-by: Jan Beulich Acked-by: Tamas K Lengyel --- a/xen/include/asm-x86/p2m.h +++ b/xen/include/asm-x86/p2m.h @@ -587,7 +587,7 @@ do { dest ## _t = (source ## t) ?: &scratch_t; \ } while (0) - if ( (rd->domain_id <= ld->domain_id) || + if ( (rd->domain_id < ld->domain_id) || ((rd == ld) && (gfn_x(rgfn) <= gfn_x(lgfn))) ) { assign_pointers(first, r); From patchwork Tue Jun 29 12:54:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12349819 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8191CC11F68 for ; Tue, 29 Jun 2021 12:54:44 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 274CA61D1C for ; Tue, 29 Jun 2021 12:54:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 274CA61D1C Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.148033.273393 (Exim 4.92) (envelope-from ) id 1lyDG8-0002lK-Lp; Tue, 29 Jun 2021 12:54:36 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 148033.273393; Tue, 29 Jun 2021 12:54:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lyDG8-0002lD-Ij; Tue, 29 Jun 2021 12:54:36 +0000 Received: by outflank-mailman (input) for mailman id 148033; Tue, 29 Jun 2021 12:54:36 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lyDG7-0002l7-Vu for xen-devel@lists.xenproject.org; Tue, 29 Jun 2021 12:54:36 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.109.102]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 2c52841f-d7e6-46cc-9007-af3e1e348d48; Tue, 29 Jun 2021 12:54:35 +0000 (UTC) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2173.outbound.protection.outlook.com [104.47.17.173]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-13-wV90MzgDNd6tK67nmVbnFQ-1; Tue, 29 Jun 2021 14:54:32 +0200 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB6173.eurprd04.prod.outlook.com (2603:10a6:803:ff::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18; Tue, 29 Jun 2021 12:54:31 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::99d3:99cd:8adf:3eea]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::99d3:99cd:8adf:3eea%5]) with mapi id 15.20.4264.026; Tue, 29 Jun 2021 12:54:31 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM3PR07CA0148.eurprd07.prod.outlook.com (2603:10a6:207:8::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.12 via Frontend Transport; Tue, 29 Jun 2021 12:54:31 +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: 2c52841f-d7e6-46cc-9007-af3e1e348d48 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1624971274; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+kokP/tuDkyLODI5tQsnPxes6fbGBAjcWgNA4ZJ5vuU=; b=T/ryBV1FU9uX4mGQiug/YPFntSOCAppTzOJCdArRz2ALD7bmILfzUQ1KT3cD+vJ32kCh1p UQZ43ZKn54tYK/sBx1KlzNCFo88Tc/Qq2e4pFtql7Hx+Iiaj7VgvKMiOVfnTleJ0llLkhE tmrYTudePMyA2jE/31HBQ9hnZv4RsRg= X-MC-Unique: wV90MzgDNd6tK67nmVbnFQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eo9pFtuEFG5Qkayi4jocKmijweQyc7U/+ULZ2VjDYtGIBExF6KR5NqPbrIq03kx4hcfFGnZmYbExOFP2UYZnKEs33V2m0I+Lh+QukU03kAg96wa3NW3AJDDRJS16UOXgfQxn4E/Xr+eqIKTRU1fflMUYSwoU5BgbmqF5536cMxudfqE7VpEl4P2baFXzbQs6jtqQB5x6ZPSoOVfvqKA4lbNVBVbFERH/eykIzxZ/JaIxfss9ypd5YKioIqdIjx87xnbzLECFJKS7AQ9msT2OSKCJMozVDe7iteXNW0YoCmIx17cgLqJ7P1BKhzap6es/hivcIeFOWB8vLvpsle5CSA== 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-SenderADCheck; bh=+kokP/tuDkyLODI5tQsnPxes6fbGBAjcWgNA4ZJ5vuU=; b=Boq3w/EWTVPbbie0DBFeAwXXKqtI8Svi9rtf9JQIDEUiLH9MLTZuPZ4p/N4pteHr7JMt50DzCE+knBGf38mudE91XaYmbYufTf853UDK5YPRtP8qF6j+NqlrO6dE3aoJ0ZS9n/7XBD/J3HZ7oH86mi/ql61MEmgfezBliq6DBAqSrcQd/Z5SneWELsNzspGCWp3wCyDJVUzVLvKgq9cRLZKBkbABPuiDY+ZSfjs1d+41HRPEvj4zzV48ziYNn2CXV6kZXk1u5kGIgaehLoTlE91MwEWNeixPjVPYPI+FghZT9lcv5SPcLANd7pGXRrv2335jcfP3wOZr5yd0N4r9Rw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: citrix.com; dkim=none (message not signed) header.d=none;citrix.com; dmarc=none action=none header.from=suse.com; Subject: [PATCH 2/2] x86/mem-sharing: mov {get,put}_two_gfns() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Tamas K Lengyel , Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: Message-ID: <6f4c081d-732d-87c0-2ad9-0aafea1ad927@suse.com> Date: Tue, 29 Jun 2021 14:54:30 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 In-Reply-To: Content-Language: en-US X-Originating-IP: [37.24.206.209] X-ClientProxiedBy: AM3PR07CA0148.eurprd07.prod.outlook.com (2603:10a6:207:8::34) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e76bf4ee-f027-440f-4e05-08d93afd09f0 X-MS-TrafficTypeDiagnostic: VI1PR04MB6173: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4vUTuA9KLImDiM7GrQY6rg7gxz4UJDGBEhwUoTrruwg7i+IisFTFX/AagiMlc72aBb1QXlagUIZiNLcuM7vR54687mvmc95bpbX4EGzoZUaUWjchdx18h+ML11BMIjQoPNEpW5jYv7jIsBw642zgE4KQXNS1pbk1Bf/XWmYQf0Ysqzqc6D+h1P77FRwJzggAvPpqq1Dfh5e6WxzsFskHHBDMoSGctG9p1W7utXWvvf61kmjRK663j4XGaAzFljTi0I5DwCfw6MdvXvsMpOPX6sevFqj0Pjg4D0/JiUIzgvHYD4VW8aMVjYwI7cQ0MvJmVdctXi3WuQAlC6bgvA0gMdsq807QqMBcZt4NAdS30tKlhftrYrB0aqnsXhhNSF8ZjIimP0iUTsefNIKS26xZk3XgfwJKE2A50lU6toOKyd6wI3JZMbuHb2OZAKe564jt+ir57VXLybmNDOqxXlp6GVnHVK7Kao/Y1HlLkRODCs7T91pimsqlpyQVyk5rJSi1UessEinrgXh03eh/zNzzVEjOlT7lV3d7glq2JDdlwOlBhzRLYXNIdELyXEsX4/Lkxm/m5roB8+WZzaUR/t7088KTHETSDNvnke/j1dIUZiYpSGW4JOOjYkMcaK0+s8P8lBMYShg/SlRW+MHpi/O+dUNHyOZVbdSRfRzGS6/gbVkc5cJSMSsn1+6AR2eA98WccYvcAl+/3T6nygNASNUqPaTr2TNa54zRWV7SELhUCHM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(39850400004)(136003)(366004)(396003)(376002)(346002)(6916009)(478600001)(5660300002)(66476007)(66946007)(956004)(66556008)(8936002)(8676002)(2616005)(31696002)(86362001)(38100700002)(4326008)(186003)(16576012)(316002)(6486002)(54906003)(26005)(2906002)(83380400001)(36756003)(16526019)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?6XrC5Zhdzb6G+RdmNOvwRgsfiHhT?= =?utf-8?q?EHJJAM8/5YEHgwL0Ln8J82EltEJX3kERq+ahLAWMFgsY8t5sjFDFxgKnp4vvCS0wG?= =?utf-8?q?UV9D4WTA8vfsAW8ziC/ZCyd/wITCDZVxD4Fto/b2E1kkLVYXPZ2aI9e/Xn5vSTYzB?= =?utf-8?q?jlHHQgPenRoQUK6eBPhm3u4SC/jJ8FCkbOeZm50Li3W5NrsCzuueyvhuZswjF0yIS?= =?utf-8?q?t1Wa0F67xv5SSk8sqOeG8SpqvXPmwXgSYwNzjaVUyCPd2NAcsZf+BgqDrInJlWKC8?= =?utf-8?q?mAimaTcIyk3WSPKJZxYMwzC6w53NsEhGW85Xb/w1kbNw81HGbU2WGqg4bPHRGDfj9?= =?utf-8?q?vNwThZ8mmTTcjwIqeum4zK599qPmDbCeNlyKplrXS2AnyzyKd17e0m23bouxZ2I4x?= =?utf-8?q?Xc1hmAhPt49oeGh8nwNmTTUpM0tBAFD6QIaeEUSU6arZHdEP5l8DWoOkB6U4JlG2J?= =?utf-8?q?xAeEeN20mU9IL7zwKXwGRWeZcqEO4dlCgozDEZGlpMtEakUKv4RBHdtneIsEZzlJv?= =?utf-8?q?/61Y+b0CZwjSAYhdEf8Pm8SuweMO0xNxMhHW57Kmd00DRaAn/KnribVYnnYfTocbb?= =?utf-8?q?7e4/1Se8OGcxmItni9hqT3UCRt8B3q0U2Uy1t5wdbeBs99N2hye2gh8T3YKgQ2BZm?= =?utf-8?q?qEmV5nEJ6FpvmTjbR2MT7rJ7CFrC818q2Czi+IKgvKc/vEqDNvFeFOH2DPpiJgm+S?= =?utf-8?q?X5Ppw1oj8/qbc4xpQZH8iedKxJuiEMuzjDzrIl/FXpXe+Z6xFbPJhwkFaLbmVrV/3?= =?utf-8?q?dtFCi44mSMVRtFNUOK0qhywhJEze2qk6M1OkU76RmcaItxrHZOr/O/08VLlpI3vbn?= =?utf-8?q?OeLw8mhYKl4dU2HUp3a2x+sh0z2hhr5dISgcBjQxGoS2gwBf+S0tRqQ5mZ9IKW4rE?= =?utf-8?q?FnST4d3KwtRgvNPzjD/zfioCzZUA7259CQuv2/+Lc07VsAndSP6i7VuxcrDqhWXxe?= =?utf-8?q?M46B76BklgzdP8J05Yk0lQE+QINaCOfNI5Ynl8ETSDrFLJ14XM/5UxpGU+/bndsG/?= =?utf-8?q?gVl2vDehe6qVS0la/DnrGkZz4+bTuLI4qJrlcOSfmXlnWLpMnDa2UodtHrd0hQfCm?= =?utf-8?q?ZRW+7zNZ3I0WdJ7iS28NSjAGiimwpnNUQJKVK/sw4EsE8wVjUoapsrTiLxbF40CeA?= =?utf-8?q?MmnsVmKQibWy6THR84qKk9zaAI8VTztNeqs095/TjzqqNuOD8q5vVoQrnMQ1ol4Ac?= =?utf-8?q?XNgMq10oW+zgABY+xANcMygyJwsTelJm042zrNN4vbZHq9QbjJvo0ToyThmG8lE0f?= =?utf-8?q?MzktLLpZ42cULMKg?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e76bf4ee-f027-440f-4e05-08d93afd09f0 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2021 12:54:31.8385 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IKxvF2MAqdrEX8dwJMWSmWkrsiw5USFrZ5+Ybo5lsV5QGsV5xK+EiJKaabV+U4DibmOWgh6g926vp29h/8TPYg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6173 There's no reason for every CU including p2m.h to have these two functions compiled, when they're both mem-sharing specific right now and for the foreseeable future. Largely just code movement, with some style tweaks, the inline-s dropped, and "put" being made consistent with "get" as to their NULL checking of the passed in pointer to struct two_gfns. Signed-off-by: Jan Beulich Acked-by: Tamas K Lengyel --- a/xen/arch/x86/mm/mem_sharing.c +++ b/xen/arch/x86/mm/mem_sharing.c @@ -432,6 +432,66 @@ static void mem_sharing_gfn_destroy(stru xfree(gfn_info); } +/* Deadlock-avoidance scheme when calling get_gfn on different gfn's */ +struct two_gfns { + struct domain *first_domain, *second_domain; + gfn_t first_gfn, second_gfn; +}; + +/* + * Returns mfn, type and access for potential caller consumption, but any + * of those can be NULL. + */ +static void get_two_gfns(struct domain *rd, gfn_t rgfn, p2m_type_t *rt, + p2m_access_t *ra, mfn_t *rmfn, + struct domain *ld, gfn_t lgfn, p2m_type_t *lt, + p2m_access_t *la, mfn_t *lmfn, + p2m_query_t q, struct two_gfns *rval, bool lock) +{ + mfn_t *first_mfn, *second_mfn, scratch_mfn; + p2m_access_t *first_a, *second_a, scratch_a; + p2m_type_t *first_t, *second_t, scratch_t; + + /* Sort by domain, if same domain by gfn */ + +#define assign_pointers(dest, source) \ +do { \ + rval-> dest ## _domain = source ## d; \ + rval-> dest ## _gfn = source ## gfn; \ + dest ## _mfn = (source ## mfn) ?: &scratch_mfn; \ + dest ## _a = (source ## a) ?: &scratch_a; \ + dest ## _t = (source ## t) ?: &scratch_t; \ +} while ( false ) + + if ( (rd->domain_id < ld->domain_id) || + ((rd == ld) && (gfn_x(rgfn) <= gfn_x(lgfn))) ) + { + assign_pointers(first, r); + assign_pointers(second, l); + } + else + { + assign_pointers(first, l); + assign_pointers(second, r); + } + +#undef assign_pointers + + /* Now do the gets. */ + *first_mfn = __get_gfn_type_access(p2m_get_hostp2m(rval->first_domain), + gfn_x(rval->first_gfn), first_t, + first_a, q, NULL, lock); + *second_mfn = __get_gfn_type_access(p2m_get_hostp2m(rval->second_domain), + gfn_x(rval->second_gfn), second_t, + second_a, q, NULL, lock); +} + +static void put_two_gfns(const struct two_gfns *arg) +{ + put_gfn(arg->second_domain, gfn_x(arg->second_gfn)); + put_gfn(arg->first_domain, gfn_x(arg->first_gfn)); +} + static struct page_info *mem_sharing_lookup(unsigned long mfn) { struct page_info *page; --- a/xen/include/asm-x86/p2m.h +++ b/xen/include/asm-x86/p2m.h @@ -559,62 +559,6 @@ int altp2m_get_effective_entry(struct p2 bool prepopulate); #endif -/* Deadlock-avoidance scheme when calling get_gfn on different gfn's */ -struct two_gfns { - struct domain *first_domain, *second_domain; - gfn_t first_gfn, second_gfn; -}; - -/* Returns mfn, type and access for potential caller consumption, but any - * of those can be NULL */ -static inline void get_two_gfns(struct domain *rd, gfn_t rgfn, - p2m_type_t *rt, p2m_access_t *ra, mfn_t *rmfn, struct domain *ld, - gfn_t lgfn, p2m_type_t *lt, p2m_access_t *la, mfn_t *lmfn, - p2m_query_t q, struct two_gfns *rval, bool lock) -{ - mfn_t *first_mfn, *second_mfn, scratch_mfn; - p2m_access_t *first_a, *second_a, scratch_a; - p2m_type_t *first_t, *second_t, scratch_t; - - /* Sort by domain, if same domain by gfn */ - -#define assign_pointers(dest, source) \ -do { \ - rval-> dest ## _domain = source ## d; \ - rval-> dest ## _gfn = source ## gfn; \ - dest ## _mfn = (source ## mfn) ?: &scratch_mfn; \ - dest ## _a = (source ## a) ?: &scratch_a; \ - dest ## _t = (source ## t) ?: &scratch_t; \ -} while (0) - - if ( (rd->domain_id < ld->domain_id) || - ((rd == ld) && (gfn_x(rgfn) <= gfn_x(lgfn))) ) - { - assign_pointers(first, r); - assign_pointers(second, l); - } else { - assign_pointers(first, l); - assign_pointers(second, r); - } - -#undef assign_pointers - - /* Now do the gets */ - *first_mfn = __get_gfn_type_access(p2m_get_hostp2m(rval->first_domain), - gfn_x(rval->first_gfn), first_t, first_a, q, NULL, lock); - *second_mfn = __get_gfn_type_access(p2m_get_hostp2m(rval->second_domain), - gfn_x(rval->second_gfn), second_t, second_a, q, NULL, lock); -} - -static inline void put_two_gfns(struct two_gfns *arg) -{ - if ( !arg ) - return; - - put_gfn(arg->second_domain, gfn_x(arg->second_gfn)); - put_gfn(arg->first_domain, gfn_x(arg->first_gfn)); -} - /* Init the datastructures for later use by the p2m code */ int p2m_init(struct domain *d);