From patchwork Wed Dec 1 11:01:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12649737 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 95B1BC433F5 for ; Wed, 1 Dec 2021 11:01:46 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.235878.409140 (Exim 4.92) (envelope-from ) id 1msNMg-00052O-Hf; Wed, 01 Dec 2021 11:01:30 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 235878.409140; Wed, 01 Dec 2021 11:01:30 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1msNMg-00052H-EM; Wed, 01 Dec 2021 11:01:30 +0000 Received: by outflank-mailman (input) for mailman id 235878; Wed, 01 Dec 2021 11:01:29 +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 1msNMf-000520-FP for xen-devel@lists.xenproject.org; Wed, 01 Dec 2021 11:01:29 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 087a4eff-5296-11ec-976b-d102b41d0961; Wed, 01 Dec 2021 12:01:28 +0100 (CET) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-am5eur03lp2056.outbound.protection.outlook.com [104.47.8.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-1-jjKr47zZMxaB6a3ZKhyu7w-1; Wed, 01 Dec 2021 12:01:27 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB5743.eurprd04.prod.outlook.com (2603:10a6:803:e0::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.23; Wed, 1 Dec 2021 11:01:26 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe%5]) with mapi id 15.20.4734.024; Wed, 1 Dec 2021 11:01:25 +0000 Received: from [10.156.60.236] (37.24.206.209) by AS9PR06CA0161.eurprd06.prod.outlook.com (2603:10a6:20b:45c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.22 via Frontend Transport; Wed, 1 Dec 2021 11:01:25 +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: 087a4eff-5296-11ec-976b-d102b41d0961 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1638356488; 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=3SD4EFe90Lggs8cQz5yURwjH248lNbQoaGblSbtee8k=; b=b/xpd3n0DIpsq7kdTe9xgrVlb5sDA8DKIbdrN/BD4g2J4tXf9He/HyHqsKbu91EmU+ZnqO hYNhPBy40P2OoLALsNL1PeW0k+CGUW5kLepSDM/DEU1u/8u6ScqPFN0O9MWAP5sPICSbZ9 Lta2f85g68rCmKXv59uv+Yme+sjURFw= X-MC-Unique: jjKr47zZMxaB6a3ZKhyu7w-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=efPgwyBHy4QT1c/YMgeoASqJwVCwm2KWUILRJIma8NK2H4k+BoJWD5sKr1U5Y7sXvc7AQkKy0gjLL97C+Y6/bJWdEJpBzapg8ABNLRZQHdsRAGJew0YYBUyoeBVO4aGM3bZIZISkgN91IsbGKROy7B3MKyzlzpaK9bF6DjSLZBNb4YP2w3oGMSo3/XXn6apzMbnMOwWb5bJ4xxrLVPPK7BkgZYPm/pGqXltSOlc5JCqCTNXI4QLlzZ3n2BtCE/C+zJGcOjIwNpYaAjYalTIh+gFcXIvjeHhfP8/jYnx4buBv+pniUHsSFoD/QvW5B0eu+ObiUpiBu7N/YzUa1VBUpw== 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=3SD4EFe90Lggs8cQz5yURwjH248lNbQoaGblSbtee8k=; b=GJPGSH7l4a/D06JboL3XncY49JYhjUhC0g6xiVI89rIcKS2dhCsno4D2bfq2kfvNsBTJGTwUN+Ji8RuFMcZ1rFmRo9LOou2BRG5ELwmw8TsIQ4UF5btuYZlRdBn/chiYZ5qr1UJJMK9dTOYSFz/2erl0A06zXpfsyEum8RMtYSbUZB+Pjy1PkkmXnwrx5vT/9m0ZX+VXBRJIJFWoK4VwxZDTlGrCcvVbx8x5hvhayQ7PCxZOCxjgj2JjDNnI8aXS620HyuwS7czMci02p0qpx1xntLz0s7rN2QYO5KFTHUgeO/zITks8I6XPGNSsPi9SeTqIRQkXoCSqJmwo62WHWQ== 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: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Wed, 1 Dec 2021 12:01:24 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: [PATCH 1/2] x86/mm: don't open-code p2m_is_pod() Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= , George Dunlap , Kevin Tian , Jun Nakajima , Tim Deegan References: In-Reply-To: X-ClientProxiedBy: AS9PR06CA0161.eurprd06.prod.outlook.com (2603:10a6:20b:45c::11) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 63740cbd-078e-4d64-8644-08d9b4b9eb2c X-MS-TrafficTypeDiagnostic: VI1PR04MB5743: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:626; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sctOP0GClj1bhtYr4E4vKPV5WjgylqRk46Kf8+tQfcW4EI13mtiyuXCC7HtmgZ0jdMg5oVubJKK4+z01Sho7IeIAoMDh6AOkVZy0KzbFvdEnLBZnRuTbJCRIyIbTgFZI85PAyQzhT7lEEeIt3dqWJfDLvpHQF9itRblsJnjH3WPwqsMiJGZct071I2dLmk2s0Esl+XRMHT9elQTh1A3LSfh9L9EXyfW6WckDfVIN/I9SAEI7ugjQ515iXulLc5uLCuR8ynbZ+Gw8ofra99tlegH2gkOFEaNvBMz1nsMk+TsGiwQwcbw4McHd4pwFhTFe7HCU+Bo4iv0JGksg6xu/MbUEXxX9dDneE5AZaWIE0NFMcKqbik1XHhbq0NxwNgGAk+J7TXgYrspBeThPkIpilolG7dhGG/euOLHlz89Xz/ajKkgnP7zG8/qxGp2npyZ9sQaYx4gD/Y1JmEYLszcqEqxlOzOGkJjhRyFOputcdNz7IgJBNfgjxgNj5WgJ1yzx/QVb1wYyhjjN6wqCzFfOTtpApTrB5KAoltCrZ4ZmH62j55ieCCBdorIbjhJ/UMT2BOECaDi6hkg0zzasb9m2dr96+eymn9a7W0cHugK9wlQqC7nj2Pzv1t56XlGsm72c5uKto982rqFv6AlDBeyJJWHECBcROCKWcwaUEKe2VTPuwDZ+e6gUI1Rr1nYhm2EfVyXBRs7J9bMTs3I/gD8PBvZV1MwvBlTDi3MvHKag5ikFdmv+fVz5ifISXLo2oFLJ6AR+q51/XXZaBbUjrEy+/j+11s5NXOeAa6SuPDhjqCU= 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:(366004)(2906002)(8936002)(16576012)(316002)(36756003)(6916009)(31686004)(66476007)(66946007)(83380400001)(38100700002)(31696002)(5660300002)(2616005)(956004)(54906003)(6486002)(186003)(86362001)(26005)(508600001)(4326008)(8676002)(66556008)(45980500001)(43740500002)(473944003)(414714003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?jk6yDPz47FNxmlh6+Nv3B8wB8Oq4?= =?utf-8?q?LbqxQ/sJu9AnP9wlJP5oLCOzIXzh2QciuGMTxn0rlbtuDKitMRtBjipEMhuErOXJ3?= =?utf-8?q?C5B0P0zlc9ffEP+YX2qFr6q3gDXmui3EIsPyF6kcARqlTUNXBr96ED9/TJ9a1TxS9?= =?utf-8?q?uZ8ARyGuI7x7/4O6Q/aBJNfV/kRWZhadBKG3S5J2zDSYTiziQc05bt+LAE6hrUQLK?= =?utf-8?q?PtX83WnKa9VxWtCZ+uuZJWEHj4h9wiIoynn+eFZYnZaJxDPMlvWxz7aIP55CLxSV2?= =?utf-8?q?n2yAy64fMOunQ0sUO1Jwt6dBgljvj+HppHgREDT5ljinymnaBYeyKzKqsNlT13XBb?= =?utf-8?q?/tU8LXbQqWKMTFlx/3YANztTZ/3jvJ0WJcvELBeFEVnVyN9t1zMblpF3eXjUxJPlp?= =?utf-8?q?ILbVZSu2qkcHblqBmeZ694eQ1iAmPJ6eI3QaYYQg2yI7YamcPTplQ7aQh45NKTH77?= =?utf-8?q?Jke5U/rDpo1zrJL5U6MPmFm+HibSkjTszSW03bkaIQzB9VafkSKS3gUFyFRXBReIL?= =?utf-8?q?4Rvp3VszkN6hLaBgoaR9VbK3U4d9pdwSqbizTvhvnuLecl6dvS9Mdb52Ktq+kmky4?= =?utf-8?q?96hBykoLLog38CorJsIPPLA3ZSDOiuLau9EcyJiNdfFJIKyuYpegr+9GDV3/je6uo?= =?utf-8?q?Q/JWUyXZFUjRqZuxvqcNBN4MMW2D85ru/p83Eh49cRdS3x92ECJFX+/qRHMWKtbwV?= =?utf-8?q?mo4huoA3iKNCoRTGfpYrz27MMUT145fz+hy7ex9FmO7yuneKdxJDxTIV2s9TKA/Ep?= =?utf-8?q?+FB1QoUfuiBb6IQPkQHC6eOvfPSIrnb6F59uZRfobpqboFyFUUzymkteDC4w50FxQ?= =?utf-8?q?4OoGH2Rq/pQCucZmpZHV1ZgjQGwyVC6lsClnbhHuZEWiRqCZRId+7j1AYDiNsbAcg?= =?utf-8?q?ost6ZaW1tD8CsIbRttj1LV2Le/06KycluDtdlwTA6dTWvlVEFWDrsdWVtAKaI8OPt?= =?utf-8?q?jSp8x/WySmn17gikg3tnEpKxoASvf5DWPsM43QqS6RAh+YTc6grXniVnjPYinVCjN?= =?utf-8?q?NvTPGI5JBECcnDoASOVcT7fKdPZijsyO9rEC12dugruGpsI+aGuyEZ6AgJA53U/3a?= =?utf-8?q?SNhVyG7usPBBXHguAUhheR6u2FhYtei319NdXXTajE5D4B3JdlUpf0rhGRuyn4JLG?= =?utf-8?q?0Xdwn/3DDfjI6/v3COOL+TQ4SXUCWqpqEqQzAfSPeQfrgzOSTSe5mx3aIgiThMEeL?= =?utf-8?q?HtDtIEiIzf15ElPVu8dQA4mXTVxeVp5MI5QPNWz0NE0Jw3wfJZMavLU8jRKOO2fM+?= =?utf-8?q?SN9ENbWqvEQJXS/0zdNjyPIyIGoyX+0N5+iAJNolqEKHZfm8fvcFAMc4EmijimQcb?= =?utf-8?q?bcbF45O/zWGM5cTXEUH2rJQDxByMVihOmthQ2EImXumU7l1YgeHpAje+Vg91FwwAi?= =?utf-8?q?md5mmJNWwRQwQfYhxbi8YUCfr1XDzFMXU2LYOBpnK3nolOWf2i1C+FVcK6X2b2hH+?= =?utf-8?q?ApGYc7d71+xOVXwyBI8lo5aCdsn/zNUrKY667dOVtkF8Xiump7E1JB8KapbiWHOx2?= =?utf-8?q?r3+rX2NZETViEllZHdAZuUq2zGG9D86YNL07SubK8sCtFFmBDBuqWaw=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 63740cbd-078e-4d64-8644-08d9b4b9eb2c X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2021 11:01:25.8308 (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: vDnjOLDiHA/MRvDC2mvPHe1EiUmSVQ1Si7tqVLl68a9ce7wBDeaRn07C5OmPJ+W9k69h6g8ny33TevS99wQGTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5743 Replace all comparisons against p2m_populate_on_demand (outside of switch() statements) with the designated predicate. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Acked-by: Tim Deegan --- a/xen/arch/x86/mm/p2m-ept.c +++ b/xen/arch/x86/mm/p2m-ept.c @@ -344,7 +344,7 @@ static int ept_next_level(struct p2m_dom { int rc; - if ( e.sa_p2mt == p2m_populate_on_demand ) + if ( p2m_is_pod(e.sa_p2mt) ) return GUEST_TABLE_POD_PAGE; if ( read_only ) @@ -1071,7 +1071,7 @@ static mfn_t ept_get_entry(struct p2m_do index = gfn_remainder >> (i * EPT_TABLE_ORDER); ept_entry = table + index; - if ( ept_entry->sa_p2mt == p2m_populate_on_demand ) + if ( p2m_is_pod(ept_entry->sa_p2mt) ) { if ( !(q & P2M_ALLOC) ) { @@ -1478,7 +1478,7 @@ static void ept_dump_p2m_table(unsigned ept_entry = table + (gfn_remainder >> order); if ( ret != GUEST_TABLE_MAP_FAILED && is_epte_valid(ept_entry) ) { - if ( ept_entry->sa_p2mt == p2m_populate_on_demand ) + if ( p2m_is_pod(ept_entry->sa_p2mt) ) printk("gfn: %13lx order: %2d PoD\n", gfn, order); else printk("gfn: %13lx order: %2d mfn: %13lx %c%c%c %c%c%c\n", --- a/xen/arch/x86/mm/p2m-pod.c +++ b/xen/arch/x86/mm/p2m-pod.c @@ -543,7 +543,7 @@ decrease_reservation(struct domain *d, g p2m->get_entry(p2m, gfn_add(gfn, i), &t, &a, 0, &cur_order, NULL); n = 1UL << min(order, cur_order); - if ( t == p2m_populate_on_demand ) + if ( p2m_is_pod(t) ) pod += n; else if ( p2m_is_ram(t) ) ram += n; @@ -618,7 +618,7 @@ decrease_reservation(struct domain *d, g if ( order < cur_order ) cur_order = order; n = 1UL << cur_order; - if ( t == p2m_populate_on_demand ) + if ( p2m_is_pod(t) ) { /* This shouldn't be able to fail */ if ( p2m_set_entry(p2m, gfn_add(gfn, i), INVALID_MFN, cur_order, @@ -1332,7 +1332,7 @@ mark_populate_on_demand(struct domain *d p2m->get_entry(p2m, gfn_add(gfn, i), &ot, &a, 0, &cur_order, NULL); n = 1UL << min(order, cur_order); - if ( ot == p2m_populate_on_demand ) + if ( p2m_is_pod(ot) ) { /* Count how many PoD entries we'll be replacing if successful */ pod_count += n; --- a/xen/arch/x86/mm/p2m-pt.c +++ b/xen/arch/x86/mm/p2m-pt.c @@ -841,7 +841,7 @@ pod_retry_l3: flags = l3e_get_flags(*l3e); if ( !(flags & _PAGE_PRESENT) ) { - if ( p2m_flags_to_type(flags) == p2m_populate_on_demand ) + if ( p2m_is_pod(p2m_flags_to_type(flags)) ) { if ( q & P2M_ALLOC ) { @@ -884,7 +884,7 @@ pod_retry_l2: if ( !(flags & _PAGE_PRESENT) ) { /* PoD: Try to populate a 2-meg chunk */ - if ( p2m_flags_to_type(flags) == p2m_populate_on_demand ) + if ( p2m_is_pod(p2m_flags_to_type(flags)) ) { if ( q & P2M_ALLOC ) { if ( p2m_pod_demand_populate(p2m, gfn_, PAGE_ORDER_2M) ) @@ -923,7 +923,7 @@ pod_retry_l1: if ( !(flags & _PAGE_PRESENT) && !p2m_is_paging(l1t) ) { /* PoD: Try to populate */ - if ( l1t == p2m_populate_on_demand ) + if ( p2m_is_pod(l1t) ) { if ( q & P2M_ALLOC ) { if ( p2m_pod_demand_populate(p2m, gfn_, PAGE_ORDER_4K) ) @@ -1094,8 +1094,7 @@ static long p2m_pt_audit_p2m(struct p2m_ if ( !(l2e_get_flags(l2e[i2]) & _PAGE_PRESENT) ) { if ( (l2e_get_flags(l2e[i2]) & _PAGE_PSE) - && ( p2m_flags_to_type(l2e_get_flags(l2e[i2])) - == p2m_populate_on_demand ) ) + && p2m_is_pod(p2m_flags_to_type(l2e_get_flags(l2e[i2]))) ) entry_count+=SUPERPAGE_PAGES; gfn += 1 << (L2_PAGETABLE_SHIFT - PAGE_SHIFT); continue; @@ -1132,7 +1131,7 @@ static long p2m_pt_audit_p2m(struct p2m_ type = p2m_flags_to_type(l1e_get_flags(l1e[i1])); if ( !(l1e_get_flags(l1e[i1]) & _PAGE_PRESENT) ) { - if ( type == p2m_populate_on_demand ) + if ( p2m_is_pod(type) ) entry_count++; continue; } --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -992,7 +992,7 @@ guest_physmap_add_entry(struct domain *d ASSERT(mfn_valid(omfn)); set_gpfn_from_mfn(mfn_x(omfn), INVALID_M2P_ENTRY); } - else if ( ot == p2m_populate_on_demand ) + else if ( p2m_is_pod(ot) ) { /* Count how man PoD entries we'll be replacing if successful */ pod_count++; --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -1476,7 +1476,7 @@ static int validate_gl4e(struct vcpu *v, mfn_t gl3mfn = get_gfn_query_unlocked(d, gfn_x(gl3gfn), &p2mt); if ( p2m_is_ram(p2mt) ) sl3mfn = get_shadow_status(d, gl3mfn, SH_type_l3_shadow); - else if ( p2mt != p2m_populate_on_demand ) + else if ( !p2m_is_pod(p2mt) ) result |= SHADOW_SET_ERROR; #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC ) @@ -1535,7 +1535,7 @@ static int validate_gl3e(struct vcpu *v, mfn_t gl2mfn = get_gfn_query_unlocked(d, gfn_x(gl2gfn), &p2mt); if ( p2m_is_ram(p2mt) ) sl2mfn = get_shadow_status(d, gl2mfn, SH_type_l2_shadow); - else if ( p2mt != p2m_populate_on_demand ) + else if ( !p2m_is_pod(p2mt) ) result |= SHADOW_SET_ERROR; #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC ) @@ -1586,7 +1586,7 @@ static int validate_gl2e(struct vcpu *v, mfn_t gl1mfn = get_gfn_query_unlocked(d, gfn_x(gl1gfn), &p2mt); if ( p2m_is_ram(p2mt) ) sl1mfn = get_shadow_status(d, gl1mfn, SH_type_l1_shadow); - else if ( p2mt != p2m_populate_on_demand ) + else if ( !p2m_is_pod(p2mt) ) result |= SHADOW_SET_ERROR; } } From patchwork Wed Dec 1 11:02:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12649739 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 949F8C433F5 for ; Wed, 1 Dec 2021 11:02:17 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.235882.409151 (Exim 4.92) (envelope-from ) id 1msNNI-0005aT-SS; Wed, 01 Dec 2021 11:02:08 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 235882.409151; Wed, 01 Dec 2021 11:02:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1msNNI-0005aK-OI; Wed, 01 Dec 2021 11:02:08 +0000 Received: by outflank-mailman (input) for mailman id 235882; Wed, 01 Dec 2021 11:02:07 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1msNNG-000517-RJ for xen-devel@lists.xenproject.org; Wed, 01 Dec 2021 11:02:07 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 92bfb4eb-5294-11ec-b945-1df2895da90e; Wed, 01 Dec 2021 11:51:01 +0100 (CET) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-am5eur03lp2059.outbound.protection.outlook.com [104.47.8.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-2-UvxS7umGOc2QSbh9K0jT4A-1; Wed, 01 Dec 2021 12:02:05 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB5743.eurprd04.prod.outlook.com (2603:10a6:803:e0::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.23; Wed, 1 Dec 2021 11:02:04 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe%5]) with mapi id 15.20.4734.024; Wed, 1 Dec 2021 11:02:04 +0000 Received: from [10.156.60.236] (37.24.206.209) by AS9PR06CA0176.eurprd06.prod.outlook.com (2603:10a6:20b:45c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.11 via Frontend Transport; Wed, 1 Dec 2021 11:02:03 +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: 92bfb4eb-5294-11ec-b945-1df2895da90e DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1638356525; 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=ivkhnbVo3ZCtO6SLZl0Vo9tL62ytjpIHAIb5DwwD2SU=; b=lqKO+gWfBDOP+FH+WfU8TKHNpTSlSdNcGhYOxHwtRVaw5xcc9uZIWz7Y3SJ1FEkWn5ga0g AQf78LCkwQDUdRlldQNv/1v0k+RuakNYWDcd43DChZMU0rZLXUUxiBHEmlgJG/WOv99Gm5 fjLbXihFf+dUU8kGCZd/G5kUBfC4dKM= X-MC-Unique: UvxS7umGOc2QSbh9K0jT4A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cpqTe3gdzd7o0uiY5ZdnN56bEskD5gwkMKpHARtNPmGMzx6QgPv8qCJzS4h5I8yEsc4R8S9wNuOZ9XnWYjuqkxl6mFEUKTDeEUyBOfIPBE1hQBKrKzj2Zx+Ape6Ha3XsqK3R8bByd//U23mPJK8FUoS7ZjXNeGQwbMRZZvZgWQds8oUwG2SBRh9LZnF5c0ofFe6PZ4Wtspva9tJdozN1zOu3caJHqKldby8Ts7PTxPpddEz0a1Gxst+H0xHQPBfg+RD8OtlXPtTDjrtwu3w0IxrPRHJN3XJk5MVlIwfG/Zs36H/lKP8rsHZ+e19KsHJd4i0YT4LUvKejhxdBELomjQ== 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=ivkhnbVo3ZCtO6SLZl0Vo9tL62ytjpIHAIb5DwwD2SU=; b=Zuyc23ovwhDkp2BkGyoRLyrwsVdX7ypqsBBcqcWXadTsmV7LVqnADQ/p9NmV4T1V0F8mWZ/V6f9RJopgyWfZ3gF7PcUR1+jnwDK2ogxzFbXXfFuS+eBhH08Jg3pQsrFQMIVDNUDPQUoqCXISeS+MjkIXYjIymujELKV3hePA9lu5Rrg56/E+ixU6CSqCc4UoXbjBQAa+0TWGzGcKgot4XrlUbuMdDGfVyYqRiOyhui052Poa7PD7+hduWJB46EehtC6cbEr4YKtG4DtQuUl2sAA54JiLtTxrztGPB6RF9SGUCTX/Ry5et/G3N+vrpLyJ/2T4DspmhpfCoj8tfgTDfw== 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: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Wed, 1 Dec 2021 12:02:02 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: [PATCH 2/2] x86/PoD: move increment of entry count Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= , George Dunlap References: In-Reply-To: X-ClientProxiedBy: AS9PR06CA0176.eurprd06.prod.outlook.com (2603:10a6:20b:45c::14) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d86fb32f-bcdf-4551-b1b1-08d9b4ba0200 X-MS-TrafficTypeDiagnostic: VI1PR04MB5743: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yZFGFSP4dr64oFGenfI1p9dKJ6IrHd81hFtyNjLrR3+heI9NpNWqOPA2Moxg+X+hexOWoZ/M1UUpow+C6Ur52wxU0IIjkq4PCnoM6+TNn25fvH4d632o4c+qfxdVWSFowjHsqOXxQi8v0+EvYU4OmhI4OwQaJm2N6UeMrOr0TWMbsV979PMmIhRQvvqi6MI0y6x7cbYt1v5k+VkaAsw0Z6Q9rUmVtj6IR0KPoZrTaNq2Q5mrDDU9tssKhmk1JmUyFb60E2F9D8ygQCk39E0MYLxYvTSmrWZiCkpWeMRYM4D4xqFfCscg7sIXamdJ1sCyEtDo/gey3g2yquUKpx08808k1wMnYnABzoAuks8+SLfepnfdPKK9/xFDdUm+nii5CJSXRmhI5P+jKUNNSfBKTkLR4DYeC4JdJLoNzXGGmEH1GNltjy35O1MJADJJAAXUb8ezVz+ysHXaMHbRQVvu5KJudP2M1Kr4qFRtuTgudBy+qIcH8BmK7+7Iqt91LSnDYbvuOYpuO8cUX3n44Ezt15K/k4IQCugxtxCtDVv8TxSGn8mUMQoFSrMOtdWwQkC2dzJxXB86rxkzo1QWgN0fKkATC/MfsucwP5TqUYMSwx+xTSSVQKB1y0rimSYv1R0Pp8rH0AMSW0hzcKLWfIxOA/VoJsnunyikd/+ilLRg0yEIW/NLrk/DU4JvAXreNpChgmXmN/2Y4oKcAOp4J5lLgPRNLDPJuaS6Gj0xRDQFVRM= 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:(366004)(2906002)(8936002)(16576012)(316002)(36756003)(6916009)(31686004)(66476007)(66946007)(83380400001)(38100700002)(31696002)(5660300002)(2616005)(956004)(54906003)(6486002)(186003)(86362001)(26005)(508600001)(4326008)(8676002)(66556008)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?dc1NdBA4mDLBrcPl5Ujwzb2jiZd3?= =?utf-8?q?C0ejXORlJ/tmrqEDgVC4MRbPwCgPaVyDYhFzwQg3Ly30nx+Dvx+a9HH+ROlLabYrz?= =?utf-8?q?F0Iec6m5Yzy1/JzUt6IBEJypME3RnqvwpfKFy1WbplmmW7unQGSxEHIbales0RkV4?= =?utf-8?q?d7qwdnWRmPEwUTWvdve5w+Gsxr/mKMK5hz7DwTTJ4GBna4a1DpSkd3VA13wcN2M/z?= =?utf-8?q?aZdH/rT5A6MUxqxh2aS5eYEiMcuNkEHNQZRn7o8Uk/mrYdz+MBYHQ1A59bLsdJZiY?= =?utf-8?q?1UPzNWhzTagGXoi8XL+u9QQwlbLGQtj4gbISMan/Re9Ba/k1x0CV98t6XK1ad2NxO?= =?utf-8?q?n48IEB/hETjIAXIiUFQtqwtfgXnncJbbteO2emRsaulH5xmVb92hG66+qZqqqRXc6?= =?utf-8?q?xOnPdwGpqBUqElmh0eVe3dDqqwtOOmRDBTpZBgqVpsnDhKupNNcP056ywgkYQBe3o?= =?utf-8?q?7K+I7X1hBS6WqJFFJOTbsWLZX/8VmK2D5CJP+d4YX5biBMsw1LwKxTGNM6BO6N8Jv?= =?utf-8?q?apCmu4zAkAUulNm0pg4UmrXE+ZDnNra5FfxhtyiycYEJHdNs1pFpvuAVRPTRjwsJD?= =?utf-8?q?cADbslQ3OWIjm7ANvHRZ52ys6QQ3H0aHgz/0l5QZtLu3zH8NBJ7pVbjhYnvTgZx3I?= =?utf-8?q?iJAH+B4XEGVngiLeX8641R8Ay2Uba7ayUrDJfaBhY2fjXpi/2pbODYc8Hwzwc36Dl?= =?utf-8?q?MWZfGYxb2fln8VZCIHWWHSrimTOJyaGco8iFsfaLKklr2UA7Lm35zkrbtqMxe/1Kl?= =?utf-8?q?u7rZMGNgMjwDql6OO5l1wttoiA9yv/NMCpMexLqYPmJAeR/lw+9qkDivqp1FIjrxM?= =?utf-8?q?XjVJ1urgs5s0UkMvhJUhOINohTkelv7YuJaAO3VaOVbTI0OBXpYR5JCbyf5T9ul5A?= =?utf-8?q?hEnXGSfz4GMC4sAoEmv3+DmzTjGp7+QoZK8jp1Ghfml1hi6c8YBZSZqRqBSKsK0IM?= =?utf-8?q?uAVcvf3/tv9FkUI+F/yBMag7Ox58CNOAjsky8afPGMjJIcynTWSgUorIRgKLQ+1B0?= =?utf-8?q?i6UfiqCTC3CgfIiP6IRtLj46ZEYPc6x22DkOfMECCFtCxZ1X8Hkfm88/sRW06DmE4?= =?utf-8?q?GepZ9/wRJCGNUNe+rJdo6Ycr6Ulg0zw/zntzdz1X5CoMWPpPex31EAgKl55I8X3BQ?= =?utf-8?q?ctQxDp+RSrLxNf/y7jCXhzmTpD/78jrIL6fmXamMAdHE9U+1X2HtrWyoybqtUgfIW?= =?utf-8?q?xPcDqVFY4WhqYGiyedGOWDVP34cZSe/2Bb+FhUd3GNBj7OmaFCPEhuSZuTO0Qb+9m?= =?utf-8?q?K8swMVdWppWSlMTbO7wsSTXIfChpzZhYTli6r7jRMSUl8sDJnrQd3BNuowOvD9Op1?= =?utf-8?q?W7Eb3mPS0L+JcJLS3dcaa9sg7IXrXOVxR4KxWPUfu3ojeUyJDYqMwMntWUokgS9PI?= =?utf-8?q?sZw1gnnQGh7CITE6ULIjdNi2DV+fgWvCGps6cnzflxgFjpm5SzmaldLj/ZrHnXMrp?= =?utf-8?q?2SAjeSjrW0AzctIjfNpfdm1BT+2D7mq20ysvEVkOUH0fZ7EsfvVbTbZd0BFXh0ydY?= =?utf-8?q?1lvSxTfXX1m1Gj/23LCeDWrlXOib8k8tjRE3K2/QY6Ep1UcufiJbDho=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d86fb32f-bcdf-4551-b1b1-08d9b4ba0200 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2021 11:02:04.1151 (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: uGPST0ygLERJYiuaYAd9+uo4laZ0hLvPExHaGbF+DGp29d5mt9lHVdqbT+BOccHcRo6DMx3358yDrvrW0Ce5AQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5743 When not holding the PoD lock across the entire region covering P2M update and stats update, the entry count should indicate too large a value in preference to a too small one, to avoid functions bailing early when they find the count is zero. Hence increments should happen ahead of P2M updates, while decrements should happen only after. Deal with the one place where this hasn't been the case yet. Signed-off-by: Jan Beulich --- a/xen/arch/x86/mm/p2m-pod.c +++ b/xen/arch/x86/mm/p2m-pod.c @@ -1345,19 +1345,15 @@ mark_populate_on_demand(struct domain *d } } + pod_lock(p2m); + p2m->pod.entry_count += (1UL << order) - pod_count; + pod_unlock(p2m); + /* Now, actually do the two-way mapping */ rc = p2m_set_entry(p2m, gfn, INVALID_MFN, order, p2m_populate_on_demand, p2m->default_access); if ( rc == 0 ) - { - pod_lock(p2m); - p2m->pod.entry_count += 1UL << order; - p2m->pod.entry_count -= pod_count; - BUG_ON(p2m->pod.entry_count < 0); - pod_unlock(p2m); - ioreq_request_mapcache_invalidate(d); - } else if ( order ) { /* @@ -1369,6 +1365,13 @@ mark_populate_on_demand(struct domain *d d, gfn_l, order, rc); domain_crash(d); } + else if ( !pod_count ) + { + pod_lock(p2m); + BUG_ON(!p2m->pod.entry_count); + --p2m->pod.entry_count; + pod_unlock(p2m); + } out: gfn_unlock(p2m, gfn, order); When not holding the PoD lock across the entire region covering P2M update and stats update, the entry count should indicate too large a value in preference to a too small one, to avoid functions bailing early when they find the count is zero. Hence increments should happen ahead of P2M updates, while decrements should happen only after. Deal with the one place where this hasn't been the case yet. Signed-off-by: Jan Beulich --- a/xen/arch/x86/mm/p2m-pod.c +++ b/xen/arch/x86/mm/p2m-pod.c @@ -1345,19 +1345,15 @@ mark_populate_on_demand(struct domain *d } } + pod_lock(p2m); + p2m->pod.entry_count += (1UL << order) - pod_count; + pod_unlock(p2m); + /* Now, actually do the two-way mapping */ rc = p2m_set_entry(p2m, gfn, INVALID_MFN, order, p2m_populate_on_demand, p2m->default_access); if ( rc == 0 ) - { - pod_lock(p2m); - p2m->pod.entry_count += 1UL << order; - p2m->pod.entry_count -= pod_count; - BUG_ON(p2m->pod.entry_count < 0); - pod_unlock(p2m); - ioreq_request_mapcache_invalidate(d); - } else if ( order ) { /* @@ -1369,6 +1365,13 @@ mark_populate_on_demand(struct domain *d d, gfn_l, order, rc); domain_crash(d); } + else if ( !pod_count ) + { + pod_lock(p2m); + BUG_ON(!p2m->pod.entry_count); + --p2m->pod.entry_count; + pod_unlock(p2m); + } out: gfn_unlock(p2m, gfn, order);