From patchwork Mon Dec 6 13:25:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12658391 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 9B8E7C433EF for ; Mon, 6 Dec 2021 13:25:29 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.238897.414034 (Exim 4.92) (envelope-from ) id 1muDzc-0000Cq-0p; Mon, 06 Dec 2021 13:25:20 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 238897.414034; Mon, 06 Dec 2021 13:25:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1muDzb-0000Ch-TY; Mon, 06 Dec 2021 13:25:19 +0000 Received: by outflank-mailman (input) for mailman id 238897; Mon, 06 Dec 2021 13:25:18 +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 1muDza-00006G-2D for xen-devel@lists.xenproject.org; Mon, 06 Dec 2021 13:25:18 +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 f3c4364a-5697-11ec-8a4d-196798b21f7b; Mon, 06 Dec 2021 14:25:17 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2175.outbound.protection.outlook.com [104.47.17.175]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-14-v5fdYRZ4OUu7QHgtNCUuHQ-1; Mon, 06 Dec 2021 14:25:16 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB7024.eurprd04.prod.outlook.com (2603:10a6:800:124::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.21; Mon, 6 Dec 2021 13:25:15 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe%6]) with mapi id 15.20.4755.021; Mon, 6 Dec 2021 13:25:15 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM6PR0202CA0069.eurprd02.prod.outlook.com (2603:10a6:20b:3a::46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.17 via Frontend Transport; Mon, 6 Dec 2021 13:25:14 +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: f3c4364a-5697-11ec-8a4d-196798b21f7b DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1638797117; 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=qEsj9ndE9Q/guZXie3VtZKqzHbg+waaXmZENccFoZSo=; b=YQGjFPuf4p5k0i5fn5Yv6hFI9zSpAoOuAoaxMCHSO7N+pVY+HjIkN4p194yWTxj+IsaQBw HlGwyQvQD8+u1LJq8tXMyuNy1meEQt3kKfy81OnNOp17kUJAbKIP5PlXOPnswtVfCGUcYZ g22KU21wcHFtSYbPpwlLtEc8i5oitEI= X-MC-Unique: v5fdYRZ4OUu7QHgtNCUuHQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VUvRpZEW59XVzwhyslnO8WMGV104htmC65eSt+/sZGCNVoMDEJJ+ADgQwU63E1VUCjQHMEFbkmNGf5SxZoWjM0zLeLYuMinikRnvobyE0PB2klH+DTqyf8LX9pmd3udmxXNzNYKJBSgPM5SM/w18xtk0GCJYv7S+O6K49WGWH0LZd0CVp0GY5+K+xtxDzpw769dcRQtDVQ3qi+LSq7Csdd0UZjZG3LocsCfE6CrwjXzPCpy2f8y4H1+XbOMgDamUgr0aWvyl0vqv3+/hbBoZetdLa4cxwVdMZKPSxzOdJkaESez/rm4vbM2J46IkQgM5ifsvGyPZFUGzFS2JopUYbA== 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=qEsj9ndE9Q/guZXie3VtZKqzHbg+waaXmZENccFoZSo=; b=PvTXyMEY94dkfTY9uovKoxq62fORdCvx27G2ztMFZkpuBpjUAEzQDkX0Ky2Nxha971Ze0bJM1xzdoV6XLqAs19APak7EpDUU07rYTuB/EC2G54kDnNmoZkfFpqnKViLh36R0mGpb0RUKKha4ZQx2TTNhXdnmiZn/C3QkfUGKc/xxxL+LGQFfWAYcLaDqaf683snquApwfhEBNmuZK5lceSQsgcGiepmBmZNyTZZV/RujcLLa6mHbrpeEjAVp9QrbsbsKzH2z5y6pfsColqCSAB25jlunIF4yvVtrY95ryOd26LZ+LgR5hegkzRAA0bX7hvtyZBitPqgBF/0+ranC6Q== 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: Mon, 6 Dec 2021 14:25:13 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: [PATCH v2 1/2] x86/paging: tidy paging_mfn_is_dirty() 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: <61c1d38c-65a6-e150-ed53-b565d30c18c9@suse.com> In-Reply-To: <61c1d38c-65a6-e150-ed53-b565d30c18c9@suse.com> X-ClientProxiedBy: AM6PR0202CA0069.eurprd02.prod.outlook.com (2603:10a6:20b:3a::46) 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: 3785d258-9018-437f-83f8-08d9b8bbd6c4 X-MS-TrafficTypeDiagnostic: VI1PR04MB7024:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1332; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1ZPPKKrEaDGXpCFmOQdam3nCEmK5iyDKzROmE+B2LuaZKnPdHJ+byW0fxA1L8pCCHL2avmAZB1kX4yAnpK3FEWJ1tBohFkCqiiKzUJyauTOkKaWd0UUwXbRMucJVtRBMbtraNOPqNJ2irzIZXrYDeYefBRkTZ0wycfp2SUOIkPpUK+SfkexH9fsDYz3Sp8+IkD39NH9GdnRIpCRtKbRkkqFHfK09LNFqQVwzKLCtxHmW+yW4YsVY8cn71JUhdXrFtl9rkKhIlZbyHw0Us1h8JvuBaHcAGSioXtUrnvGz8KGpHg1wtlKZWxHE9EzVG89F44R/MwCotO10S0xF+xSHo2yEqEtRMknqvHrjyCyadZDGot6wGGpKUNH7M3/baC/9+K2OPxMIuqo31vgJi1RgbcWjTylmu1TRhP6pi2pq8T5mRMSoQAr64U6VFSrmbJ3HJ90AmAQA57pnpEbAbRhQxZpwxzTp+RU3KUyAFqNqFNZnmbO+udynj7clyOFIcfIh+iuK4/mQv4K7Ruk5ElNfBn6giKh9irUrZjJReTvsmNgE0qKvlUJ85AFl3scl0fcyQsLtKlVbxg21RTGoD2AVxMSJcJYzDFwLfi3YV2IXN0EQAf6fsSO7jsdHAJEeLpuNvAHginbYPxeeMN1D/aQcJtDOUl3EeJ85g53eq3Mzu9Vyq2DKaz7w3w+HASdhNymHTe7Rn1eN+DdPqZWDblsQt9/p8gd0uwMCsGSjokZug4TtSf2zYqYmwAKufmolf2qR 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)(5660300002)(6486002)(2906002)(86362001)(31686004)(186003)(36756003)(4326008)(31696002)(54906003)(16576012)(316002)(83380400001)(66946007)(66556008)(38100700002)(66476007)(8676002)(6916009)(508600001)(8936002)(26005)(2616005)(956004)(14143004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?+kIEm/6nezG0TjKrw39mY7U8qi1/?= =?utf-8?q?lVrGDQTFsoGpVdnEEG5cLGJBWEMw9FpTv0z++JwGso0IcldiNJqcE6tKNX43SU1X4?= =?utf-8?q?bVrOIWhXZgJECWXFy7hLgRMv4Y1QtLeIb05kR6jucKoKXb7c3NMVCuA2InBbJ9/qM?= =?utf-8?q?nAFP/hbKpKgIB1dhJYv+Bn+TjVPr9K8ySoTrSm9NcAqUzvNbEvu5NG4dOYbx0kwdL?= =?utf-8?q?SxF0W9YkzixNCQaEdDLwkEzZjhw7ymV7A5+NKWEkkibswvS9S1REC8fSSNtMENKJI?= =?utf-8?q?/m+/I/9qkA02Ta9gOY02/tAKjOwFg3WVjcXMptp7rs/iQHURIY7juv4fLCfbneuza?= =?utf-8?q?C0Ek5+ycvV9OJlpkbvgG5B1/SmISNap/CsBhbW5AnSSUfcp0SkSl+3IgWWeSqQexU?= =?utf-8?q?R3Q7PFhxuyi9HbU7vByHgXXYMV3fZUoKQx+FifAO+mj+UhWcW0ZHzUJt8zmXHh5Kz?= =?utf-8?q?v9EIvkCvly15Lz4hlOnYjDPUJPf99BTv+CVH1MAVYqJ/AtUuqQvYr/NINM4YuHlr+?= =?utf-8?q?IA/AEcUNNjxXsRyk63oquoeuVgVy23ZXWNHMkgcDJjImZ4WoCOYVZIjYAlPK3qvAr?= =?utf-8?q?dpotSTHXmnH3rQ8k1jIEb21DsQr/ZAxOGrmmyR/xp5CoaEXXrnGiVveVZXekOnvSo?= =?utf-8?q?qVcqWgoRsc+tZvDKh1s98XUcGksl1tt3Y3tgmgCN7bZXxLTkw/5umlOufBTha5IU6?= =?utf-8?q?SPrV1RAm/Y75V/Ov07kVaLNHyok7vwTYSftWlnT88qeOrD+7TnUp0K5urcLMlGsq/?= =?utf-8?q?YWzQn8yMCQqan9iIzwE2hY05SGd8meG70U+BiK4uCWdCKiY3VqkfrGNisFW3plEVY?= =?utf-8?q?Iixp8MpunkhM8H2/Vl95PeqqqcKb+9mfQnamP4klFxTZRQ6TrJ5/eNWz/2mm2Oak8?= =?utf-8?q?o5Cs6Vek5bpCQY4jrg7SAdSwPyC7ajkwdHrRKtdyHjjZZ4T8PbnKJx0eNYR0Y6/dl?= =?utf-8?q?0AMQjZLxB0A7A9g3u7kHnXk2pghg8EFGK3u8YXPHR6VB2qjNgmtZyLrM2C31AVw8J?= =?utf-8?q?KcvFzaz/zZnFZhyghcIDSsc+PWGO6PdyGmq6Klj+wzGUJu7l4hKlNEGe8EGAxQV5k?= =?utf-8?q?27F6QdWXPF3RwMEzKB6Zw+IZhoh+L3ryL/KPT6nl0zvoZ9EzykQtPDEEvspoYDoI4?= =?utf-8?q?d7oYPh1XYuR/kqKQLs6QUgf8NEOUUQYglXK5Qiack8eTHJ3ckD1StLR2t3a+ZOrTk?= =?utf-8?q?/VgPgKTXzkqNbz8qH/ePMCDf9i5b/QUBBKomtAv+iGsaz5MuiC62xlnZv2MCvEsbM?= =?utf-8?q?W1V7keeJSeVio7SBqhHCfTso7oeELFp42Sh0IDRWQgzpUkyQXHTxR3ANM3/G5+iUn?= =?utf-8?q?YxFjjzcL+vMwXBHzpzc8bIpcF3PqsAKD/qrG2iYiRX6kCPGrN2NYO2yM0UpL7Ly/6?= =?utf-8?q?toVuzXrfXBwvGHHl3uFxicZ+Z0XSGfRDtykE+wxVIr2OiObnENfgs54lrl1SZqxFv?= =?utf-8?q?98IHOJ2sXQgsf9kEPTTKnJ2x8hv01dYm6gVkVzMaM/B73iXPa9LzGc1zfgBb2WfNs?= =?utf-8?q?r0elKAiZqE/0S0kLd9cADtJTpc9CT9waCq8rdZksaGGSEZq0jBpnDIY=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3785d258-9018-437f-83f8-08d9b8bbd6c4 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2021 13:25:15.3013 (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: sqIFL8fd6X1r+EElkR4K+8mzfZ1GOQDL1JwIeihL9scjbNA8Voy49iA8J3vIuCBmrY79AKUd36w11ArWU6pLHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB7024 The function returning a boolean indicator, make it return bool. Also constify its struct domain parameter, albeit requiring to also adjust mm_locked_by_me(). Furthermore the function is used by shadow code only. Since mm_locked_by_me() needs touching anyway, also switch its return type to bool. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- v2: Change return type of mm_locked_by_me(). --- a/xen/arch/x86/mm/mm-locks.h +++ b/xen/arch/x86/mm/mm-locks.h @@ -40,7 +40,7 @@ static inline void mm_lock_init(mm_lock_ l->unlock_level = 0; } -static inline int mm_locked_by_me(mm_lock_t *l) +static inline bool mm_locked_by_me(const mm_lock_t *l) { return (l->lock.recurse_cpu == current->processor); } --- a/xen/arch/x86/mm/paging.c +++ b/xen/arch/x86/mm/paging.c @@ -351,14 +351,14 @@ void paging_mark_dirty(struct domain *d, paging_mark_pfn_dirty(d, pfn); } - +#ifdef CONFIG_SHADOW_PAGING /* Is this guest page dirty? */ -int paging_mfn_is_dirty(struct domain *d, mfn_t gmfn) +bool paging_mfn_is_dirty(const struct domain *d, mfn_t gmfn) { pfn_t pfn; mfn_t mfn, *l4, *l3, *l2; unsigned long *l1; - int rv; + bool dirty; ASSERT(paging_locked_by_me(d)); ASSERT(paging_mode_log_dirty(d)); @@ -367,36 +367,37 @@ int paging_mfn_is_dirty(struct domain *d pfn = _pfn(get_gpfn_from_mfn(mfn_x(gmfn))); /* Invalid pages can't be dirty. */ if ( unlikely(!VALID_M2P(pfn_x(pfn))) ) - return 0; + return false; mfn = d->arch.paging.log_dirty.top; if ( !mfn_valid(mfn) ) - return 0; + return false; l4 = map_domain_page(mfn); mfn = l4[L4_LOGDIRTY_IDX(pfn)]; unmap_domain_page(l4); if ( !mfn_valid(mfn) ) - return 0; + return false; l3 = map_domain_page(mfn); mfn = l3[L3_LOGDIRTY_IDX(pfn)]; unmap_domain_page(l3); if ( !mfn_valid(mfn) ) - return 0; + return false; l2 = map_domain_page(mfn); mfn = l2[L2_LOGDIRTY_IDX(pfn)]; unmap_domain_page(l2); if ( !mfn_valid(mfn) ) - return 0; + return false; l1 = map_domain_page(mfn); - rv = test_bit(L1_LOGDIRTY_IDX(pfn), l1); + dirty = test_bit(L1_LOGDIRTY_IDX(pfn), l1); unmap_domain_page(l1); - return rv; -} + return dirty; +} +#endif /* Read a domain's log-dirty bitmap and stats. If the operation is a CLEAN, * clear the bitmap and stats as well. */ --- a/xen/include/asm-x86/paging.h +++ b/xen/include/asm-x86/paging.h @@ -173,7 +173,7 @@ void paging_mark_pfn_dirty(struct domain /* is this guest page dirty? * This is called from inside paging code, with the paging lock held. */ -int paging_mfn_is_dirty(struct domain *d, mfn_t gmfn); +bool paging_mfn_is_dirty(const struct domain *d, mfn_t gmfn); /* * Log-dirty radix tree indexing: From patchwork Mon Dec 6 13:25:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12658393 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 CAFD6C433EF for ; Mon, 6 Dec 2021 13:25:51 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.238900.414045 (Exim 4.92) (envelope-from ) id 1muDzx-0000jB-Ds; Mon, 06 Dec 2021 13:25:41 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 238900.414045; Mon, 06 Dec 2021 13:25:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1muDzx-0000j2-Aa; Mon, 06 Dec 2021 13:25:41 +0000 Received: by outflank-mailman (input) for mailman id 238900; Mon, 06 Dec 2021 13:25:39 +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 1muDzv-0000iL-QU for xen-devel@lists.xenproject.org; Mon, 06 Dec 2021 13:25:39 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 007edb62-5698-11ec-a5e1-b9374ead2679; Mon, 06 Dec 2021 14:25:38 +0100 (CET) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2055.outbound.protection.outlook.com [104.47.14.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-30-NzfYniWuOsyPEm1yDV4NTw-1; Mon, 06 Dec 2021 14:25:37 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB6176.eurprd04.prod.outlook.com (2603:10a6:803:f6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.21; Mon, 6 Dec 2021 13:25:36 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe%6]) with mapi id 15.20.4755.021; Mon, 6 Dec 2021 13:25:36 +0000 Received: from [10.156.60.236] (37.24.206.209) by FR0P281CA0070.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::20) with Microsoft SMTP Server (version=TLS1_2, cipher=) via Frontend Transport; Mon, 6 Dec 2021 13:25:36 +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: 007edb62-5698-11ec-a5e1-b9374ead2679 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1638797138; 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=6gE0gFOUnMMz5JyRTUC/L9rSE2loRh2H07DZe6ZHJT0=; b=cDx9psvM1o531StI9NxrEojqhQh4KCf9pt2EX9Fnfk7SYXXbbCupuo0dV+vPhS6HvaBtOu XkufHmmnR5rpDBDnnLHQIVx7Y7Us9l60Du3wnzqQpKPiw7BB6zuVyVsa+Zc1V5RRTQBytn L8ok7+BMdlnt+45hvmXyptAlT9+XVvQ= X-MC-Unique: NzfYniWuOsyPEm1yDV4NTw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kYXd/9OAYsq7kQVzWjWRcc3CDz1grDcbXCpknTmUpl17SaGVJshsZeTavCOCmGDMNe30as1GZugtnEgc7iTJFQMRH0CudLrx/KMpTY7oreZWwIQJUaRk9Rnw2USqRUKU2GSpBrfquVsz+dHs2aAmX5JIKuL95S4keTvyDTU78l0WSqA8auEg9BT11N8+JFZKcey0UGkiIefOIbcx95koMdWVyC3HHLvasR8z4NuFUC+wa9TsgGQQmqreMAw8zdmd7YTMGGQkvoSsV8pxy0N0MKMDF+blFTMYAqMRJsmmk0lhPh0vI7VVUmzQ7fy/roLGcEokSw4oFKjAzLDCt0xXtw== 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=6gE0gFOUnMMz5JyRTUC/L9rSE2loRh2H07DZe6ZHJT0=; b=D+HCphIiP77AqoxzaIgPIvGsxTTaIbFtrkggcLQe9Gx9CWIkYyeIFSbDafgv+uSy4DoqzdG+cpX0hzrmL6P10Fuf3mCbyIQe8IYrOmxrvCeRqROHLR+RJ+CHw1ewkeXpc2qiKnu6sOhJ/cJjyoeZrs0/tX08T16JK6zpRO/w+f2Ca77Eh4kGe+IczDb/OZcaOBko3dgS+uu6Nl09jhzNTkAqzdNH0kYPeTwHrwQKFyAFpbnLzGlIqqIUJYj79yDucx/A86SaYs42FzuMZSPYjzPCG2SM7bYBc8WTUoHN+KGXLDNKsbG4EbfO4hFJc+fSYj/s7kmdsahswgwQTH6IGA== 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: Mon, 6 Dec 2021 14:25:35 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: [PATCH v2 2/2] x86/paging: replace most mfn_valid() in log-dirty handling 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: <61c1d38c-65a6-e150-ed53-b565d30c18c9@suse.com> In-Reply-To: <61c1d38c-65a6-e150-ed53-b565d30c18c9@suse.com> X-ClientProxiedBy: FR0P281CA0070.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::20) 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: d1bee3bb-4837-4d16-995b-08d9b8bbe368 X-MS-TrafficTypeDiagnostic: VI1PR04MB6176:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:243; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /fuYhG/LT1tcpXo9PFYUHZUEbKl9lzXxVYUt1CwPGjFN+EbhqLQ1nSrLwwRYcEEICUzz26E9JcIx8jL+gBoT2SUfmS/hzKs/qvhEM93r23Bz+nHNj0c12UxJaeKxtH3cQo2nfc9fbzy3au2NWhhF37s/omOzvy/QTW/FEG6Ciy4V04nV/RiNTZehOCdjKF4cnhHwGblzv8Umpy+XpU5GDWhlGkG7LUss1Sdw9d9ocBUo7KEDTlqeOHvJ/wG5E8Af12cmAcZKC2IiKJEz4aMH2WRNghUe7foMFlXGr5z1Pur108N4PtsSO0Ywnyl7rR1iS+BBZ2EMOy9pnUstTgsdc/qTERc4unXIAPRwD0udy6yTnwx09DklP9qKBQhxlP6UixPqlho4LZd9ZlxObVnF8h6egqlEXRxezym9RdpKoIB8De3j5OaYRyxtr5BUWSg8oM06cxLQe9tmvPm/qi/0KnJgL2/sFwb1ZtWNiNfDASwXuwSYyOM/qIHGVYPpUoZvWhcLYxTcXhhgyEqTuAcaQvlCP1zoURsqbvxlpyPBI3g+wMLAh2jA5UXqpWYjjuERJugPTsqQbk3nmwG3ZF4tt9hRxjSRW/dudMcfNUAku4l8+6J37iaSTnWEOaAdJ130lkyQ5OmWUmgT7M6qJhWa35j0RoYYFY/r4taLBD1gi+SW4OT+dGsz9kAfG067cr8LmjlzFZJ5Lvrmrf4Kq1IMIZB67NAJ9jvb8/f2Q88Im3hFrG5Y4HQTKdpesaI2S5q+KVSfoEqCzc4T2yl421kWKQ== 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)(956004)(86362001)(6486002)(6916009)(31686004)(508600001)(66556008)(2616005)(38100700002)(66946007)(4326008)(66476007)(54906003)(31696002)(8676002)(83380400001)(186003)(316002)(16576012)(2906002)(26005)(5660300002)(36756003)(8936002)(14143004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?rpkut2GLQkdF5rnGOlEhC0HMnf2u?= =?utf-8?q?G3NmdDWdcmSN1VefSRjFyo/2L1xGvdtu3hhwBwmlWVkDboXYeU3o4mVUiuMIKy8VK?= =?utf-8?q?Exz/nWL/1Ypfg8dPyz8JP+VLmI73+JY8sK+hazIhvAKDuxk0PEwbROkvK6TVN5JQx?= =?utf-8?q?xdUPqur4Rmp5iI5Go/oKzkacWkfKXHuT73gOjYdzRw8OON6Qg8H+hcdTKLUUwC25l?= =?utf-8?q?ZltniZTVWJqaIBNFoEorBl/Zam1ENCSDuLCIkOdpav5RSkpFat2SFXZ2X5Sx/E+PY?= =?utf-8?q?xVVlJGhSSVxlIH11HgXMuFpqCrE5IJWxxZYWT2eERQOWdQYHMJ0hV8CJjJ5nkH8Qa?= =?utf-8?q?P6keJpaIkeJdKuXAznpSHwb0CmpHFdzkLjGjzauMBnoppeyJ2nFBTCZQgDLhKW+DL?= =?utf-8?q?BsHlOdzx+engtvRZihsoa4IMkptAz69V7KkI9jtnEPk+hLTp1UwbgHIDS7jEaz+rR?= =?utf-8?q?9ShW5TawwPaVwmWZDwi+CgtgHwjSDOoNFpWRDL77OKs0ziauLBn1mzxy0gCMmBwFw?= =?utf-8?q?8ChKsGe/7l7dcbPQg42GgTImo9lWVYXASmUlDpXll0Dv6PyUcyJPSjujIQcYwC/Dk?= =?utf-8?q?XAneGnMgQ84CQav84Q04DW3wvgmIO4sJDWVqhYlcCag6t3EEfVOQ1mbiMCm5O+Vie?= =?utf-8?q?r6OKXDaRJ73hwsOd22UMznK8RsAYM4bbtqesyswEfHJtdpmOI1NkgJhwKom9rUX/N?= =?utf-8?q?Q50iOQb8Fugz7DDqBvP26mxJewCGLYaRQ8EWM+35s3dS78/4S/MwB11glZ2ujyfYR?= =?utf-8?q?1s7G8ol5saV22fEsqe+e76YmwRgSTIOhdCxv8r7mGdiRp96bt4N11cz14uyBWyxJ9?= =?utf-8?q?GnY1q6wVqZd6Le7NPQUlfx2kWDew5ZXPrnoZAqvm4qcaHlwPDSiC+LzdUyZPbAn6m?= =?utf-8?q?rsTfhXaj/7VevEVJ0VEmZ2RK44G28NUZXvBXs0u5p+QASaTDVrgRgnctJuSVeiFZS?= =?utf-8?q?LxvC37da/SCHLWTAeIpD5YTbLI9VfQ/9IE2t2H5g+3yY5mIBtGwOlY59jTDvHRIkp?= =?utf-8?q?48cmI5OEdOo+2Vzoe9xq7s+cZ0p2PVc0wU32fRQHlZaf1URTMxY/Qof/9yXQHtvBW?= =?utf-8?q?oewKL+NfnNSUUmMn6c100XGXQQIM9WDfhL106HdBf6ADbvmMzu/d345n4xk2im51P?= =?utf-8?q?Hhx4j0EXXZjUQ6hRtZFCuk/Ztii6iV9vMSCkFqVVpEUdg6K35SVGTNpAe01TVWGvR?= =?utf-8?q?WBSVvJcMxHJrUzbnFj7kznY4cJwenAi+EVB3CJG87sRR+49wC0oBVyH4t/I6QowCe?= =?utf-8?q?rs73EKCGOJsF8JGlpibla0UXtWgQMAEB8dNS85yHPmcvc/czM1C45v2j+AmJ+kdie?= =?utf-8?q?a5iX83jT0Tx0V79IdbdLtQ8qcUmOYpxeMFTvS9bw3UA1n6VTXA3B1Qw1JcCNeRzQy?= =?utf-8?q?QjW47LU0cR7Tmn68+UjP9C3N7kjbXpmezpTEmfx5PXcM4DXCNktJaQZCZy1fxpXR5?= =?utf-8?q?ejjkuFtI9Y9OzDKOoJnBevwXKxuliN1ksqgKby0QLfeuG/SB4JIMazfv28pSvvtQT?= =?utf-8?q?jrDQXfn1tSL+bOmtdLeb4MxI6gyvB1+1uePtL/meDc0PWzMZjoH17ro=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1bee3bb-4837-4d16-995b-08d9b8bbe368 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2021 13:25:36.4473 (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: NRNmn+2DA8uNRsTNpn2FP24qwh5oefY++JtlnzcwRi2+hmYCZRi2KmmSOdUc1LvZr5rvRgIxiz44ySKcjWTDvg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6176 Top level table and intermediate table entries get explicitly set to INVALID_MFN when un-allocated. There's therefore no need to use the more expensive mfn_valid() when checking for that sentinel. Suggested-by: Andrew Cooper Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- v2: New. --- a/xen/arch/x86/mm/paging.c +++ b/xen/arch/x86/mm/paging.c @@ -74,7 +74,7 @@ static mfn_t paging_new_log_dirty_leaf(s { mfn_t mfn = paging_new_log_dirty_page(d); - if ( mfn_valid(mfn) ) + if ( !mfn_eq(mfn, INVALID_MFN) ) clear_domain_page(mfn); return mfn; @@ -84,7 +84,8 @@ static mfn_t paging_new_log_dirty_leaf(s static mfn_t paging_new_log_dirty_node(struct domain *d) { mfn_t mfn = paging_new_log_dirty_page(d); - if ( mfn_valid(mfn) ) + + if ( !mfn_eq(mfn, INVALID_MFN) ) { int i; mfn_t *node = map_domain_page(mfn); @@ -98,7 +99,7 @@ static mfn_t paging_new_log_dirty_node(s /* get the top of the log-dirty bitmap trie */ static mfn_t *paging_map_log_dirty_bitmap(struct domain *d) { - if ( likely(mfn_valid(d->arch.paging.log_dirty.top)) ) + if ( likely(!mfn_eq(d->arch.paging.log_dirty.top, INVALID_MFN)) ) return map_domain_page(d->arch.paging.log_dirty.top); return NULL; } @@ -116,7 +117,7 @@ static int paging_free_log_dirty_bitmap( paging_lock(d); - if ( !mfn_valid(d->arch.paging.log_dirty.top) ) + if ( mfn_eq(d->arch.paging.log_dirty.top, INVALID_MFN) ) { paging_unlock(d); return 0; @@ -143,20 +144,20 @@ static int paging_free_log_dirty_bitmap( for ( ; i4 < LOGDIRTY_NODE_ENTRIES; i4++, i3 = 0 ) { - if ( !mfn_valid(l4[i4]) ) + if ( mfn_eq(l4[i4], INVALID_MFN) ) continue; l3 = map_domain_page(l4[i4]); for ( ; i3 < LOGDIRTY_NODE_ENTRIES; i3++ ) { - if ( !mfn_valid(l3[i3]) ) + if ( mfn_eq(l3[i3], INVALID_MFN) ) continue; l2 = map_domain_page(l3[i3]); for ( i2 = 0; i2 < LOGDIRTY_NODE_ENTRIES; i2++ ) - if ( mfn_valid(l2[i2]) ) + if ( !mfn_eq(l2[i2], INVALID_MFN) ) paging_free_log_dirty_page(d, l2[i2]); unmap_domain_page(l2); @@ -288,35 +289,35 @@ void paging_mark_pfn_dirty(struct domain /* Recursive: this is called from inside the shadow code */ paging_lock_recursive(d); - if ( unlikely(!mfn_valid(d->arch.paging.log_dirty.top)) ) + if ( unlikely(mfn_eq(d->arch.paging.log_dirty.top, INVALID_MFN)) ) { d->arch.paging.log_dirty.top = paging_new_log_dirty_node(d); - if ( unlikely(!mfn_valid(d->arch.paging.log_dirty.top)) ) + if ( unlikely(mfn_eq(d->arch.paging.log_dirty.top, INVALID_MFN)) ) goto out; } l4 = paging_map_log_dirty_bitmap(d); mfn = l4[i4]; - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) l4[i4] = mfn = paging_new_log_dirty_node(d); unmap_domain_page(l4); - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) goto out; l3 = map_domain_page(mfn); mfn = l3[i3]; - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) l3[i3] = mfn = paging_new_log_dirty_node(d); unmap_domain_page(l3); - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) goto out; l2 = map_domain_page(mfn); mfn = l2[i2]; - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) l2[i2] = mfn = paging_new_log_dirty_leaf(d); unmap_domain_page(l2); - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) goto out; l1 = map_domain_page(mfn); @@ -370,25 +371,25 @@ bool paging_mfn_is_dirty(const struct do return false; mfn = d->arch.paging.log_dirty.top; - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) return false; l4 = map_domain_page(mfn); mfn = l4[L4_LOGDIRTY_IDX(pfn)]; unmap_domain_page(l4); - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) return false; l3 = map_domain_page(mfn); mfn = l3[L3_LOGDIRTY_IDX(pfn)]; unmap_domain_page(l3); - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) return false; l2 = map_domain_page(mfn); mfn = l2[L2_LOGDIRTY_IDX(pfn)]; unmap_domain_page(l2); - if ( !mfn_valid(mfn) ) + if ( mfn_eq(mfn, INVALID_MFN) ) return false; l1 = map_domain_page(mfn); @@ -477,17 +478,18 @@ static int paging_log_dirty_op(struct do for ( ; (pages < sc->pages) && (i4 < LOGDIRTY_NODE_ENTRIES); i4++, i3 = 0 ) { - l3 = (l4 && mfn_valid(l4[i4])) ? map_domain_page(l4[i4]) : NULL; + l3 = ((l4 && !mfn_eq(l4[i4], INVALID_MFN)) ? + map_domain_page(l4[i4]) : NULL); for ( ; (pages < sc->pages) && (i3 < LOGDIRTY_NODE_ENTRIES); i3++ ) { - l2 = ((l3 && mfn_valid(l3[i3])) ? + l2 = ((l3 && !mfn_eq(l3[i3], INVALID_MFN)) ? map_domain_page(l3[i3]) : NULL); for ( i2 = 0; (pages < sc->pages) && (i2 < LOGDIRTY_NODE_ENTRIES); i2++ ) { unsigned int bytes = PAGE_SIZE; - l1 = ((l2 && mfn_valid(l2[i2])) ? + l1 = ((l2 && !mfn_eq(l2[i2], INVALID_MFN)) ? map_domain_page(l2[i2]) : NULL); if ( unlikely(((sc->pages - pages + 7) >> 3) < bytes) ) bytes = (unsigned int)((sc->pages - pages + 7) >> 3);