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: