From patchwork Mon Jul 5 15:14:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359285 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 1D14DC07E99 for ; Mon, 5 Jul 2021 15:14:30 +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 C6A3661966 for ; Mon, 5 Jul 2021 15:14:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C6A3661966 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.150327.277969 (Exim 4.92) (envelope-from ) id 1m0QIe-0004Na-9R; Mon, 05 Jul 2021 15:14:20 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150327.277969; Mon, 05 Jul 2021 15:14:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QIe-0004NT-6I; Mon, 05 Jul 2021 15:14:20 +0000 Received: by outflank-mailman (input) for mailman id 150327; Mon, 05 Jul 2021 15:14:19 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QId-0004Lm-DK for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:14:19 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.109.102]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id e8756202-6257-4c6a-931e-638f4a36f2c6; Mon, 05 Jul 2021 15:14:18 +0000 (UTC) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-he1eur02lp2051.outbound.protection.outlook.com [104.47.5.51]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-9-lQHOshOtM12pyZV8-3IjVg-2; Mon, 05 Jul 2021 17:14:16 +0200 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR0401MB2608.eurprd04.prod.outlook.com (2603:10a6:800:4f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22; Mon, 5 Jul 2021 15:14:14 +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.4287.033; Mon, 5 Jul 2021 15:14:14 +0000 Received: from [10.156.60.236] (37.24.206.209) by PR0P264CA0148.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:14:13 +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: e8756202-6257-4c6a-931e-638f4a36f2c6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498057; 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=iL8ZT2omFXp+d1U+Xk1s2GOJXrPw9iN7waqPNcfkxZU=; b=bUE3/fk5eW3NSgkfoPc9keY+MIxwwHFZt9ozbwr5KykCFaY0mPBvilKcVC7iL/zvokXOGY xPb+sYCDthLE8+B7N+JQwGO/yIguxDXvFBKzyMb9qvDWR9/mr6Ecru5/ywYOmRqqa/JbrA ePphAgdcp1Yv6JFHWNbXLU6SIf9Yg5s= X-MC-Unique: lQHOshOtM12pyZV8-3IjVg-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J1dw5mxrMcoY+tJtBimpxiCoAYlNvoSPOT7HIWBPjDKqOzbibIz+vsOM7yKteoglxcBomNnCYljfyH0SLgcs+jtgWLj4yAQdlGMAcKsY9G3xH4jjwGjXVfkSks0M2KMJs5nluOHEUEbZuTwEZvNn1ajm3lF7Gu2aQwyP5IlPuL0QK1oPzzN9fYdPVKL6Uhjj1ivIv4bP1sWY4Ai8ZrAk6HC4n9vdP1aQOLVo1q1McPn5lj6U+Ai/YVVSVfAiJTmCSly1pNuDVt6JemnvYFWyr3tEv2GYHyPZK53edSYJa3p6VPl2L/Hg0e3XH5+zLte5R++3IbmuYtRNOd5IvtVa4A== 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=iL8ZT2omFXp+d1U+Xk1s2GOJXrPw9iN7waqPNcfkxZU=; b=ee2cBQ++HOJ8CCk7ZtbZUD24mTjCsLv8zOEpiEWMn12ofWtjPSuRh4f224nCSgemd0c18nU7d4wDrPgdEh6+KSHTSv16dB4f6Osx5XJbGLdfyUkIip/9OaPA9W8sc8VSPr6CP/+PdSKsxu7ztEONc8/62kEHdYxoa6cKe0ivLAdoB/4fwFIF2tCsnLRIwPJ7tHoxN2Hc3YDbzcbGI8GoQBIDItWZz7QThREP6NZzGRH3jN/VJx9XJ72PYHJN1Vv2M5HNgWhWBa6OnMlgvwXS41acCCW6lEbfJcseFsQlqLsH4DosUtx122DfUEOP+dsK5ko84Fxye0XTdpqAbbwKpg== 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: xenproject.org; dkim=none (message not signed) header.d=none;xenproject.org; dmarc=none action=none header.from=suse.com; Subject: [PATCH v2 05/13] libxenguest: avoid allocating unused deferred-pages bitmap From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= , Juergen Gross , George Dunlap , Ian Jackson References: <0bebfe8c-6897-dc8b-7fe0-9127d4996eb8@suse.com> Message-ID: <7996fff1-b004-b1b0-fc35-e1307340ce18@suse.com> Date: Mon, 5 Jul 2021 17:14:12 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 In-Reply-To: <0bebfe8c-6897-dc8b-7fe0-9127d4996eb8@suse.com> Content-Language: en-US X-Originating-IP: [37.24.206.209] X-ClientProxiedBy: PR0P264CA0148.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1b::16) 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: ffe4b2f0-fc0f-49ca-3e32-08d93fc78cab X-MS-TrafficTypeDiagnostic: VI1PR0401MB2608: X-LD-Processed: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba,ExtFwd X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1227; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: j7nzRRTI1MXEGp9c9RMM8ehFHtlAKdak507vvYZoO/+jpr/NNl1z9cqF0174zZy+rRw40NiotYPGeixkQA+xkltlEiJYvjp6+yjkLTWaaz0ddZhlWE9l5bligFxiMnwFYMJhx0wR9aIQ8HIfl8vHXfcs8a6vPehVVrbyZLV/0rOjQHncQuFRJxYtnSsQlPWN52+GEzkcP8k8UWbLWxToKnWZ5XFP63TvYOv3n3nbVxFx10rOE2Mmbdh3XpunNL5RtNkP4fle7oNdppSAeITW7kKVvfE9ripiX8H5TUhhZvhEZLQFk0hbUtyms5kqBB4Uoi7gYn7er1EdUgzu3UkD4slkcjMZCUQLGLTme79Pehm0JIGD8RAJMLYf9r6OCthrv+fl8bqY8t7tgfaVih9EJbVjX2NRO109x20EyLJYrfJazy4OcxD0N4OCpODnOpzREMmzbspSGN8JisWRT2s487CwBm7iJHcb8h21qV1kVLgSvBkbqeDMl0S7QBCKfnbOLbcvgx6G02Gc8X4zaLTObgjmN0oBcsvlt77BBbqZQ2T0gJ/62FpWjIPHN79APKFdjlnOZzVBLC4ru70a4BvyWRogC3kZNMLZzW3n5YCoEOaQVYJDXd/sEOiNwjyrBwrpHJzEYSoKgzvAgT7qiDP6nRbh6E7k0RFCsS5OUoXX/+sjebV7y/e61yEdMFqGw9BVzsHW9DnIMRL1alsQBd8RwHzCZsRT1yjRm6CKz9ydE1s= 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:(346002)(366004)(39850400004)(376002)(136003)(396003)(4326008)(54906003)(36756003)(8936002)(316002)(8676002)(6916009)(26005)(2906002)(186003)(66476007)(66556008)(16576012)(16526019)(66946007)(38100700002)(31686004)(83380400001)(478600001)(956004)(2616005)(31696002)(86362001)(6486002)(5660300002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?fIKBlBjxNfdaUORZ6nzfDbKgNfvE?= =?utf-8?q?ZJeZ63Q3OsnZ6v7PzPZrwv+J4722Fc4mcuyDl7C1WXXBenMnUk5uS/PnY/lec9ZcL?= =?utf-8?q?Ic2YrklAS6Kwm6f1eaHtJksm7YPuyrBtUALImhPz6VfrjtUjwA6nW/9UoV1JvdYEx?= =?utf-8?q?OND8FgdCC5UHy7AL65fNgJkziADr30FT8CJxEno9RwQcW16zVGp5Rv9E+kE5QpaCh?= =?utf-8?q?55V4cRLW7p7aQk/YXin5Mlp455ulv5fkM3EfFwtlTb9NoyH0XW0Q5kMydZCe4NBLr?= =?utf-8?q?KsENwfNqhly0Xdc1Op8znx9c3aG3mFS/Em+N24T4NDA1NF2OQ/JqkyZcdYAjtLdjS?= =?utf-8?q?HMMzccN6QO3GiXbKkRCY5eecsvzRuxYw8eD4+IT1UyjYjnUtp9dryRe7KtnCrWEZc?= =?utf-8?q?YQ9itH9FQXRi+c6h2JVUUgPRPNnG5xK7fwvBCIj5x/G+kj0jqGE1/es2NevbDfEsE?= =?utf-8?q?yzn0+U0MzlX+E7urlyI17kHTLu4zhTB+HBt9w9x3QmtJ+IOTt2M5WWoFrv+V3IRgz?= =?utf-8?q?gys54fV5A80BlvSRu/vVft2st5GFfoRxCNds0ek89Msev650NiPl6S2fb6Agdhf84?= =?utf-8?q?tfeES9yYstAS8rQBYUVfg38CbHc1Xq2KKv7bJPZraIkuwdRUdMQgD4dRPhBlF3aJh?= =?utf-8?q?ijI5msTINZ8QVmJb2aZV6xjXWC3/l+TGADLdRPG9n8orcVIs25P/kfG6L1vepyrN5?= =?utf-8?q?vIgiCcVZN5cO3dPB18faSHgggXQxPiOfbZw3dQuxyGFmI3q05KWT1VIl5jxp++FvA?= =?utf-8?q?zEptMy11+gJZdeVweNAFgjHA61rPsSTfLsbbNdVGQiIpTQwEAEcfrxpC0QRuj/Dqh?= =?utf-8?q?Qs0BzDPad+L5GpgXvGgffvRd0nkjDNaQosn4Da/KqSI9wGaJvQFAaAtQbRDki+ZmL?= =?utf-8?q?GEO9exL1Q2POWqaMdh/8z8Lss6wNa1qKL/T30a3oDZurhcfUDhYptfR6nxSkj/6Y3?= =?utf-8?q?R1AelGOnQT8sVHbKOlwHEWuhxroE9QgT6M4YA5bDANOYtcOz58tzpCMXZ4GFuxZ35?= =?utf-8?q?DLMpacgKFQ8I8VTr8o9r7CRW+tkeE9YjstaYsgoVwHgNFrdizFUcCaR7be3eTAtqN?= =?utf-8?q?NjB6S2zsNFgLAQLsLz6slWh62VJvRNtnfKy35JLIfIHvo/ef9iZrjs8ZASniYFtYr?= =?utf-8?q?Rw99Zz9XZFmppISV7TTioB0oK8NUi73RpipC4A3Sw/zu26MSumE69e5LyRgSdSVxQ?= =?utf-8?q?vPWJJ4JAnWulqlDI/bhB/X0vmlx1xAE51wHKFaCBPfH7wxR9d+NVttwpil7tjRXeA?= =?utf-8?q?w4WHOymRYSA3AyZS?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ffe4b2f0-fc0f-49ca-3e32-08d93fc78cab X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 15:14:14.1949 (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: gVKn15NHPsn5wcMcbr83M4Pwb68L+URkGV6rLzZ7huzbck47ENiX4vj+2Y4y9pQa9Qx8h2ZTWRFjD38jftpMFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2608 Like for the dirty bitmap, it is unnecessary to allocate the deferred- pages bitmap when all that's ever going to happen is a single all-dirty run. Signed-off-by: Jan Beulich Reviewed-by: Juergen Gross --- a/tools/libs/guest/xg_sr_save.c +++ b/tools/libs/guest/xg_sr_save.c @@ -130,7 +130,7 @@ static int write_batch(struct xc_sr_cont ctx->save.batch_pfns[i]); /* Likely a ballooned page. */ - if ( mfns[i] == INVALID_MFN ) + if ( mfns[i] == INVALID_MFN && ctx->save.deferred_pages ) { set_bit(ctx->save.batch_pfns[i], ctx->save.deferred_pages); ++ctx->save.nr_deferred_pages; @@ -196,8 +196,12 @@ static int write_batch(struct xc_sr_cont { if ( rc == -1 && errno == EAGAIN ) { - set_bit(ctx->save.batch_pfns[i], ctx->save.deferred_pages); - ++ctx->save.nr_deferred_pages; + if ( ctx->save.deferred_pages ) + { + set_bit(ctx->save.batch_pfns[i], + ctx->save.deferred_pages); + ++ctx->save.nr_deferred_pages; + } types[i] = XEN_DOMCTL_PFINFO_XTAB; --nr_pages; } @@ -665,7 +669,8 @@ static int suspend_and_send_dirty(struct else xc_set_progress_prefix(xch, "Checkpointed save"); - bitmap_or(dirty_bitmap, ctx->save.deferred_pages, ctx->save.p2m_size); + if ( ctx->save.deferred_pages ) + bitmap_or(dirty_bitmap, ctx->save.deferred_pages, ctx->save.p2m_size); if ( !ctx->save.live && ctx->stream_type == XC_STREAM_COLO ) { @@ -682,7 +687,8 @@ static int suspend_and_send_dirty(struct if ( rc ) goto out; - bitmap_clear(ctx->save.deferred_pages, ctx->save.p2m_size); + if ( ctx->save.deferred_pages ) + bitmap_clear(ctx->save.deferred_pages, ctx->save.p2m_size); ctx->save.nr_deferred_pages = 0; out: @@ -791,24 +797,31 @@ static int setup(struct xc_sr_context *c { xc_interface *xch = ctx->xch; int rc; - DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, - &ctx->save.dirty_bitmap_hbuf); rc = ctx->save.ops.setup(ctx); if ( rc ) goto err; - dirty_bitmap = ctx->save.live || ctx->stream_type != XC_STREAM_PLAIN - ? xc_hypercall_buffer_alloc_pages( - xch, dirty_bitmap, NRPAGES(bitmap_size(ctx->save.p2m_size))) - : (void *)-1L; + if ( ctx->save.live || ctx->stream_type != XC_STREAM_PLAIN ) + { + DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, + &ctx->save.dirty_bitmap_hbuf); + + dirty_bitmap = + xc_hypercall_buffer_alloc_pages( + xch, dirty_bitmap, NRPAGES(bitmap_size(ctx->save.p2m_size))); + ctx->save.deferred_pages = bitmap_alloc(ctx->save.p2m_size); + + if ( !dirty_bitmap || !ctx->save.deferred_pages ) + goto enomem; + } ctx->save.batch_pfns = malloc(MAX_BATCH_SIZE * sizeof(*ctx->save.batch_pfns)); - ctx->save.deferred_pages = bitmap_alloc(ctx->save.p2m_size); - if ( !ctx->save.batch_pfns || !dirty_bitmap || !ctx->save.deferred_pages ) + if ( !ctx->save.batch_pfns ) { + enomem: ERROR("Unable to allocate memory for dirty bitmaps, batch pfns and" " deferred pages"); rc = -1;