From patchwork Mon Jul 5 15:11:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359277 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 91B64C07E9B for ; Mon, 5 Jul 2021 15:11:48 +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 3C1CC6193E for ; Mon, 5 Jul 2021 15:11:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3C1CC6193E 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.150305.277925 (Exim 4.92) (envelope-from ) id 1m0QG4-00025M-0c; Mon, 05 Jul 2021 15:11:40 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150305.277925; Mon, 05 Jul 2021 15:11:39 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QG3-00025F-Sq; Mon, 05 Jul 2021 15:11:39 +0000 Received: by outflank-mailman (input) for mailman id 150305; Mon, 05 Jul 2021 15:11:38 +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 1m0QG2-000257-LG for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:11:38 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.109.102]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 4aa2fea0-dda3-11eb-844b-12813bfff9fa; Mon, 05 Jul 2021 15:11:37 +0000 (UTC) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2106.outbound.protection.outlook.com [104.47.17.106]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-23-0QQlHkl5MuelEz4g36NN0Q-1; Mon, 05 Jul 2021 17:11:35 +0200 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB7040.eurprd04.prod.outlook.com (2603:10a6:800:121::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.26; Mon, 5 Jul 2021 15:11:33 +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:11:33 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM0PR03CA0010.eurprd03.prod.outlook.com (2603:10a6:208:14::23) 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:11:33 +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: 4aa2fea0-dda3-11eb-844b-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625497896; 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=AcLhpKAZnmoAxFsMXWPBvUtE43UW7eAar8znGWUZKyw=; b=h2PNj40u9CVZdI6sQ3nSpOL66MYx1VTQPzmRmQtdIvUuzWhtycH/mpB3CvdBZ99kRHeF4h 0I+LBUe9vRBNvMxypuieM4kyysAIRJi5eB6PFN5Oby8AVUEuKcUHeIPewu0oYc0/Lus5CS fZKBnpfkn9c4FW1Zoeh/hokpZtmRBeA= X-MC-Unique: 0QQlHkl5MuelEz4g36NN0Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jlvKvdqYLYu7h/KlKE3pgNssHdz0OXu/LBVV8aYbKrWZq4LTZ7y5SJ2RiuvBFsddmFWUFqtWXVfMS73GOnH8+Bh3gGV6MpimR2Ezq+JxgZiSkwj+dm+4HpAUmAkMUaU+AkIv6EQTztmsa0z2ioKoa2GD7VtcPj/HQIiD10ZdjLtv7MZ4Fau9EwqcxI+Une5mleSM7VFLSz1xFqiQjRYy2t/RDEgupqNXunlWLyW8vD0S9KkL9r6I0by5DtOeiCxWjV8ZZg+4dnsl68DL4PkYPXrRTn0zyV0vETS59D24hwi7kzN/qbkiyPGKgWvuOizMzFNqYj8I4HNaNEJoDbU/Yw== 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=AcLhpKAZnmoAxFsMXWPBvUtE43UW7eAar8znGWUZKyw=; b=ON+KynClQBccv0jFvPU81/NGcVK8MLpotaL6Ayq+ZYjBfNXSki9B/UU56Q3fd3HPt3AAtN2S/kYqmWAQ/eDlxmiEd3kgbBjiAbt8SuhPalfI/cBU50E3p8EMPJkUypDdTBtBiKLf9r7OsaqpiLJVAGoi7HEkrnLUVfumBNCR59tFrhLLeA36dDVQto40L5MkJaUu3Anv4kKBNEdxAYBj92dmixfJ3l+n5FQ/WseF3blyRVMxclN7hqRoGVj3um9Z4sIymIcnOv4+J4QcPYrnlKRpfFEw6kH9pfbxd65bVZt2Pp7Gr6dbyfCqIExJoGv8hoWkCzcBa4dz3QELKoYiSQ== 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 v2 01/13] libxl/x86: check return value of SHADOW_OP_SET_ALLOCATION domctl 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 , Anthony Perard References: <0bebfe8c-6897-dc8b-7fe0-9127d4996eb8@suse.com> Message-ID: <4d1e5a4d-05cf-964a-bc4b-9eecf26e58bb@suse.com> Date: Mon, 5 Jul 2021 17:11:31 +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: AM0PR03CA0010.eurprd03.prod.outlook.com (2603:10a6:208:14::23) 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: 442c4d2b-6579-446a-749c-08d93fc72d0a X-MS-TrafficTypeDiagnostic: VI1PR04MB7040: 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:6790; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SfbgCr67Afsa+5XOZd00sSTSJbCANVFNbzkAeq/kCiB+BqFS7YFicASfd6iYIstbNserlVfN3dKA+fuWsI6d7dPR7vw/mlr1N1TjqXf9O7nY4odBhTmE3bkBJkhKiB7WUlzVRrG7zBePqelMCnvCa+CEuP9BoNSu/PV07qh46UA/rz7JaLGn2pdvCJr/+yCkdFncpoVDyw85gVFFgtD6GyaXXDEUDpe0GjuZO3w/ettHlOClt4k9mzuOXlM/KyVynF6l2X7c15AqSDOPQ0ODZi5qft/Vqc1vYg2QFgWXqIRxfMZLIr8gw48Jx++3yklUWQcETpc4RBv9J3wvSSLTx8gYiYwbpQbQKINnizFE6sqpn1CqwbOkKMEH14VotZAvnIXgLTwl2d23vNEEIGS0U9bNLRyKdqHtSVqY2ck08ePK+b98EZFj/IVI5l2U3mfso3YdWGGimuv4TD2tQmUil5W1HcDEujzpgMkjEs/gycXvAOoc5l4bRTeL1NG4A9Lx8z12z7vj3+w/ANpZuzccCt9AMwtMxiNfmhBQ0FuPlluSOT1ezZm1FuTs6VEpPnhlaJcXFTMU2K+GiHFO29tOg1ArywQP9Y5SfkMw+PCRJLfdezKeJR2y0po3MQ19hjgnHDgjBsBQpXtEgS4RzxZITYainJoC/33qbdWEdiKCreGko459tsYEP9fhzf0Zh6qWBkgbYuEHtOPcWYncVui4HpY0KjxIruMfHIoq25gb3M1tWHJxTAem5ZGiAdxSN3zM 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:(376002)(346002)(39850400004)(136003)(366004)(396003)(66476007)(6916009)(2906002)(66946007)(8676002)(16526019)(66556008)(31696002)(316002)(26005)(31686004)(83380400001)(2616005)(54906003)(478600001)(956004)(16576012)(4326008)(38100700002)(36756003)(6486002)(86362001)(8936002)(186003)(5660300002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?+qjIsYko6QthV+CargjGuUmxrEj0?= =?utf-8?q?tLELVCBz8bZpSPu/fn5qafXz+iDeLH0jk8GRWX2WZQmxlM3NspFCSAjt8tuU6qm3l?= =?utf-8?q?haUX8QJK3b1PDtgrRZPDYOJtRUkngPRu/miA82ok6c84S/ql5/WgA8J8VYWqs52BI?= =?utf-8?q?hvMJF07p2o87ThLSo5i4ZdionMfyz0VWSdmR9BIu77A6f8Bg67pWogVsEzsKNfS4v?= =?utf-8?q?P4zG3aFwBkQ9W/YDcFGirlH+octDFk85LgBsx0V/oIxBKDHUe2a09rVHCQk5yG8r0?= =?utf-8?q?qqvWKHsechIKNkfWU5SnLgpGcUj+VzA2DCvvF3P9Ho344mC4ldE/ehmhZ+8OWJ0JU?= =?utf-8?q?r+OfrENyYg4G/GPuwVWy/pQZCFpsOaNwsB2M+YCOAoOM+C1j3OvELmcKLqxztbnAK?= =?utf-8?q?fVVl0IHk5IlTBpYJ7pCVJ0b9lbN8SmL8JE2JNlg7N8k3RfAqraFRP0ObSOClJ6QPb?= =?utf-8?q?QP637VBmJvzgt919JU8k3YzYa6PoefiIiEbL9U+emKFOd8PN/BoP6oB/GTFIVacJT?= =?utf-8?q?4ATbSAp9e7kOabfMJJ6CcOdE2QUMCz5l8o54kY3Lbyz0Xrt+FoCu6gNPoFHl4eF+p?= =?utf-8?q?vaxCLeCTLm7I3x8rkWTNyM8WfPuo+Ck9IlzdHkktNhXirD/CPCEVbeLv1zfKFrYw0?= =?utf-8?q?X93tlGqPk00C4M5W88FZEg0V6xuqMY8rT6/Nz/kSEfQSYxR9QSFP/cVTZDoW+A+n3?= =?utf-8?q?ivtNqSqqxQVFSwwSqkCckbMjahTIwLLwmYcC6Gnio06ajs/tJHmqEWxNBUR3DIb1z?= =?utf-8?q?Zp9wmKMnt0ns+STdw94MZSdy2HvIxpOuJFl22U6/W5UQV95tvJl6P+3SmmK116t3E?= =?utf-8?q?E1psDGZdoMwhCeFTljdz3hmv3bvqUt2mqG8PHhgyf9/3DzMeX/FuJe5ST+i5sclxQ?= =?utf-8?q?2W45CpR1AVSZ4v6xhijym6PCQNakdzeWyn9fz3f0lWs4rpAJh8wNCSq4GHUi+Xp6z?= =?utf-8?q?NpK3Oa6xL/uh+EGGjtAyJx1vl2IT7qRHyHFYVWq3ZSiHaBHDI0foEZa1+1qLKzNLU?= =?utf-8?q?G43Yh+dq4S9d8AuRX5AbTbdcqyrTOEHu9pCgRxVN5NY+WtiI1GQn6l80e90cqypiG?= =?utf-8?q?bPF4acALa27q1izI9R49bB/071h7K775ZABbdx55ONhtiO6PoJD4JPfCvM0qDBbR4?= =?utf-8?q?vQbvtROL/g8WNiPbhKgGjT2oV9hF33BzOBCwhuKzyDZVcIcGPr0z1O8UlifyFuKDF?= =?utf-8?q?XAbD6KcDLXPCqG0NEaz/Or21b3byv+b3fWJr0zsDoNZKlselcOf2mQmvzVbxkmJAc?= =?utf-8?q?6D9G/tZGhj5FrOW1?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 442c4d2b-6579-446a-749c-08d93fc72d0a 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:11:33.7406 (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: m3n2xBuPFyp/hKn9REGuD7w12w+nnnk+1K+EBAUwF5AeAhox9eGxN9jqzCV8MKfpoERxMPf3E/12F8Q10b8lpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB7040 The hypervisor may not have enough memory to satisfy the request. While there, make the unit of the value clear by renaming the local variable. Requested-by: Andrew Cooper Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Reviewed-by: Anthony PERARD --- v2: Rename local variables. Also log requested value. Don't log errno explicitly in LOGED() (nor function return value). Integrate into series. --- Especially if the request was mostly fulfilled, guests may have done fine despite the failure, so there is a risk of perceived regressions here. But not checking the error at all was certainly wrong. --- a/tools/libs/light/libxl_x86.c +++ b/tools/libs/light/libxl_x86.c @@ -529,10 +529,20 @@ int libxl__arch_domain_create(libxl__gc xc_domain_set_time_offset(ctx->xch, domid, rtc_timeoffset); if (d_config->b_info.type != LIBXL_DOMAIN_TYPE_PV) { - unsigned long shadow = DIV_ROUNDUP(d_config->b_info.shadow_memkb, - 1024); - xc_shadow_control(ctx->xch, domid, XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION, - NULL, 0, &shadow, 0, NULL); + unsigned long shadow_mb = DIV_ROUNDUP(d_config->b_info.shadow_memkb, + 1024); + int r = xc_shadow_control(ctx->xch, domid, + XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION, + NULL, 0, &shadow_mb, 0, NULL); + + if (r) { + LOGED(ERROR, domid, + "Failed to set %lu MiB %s allocation", + shadow_mb, + libxl_defbool_val(d_config->c_info.hap) ? "HAP" : "shadow"); + ret = ERROR_FAIL; + goto out; + } } if (d_config->c_info.type == LIBXL_DOMAIN_TYPE_PV && From patchwork Mon Jul 5 15:12:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359279 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 22C39C07E99 for ; Mon, 5 Jul 2021 15:13:01 +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 A752761960 for ; Mon, 5 Jul 2021 15:13:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A752761960 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.150312.277936 (Exim 4.92) (envelope-from ) id 1m0QHD-0002ii-AD; Mon, 05 Jul 2021 15:12:51 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150312.277936; Mon, 05 Jul 2021 15:12:51 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QHD-0002ib-7F; Mon, 05 Jul 2021 15:12:51 +0000 Received: by outflank-mailman (input) for mailman id 150312; Mon, 05 Jul 2021 15:12:49 +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 1m0QHB-0002iP-GL for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:12:49 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.111.102]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 74c9d2d1-dda3-11eb-844b-12813bfff9fa; Mon, 05 Jul 2021 15:12:48 +0000 (UTC) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2110.outbound.protection.outlook.com [104.47.17.110]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-34-DElJ5Ev7NLic4a7_EVn6KA-2; Mon, 05 Jul 2021 17:12:46 +0200 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.4287.23; Mon, 5 Jul 2021 15:12:43 +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:12:43 +0000 Received: from [10.156.60.236] (37.24.206.209) by PR1P264CA0034.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:19f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23 via Frontend Transport; Mon, 5 Jul 2021 15:12:42 +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: 74c9d2d1-dda3-11eb-844b-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625497967; 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=dSF+8ncpJENw+5ko2Cel0fh192iyYi0fqzxuUE451AI=; b=VFP4zJ8vLVZfJkyKQR+DqxiIBh7FvyUZD4uwGOiq6YDjOBMjJgtANH4kT1ksyXB+4rdzse +kUICmp47KL9UHv7BJujR1mQOr7wsj8bJAbN2L71GaiTUUtynTKK/3gKl+MZF6ljxvIRmq odZx/l99yx/j2UOwxAz6dTBBAEJUP0w= X-MC-Unique: DElJ5Ev7NLic4a7_EVn6KA-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dX7pewv2J/SAi6O+8CXw3kZ2afdsOcPEBeZXPBRdjfEnKHkPGc3qGIdNtnH5XLHJxtSC/3DDjpSD7AHvpQlUR1Hyk5oZqFuno3q7kiXXWok+M936SdY5B/ogxdLN38zIqE84dMPHyMLjfWYATKMx1j7ax4Fbags34gJQV2x72j83gtdOvRGQXBAsT+21XjT1WpWC9gh7VDgS07IpeHdHaz8mzHm2nLJK98zxxSNRt7ILGcNH4m8cko2GbPdJCVzJ+FcbOKLUOaSxGzelsOF7X38ZkUe9oDIJKLC/2rO8zMEFN46qpGFpCtI8zAQJxzXvIfrtpE+ccRXqUHJeusZvuQ== 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=dSF+8ncpJENw+5ko2Cel0fh192iyYi0fqzxuUE451AI=; b=i1+duneueEgIyI5hQ1G3Ss8COpSV+AxOlMH1IEJ3rLmkM+s7hnJj/W70ic+XdZqPV6COVPxb/nlLvUG8ilhWbLxDWo2Kl+oTxHYpeyhCVDPz8hjrwwpN6Kn2IUMxyd+ckCPqkFkT+N6fgzhZCp4gf2fkDQO0zwzGOdsPsNiNaWQHTkis8pqbMfzqRB+T9KLwDbJxxlqlPiY2f33RgodtdnWs0uOPOvlxEG/wcQ/V4tKmI5qUbnEIJ9Y3MB82K2/8LYhZhdttBM8tHDQxu5+qB3dksKW7syhhUeGY1Hr3KLllSQvbGsVk8/RyukGxkAhVeJ+mDjKZZenTl7BOBEHzJA== 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: invisiblethingslab.com; dkim=none (message not signed) header.d=none;invisiblethingslab.com; dmarc=none action=none header.from=suse.com; Subject: [PATCH v2 02/13] libxc: split xc_logdirty_control() from xc_shadow_control() 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 , Anthony Perard , Marek Marczykowski References: <0bebfe8c-6897-dc8b-7fe0-9127d4996eb8@suse.com> Message-ID: <4b68233b-259c-3308-3292-82e991e1e108@suse.com> Date: Mon, 5 Jul 2021 17:12:41 +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: PR1P264CA0034.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:19f::21) 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: 4af11203-6bcb-4f94-ea2d-08d93fc756a7 X-MS-TrafficTypeDiagnostic: VI1PR04MB5743: 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:109; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2Pi/QJeHpblpF7Ws4tWqv7ijzwJeKxVcM2juk7CnuJvEyy0ntuMAOySBa6quAwF9mAjhaxZQnXCtd8q3xC6NoDBE6IKXKuHt0vZrFEk7oggY8NgRcH1zss0eBcs5IyCO9nsCDpi5C4Vfi85bVk0ANzdE1ntdkh6oro8xADoR+Ev3eeIU/WwUCiktSI2Je4B6c529masBlb2jgO/a3Xus1MJ5Iwj4wF3Xj7pItGh0m1E3kVpe51W52+EVQ0ozTie7YNbd1Zno9gI4YBLtYFJFMqm5Ix+UAeQrJIfNuVKyb+Cwa8ExtoU3WEfBxEWftoHmFMznsegKu1+eOv3gqKqEPT3LcXbSLaSmPqNEbNcXpRUfUPegCtHQTWu+ZsP23GEAOKRc27snLKOflpz0LTdw+zy0fzF1wPQK3Diyr5IV6YhEmL3ozE9XPAMjip4Vt28MInzJm4Xti5FTr7fhj3/bvEBXcNYsLOSAgyJ/NWIDtKutJAft320bWL+XFbM8ghsHlzWbIi+8Fyn6PMweHSBCH03EcgbLm6/IDRu7N0hAodAAEEMvQx6pL4C/gT72LOSPHeRXjCmdTmJ2maFtO/7edyN95ghmPQHZvVJj4qFw8+aGbTHkb72mFKvWIhtiR6Pavh/ZCv7KiZZP1Nu/uJvKS9Gl3KOCF9iKZzfwyYRV8MFp1p9WFCalprfENKzDx8l7sXVvcpUXt4P+nB818Llo9jaZvyRSebgmn3yN8KYTUhU= 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:(39860400002)(396003)(136003)(376002)(366004)(346002)(16576012)(83380400001)(6486002)(16526019)(6916009)(4326008)(8936002)(8676002)(186003)(36756003)(478600001)(316002)(38100700002)(26005)(86362001)(31696002)(2906002)(66946007)(5660300002)(31686004)(66556008)(54906003)(66476007)(2616005)(956004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?1OmrlyELqASHZmOFEO5vN8kauHT4?= =?utf-8?q?BqJlbuboLCFdIWa9VZKRZYPFFVQKkgpleNIfKgo1p1vAL4xKInhA0Why3K9SnUKT3?= =?utf-8?q?wufpyQjRLSq7P2Arkmf3pzYsAyYDIkcHRTY80j02fBG19Mrx+r6GtcvMHdxbGFLnL?= =?utf-8?q?XOEaKSkReDITr1tRWGifyoyVdRJgYLCD81X9QGrjAhoNm5KTX9UTujvqWjysQt47Q?= =?utf-8?q?ub781C8sS8ZAgSbYnmKtp70n5BYP4HLanSE3hpHKsxfJpsxhMJXvEulg8n7xFTkzN?= =?utf-8?q?dcq6XvDood9BO3lH6cM4AolUlCDT1MWEZVcBN+8GW6lxvbM6u3yc2t9k5BoV27DQX?= =?utf-8?q?hPPLVvdbG0nvx67W7YPWBYygsewlVM4/FrJ2v6OwP64KIbdCpoG82DOWQgUcQXeRZ?= =?utf-8?q?pO/WEkwtR+BacpwUK1+CnCnlCYaWXC+M5TaAbrbxZjTNUXy9S/JdjO9QW8lqCPgiI?= =?utf-8?q?PW5Cpy+C5GCQIgLr+YlaNdJCvZNt8c6oljxJfuMLio5cOdDEfGOnAMljuViU3ej/Q?= =?utf-8?q?ZZ/ZB5z7LKxIaHrqgTk7kfvRTJHuwFtiNAIzkVQksDs57R4dW1VQrwpi5qFntOQfP?= =?utf-8?q?tSDtrjGeyQl1/vwYN36HJuzXXEJ7oQ+x2nrZhRnT3jyKOsFRtZxV4C0WPBOyMRZ2s?= =?utf-8?q?SXVFaRFkTWzDKCpf30Op4Oq2yrpEr6lVezVrMQ2LzSdFCJgUOvg+vxNP25fyYQ3SK?= =?utf-8?q?dJNb3MfMVRFaHCYr9VtkvvhrzYsGBsOTewR8FOHljHAhHixysdkC5TpG41q/V1J7v?= =?utf-8?q?OQHhvbmYupzXznY0DH6su6FzF4YCgkZHB2vddfQH0C1uvtssO+qWiVvi3TRYDk3aq?= =?utf-8?q?DzpezjZfpMGE3lB1jReQCRcBd64pgFMBhLiPi558LojCnW5KuAvQhaxbLgCC6OROS?= =?utf-8?q?pNWISNSjRipMl1B2N7rJTrzwzrypuLC3p0C43Go87a0jhr0MbZ0Ej6NKlaAzV02np?= =?utf-8?q?URFb9di3kGIy0WTxFGaAWNAjPLFx4j1Wem/NDU2VNzFLWI+4tv9/awQNi8pGlDfeC?= =?utf-8?q?xgyYOsKhgIThGco3nPovec4QS/1HbG/yQ5MwxvPDSBdzrsUNQgZFumwZ0kc27h2dS?= =?utf-8?q?t7Zd1qa93wFxlSDh2ZYe2jRTWplvEX3SpUTLf1X7RAAd9220tzXwx7JM+SnYGGlHA?= =?utf-8?q?g0YBKqxwvMmCxBERJGNBsjaTImqqt30nafRFBCQYIoxYup3ScZEyrJMu+cGjk6W/8?= =?utf-8?q?ARtG/DkmlUwNR7I9myEzBmjX3CoF/611Ah232qmilIJuWJtertdyClIws3XQyItkp?= =?utf-8?q?vNVyNKNQqYvVQQ8z?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4af11203-6bcb-4f94-ea2d-08d93fc756a7 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:12:43.5632 (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: GoHXPffcNrMgIL9BzanjV1L8BenLzH1H5efyuJK6kxx9x9bbT78qH/1TQ/EhYi3AcwAEeCz1q617A2Thu4P6IQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5743 For log-dirty operations a 64-bit field is being truncated to become an "int" return value. Seeing the large number of arguments the present function takes, reduce its set of parameters to that needed for all operations not involving the log-dirty bitmap, while introducing a new wrapper for the log-dirty bitmap operations. This new function in turn doesn't need an "mb" parameter, but has a 64-bit return type. (Using the return value in favor of a pointer-type parameter is left as is, to disturb callers as little as possible.) While altering xc_shadow_control() anyway, also adjust the types of the last two of the remaining parameters. Signed-off-by: Jan Beulich Acked-by: Christian Lindig Reviewed-by: Juergen Gross Acked-by: Ian Jackson --- v2: Avoid new use of DECLARE_DOMCTL. Re-base over error handling fix to libxl__arch_domain_create(). --- I wonder whether we shouldn't take the opportunity and also rename xc_shadow_control() to, say, xc_paging_control(), matching the layer above the HAP/shadow distinction in the hypervisor. --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -885,11 +885,15 @@ typedef struct xen_domctl_shadow_op_stat int xc_shadow_control(xc_interface *xch, uint32_t domid, unsigned int sop, - xc_hypercall_buffer_t *dirty_bitmap, - unsigned long pages, - unsigned long *mb, - uint32_t mode, - xc_shadow_op_stats_t *stats); + unsigned int *mb, + unsigned int mode); +long long xc_logdirty_control(xc_interface *xch, + uint32_t domid, + unsigned int sop, + xc_hypercall_buffer_t *dirty_bitmap, + unsigned long pages, + unsigned int mode, + xc_shadow_op_stats_t *stats); int xc_sched_credit_domain_set(xc_interface *xch, uint32_t domid, --- a/tools/libs/ctrl/xc_domain.c +++ b/tools/libs/ctrl/xc_domain.c @@ -650,25 +650,49 @@ int xc_watchdog(xc_interface *xch, int xc_shadow_control(xc_interface *xch, uint32_t domid, unsigned int sop, - xc_hypercall_buffer_t *dirty_bitmap, - unsigned long pages, - unsigned long *mb, - uint32_t mode, - xc_shadow_op_stats_t *stats) + unsigned int *mb, + unsigned int mode) { int rc; DECLARE_DOMCTL; - DECLARE_HYPERCALL_BUFFER_ARGUMENT(dirty_bitmap); memset(&domctl, 0, sizeof(domctl)); domctl.cmd = XEN_DOMCTL_shadow_op; domctl.domain = domid; domctl.u.shadow_op.op = sop; - domctl.u.shadow_op.pages = pages; domctl.u.shadow_op.mb = mb ? *mb : 0; domctl.u.shadow_op.mode = mode; - if (dirty_bitmap != NULL) + + rc = do_domctl(xch, &domctl); + + if ( mb ) + *mb = domctl.u.shadow_op.mb; + + return rc; +} + +long long xc_logdirty_control(xc_interface *xch, + uint32_t domid, + unsigned int sop, + xc_hypercall_buffer_t *dirty_bitmap, + unsigned long pages, + unsigned int mode, + xc_shadow_op_stats_t *stats) +{ + int rc; + struct xen_domctl domctl = { + .cmd = XEN_DOMCTL_shadow_op, + .domain = domid, + .u.shadow_op = { + .op = sop, + .pages = pages, + .mode = mode, + } + }; + DECLARE_HYPERCALL_BUFFER_ARGUMENT(dirty_bitmap); + + if ( dirty_bitmap ) set_xen_guest_handle(domctl.u.shadow_op.dirty_bitmap, dirty_bitmap); @@ -678,9 +702,6 @@ int xc_shadow_control(xc_interface *xch, memcpy(stats, &domctl.u.shadow_op.stats, sizeof(xc_shadow_op_stats_t)); - if ( mb ) - *mb = domctl.u.shadow_op.mb; - return (rc == 0) ? domctl.u.shadow_op.pages : rc; } --- a/tools/libs/guest/xg_sr_restore.c +++ b/tools/libs/guest/xg_sr_restore.c @@ -459,10 +459,10 @@ static int send_checkpoint_dirty_pfn_lis DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, &ctx->restore.dirty_bitmap_hbuf); - if ( xc_shadow_control( + if ( xc_logdirty_control( xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, HYPERCALL_BUFFER(dirty_bitmap), ctx->restore.p2m_size, - NULL, 0, &stats) != ctx->restore.p2m_size ) + 0, &stats) != ctx->restore.p2m_size ) { PERROR("Failed to retrieve logdirty bitmap"); goto err; --- a/tools/libs/guest/xg_sr_save.c +++ b/tools/libs/guest/xg_sr_save.c @@ -428,18 +428,18 @@ static int enable_logdirty(struct xc_sr_ /* This juggling is required if logdirty is enabled for VRAM tracking. */ rc = xc_shadow_control(xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY, - NULL, 0, NULL, 0, NULL); + NULL, 0); if ( rc < 0 ) { on1 = errno; rc = xc_shadow_control(xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_OFF, - NULL, 0, NULL, 0, NULL); + NULL, 0); if ( rc < 0 ) off = errno; else { rc = xc_shadow_control(xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY, - NULL, 0, NULL, 0, NULL); + NULL, 0); if ( rc < 0 ) on2 = errno; } @@ -556,10 +556,10 @@ static int send_memory_live(struct xc_sr if ( policy_decision != XGS_POLICY_CONTINUE_PRECOPY ) break; - if ( xc_shadow_control( + if ( xc_logdirty_control( xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, &ctx->save.dirty_bitmap_hbuf, ctx->save.p2m_size, - NULL, 0, &stats) != ctx->save.p2m_size ) + 0, &stats) != ctx->save.p2m_size ) { PERROR("Failed to retrieve logdirty bitmap"); rc = -1; @@ -653,10 +653,10 @@ static int suspend_and_send_dirty(struct if ( rc ) goto out; - if ( xc_shadow_control( + if ( xc_logdirty_control( xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, HYPERCALL_BUFFER(dirty_bitmap), ctx->save.p2m_size, - NULL, XEN_DOMCTL_SHADOW_LOGDIRTY_FINAL, &stats) != + XEN_DOMCTL_SHADOW_LOGDIRTY_FINAL, &stats) != ctx->save.p2m_size ) { PERROR("Failed to retrieve logdirty bitmap"); @@ -716,10 +716,10 @@ static int verify_frames(struct xc_sr_co if ( rc ) goto out; - if ( xc_shadow_control( + if ( xc_logdirty_control( xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_PEEK, &ctx->save.dirty_bitmap_hbuf, ctx->save.p2m_size, - NULL, 0, &stats) != ctx->save.p2m_size ) + 0, &stats) != ctx->save.p2m_size ) { PERROR("Failed to retrieve logdirty bitmap"); rc = -1; @@ -834,7 +834,7 @@ static void cleanup(struct xc_sr_context xc_shadow_control(xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_OFF, - NULL, 0, NULL, 0, NULL); + NULL, 0); if ( ctx->save.ops.cleanup(ctx) ) PERROR("Failed to clean up"); --- a/tools/libs/light/libxl_colo_restore.c +++ b/tools/libs/light/libxl_colo_restore.c @@ -62,7 +62,7 @@ static void colo_enable_logdirty(libxl__ /* we need to know which pages are dirty to restore the guest */ if (xc_shadow_control(CTX->xch, domid, XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY, - NULL, 0, NULL, 0, NULL) < 0) { + NULL, 0) < 0) { LOGD(ERROR, domid, "cannot enable secondary vm's logdirty"); lds->callback(egc, lds, ERROR_FAIL); return; @@ -90,7 +90,7 @@ static void colo_disable_logdirty(libxl_ /* we need to know which pages are dirty to restore the guest */ if (xc_shadow_control(CTX->xch, domid, XEN_DOMCTL_SHADOW_OP_OFF, - NULL, 0, NULL, 0, NULL) < 0) + NULL, 0) < 0) LOGD(WARN, domid, "cannot disable secondary vm's logdirty"); if (crs->hvm) { --- a/tools/libs/light/libxl_x86.c +++ b/tools/libs/light/libxl_x86.c @@ -529,15 +529,15 @@ int libxl__arch_domain_create(libxl__gc xc_domain_set_time_offset(ctx->xch, domid, rtc_timeoffset); if (d_config->b_info.type != LIBXL_DOMAIN_TYPE_PV) { - unsigned long shadow_mb = DIV_ROUNDUP(d_config->b_info.shadow_memkb, - 1024); + unsigned int shadow_mb = DIV_ROUNDUP(d_config->b_info.shadow_memkb, + 1024); int r = xc_shadow_control(ctx->xch, domid, XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION, - NULL, 0, &shadow_mb, 0, NULL); + &shadow_mb, 0); if (r) { LOGED(ERROR, domid, - "Failed to set %lu MiB %s allocation", + "Failed to set %u MiB %s allocation", shadow_mb, libxl_defbool_val(d_config->c_info.hap) ? "HAP" : "shadow"); ret = ERROR_FAIL; --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -997,13 +997,13 @@ CAMLprim value stub_shadow_allocation_ge { CAMLparam2(xch, domid); CAMLlocal1(mb); - unsigned long c_mb; + unsigned int c_mb; int ret; caml_enter_blocking_section(); ret = xc_shadow_control(_H(xch), _D(domid), XEN_DOMCTL_SHADOW_OP_GET_ALLOCATION, - NULL, 0, &c_mb, 0, NULL); + &c_mb, 0); caml_leave_blocking_section(); if (ret != 0) failwith_xc(_H(xch)); @@ -1016,14 +1016,14 @@ CAMLprim value stub_shadow_allocation_se value mb) { CAMLparam3(xch, domid, mb); - unsigned long c_mb; + unsigned int c_mb; int ret; c_mb = Int_val(mb); caml_enter_blocking_section(); ret = xc_shadow_control(_H(xch), _D(domid), XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION, - NULL, 0, &c_mb, 0, NULL); + &c_mb, 0); caml_leave_blocking_section(); if (ret != 0) failwith_xc(_H(xch)); --- a/tools/python/xen/lowlevel/xc/xc.c +++ b/tools/python/xen/lowlevel/xc/xc.c @@ -1192,8 +1192,7 @@ static PyObject *pyxc_shadow_control(PyO &dom, &op) ) return NULL; - if ( xc_shadow_control(xc->xc_handle, dom, op, NULL, 0, NULL, 0, NULL) - < 0 ) + if ( xc_shadow_control(xc->xc_handle, dom, op, NULL, 0) < 0 ) return pyxc_error_to_exception(xc->xc_handle); Py_INCREF(zero); @@ -1208,7 +1207,7 @@ static PyObject *pyxc_shadow_mem_control int op; uint32_t dom; int mbarg = -1; - unsigned long mb; + unsigned int mb; static char *kwd_list[] = { "dom", "mb", NULL }; @@ -1223,7 +1222,7 @@ static PyObject *pyxc_shadow_mem_control mb = mbarg; op = XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION; } - if ( xc_shadow_control(xc->xc_handle, dom, op, NULL, 0, &mb, 0, NULL) < 0 ) + if ( xc_shadow_control(xc->xc_handle, dom, op, &mb, 0) < 0 ) return pyxc_error_to_exception(xc->xc_handle); mbarg = mb; From patchwork Mon Jul 5 15:13:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359281 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 DA3C2C07E99 for ; Mon, 5 Jul 2021 15:13:43 +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 8126661960 for ; Mon, 5 Jul 2021 15:13:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8126661960 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.150318.277947 (Exim 4.92) (envelope-from ) id 1m0QHv-0003N6-O7; Mon, 05 Jul 2021 15:13:35 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150318.277947; Mon, 05 Jul 2021 15:13:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QHv-0003Mz-KL; Mon, 05 Jul 2021 15:13:35 +0000 Received: by outflank-mailman (input) for mailman id 150318; Mon, 05 Jul 2021 15:13:34 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QHu-0003Mp-Eb for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:13:34 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.111.102]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 644898e0-a5d7-4f2b-8fb0-71d8cdace4d3; Mon, 05 Jul 2021 15:13:33 +0000 (UTC) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2104.outbound.protection.outlook.com [104.47.17.104]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-24-hwN5UErJPKCc14Nz71R6FQ-2; Mon, 05 Jul 2021 17:13:31 +0200 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.4287.23; Mon, 5 Jul 2021 15:13:29 +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:13:29 +0000 Received: from [10.156.60.236] (37.24.206.209) by PR1P264CA0030.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:19f::17) 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:13:29 +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: 644898e0-a5d7-4f2b-8fb0-71d8cdace4d3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498012; 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=rgEdhafpz8BW5gWdiXksunqCC0nVZhZBo0PaP6yDugg=; b=bqjAtljegRBb6MUkqiE3AfSOJ5Wv3+F80VDzQHA5kvjRqSPFTvTlDPKn4QNajsxxbB+SEl TqpwmKH0Wwjl41QaxQ9p+XHybwmWy/ZoUfod3w5xg/tXA2MK0tuYPeCscryr/4hsxh9L0S yHGcMURAd78nT8tJcHTUi9YwN1evLzw= X-MC-Unique: hwN5UErJPKCc14Nz71R6FQ-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VBu+sH1Y6YKiyXeLuEDh+3FrBdxRwMWkVpOMJ4cNLZKWL9mlRMaZzt+VduYb17kb4o1xhdTvlyfAEqo/dxZwMZk9qvyXhZx6aw5AVDwm4EX3aErdpTDEwV/3S3i2/YZGZtpvnL8LgUpS+tCry9d6tc6cIsoY9TGZT5yugS0G62keOmdMF1U6w7P1wIYCfChDC1LT6OoKTUhlGav9jZp27kHYNOvYes3i3HUVR5S9phjtk5prkvLkmgCEnJRXLeaataBo/iZyivHFFqZy1WOVUbRZB91aoDcUkeR9xbSTFMBveeQSO+2D2YkLgSxABlFRASvTcaTCS2RSsnywp0qpdA== 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=rgEdhafpz8BW5gWdiXksunqCC0nVZhZBo0PaP6yDugg=; b=kOyXOgFn17Jo1+5VXXaiNlvbi/bF64KSbRDUNdJKlM8+pnsd2UkflyKkk0BPVi1kvfkBCGT+8+IiFJQ+fVeGKRCzIVR7eYRS+eiyRb+IhtIuvyytH2XOKFS2S5CGMh9//Cs/CtCC2jk2kNfYeDP0b8sUNgep762ReHki1W/wE0wmkoqouvclSgD/IFGRrwmBgklZq3jWMMOdQbKUNvmUElt92Gt29PCEeOUzeVyHftcbeUj37wTRiJ2VTXrNVrGvQypIaXo5pw2CCJoEijw4uUoWqDvZtAnkzIFkEdZ6safuDsbzjaWj/+Mr8iQVxj2R0XUPSXYlriu/BHHcyKRQxA== 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 03/13] libxenguest: deal with log-dirty op stats overflow 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: <668ef720-389f-4cf1-608e-64aca4f7c73d@suse.com> Date: Mon, 5 Jul 2021 17:13:28 +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: PR1P264CA0030.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:19f::17) 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: 7f5a04ec-d716-46ca-9682-08d93fc7723c X-MS-TrafficTypeDiagnostic: VI1PR04MB5743: 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:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: l4OjnwNaBl9c7JjrEEwEEvraa5XiAT+KoX6gruMCDMFCd0hTNpNvyYr4J1MoOPP9xg5BAg0qyeztZ/SdfniS8CtpyLmY8vyYadIFrqpRjSuxfe/eWjoVXdBNytfrCzBolaNTWfHAZbHDnNF0Iq0iaU/XJQY6X0h3aq8P9Y6MblIbC6KT9mRuxsg5AioUQ4HGuvIXLVAMXIu7F8tJDaz2FI7yaZKD2cYGgtbA0opr4cfYQKmuu88Fa6SIX8fNonr4i6DNwfw+wdPYUkz+W8cVlVhkXhzeiThV+Bu30zZPwc4g47ZP/hWakF/V4oijfYHpy/U++sSPQeMuKWf9OrYloA+FhdCYekCsM56TGDu8m+HGXVNcbSFoxDp6lyJhCQbGRtDhM5HFWKiUthYekMl2slt0weag+acA+by1I5mvj9iWqV5oQl59Uqs3l0xrL+jI7gE4Hh+ZB6HvA8pqdnIhe0MLt+er/bpAtrBy0syKhRLs5jexV0kuepELQRB+C2NYCn6VV4OcTdhkTe/I+oHelQXxXMy0NUahFrcNSpPo8gco832Ifs/auzrk+Ee25++GDdQOE+gA7GrnC+O+60xoBj3vTufpX6Um0RoUojlDWhnDYT+oCELHQlPwXv1ASdnfC8I/gJs4phesfw9UB0ZuTvH63WVfA43O2O2mRB1ucojD9zyCIr/8bkS5kVhB7WQe7ZvmRVo7rSmXnO8yDJjzA+PSqlsKgedHFtCNuO2g9EoS8SpBuc+jr4mM3JMcfDI7 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:(39860400002)(396003)(136003)(376002)(366004)(346002)(16576012)(83380400001)(6486002)(16526019)(6916009)(4326008)(8936002)(8676002)(186003)(36756003)(478600001)(316002)(38100700002)(26005)(86362001)(31696002)(2906002)(66946007)(5660300002)(31686004)(66556008)(54906003)(66476007)(2616005)(956004)(14143004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?mEdveq3oklUuhnZtG4oU94AtPjnH?= =?utf-8?q?vsxHM85lPcCupF5zuIH9tfq+zFn6BUCTf1h6U1VQD3KcSp+GFA5k9YNKwqcYlV/ZZ?= =?utf-8?q?9OMnT6tBpCSMov5FxW+e+N3XukQsbyZi3SUkkfoPseAaMa7zhMdMAYZHwOV7crhc+?= =?utf-8?q?sM+cRh6lpJHM10z3g74Qc8rKeahlcmIm2A9HO3p3+Z5+xh6do/B4SpwkJXUqXF6z3?= =?utf-8?q?Cu9t2Fz+by68h5b1o8ON2mv5xXd21r1d1/hANFPo5q9FmphSZDd/sZq2rofN6wLHh?= =?utf-8?q?3e+Tw/inckgYX1/duP6UoHmpsZPQ0WSyp8wk+X7zzzLXONr55M1dqvUBGr6QvFxWq?= =?utf-8?q?Exk8/ttpWZeKHAOFRJCDS/q0G23HNel+XbtA93dEdy/acUxbAMprkJjxdCNtX3Bd2?= =?utf-8?q?omUyRGaF53/cM4DCNgRMCAterqQcQEVygVN/vbx5jIhJlyNgfalL/uKG7ciZp+J9E?= =?utf-8?q?M2GfSE0tU06olwDweB3B9tRskvztVh3Fryl4UFwg7uXTc9YGRwc/gVqxOCGCR/UhA?= =?utf-8?q?fHzeyW5kkcpQ8rNaTnN8wKIhgsrr8pbldByxzs0nu9t2FcMMRtWc83y/9DTLUnjjk?= =?utf-8?q?2IWgGxyWTEa48D1aRGlABFB1t8ItzApsvRQuMjn7OyoheBa1lvYV02bPmG2I0t/0P?= =?utf-8?q?7/Y0+uc//6YVRUAaK9gDIYxNRftCiFEqN/Kf6kOvdtjBQ8khUyAJaenEpxZEFykwC?= =?utf-8?q?AjNNqNBobZYiq+MapX6PVQl6zjMnCBRCq1hSChbLu8ASxgk4vbc/Q2Hq/dQ+lIeJG?= =?utf-8?q?m3C3Gk/KqGaBCATQNyf3k4A46lbWfpoyKs9Y7F/m4rotE7eF/0O6gmhJsXlX44rkw?= =?utf-8?q?9SQYCig8134lkz+Oo021m/0iEN+D1tPuK/R/Bfj9jmS7e9bSoge8+h/a6YVPk1/RC?= =?utf-8?q?m3HrzwIXrA8bjVjC05kHu7RED1GJDRyfCu8hzazjobC8fl8qROtx5ZCawDWzExosE?= =?utf-8?q?ZRuMivzhgOis/j4Tf/Zzlo1NnG61iMppaANT9MfnN4CmHNjDl+3t1swseXFSuAs51?= =?utf-8?q?C+haQ2ULB6bN1a6zesdvQSwizk7GvzJzyq2nDYfe3ao090WK//PaSCyeJbdtq9XJt?= =?utf-8?q?GlPDxr4k2JVZUyzBDj+MzeKWmUaF5tkOuRYJ2UT7VtbXNRX0aa5/0BKpT/dAsmgCh?= =?utf-8?q?oAE+2gwSQmtbPUPseaQE2QP64S6MLZ1wQapCCr7xX7wIGFucjYkWGePrg+V9PD+cO?= =?utf-8?q?RfD0dd9/eIaEffMTLHqSG1myUpEe2ARIsszsjQLfLdrUnFVNylta5c+wHRWAC46Z6?= =?utf-8?q?FyOTX+Bt9mmGg36q?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f5a04ec-d716-46ca-9682-08d93fc7723c 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:13:29.8500 (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: tCkIymuHFMTS0pHdpfJWJIxVTYmkcOpq9sLwqXQQip+xU4LUGJeCbiju0FJFcR3s57kW1W5KcNd21Eu+pW9CLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5743 In send_memory_live() the precise value the dirty_count struct field gets initialized to doesn't matter much (apart from the triggering of the log message in send_dirty_pages(), see below), but it is important that it not be zero on the first iteration (or else send_dirty_pages() won't get called at all). Saturate the initializer value at the maximum value the field can hold. While there also initialize struct precopy_stats' respective field to a more sane value: We don't really know how many dirty pages there are at that point. In suspend_and_send_dirty() and verify_frames() the local variables don't need initializing at all, as they're only an output from the hypercall which gets invoked first thing. In send_checkpoint_dirty_pfn_list() the local variable can be dropped altogether: It's optional to xc_logdirty_control() and not used anywhere else. Note that in case the clipping actually takes effect, the "Bitmap contained more entries than expected..." log message will trigger. This being just an informational message, I don't think this is overly concerning. Signed-off-by: Jan Beulich --- a/tools/libs/guest/xg_sr_restore.c +++ b/tools/libs/guest/xg_sr_restore.c @@ -452,7 +452,6 @@ static int send_checkpoint_dirty_pfn_lis unsigned int count, written; uint64_t i, *pfns = NULL; struct iovec *iov = NULL; - xc_shadow_op_stats_t stats = { 0, ctx->restore.p2m_size }; struct xc_sr_record rec = { .type = REC_TYPE_CHECKPOINT_DIRTY_PFN_LIST, }; @@ -462,7 +461,7 @@ static int send_checkpoint_dirty_pfn_lis if ( xc_logdirty_control( xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, HYPERCALL_BUFFER(dirty_bitmap), ctx->restore.p2m_size, - 0, &stats) != ctx->restore.p2m_size ) + 0, NULL) != ctx->restore.p2m_size ) { PERROR("Failed to retrieve logdirty bitmap"); goto err; --- a/tools/libs/guest/xg_sr_save.c +++ b/tools/libs/guest/xg_sr_save.c @@ -500,7 +500,9 @@ static int simple_precopy_policy(struct static int send_memory_live(struct xc_sr_context *ctx) { xc_interface *xch = ctx->xch; - xc_shadow_op_stats_t stats = { 0, ctx->save.p2m_size }; + xc_shadow_op_stats_t stats = { + .dirty_count = MIN(ctx->save.p2m_size, (typeof(stats.dirty_count))~0) + }; char *progress_str = NULL; unsigned int x = 0; int rc; @@ -519,7 +521,7 @@ static int send_memory_live(struct xc_sr goto out; ctx->save.stats = (struct precopy_stats){ - .dirty_count = ctx->save.p2m_size, + .dirty_count = -1, }; policy_stats = &ctx->save.stats; @@ -643,7 +645,7 @@ static int colo_merge_secondary_dirty_bi static int suspend_and_send_dirty(struct xc_sr_context *ctx) { xc_interface *xch = ctx->xch; - xc_shadow_op_stats_t stats = { 0, ctx->save.p2m_size }; + xc_shadow_op_stats_t stats; char *progress_str = NULL; int rc; DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, @@ -701,7 +703,7 @@ static int suspend_and_send_dirty(struct static int verify_frames(struct xc_sr_context *ctx) { xc_interface *xch = ctx->xch; - xc_shadow_op_stats_t stats = { 0, ctx->save.p2m_size }; + xc_shadow_op_stats_t stats; int rc; struct xc_sr_record rec = { .type = REC_TYPE_VERIFY }; From patchwork Mon Jul 5 15:13:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359283 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=-14.5 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, UNWANTED_LANGUAGE_BODY,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 AE73DC07E99 for ; Mon, 5 Jul 2021 15:14:08 +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 64E236196C for ; Mon, 5 Jul 2021 15:14:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 64E236196C 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.150322.277958 (Exim 4.92) (envelope-from ) id 1m0QIK-0003te-1u; Mon, 05 Jul 2021 15:14:00 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150322.277958; Mon, 05 Jul 2021 15:14:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QIJ-0003tX-T3; Mon, 05 Jul 2021 15:13:59 +0000 Received: by outflank-mailman (input) for mailman id 150322; Mon, 05 Jul 2021 15:13:58 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QII-0003tA-EY for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:13:58 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.109.102]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 0a1febcd-6349-4668-9704-c8963c68a6f5; Mon, 05 Jul 2021 15:13:57 +0000 (UTC) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-he1eur02lp2058.outbound.protection.outlook.com [104.47.5.58]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-21-hhwCXXzpNOC5omsRL79SXA-1; Mon, 05 Jul 2021 17:13:55 +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:13:52 +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:13:52 +0000 Received: from [10.156.60.236] (37.24.206.209) by PR3P191CA0030.EURP191.PROD.OUTLOOK.COM (2603:10a6:102:54::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.22 via Frontend Transport; Mon, 5 Jul 2021 15:13:52 +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: 0a1febcd-6349-4668-9704-c8963c68a6f5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498036; 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=UQL1vwy7ts4g8z4e13aIolGoDY7pl/cPWGBcYrNuYnE=; b=aUdJsjqcQRwbpVliZU8rwYGdn+I+avxFQYyjhhgDzP24CjgF+uHKcoFSNJj+HATt9GDY4F 28zPMVkXzWVy+l4CSEg5706vX5GQQcVD64nZJWaNCaFiKsQrdneKeq89hiXfKjVDWdmgbS guz/huJGPbCHtf0rcNt8dnk8PqI2xpo= X-MC-Unique: hhwCXXzpNOC5omsRL79SXA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KmqiP8LnOksTs/mereAZLfN3gTIlwt9HR38ltzLHUKGLXb8vBNckzbhHABp/hBGcFofBGbr4Asu2G9abxy+GIFvJodWqrc0/iMZ/OzRmJFbJOhZ0rww6h3v3x+yDoWuC8qOu+f52pKMzZOgfZTssMGM6YctkDxsD1JMkri1PSS4tH3L2Y83VdqigB8lO6wOsRZeLc0oSLzm/HOPsb6a2ghkfdtvKsEscYNyrypjCfMTQnAkSbKL6aEfPkpJBKstrtRDhg7tXcsnNDsDwqiMfL+N4VV1V9s2mfpvxwD+hLJMHYMZQ3BLG35EPwqP6pUxQ/KfURoguNEfMwDAkTTpwEg== 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=UQL1vwy7ts4g8z4e13aIolGoDY7pl/cPWGBcYrNuYnE=; b=AlBz13sPUFz8GqO2DNgim6pTTk2JqzWmsE2TJRq+Ncl1tsFoFS+aqqrzrR/Eps+4bh+GlFSQise5h5z/qxwCk2YRvYK0g7Vc/rNu8e+FZRFHWjnJVZ+u4tjuf/ONimz0T1T9wwQcnj9SUnIFYE/9v6AOSVNHbsxgxvoNJJhf0sDNJxz8GdXns1Fo4jF8uDlL7uWgE2nschRswgyqbpECTNTAlVYpJXTIDBfynkE14Mfm0HuEnnolaWBGOBcBhHA0s/iavwIi1lA0mJFrg4/51a+VN2uiIs0KZkoFen7tRZvPE2zLohj95bhvB83usI8CCA2pS4YntiGpBQ0D6zVpzQ== 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 04/13] libxenguest: short-circuit "all-dirty" handling 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: <709a0dc1-bb68-4f06-b73b-fbefaa661c77@suse.com> Date: Mon, 5 Jul 2021 17:13:50 +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: PR3P191CA0030.EURP191.PROD.OUTLOOK.COM (2603:10a6:102:54::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: 6007b3c0-351e-4b85-cffe-08d93fc77fd6 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:249; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w+uHPurXfOSMgMITzyhxz0W1k1xcmX4Lu4CzX6t1zBB6aSO/l/nJ1DRH6WbWahcKB7ZRM4nQkmj54u2frF8LYBbVDX6bsQc8QnaGK7SZxdMzt4ECxGM/6vzfv9XJl/MttKcksG0g05+7CGJlvslTqM+Ow4Gy6pJTFoWBIzRH8SBt1+TRAdBgBEvVdeFFhp4d8pgzEX3aYGr8F4EsNYl1TKPlBOb8+Lfh6a6k0j6JzZp5VV93w3X68pd6ZyigM8SWcm5aqTPDW0OlSL1x6fR2Pdr+M0VW8+6q9K5HekB7/7XNmKzNiXzc9Og4OQJwObQSSJYADFqQtol+LNyy8FCP5KvF7lE//hKVLQXrUfnxnlpcHbzKOzhnw4JCL4pqogWd67QSrKIvcGlnmZ0bAb0rtM3MKl7jmGo0q6JmZhb4c6rXzd1kZMaF8je1rIfXoIthh6lMHbvPX1RzV4KNzlBgRz8trhCHh7zd4uM86UI747CXfKNUbw7EfylCd3cIwX/NnPyeD+t6dl3E9C0HX3rQDntrrDDMu78wUVo8t4XO7M5uoQ31Mz0siRq2t1Vm3pCGAbV+EhVeYAz+5pEIqBfNVhhoirIjzyKy64Gnyp4WKq0MymlrkOdb4RxQA6udEtfpjVUQqlJP1hH+r0uTndHzo0PtiueN0RbQqvvKujLr2OqT6mgB75IFN2pz39YmOpNJj5v6gu6PI7W12NjV5+5xYNYGUWBrBzHsiX7UQHMceDZ9wO8gqiK7tad7D/H9DS2t 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:(136003)(376002)(396003)(346002)(39850400004)(366004)(83380400001)(31686004)(5660300002)(6486002)(86362001)(478600001)(956004)(31696002)(2616005)(6916009)(26005)(2906002)(186003)(4326008)(54906003)(36756003)(8936002)(316002)(8676002)(16576012)(16526019)(66556008)(66946007)(38100700002)(66476007)(14143004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?KB/QLf/IS3qnWa1qjZ3ncrI5TsHR?= =?utf-8?q?O4LtqP1eKTPXplRET1SfPrvQAaWqUzHC4tKqBUAYebe9SrFbRIAmwfpO7QENzKHkp?= =?utf-8?q?rST5WG0UepcQwK6xNiGt2NTim4D6g85zJdoVFn1TOhplIhMc9+6IUNYAcKkBZlEmJ?= =?utf-8?q?VKCrnifHGv0eUxO1hfFaIEUYRDBj2AzixGc39DL76VGR7jO73B4rtMIm+9+1yGfLm?= =?utf-8?q?WK7GjzCRLlJlgSuBjnhDLx6Emf4c+BDzP2PHXChur3vpDeXR1cZsYErXPImWdpiUq?= =?utf-8?q?gxjQovO7MOhJoj/pLg0cqsQkl5NokoPjTLMbxTOkfPEDCvgdAotoGkObeDN2kU23P?= =?utf-8?q?PmHB9rvSTWQLxmJYAACkcgqDpsuPEMSHpVlCCawaAw0WxFl94mZBG3W+eu0gRu7a3?= =?utf-8?q?rGESCEeMeL93p6ei1X34sOMgKvIQJvJRkeWAFD64QmRPOHrFPh+dIwlQoSi13NE0b?= =?utf-8?q?iTg+7142mxBsHs6c/dd/O0U/B4OJdBTFPCCFHx0k5VDJvd7Qo3j1dXHQS2JiDcC3T?= =?utf-8?q?wz0sYimgNg+/osO8NV4t5EHxsT3LmoPNhGEM+r3KkORm5XpC4hnnFt9kgkBH7onZw?= =?utf-8?q?ZDK8puoA4FgtlfYYs1RDQb4R34BtLXQF+iFunhkUm/10AeK+L39eTxG1OZnbkgB9S?= =?utf-8?q?N+xccTsDVLh8sAWPgaCJPLkW5YMfpqGiTWC1GpU17E9WFcVdHiAdyJac9s2xnkmd+?= =?utf-8?q?ukZha7BzjCWkzKGfJmXXpc/67vbXu+4OQIrfZUwItPjrQp6xjTGIAf6luhsibDY+W?= =?utf-8?q?GzbG0yHrBS2RmvVqThGStWjvXYgkN+dA3erSLhEgEaCCvTWOCDP16/lErAlR54k+v?= =?utf-8?q?kmZT7zs4Ga2NYGlxG+KNfSZQQMYQ8Tk5YAvWvQXXjbtpIoxl2sNDpzdOiyVjsT3NN?= =?utf-8?q?htA0GXnwre/02eYgqG564wTxWJzAzqo312cTY2t0wIMBw6nElGkgXtauiDemThibh?= =?utf-8?q?oKYk2KbL0igV2LIlFECEPuxH1VASLmUmrSXZEHjpDbTAOkrI9tddv0vMtvgpfwJLE?= =?utf-8?q?uYWZbaohaJZLnlB5dzEhonJjGWhWxRfC8irt3T+YJqQ9t2bZ7tP+ZFM/IcqYXpP9G?= =?utf-8?q?5NVl0kMVE7hxwc8j0wnHJS6Ighp+vT2z6vJuteegcH3vWJ3vFRbBLO8CNdNd+dPiy?= =?utf-8?q?hH6iO8ZQoB47a6bu/9PDtXs0IhsK6J0wdwRwEAYnvyDEc22WlokCDPXrlWCyk0T5i?= =?utf-8?q?wnXFBaLp3R5YLAGpy2bvLd8xIGw50vOs2OQuRJorFty3WyZKqRtBOK+NF/uH1mxHF?= =?utf-8?q?xR3M5XUlHNmAaSBy?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6007b3c0-351e-4b85-cffe-08d93fc77fd6 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:13:52.6661 (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: vXTtsMRLmyPFQ1gje2FBFzgVe6Y9j5O/9VkvSmklTHTVq12OdPyVo6NZdZsDcS/WGYCMUR/CGf4mr0v++Mt3Gw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2608 For one it is unnecessary to fill a perhaps large chunk of memory with all ones. Add a new parameter to send_dirty_pages() for callers to indicate so. Then it is further unnecessary to allocate the dirty bitmap altogether 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 @@ -368,7 +368,7 @@ static int suspend_domain(struct xc_sr_c * Bitmap is bounded by p2m_size. */ static int send_dirty_pages(struct xc_sr_context *ctx, - unsigned long entries) + unsigned long entries, bool all_dirty) { xc_interface *xch = ctx->xch; xen_pfn_t p; @@ -379,7 +379,7 @@ static int send_dirty_pages(struct xc_sr for ( p = 0, written = 0; p < ctx->save.p2m_size; ++p ) { - if ( !test_bit(p, dirty_bitmap) ) + if ( !all_dirty && !test_bit(p, dirty_bitmap) ) continue; rc = add_to_batch(ctx, p); @@ -411,12 +411,7 @@ static int send_dirty_pages(struct xc_sr */ static int send_all_pages(struct xc_sr_context *ctx) { - DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, - &ctx->save.dirty_bitmap_hbuf); - - bitmap_set(dirty_bitmap, ctx->save.p2m_size); - - return send_dirty_pages(ctx, ctx->save.p2m_size); + return send_dirty_pages(ctx, ctx->save.p2m_size, true /* all_dirty */); } static int enable_logdirty(struct xc_sr_context *ctx) @@ -508,9 +503,6 @@ static int send_memory_live(struct xc_sr int rc; int policy_decision; - DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, - &ctx->save.dirty_bitmap_hbuf); - precopy_policy_t precopy_policy = ctx->save.callbacks->precopy_policy; void *data = ctx->save.callbacks->data; @@ -528,8 +520,6 @@ static int send_memory_live(struct xc_sr if ( precopy_policy == NULL ) precopy_policy = simple_precopy_policy; - bitmap_set(dirty_bitmap, ctx->save.p2m_size); - for ( ; ; ) { policy_decision = precopy_policy(*policy_stats, data); @@ -541,7 +531,7 @@ static int send_memory_live(struct xc_sr if ( rc ) goto out; - rc = send_dirty_pages(ctx, stats.dirty_count); + rc = send_dirty_pages(ctx, stats.dirty_count, x == 1); if ( rc ) goto out; } @@ -687,7 +677,8 @@ static int suspend_and_send_dirty(struct } } - rc = send_dirty_pages(ctx, stats.dirty_count + ctx->save.nr_deferred_pages); + rc = send_dirty_pages(ctx, stats.dirty_count + ctx->save.nr_deferred_pages, + false /* all_dirty */); if ( rc ) goto out; @@ -807,8 +798,11 @@ static int setup(struct xc_sr_context *c if ( rc ) goto err; - dirty_bitmap = xc_hypercall_buffer_alloc_pages( - xch, dirty_bitmap, NRPAGES(bitmap_size(ctx->save.p2m_size))); + 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; + ctx->save.batch_pfns = malloc(MAX_BATCH_SIZE * sizeof(*ctx->save.batch_pfns)); ctx->save.deferred_pages = bitmap_alloc(ctx->save.p2m_size); 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; From patchwork Mon Jul 5 15:14:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359287 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 1BA62C07E99 for ; Mon, 5 Jul 2021 15:14:53 +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 C26FA61966 for ; Mon, 5 Jul 2021 15:14:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C26FA61966 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.150334.277980 (Exim 4.92) (envelope-from ) id 1m0QJ2-00056g-MC; Mon, 05 Jul 2021 15:14:44 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150334.277980; Mon, 05 Jul 2021 15:14:44 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QJ2-00056Z-Iw; Mon, 05 Jul 2021 15:14:44 +0000 Received: by outflank-mailman (input) for mailman id 150334; Mon, 05 Jul 2021 15:14:43 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QJ1-000500-Ev for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:14:43 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.109.102]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id f3a5f435-21c0-4ba4-b9ca-22911262f525; Mon, 05 Jul 2021 15:14:41 +0000 (UTC) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-he1eur02lp2055.outbound.protection.outlook.com [104.47.5.55]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-7-9Lb0hRRdNMyue3C165azGQ-1; Mon, 05 Jul 2021 17:14:39 +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:37 +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:37 +0000 Received: from [10.156.60.236] (37.24.206.209) by FR3P281CA0053.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.8 via Frontend Transport; Mon, 5 Jul 2021 15:14:37 +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: f3a5f435-21c0-4ba4-b9ca-22911262f525 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498080; 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=sOcBB1u7iiUx62PemDoqgBpbGc1Bb2Zr3M+3XNGrMl8=; b=ko3/0YDqAoRvn72VpeqnNpZdR5QSduRSkg2NoHhxy+D1HTeF7dASjtScwuMtpCviB338Dq dmKUkPx3i7KVzhabAam2pZEPOtUt2HM+hB76yIwPy3IQXpReQQkTdjPJVFblme4wFHE0jt 0aZlblEOokiOa4vWFIRaSgScNwlYs8I= X-MC-Unique: 9Lb0hRRdNMyue3C165azGQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AJeVtxo9ExmWSTBby4AsX50DdP0nFK7lP0mWnwtowEwr9gkPgzBjr/3PU1MpCdMIib2jV/RmUUzm2gjopj96l357AJ0DUPXFGaRYyS8mFHOmhoVAt/CexyvDNM+w4Z9OWZm8zgHIdW02DCO7JeQvC41vLR8IzQOWVpJ/zIX90EBmOzLCo4FadK4dFlI9cVIal0hKod3gWXMBqxwNgdmGlOf+e8K6KO3ggfofNPdtrbXWVNIoIKCKmTeY8xsYl3wsTvgPLZ2a82xluXnnGJJFAAQWMsZGxsAt9TzIR1q3riocJ6ldbH/VVfNHrtW4O6+l3VJqMbH8rZIFrBe2iwTh2w== 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=sOcBB1u7iiUx62PemDoqgBpbGc1Bb2Zr3M+3XNGrMl8=; b=eiNnGiNm5NXjHKjhBsIkWcn+MNtqjAvqC4MpPgyz0R1+AQi36hcwdBpdoOz6KxjeganchWBiEdNit9oH9HNkhxDA2c636FyaWRZSZtqbL3p+xuUpBAMvx7iVX0y1rNlK1uHQ/8mXC8hN/qxlrCk3WqWsXxkAklPf9Fuv3xjkA6D4Rz+aXJ3JxP6VibwJhymi7dP3wfoKefrWK+yfAD5Q4AxCZNX6IQG6wOyRd00DFXlykjkrJpByNS74Gjt+NB064fMWsEKrhv0t5ylh7AUpfbZfpZNAAsUs0FQkhsBNZlgOn5ko3QFqjVQF5JHkqfi427IZsRU5/kOf1mNHekxxNw== 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 06/13] libxenguest: complete loops in xc_map_domain_meminfo() 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: <8c7f94f4-98c0-f698-8cc0-0f7f93569ca3@suse.com> Date: Mon, 5 Jul 2021 17:14:36 +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: FR3P281CA0053.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4a::6) 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: 4bb444dd-2b52-4394-84e7-08d93fc79ac2 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:5516; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cWWjtm0cmqKCQKCQOBx4t1BI3AVJX5fzDg9LmTuZDH4RjYoHwOVL7ZpaUPzQpIU/yBjqx3Re6joFkzFw4J6Zj3AaQKiIadW1gKYPDb1qZ29eY2O+puicKTdYpyr4B1ZQ6W0p4+RaNWG+SeVwK2Ad9Vc6TtGKOe/MaQ0wvhdm9MyRZJa6ydnJI9InQE3fpnFADj+IZyP/2x1842kYAEzUgkGES57sLvarf40yepJKw6m/qgfLSH2+FaqpByFNHcLbkf7WbKWthGVdWuFJCcoC6pCpVBfTNkO1Vw2aQeAiPYrkvjkGiWNy5v/2ridjWXHWXbs9rVMXQWc2EiIl3YacYWCiatyQDJtXDdy16ssi+ZRAxOlMCWn/cfbDtRGIzV2D2DZ6hn3UogmWky7cM4lye4sHR2o45x2x7qviyd4MBQqQ/OIhCPrdUHQWTqeUJq9qpB0rAn3Ga1H0vkWME2JupF7vsWxITiZRfjl14IkvMHgFT+nyjQ+SS45LVmLz3MCCGPh3VvqQdboHrPVyX7m1syMQUyWPLWeQVqrUw0WbDcYNbBQh/q1IohTdaXMDJUUU11DEwEUNISyrwvc9MBXmxZs85uOaGdKxTOy0RwAaPKKxx6527C4kulk3FRT9HHRaZl3MqJ3GIf+pEyXcEmpqT/9eJsT4vR83NwT/AF8q6xDESse6Ma54mDTE80NKfhjrod9U0p3N5fSVPNDWebqytGc7/D2MSa+hvhHAoS4BHgQ= 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)(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?uG85uNNF2CGb4ZyEvAbM2AiSnSXD?= =?utf-8?q?MVVJpTquksurwcHRkAGn6UeIl8t1Ierr/DbLfBuHmknkt2LydOdY56T1mXgav0CNj?= =?utf-8?q?XDt53jyAH6oAY716MHXWtkEUIdmKxXyQknrd8h9XQQ1Zh85uvxVLQG1XoIg3laWzp?= =?utf-8?q?aFM50YLIGQkmndljo7V4qz81ZCQ20t2aWEnjwQgYrw3FWtFei4ge6TBHCJvubck+M?= =?utf-8?q?gK53lTpA7IWoxO4oNknI4RDGfSz3sY1DqFkP2b4EjZREe/NkheNhEP7PRzCx69lRq?= =?utf-8?q?kNyHdtLRd1O8Oyl5na0UD/nyYfdAoGb4OIQjh41DyE9UQVQoKnEuTg+AwwxsOJCf0?= =?utf-8?q?BD89+qCeYo0Z1cxIgKSwFcDjjrEM1KEOy2kvR/BKfDVEUfQU2hQ5kz5S82OGZYLyy?= =?utf-8?q?vqAGmnedhn7NCuNPfFpxgVRbJBwc30jMoR4uf2wPKoRf5t4EljpzNrK+YOT2PEU0h?= =?utf-8?q?RoE37d940eJc+al1pDjgFZ6RVl59bScpK8prlzNwKTCOxi8SSd1mBx+X7XanEhJMs?= =?utf-8?q?XaEIekKB4ymQtl5F26MHBDiq+seNdhKbP5cU+9w+2aLNv0JiWf9putTs9+QQNykgj?= =?utf-8?q?ma994ZvHmcDhiuDaDt3rnlZWH3PBdEJE6rWcHTO1Jg+nXi+UZBhcJBfZ9nu0VLl7r?= =?utf-8?q?fFgeMRphCxYcFbmFrrlK3vC3Rbz1Jx7rEYWM0bX9HGhb16KGFLsF1YsnVpYfyQ2fH?= =?utf-8?q?PDQqGjQx82/Zo2D2cP5U/Yz44nupFDF7tK/GTkvH0eg+WvE8mISUV6Y0m9c65gtdu?= =?utf-8?q?f6/x4Mm8rBAk6P2gy6OA1ZhjL91H2olujKSPnD/HeU6FDe/n9n07mn/5ILwLxg9Wl?= =?utf-8?q?wBQOo9PX5QFBg1nTVigDpR3YFyM2tH73XqA4asYOeD840RKk7E/9YcKI+SrVvjrLJ?= =?utf-8?q?f1ZL7o95JC9I23Z99sUuS0fo2x9u0U4z/lm3/l8XuCslIKnUgUDw+AVnrzH2ai/1G?= =?utf-8?q?RTwZjZWWferdx7PBwCoLmrota2v6bvE0DvYl4/I+e9k7xWQA85T8Eon7Mwa1ZsLDf?= =?utf-8?q?LPd6i1omItO396KUlbUlbxaxvjkgM5m5+aFP/HiiC0WGHPkFk4f+hU3TXcv4EuacS?= =?utf-8?q?obyqWnM56LvL4ZLRDxzPkcb7k84f2FITuYQG2+xJP8ZAVzhrDAS/i/D7SQ8/v53jd?= =?utf-8?q?4YI0q8ygj6MuxIVAU3oeEu0qhMnKTOns1p30t7Zf/sEkYrW4dRUbaOcl3cw179T/l?= =?utf-8?q?L94DKR5NkQDMur6BT7aNItpbDaxcz8PJf8JEJVRtokJdIdFoL+cP9G0haMo0EssXl?= =?utf-8?q?+m2ko28xGiDgjNhN?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4bb444dd-2b52-4394-84e7-08d93fc79ac2 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:37.8416 (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: ruZDRgJQLQPhF11lssuJ2lVXjR8LG1a1dv3b6RJN0kWcnFs6h9/de17kEnYjkGYxCqRph8HRfzRwhrW8kHr0BQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2608 minfo->p2m_size may have more than 31 significant bits. Change the induction variable to unsigned long, and (largely for signed-ness consistency) a helper variable to unsigned int. And while there also avoid open-coding min(). Signed-off-by: Jan Beulich Acked-by: Andrew Cooper --- v2: Use min(). --- a/tools/libs/guest/xg_domain.c +++ b/tools/libs/guest/xg_domain.c @@ -40,7 +40,7 @@ int xc_map_domain_meminfo(xc_interface * xc_dominfo_t info; shared_info_any_t *live_shinfo; xen_capabilities_info_t xen_caps = ""; - int i; + unsigned long i; /* Only be initialized once */ if ( minfo->pfn_type || minfo->p2m_table ) @@ -116,12 +116,11 @@ int xc_map_domain_meminfo(xc_interface * /* Retrieve PFN types in batches */ for ( i = 0; i < minfo->p2m_size ; i+=1024 ) { - int count = ((minfo->p2m_size - i ) > 1024 ) ? - 1024: (minfo->p2m_size - i); + unsigned int count = min(minfo->p2m_size - i, 1024UL); if ( xc_get_pfn_type_batch(xch, domid, count, minfo->pfn_type + i) ) { - PERROR("Could not get %d-eth batch of PFN types", (i+1)/1024); + PERROR("Could not get batch %lu of PFN types", (i + 1) / 1024); goto failed; } } From patchwork Mon Jul 5 15:15:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359289 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 98210C07E99 for ; Mon, 5 Jul 2021 15:15:19 +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 51CBE61966 for ; Mon, 5 Jul 2021 15:15:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 51CBE61966 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.150339.277991 (Exim 4.92) (envelope-from ) id 1m0QJP-0005jv-Ux; Mon, 05 Jul 2021 15:15:07 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150339.277991; Mon, 05 Jul 2021 15:15:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QJP-0005jn-RL; Mon, 05 Jul 2021 15:15:07 +0000 Received: by outflank-mailman (input) for mailman id 150339; Mon, 05 Jul 2021 15:15:06 +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 1m0QJO-0005ip-Mt for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:15:06 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.111.102]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id c5d38695-dda3-11eb-844b-12813bfff9fa; Mon, 05 Jul 2021 15:15:05 +0000 (UTC) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-he1eur02lp2059.outbound.protection.outlook.com [104.47.5.59]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-18-LTFVSklMNfaIzjJ13K8rMQ-1; Mon, 05 Jul 2021 17:15:03 +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:15:01 +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:15:01 +0000 Received: from [10.156.60.236] (37.24.206.209) by FR3P281CA0026.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.8 via Frontend Transport; Mon, 5 Jul 2021 15:15:01 +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: c5d38695-dda3-11eb-844b-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498104; 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=ct2KS5gJ4GCYf4vquepAwBJLuaf7rCN9u1z/krvGGpw=; b=IrGNOYM2HlVgcAZqjFkjsb4JOMh1/Yx+aQqgr1SoDvDJXSy6TI7hT7v2eUfLpE5xm7OuwG NbBJY0KQwREkqL+aup7mMr/U2fsmmjVsP7uEV4VEIQJB0evgTbVFUsiPoiH/rW5GZe2Ink lK3WJ/lgorMIzMaMd8pc7xmiuIzxufw= X-MC-Unique: LTFVSklMNfaIzjJ13K8rMQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KMA3jOCGabCp1tW4CXM3tJEMM11rQ2H45rzYqYJyaPrGlprXyTvjXQdT6y7mIoOUiKyjQSgZozdsZ+hNFh/xxygyA6WhuneQfiOEjw6tcAsDHsZkct04eUGw9PfAjWWLZg6iGBPPcWa6nFnxKTNJwEUOEwAz4r65edpMSpYfWCHd78/rWqFTPpfvsDf9YdkFECNKWLr538WTv+zHLW4zqPdnDtIVSXz2TA90P/roxP6wISc/Yc+S1tCvDAIlG+hEUTTy89/VK5KuS6D5jH5IABMSYhhd/LdSy/uu6Gv/L17NAodcrd3xU3vT/4l3XGBi7td5gxH/yIIx1uyGH5Id3Q== 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=ct2KS5gJ4GCYf4vquepAwBJLuaf7rCN9u1z/krvGGpw=; b=TzASB6Z+VdVlXGfZKKfmSTintQWWNKzleJbkSqNGrZnHiEp+Cwh9uc7ezPZOrrsTUX5E1bZOMzsy8w0721v8Z+XfrViWlVeeg+VKdCvMa6QkMeezD9Y8ABv1ncdEnx8vR371nrYt8jjggMHv9coRRU4IhcYKBJ8iglN8+r+cDL8gZPmuo//xipIbjtrgtsgOC8sdP7UcJKY7YIPiyNbRTucbYnND1Hj08hC8cXYul8V9+O/qt/EF7LCHamQbRohXSSJ7D0B/RolxmoEN837w1KezxvUc4uzAp3fTYvIRxidIn3TjJfHWHXkFIzSdvREJVZ2V51EZoaT8EYj5V60w/Q== 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 07/13] libxenguest: guard against overflow from too large p2m when checkpointing 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: <952285d1-9fc3-ab03-f6e4-c7946805e4a4@suse.com> Date: Mon, 5 Jul 2021 17:15:00 +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: FR3P281CA0026.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::17) 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: c6ef64af-feda-4532-f531-08d93fc7a8f2 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:4941; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rvSOtUUwj361yXyegFbJMyWlR6Bt5pzhNKdaLImcVw+/h41oo/45ObmTPhjt8hO7f1BbcOFQ0WwMMR1P/N7n0bYFM5NHvgsYaAT0zcRXUGRkqiQyqQFXwrms3eb5vXqkZmn7E2dpN1a/BnxrPrpnbHAmu1NwQe0sA3JzBCIO21ln0dQdXQNMh/KCVQi/0lQTxGHpXCXUbgYPDZ/QaJHoCpAZYI//WQk9STYvMifbHehDby98ESj8GzUNy0b4X7spj3+UdbCn8qzecnzAkNYIEz8tbmhwTsPackcIZkNPW1eEas4CDc1wIee5+H2Eu51nStJJb8ztQqTGjmbGzC927RHkAeNq6t0K1LSpZM28DgpF5kSetCt0poWFiKtwBhnw9oJOFg5hSKYca2Ut5Rj3CAuQuq2Jy6oG1mwy9lJlJ0WTc97OAM6kty8/lrC8mcYK+tD7H1cP55Q/DmnhcFhXVMsYjwvSSoGW6p0Gu0bAM8xpGIMQTFeER1iDw4iXaW1EkvGra/dNZSsWFjZf51kcz9HYiGDLOLpP3hC9FQJ4F0iVJuXkf7kMhz9dSuIiOM1H1Yni99l+lvGOh94Px2tNAOhjz5mV3KUXmCh5Pkbpshiao8hpDR1ev0X/JpgxvBhoLOr0WE3+5I3gfxGDudVIDOGrGUbWegxcFCKVyewgzHpjXe6kI0WwRkf80qEdkWbN6u/I85L6Y8Wz1dNGEJzcDvoapIFE/R96vsjQowmvZlk= 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?bay+FTa4CsS0JUZhBcMW30kcqqx3?= =?utf-8?q?YpIJPHwCvGQZfdBlh+OjauzELmqoCWRzlil0YKcfBDrrt8UvIY5scz0lGicIPQDwh?= =?utf-8?q?wh7zS3cqziGkbrNjSBnyQZrZ3NPnQZXEp2bIF4N/EbnXvI1M+SU79DhQQmjdpH8we?= =?utf-8?q?A0WsxvmGuulLkh035tFnavKSuZCiXc6G7jro3iE14ejeevq22CmeFJ0Msh2VG7aGG?= =?utf-8?q?Vmg8CiViJznVA+nUyd22apB6cVIbphel7foH1DcKFLwWouPF8H00nrSxiLWkDVEy4?= =?utf-8?q?YWl5+bKQo5GxhIKgk/kvj0Z+4skNLIqP4XhKGw5UJ09wxFOrx8/cIzitFC6gON+tT?= =?utf-8?q?92Z9w6f/2wIIcy/GLZN2pqVZ/HOLN0+l/9gnzug1f5Bk/xRciP4qjCCRz9yXcaIsM?= =?utf-8?q?bsnhhVwlcETZ8pCP6XWFWT57WKi4XqP11vb+EG2zqKZyBn9XTzBOofSKjq4cIDCHw?= =?utf-8?q?DxpNLlciIz6gisJncI1aiY2u4ER7ree4bd9D8UIJj0soX2HUjcMoHJkfStaegB4k+?= =?utf-8?q?RabT4Bi66m2qe/FANVgggOG/pw7sZprqzSbouwPofKG+etqPzmG1X4WNu7EfoUzQN?= =?utf-8?q?sgvLVzyIW6Zq+TLLryCVEkmon6buKYX3UyUyxbKWj64n0+nIQhYUlS+ODMU5MnMnG?= =?utf-8?q?p9bOm12+cy14+bxevKT1N/lIkdByaScsM/EIIcSOOQaiDYhHINqP5wsLqnetOwFcP?= =?utf-8?q?XAUctbZQ5ccSd88047dzCwMLLU+TKcX9CIEMj7D76sBWMXHzDY3NJuo93BKwrZOaw?= =?utf-8?q?/HY1bNt9cgDAkntKZIkbfzCwlUdgUskTB72OJswkz1UkcYs3euBMvCfApGQcc1F/Z?= =?utf-8?q?P5rLdVKyD7s/Rl0FpS5P3bT5+6zAB3zx7TfRpKyPNkdCcb/TXMVyGYXp+17dbLT2q?= =?utf-8?q?2ke20aY/srnAHeGHs08mirvxNmFPw2AZUw40Yn4rbmjvxs67kLKBRLFY3r/eVJinP?= =?utf-8?q?ZWjT0ijKV7DtOKRxvj4IvjUsYQynBJkCPu2HXAYzjEtnzhVJvS8G5sszVMgVI3Ahy?= =?utf-8?q?uTCPcR7bddr4OFOMVoGoU65QFwom1PQwsLG1bRhSWV51s80r178Jq+B1S9gfbAh93?= =?utf-8?q?+9xwJPI4QPaCvp1JMueZKxPHiR9HzMF1PiZO/k8E2RY92x+yblNychmab6/bknE7f?= =?utf-8?q?JBo8JetZXGpyyfsWO0e0V5+64dzqtwb6bsWXruy9cx5MDRg3/JQZ0AP7JvZ3UC6i9?= =?utf-8?q?dmxGLgVI5oytXFlBM89dsVaE2MAMkUECll+mNiA6nD0bTVqlNvIwFG2tQktC4IfYu?= =?utf-8?q?tQIX3f5l4GKjDbk1?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c6ef64af-feda-4532-f531-08d93fc7a8f2 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:15:01.6381 (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: 33CBZjKB0dqSo67eBVcDFqO19R4dG4zKlrspIGSbmbW0IrjIEvD2WuNn0IIjYlv20paZwQwVFplIvF1QkzQ4OQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2608 struct xc_sr_record's length field has just 32 bits. Fill it early and check that the calculated value hasn't overflowed. Additionally check for counter overflow early - there's no point even trying to allocate any memory in such an event. While there also limit an induction variable's type to unsigned long: There's no gain from it being uint64_t. Signed-off-by: Jan Beulich --- Of course looping over test_bit() is pretty inefficient, but given that I have no idea how to test this code I wanted to restrict changes to what can sensibly be seen as no worse than before from just looking at the changes. --- a/tools/libs/guest/xg_sr_restore.c +++ b/tools/libs/guest/xg_sr_restore.c @@ -450,7 +450,8 @@ static int send_checkpoint_dirty_pfn_lis xc_interface *xch = ctx->xch; int rc = -1; unsigned int count, written; - uint64_t i, *pfns = NULL; + unsigned long i; + uint64_t *pfns = NULL; struct iovec *iov = NULL; struct xc_sr_record rec = { .type = REC_TYPE_CHECKPOINT_DIRTY_PFN_LIST, @@ -469,16 +470,28 @@ static int send_checkpoint_dirty_pfn_lis for ( i = 0, count = 0; i < ctx->restore.p2m_size; i++ ) { - if ( test_bit(i, dirty_bitmap) ) - count++; + if ( test_bit(i, dirty_bitmap) && !++count ) + break; } + if ( i < ctx->restore.p2m_size ) + { + ERROR("Too many dirty pfns"); + goto err; + } + + rec.length = count * sizeof(*pfns); + if ( rec.length / sizeof(*pfns) != count ) + { + ERROR("Too many (%u) dirty pfns", count); + goto err; + } - pfns = malloc(count * sizeof(*pfns)); + pfns = malloc(rec.length); if ( !pfns ) { - ERROR("Unable to allocate %zu bytes of memory for dirty pfn list", - count * sizeof(*pfns)); + ERROR("Unable to allocate %u bytes of memory for dirty pfn list", + rec.length); goto err; } @@ -504,8 +517,6 @@ static int send_checkpoint_dirty_pfn_lis goto err; } - rec.length = count * sizeof(*pfns); - iov[0].iov_base = &rec.type; iov[0].iov_len = sizeof(rec.type); @@ -513,7 +524,7 @@ static int send_checkpoint_dirty_pfn_lis iov[1].iov_len = sizeof(rec.length); iov[2].iov_base = pfns; - iov[2].iov_len = count * sizeof(*pfns); + iov[2].iov_len = rec.length; if ( writev_exact(ctx->restore.send_back_fd, iov, 3) ) { From patchwork Mon Jul 5 15:15:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359291 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 A7ED9C07E99 for ; Mon, 5 Jul 2021 15:15:37 +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 5A72A6143B for ; Mon, 5 Jul 2021 15:15:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5A72A6143B 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.150345.278002 (Exim 4.92) (envelope-from ) id 1m0QJl-0006I9-8L; Mon, 05 Jul 2021 15:15:29 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150345.278002; Mon, 05 Jul 2021 15:15:29 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QJl-0006I0-4I; Mon, 05 Jul 2021 15:15:29 +0000 Received: by outflank-mailman (input) for mailman id 150345; Mon, 05 Jul 2021 15:15:27 +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 1m0QJi-0006Ff-VJ for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:15:26 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.111.102]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id d2e00952-dda3-11eb-844b-12813bfff9fa; Mon, 05 Jul 2021 15:15:26 +0000 (UTC) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2108.outbound.protection.outlook.com [104.47.17.108]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-22-flsoQ6lIPeWjLOunUkVgEg-1; Mon, 05 Jul 2021 17:15:24 +0200 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.4287.23; Mon, 5 Jul 2021 15:15:23 +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:15:23 +0000 Received: from [10.156.60.236] (37.24.206.209) by FR3P281CA0038.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.8 via Frontend Transport; Mon, 5 Jul 2021 15:15:22 +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: d2e00952-dda3-11eb-844b-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498125; 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=CH+Vf0mOEcNpv8wC1iMww0i4+CIzDv1HfwE6AQaKUlM=; b=OiqANUkQbOdiIHmuM9gKa1QyMCBgYdPEYyf8LRlB+UTDFZNE0lxDe5mus1Mb+72c/FEnlA VQi/nkFozMF1N7iQjEe6KB7rC8Lb/7f4uFMVxFeKx9POy5uoxI3ihAT5PRik6PWhP1eZcl v+2h2/RGUGaoAt40XLWNE5zoBuhWi2A= X-MC-Unique: flsoQ6lIPeWjLOunUkVgEg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q+X9X469BWmqonNoftMG0qjNl92QLYKGScOC5CzdOqslCYtkfc7X3VsiPaBUYALQJ5BZyegXlgnKvB5jm4tA+Z6yCBwVmopd5T6DMuBYvX+8phnRtNaeeefutLPU0BXXKK2Rcx3/lLCO+tb3JIQ0NvGfrqqljpDNBrulc0ZLH64gTNlzuR4E/NNRMmQL6BXsO9HdI81YnQOe6Oh0qxTl2yc4KFkGxblZ+q02a6lGlgdsD2ze4IgbTY3AmzCYCf0f2eKS+iDPfcep0IyIe03KJztssJnjZZgTBGZ8MA8InIesOkcVbtPV8Y/wXO6cegv9cf0Eq8IdWSvIlFTZezg4XQ== 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=CH+Vf0mOEcNpv8wC1iMww0i4+CIzDv1HfwE6AQaKUlM=; b=Z7D5VTzHQlg8KoaEEOq9sTaRRFaglMGjeEOIwRq4+dX1haM9xxNCX3UtKLvnl3N5a5T2ZfmhKKdrD+8LIzYq7WzvtsPj3YUz3TfGBL6EpJaOxeX2YcluTbxuike8UCgOh6NrzYQow+/jB7rb5HkkOtss1pHIYM4JfzGZr0Lv08uhKpdr58M5zlzF/GYProBHrM1B9Iq+B/9r7mhM7K4Cx4WnCOx3qJnkiMHBH02/nKArQwKWJsL3mW4QgWuxgPll1jSW1CZBr41nmbmoJl1e9CratXGiQmHSVa3Nm5H2WWg7BSnq+pp/YodM/h/UQZfFFGxsPxaJXUnS2IuVCVAK+A== 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 08/13] libxenguest: fix off-by-1 in colo-secondary-bitmap merging 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: Date: Mon, 5 Jul 2021 17:15:21 +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: FR3P281CA0038.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4a::14) 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: fb0532b2-d5c8-48f8-58d1-08d93fc7b5a0 X-MS-TrafficTypeDiagnostic: VI1PR04MB5743: 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:179; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cSjV3EjNDZv/R50ZleaVGlLUOYOznj4iUk4PNgp/LZPauw84d2GJajC6vMHNKm77/m8lnmhADKXGzhQL3xynZf5qAuRquRhUu8o5HrxEYXlMbHrrm24RCM4Jo5SMVn0CgYrnKzIyfpMQfZquOgpyd2WvslM7Qzm7iwoCRrj1jO0MBmpaoOz3HfWbFkw61QXgj8EBHQELx0GmBcuO+Yd7b7RUcyBHYMeJuszDaL1oTXsV/39c6p9hHc9sPruZHwMAz66HboTh5kaJ4c3z0t+JwEWD833t2lf6LjSApkMkZcGjGYuu4T5vwM7OqB8xfaQ/SuiTjskeUUNTBNBt9x3flqyNzuIu7R4KR4DUUO2EJlphQHSNZOmFpGjdAJvQrwhPq22aHYXZpBNToRc322w2SA/owj3J9M2cX5mnxLxfB8ViRm/4lorXZ4uD+RwcEXqydAHcKz3QxVyu5V4HiMxX/kkaf44+T/0OXzhA1AQSCrd9vk5EPGy+f1rrUqrRukubRSVYpLHPK5dUNpzB+QihPwnU2dwLvx/3yF+RVmlbKfgw4uub+NhTqapJXfu53Hdh7HXGlzM21pUqUTuc20Q/bhn3s+CLXxOo+9+QGS31rHvKXDThsUI9CCSWGXRrk87k3iuEqEGk2Jb4PUsQZpdYtt6XBi3tPqzEGY257G09Dzvy4SeRhyY4KqmWxTyke+aMojhc4FDpjtHIKUONkPZxMrMTJpI6wqWC4W6uj6Hs5cc= 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:(39860400002)(396003)(136003)(376002)(366004)(346002)(16576012)(6486002)(16526019)(6916009)(4326008)(8936002)(8676002)(186003)(36756003)(478600001)(316002)(38100700002)(26005)(86362001)(31696002)(2906002)(66946007)(4744005)(5660300002)(31686004)(66556008)(54906003)(66476007)(2616005)(956004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?foKpgwedhwNjcgBrzxwc+pjLIdrw?= =?utf-8?q?hpx9SyluUglhisaMcH7fYqRLXWnGOMB9cP0Ko5JhTxiNtE499rAnZ9jk+oyvNsAbw?= =?utf-8?q?Siu0MUYZEvm/zFlC2KQTKAh1uo5R7C8Ami6GrG6KzBt+oSWs6zW2Zj5xxW83EoU9B?= =?utf-8?q?vm40DqIU8iBH9nLAyj/LAjMIUZVR23MAOKFRIKd+hLzXLvGGwSkzn9n/BlJDBM+DC?= =?utf-8?q?rgC+8iSqQQ/g2f13elyKPIalnMWPbJ+Ha4GBhk5Jb6YrbS4ujDVAfvOo6vVE2hDbX?= =?utf-8?q?0GeCwoikwu+O+ckGBFMiuXq9Rfyigz+xT63v21eH9AhaDpiA0/j/e+PMYKZ1Up8Tq?= =?utf-8?q?TZpKv9Aw3KUCpcJE1ZnXJzdz5w6ff/SN2JgbCQ91BiwI3T/0yxj54zFHAbz0ZyBBD?= =?utf-8?q?S8N6jNl37gH9hnhiFW7BzfAWn3hOLHnVLV//aAwrX3RQGwQih+uZPenGAuBAqEtMk?= =?utf-8?q?jhju29Cbkqrnw77GMC81h99YAm5p8MaCbzN5o00I5f2F7AdEZkuwsA+tXkWuJgMM2?= =?utf-8?q?oaoDITrS6t6dNf8lO0kzd33s9z7dR7wwV9KOV5ppDVl3lzctG2RiAMVMnwC5JlXvh?= =?utf-8?q?QGr2BokZFKYeXHRVgmzJiJjPQMqWIS+wWsZXkxx7Dpqy8NzHT1KidC7TFv2bdX7Wl?= =?utf-8?q?7UKa1L7jckfNLJip0WVtrVhOZu1/ZHmojE6gS5lUyVbJKKX+uxxksDG0TgeladzgU?= =?utf-8?q?yqNcW1QZPu55G7JQzW4SL+Qxz7mI6/7WslczCb0L93FMQFeGycJ0bX91n0CJ2OUSm?= =?utf-8?q?MxjHEt7uFBDzJHSZwfEJNfvL/3IGQcDKT4sOS4lPS/aym5Mqa1qhBmpXS50wiXMFm?= =?utf-8?q?QsH3tgch4lUrgiwXp1K2meNZbgfmbO2DbD1x64gXJh10t/imkGSweR1ijIvr8VVUA?= =?utf-8?q?QUQZ/2uhbfh/kgnU2jjI5fR+MoKbcvg7wGC2jIM5inH01KqH3Gs138OkeS6XOfccR?= =?utf-8?q?Mze2gLwoH7UxJ7pZJFvxapGoc69lrhvHqIPEhF1VX0dyjmMQtIeumqlsEmaQURDNv?= =?utf-8?q?pEbb1IDyzqA3HjSeli8dgYihecLNsoGXHeWPI19MBRP/JnuPxjscHgDfIWuxhdG6G?= =?utf-8?q?nDYxm3p+69nBXr7vfVrIbO2fDZ34Odt2p8RhMHFQSj8+9F4IV7Jt5ZAltuhfTHyuR?= =?utf-8?q?a1U6ThuXWf/mfsLnd2QEKQg9eAtVOWQud5ptx0Kja49DHoEP4LjmKEFWRqQ7wjq2j?= =?utf-8?q?+R7qTc1Cp5b/oJGMcqSirrZqVL3Kvbbhqq3Sw/ENTvU12JPzja6vFeAZIDzD1yPwv?= =?utf-8?q?M4KWx1XYVP2FTm7S?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb0532b2-d5c8-48f8-58d1-08d93fc7b5a0 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:15:22.8911 (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: 2KejSGj012vB2z1QD0fHT2W2Lui7oEhhWRx8fwcAbNxGCVlM5K+lpzqcMaJcuJZyLEMNFaJLCLDEukPu7uWWWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5743 Valid GFNs (having a representation in the dirty bitmap) need to be strictly below p2m_size. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- a/tools/libs/guest/xg_sr_save.c +++ b/tools/libs/guest/xg_sr_save.c @@ -614,7 +614,7 @@ static int colo_merge_secondary_dirty_bi for ( i = 0; i < count; i++ ) { pfn = pfns[i]; - if ( pfn > ctx->save.p2m_size ) + if ( pfn >= ctx->save.p2m_size ) { PERROR("Invalid pfn 0x%" PRIx64, pfn); rc = -1; From patchwork Mon Jul 5 15:15:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359293 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 EEE21C07E99 for ; Mon, 5 Jul 2021 15:16:04 +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 91E086143B for ; Mon, 5 Jul 2021 15:16:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 91E086143B 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.150356.278013 (Exim 4.92) (envelope-from ) id 1m0QKC-000756-Lo; Mon, 05 Jul 2021 15:15:56 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150356.278013; Mon, 05 Jul 2021 15:15:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QKC-00074z-IR; Mon, 05 Jul 2021 15:15:56 +0000 Received: by outflank-mailman (input) for mailman id 150356; Mon, 05 Jul 2021 15:15:55 +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 1m0QKB-00072R-By for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:15:55 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.109.102]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id e374b8c6-dda3-11eb-844b-12813bfff9fa; Mon, 05 Jul 2021 15:15:53 +0000 (UTC) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2055.outbound.protection.outlook.com [104.47.14.55]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-27-tPKz29GRN_e0adUJ8AjNUA-2; Mon, 05 Jul 2021 17:15:52 +0200 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB5472.eurprd04.prod.outlook.com (2603:10a6:803:d3::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23; Mon, 5 Jul 2021 15:15:49 +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:15:49 +0000 Received: from [10.156.60.236] (37.24.206.209) by PR3PR09CA0014.eurprd09.prod.outlook.com (2603:10a6:102:b7::19) 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:15:48 +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: e374b8c6-dda3-11eb-844b-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498152; 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=7XE0MZ5Q/V0/alHvDtFRmInLwfamZyLpxplt2pkODz8=; b=mJWP6zjGx2WJ8PfR+cK+svDCw0629p5eFklD+7F1/67uP5bklh4lAiK4gUG8JGk0w0Drwj ODiEduiYkN7zjeWrTxom6/7kTe5FRYhLpoipANB47iXfLzSLAAQ9vVqV3ibaewVoeaxj5Y ud/24vLr71GI5NToWgmCT1lJBq0sYF8= X-MC-Unique: tPKz29GRN_e0adUJ8AjNUA-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WADPiN/JXsDyUbHSx5qzTYfVdMjozrVuaC9j+EZab/3AVhmd/Sif/TCK73CuQuqP5SuNebvCoa4TWaXbYQCa4cnvscec5WEV3HP7OW35YW+YK6xEtx0hbB1YvWVco/NnqB7k51+Ulkifbvwbt4SLPAOOeltFem9hl3rIY1jB5EigEuLHrmIghlblXhXgHc0Rl5Gq2wlEH3KtYT+iOJ3DsvRgmWD8SwoaJx11ED9a0cDB5/rFaE4yCtKvdxTfeJVQYjF0y89EHuLrG9Abaxzwn/Wn7Vf6h9/zo1wp601B5J6SjJEmtFAVWvwSroVFqoMeP774R6y0uPrwybv4hVtLOQ== 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=7XE0MZ5Q/V0/alHvDtFRmInLwfamZyLpxplt2pkODz8=; b=VuDYhOeTJcMcRJJVpOViklN0rZm+VKxELRqWowKgJU88NbKpv39/y6teAqplSysKHmc11PZwsCVw07HMcEyqOuuIg6AV+BGZzhirSUkfNTRHgo1Ac2/5uzuEu6p5QSR2fD2fFMEvuJ49DDc3GBBt/ivgKHxq4PjxQrx/bYm4E7D/QgZfxZI2vqsSqMyHdDjYhf+1Raea/NEYAV20Te8+6v12iPz5P0D4cO+heSPC4Gd/5CpoC8T6TbQYy4DOPSUZNQXmcBcMmw2Vwzaa7UCwVFMcqXzP5Ym4HHiBUBbxitPW7vJ7pwcKgc2mqB2hUMKY4T4to4B8t5Eoc4iv/Uhp+Q== 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 09/13] libxenguest: restrict PV guest size 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: <94076a26-c19b-4da8-02d5-6c7ce1759969@suse.com> Date: Mon, 5 Jul 2021 17:15:47 +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: PR3PR09CA0014.eurprd09.prod.outlook.com (2603:10a6:102:b7::19) 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: 26f0d2e1-51d0-4fe7-1ac9-08d93fc7c558 X-MS-TrafficTypeDiagnostic: VI1PR04MB5472: 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:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IXA/fcprChrsczjt1FPCnZLBvqRPF3+AphKRsQiScvFF8aZg2XWM3vqXwG9DU2KOl/Y6gLgAeZalv6jmCbNBJ8ExxeVKt1zaAIijK9+UquQuS99yDMlC7IH7u9d4EWKFW5365dPPp2zBEtDYD4vRNlX4zstoqOi2gxuBogn+sAx59fUbYDiu5jI33wopJYSvc7cz8/NeOlluiqZ//STEfBXPeAybRnEWu/7wF4cE2FHd8MIoAOCTCph83IA402rndf6D1uf2xI7hvhY8CoROoULZl6jqq6ai/pscI+uDZ4KDGpvPpCCHT0JdeaQjRvKuZv5w9rRw2He72mOq5cU34kOi5LKb5xtvcdKy818NOx3e5BsZNJ1a25WOwDChABakB7cpd1zfrwoEuynDn5LLMeeceaNhWW5C+LBwyQUK+DYdDV4acnHn5g6DOj8BrcGMziHk8DKyy//McbaUnm1mll4FQE7XqVYKfo39eIRG+Yyg89BAIXmgUIc+MH8lorQXNJ0lj3Mg6QvD6uEZ076Djvzxsj2Vs29K0uU6YSZtMTC36BG/05Jbus4Q1ZKhaYWMb1Hi2JnGDk5cXwbJ82eJ+5iR2ooa+xghvXAfUw2VAyODpq+ihFUHVL5LXfB28QXgzX2v7AiOXHBZdxTXaKgsvce2Dqwj31LRjzJRUDsYXj4aNs6Gb2Z6WZfqzw16aG3RgodjTphR+WftPvY/GMBud6HF8LCQz79gPBMaFWiypYc= 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:(396003)(366004)(346002)(39860400002)(376002)(136003)(66556008)(66476007)(86362001)(66946007)(5660300002)(16526019)(31696002)(31686004)(38100700002)(36756003)(26005)(186003)(2616005)(83380400001)(54906003)(478600001)(16576012)(316002)(6486002)(956004)(4326008)(6916009)(8936002)(2906002)(8676002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?Mce/pgVJW5Krqo860PyS7C20fuaQ?= =?utf-8?q?SRNKqQpUOnjrYvWLCBM7oio4YuwEo8T2bAlznQlINo/ukNaTJSNoWMYJbMzHxZWbk?= =?utf-8?q?d8HRa6fYIPBX89VBCZ14D0DW4r9oNa7rv5ItM8jWzO1FV2xQePTGDzL3q59zn8hAd?= =?utf-8?q?nxnI2hPKIxfgF1Fry+a5j2IO5Fb6HFDq7h8x8uZcwqm+mGCTVvSbQR63PlZYBkmXC?= =?utf-8?q?Z/Z9IchQJqxonURFhAABZgIHRnWepsN1+56xVMqrCZEQU036XZ7mDnxTRTD7r0E96?= =?utf-8?q?ktBmmeEtqTpaykKfXCxFJiLGtLAxH+XX8m6CMCZtfy0kp3Uh3BUemVnXSgN8TZ7lc?= =?utf-8?q?KGaQslwFW9+WMFl0B+eujwwxneRd10/GwNJEygLaQv03KSRLYzjSK5gJSvxd35Zce?= =?utf-8?q?xXiLxEXnLA7OFjnsI+7bweenOSIQ/A3kqNpUPZy1p+bFo3MylNTlIN/z4LGI1USU5?= =?utf-8?q?tVj9U7aofUo5CKuItLl/FduWVW+qtaxUgNlX4fK2AQ8BMmSzi6VG9nTVJZErHyNkx?= =?utf-8?q?duBtynKhWqVisYUbJfZpj9nf79/+oiyqdzmQUjzFr1JiD8i6CvQPU/ywWgWta25mj?= =?utf-8?q?SNnTQwaoqooBdJPf7Y8P22JwexNPr3GLUTVlE1VZQmRK76OhhdOxXpdrrzpH7oDYe?= =?utf-8?q?hidS+FhPn3gFVTIiJNORym8y44ggxOSh6UkfL138hIuLTHD8uI5TCqV+2aM/JrT8P?= =?utf-8?q?ZiOGwOv83M1M3PdB4h1lt/LQAV/wav1tAfJiKJEp6eefyaIX7Cec7DUDdiGhptvrF?= =?utf-8?q?bMWdfbDdAXT5NrjoIkeqtL4OixkIyhs4Idv5adXKHeG7fK1ms8Gb/sF2flXklcmkS?= =?utf-8?q?0c0aA8Jb74aa8VLok8JStBH8XhzgI55BqzKjUkZGtPfW4M09lw+nh34peok42+pMg?= =?utf-8?q?Fk3Ac01Zj2cT0C35uWAUv992p/TFWRoCd7OYXepQwdvAwvaNOtKt+eT4P21va3DNd?= =?utf-8?q?ClckMFNoFdXVZfvMm4HgFYllLwAnP14qOAzUdHNxx/iYl5yIL3wZJ9Gpi6Sc/koKx?= =?utf-8?q?3fS/ydTqM/NWOU5LD7f5DcBnpXFccQ7FIlvD5mkDhOahgL/3lvuL6OPZpd+8+ElND?= =?utf-8?q?5Xbffh/DbYdUtd0vv52ohkCJkkBH+IGTi9DZGPs537vXB6Fo02kFiE4ndxAm9hlEA?= =?utf-8?q?dZx8o8PrJUQkNdi5LnThwE4Leurbzrp+rDuJ6OlvJbiG7l8i0fUxZysdMKIFDQkOF?= =?utf-8?q?6WlhS0YrsXUB2wgINIUN06Gtn9NVU6DO00QqTu1Qi42k6+nv+uccW4MMiDHoBgPWh?= =?utf-8?q?DjrgeYVz03nPLRto?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26f0d2e1-51d0-4fe7-1ac9-08d93fc7c558 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:15:49.2672 (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: uq8hewjFD1uk68ufLlLljtfDdBZ1EEJzoBlirxFGXkvbRKvWplMQsYXjFaakVM4IurEvFrYd6GDaqWBhjW7VIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5472 The P2M, the use of PFNs, and hence the maximum valid PFN are purely software constructs in PV. In principle a guest is free to use arbitrary PFNs. However, at least page table normalization requires that PFN space be, like MFN space, limited to the architectural 40 bits (52 address bits). And of course a 32-bit tool stack places further constraints. Bounding the values also makes sure that various subsequent calculations won't truncate values and then continue with inconsistencies (see e.g. fl_entries vs ctx->x86.pv.p2m_frames in map_p2m_tree()). While there correct an adjacent error message with wrong way round wording in restore code and another slightly malformed and misleading (off by one) one in core dumping code. Signed-off-by: Jan Beulich --- v2: Integrate into series. --- In case the save/restore changes don't make it obvious enough: It escapes me why struct xc_sr_rec_x86_pv_p2m_frames has p2m_pfns[] with uint64_t element type but {start,end}_pfn both as uint32_t. Imo all three can sensibly only ever be of the same type. --- a/tools/include/xen-tools/libs.h +++ b/tools/include/xen-tools/libs.h @@ -13,6 +13,10 @@ #define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a)) #endif +#ifndef sizeof_field +#define sizeof_field(type, field) sizeof(((type *)0)->field) +#endif + #ifndef MAX #define MAX(x, y) ((x) > (y) ? (x) : (y)) #endif --- a/tools/libs/guest/xg_core_x86.c +++ b/tools/libs/guest/xg_core_x86.c @@ -59,6 +59,43 @@ xc_core_arch_memory_map_get(xc_interface if ( xc_domain_nr_gpfns(xch, info->domid, &p2m_size) < 0 ) return -1; + if ( !p2m_size ) + { + ERROR("Cannot map a guest without P2M"); + errno = ENODATA; + return -1; + } + + if ( !info->hvm ) + { + unsigned int guest_width; + + if ( xc_domain_get_guest_width(xch, info->domid, &guest_width) != 0 ) + { + PERROR("Cannot get address size for PV guest"); + return -1; + } + + if ( p2m_size == (guest_width > 4 ? ~0UL : ~0U) ) + { + ERROR("Cannot map a PV guest with invalid P2M"); + errno = ENODATA; + return -1; + } + } + +#ifndef __i386__ + if ( (p2m_size - 1) >> 40 ) +#else + /* Very large domains (> 1TB) will exhaust virtual address space. */ + if ( (p2m_size - 1) >> 28 ) +#endif + { + ERROR("Cannot map a guest with P2M size %#lx", p2m_size); + errno = EOPNOTSUPP; + return -1; + } + map = malloc(sizeof(*map)); if ( map == NULL ) { @@ -333,10 +370,30 @@ xc_core_arch_map_p2m_rw(xc_interface *xc if ( dinfo->p2m_size < info->nr_pages ) { - ERROR("p2m_size < nr_pages -1 (%lx < %lx", dinfo->p2m_size, info->nr_pages - 1); + ERROR("p2m_size < nr_pages (%lx < %lx)", dinfo->p2m_size, info->nr_pages); goto out; } + if ( !info->hvm && dinfo->p2m_size == (dinfo->guest_width > 4 ? ~0UL : ~0U) ) + { + ERROR("Cannot r/%c-map a PV guest with invalid P2M", rw ? 'w' : 'o'); + errno = ENODATA; + return -1; + } + +#ifndef __i386__ + if ( (dinfo->p2m_size - 1) >> 40 ) +#else + /* Very large domains (> 1TB) will exhaust virtual address space. */ + if ( (dinfo->p2m_size - 1) >> 28 ) +#endif + { + ERROR("Cannot r/%c-map a guest with P2M size %#lx", + rw ? 'w' : 'o', dinfo->p2m_size); + errno = EOPNOTSUPP; + return -1; + } + p2m_cr3 = GET_FIELD(live_shinfo, arch.p2m_cr3, dinfo->guest_width); p2m_frame_list = p2m_cr3 ? xc_core_arch_map_p2m_list_rw(xch, dinfo, dom, live_shinfo, p2m_cr3) --- a/tools/libs/guest/xg_sr_restore_x86_pv.c +++ b/tools/libs/guest/xg_sr_restore_x86_pv.c @@ -709,10 +709,23 @@ static int handle_x86_pv_p2m_frames(stru return -1; } +#ifdef __i386__ + /* Very large domains (> 1TB) will exhaust virtual address space. */ + if ( data->end_pfn >> 28 ) +#elif 0 /* sizeof(data->end_pfn) > 4 */ + if ( data->end_pfn >> (ctx->x86.pv.width > 4 ? 40 : 32) ) +#else + if ( 0 ) +#endif + { + ERROR("End pfn in stream (%#x) too large", data->end_pfn); + return -1; + } + if ( data->start_pfn > data->end_pfn ) { - ERROR("End pfn in stream (%#x) exceeds Start (%#x)", - data->end_pfn, data->start_pfn); + ERROR("Start pfn in stream (%#x) exceeds End (%#x)", + data->start_pfn, data->end_pfn); return -1; } --- a/tools/libs/guest/xg_sr_save_x86_pv.c +++ b/tools/libs/guest/xg_sr_save_x86_pv.c @@ -464,11 +464,40 @@ static int map_p2m_list(struct xc_sr_con */ static int map_p2m(struct xc_sr_context *ctx) { + xc_interface *xch = ctx->xch; uint64_t p2m_cr3; + uint64_t max_pfn = GET_FIELD(ctx->x86.pv.shinfo, arch.max_pfn, + ctx->x86.pv.width); + + if ( !max_pfn ) + { + ERROR("Cannot save a guest without P2M"); + errno = ENODATA; + return -1; + } + + if ( max_pfn-- == (ctx->x86.pv.width > 4 ? ~0UL : ~0U) ) + { + ERROR("Cannot save a guest with invalid P2M"); + errno = ENODATA; + return -1; + } + +#ifndef __i386__ + if ( max_pfn >> (sizeof_field(struct xc_sr_rec_x86_pv_p2m_frames, + end_pfn) > 4 ? 40 : 32) ) +#else + /* Very large domains (> 1TB) will exhaust virtual address space. */ + if ( max_pfn >> 28 ) +#endif + { + ERROR("Cannot save a guest with maximum PFN %#"PRIx64, max_pfn); + errno = EOPNOTSUPP; + return -1; + } ctx->x86.pv.p2m_generation = ~0ULL; - ctx->x86.pv.max_pfn = GET_FIELD(ctx->x86.pv.shinfo, arch.max_pfn, - ctx->x86.pv.width) - 1; + ctx->x86.pv.max_pfn = max_pfn; p2m_cr3 = GET_FIELD(ctx->x86.pv.shinfo, arch.p2m_cr3, ctx->x86.pv.width); return p2m_cr3 ? map_p2m_list(ctx, p2m_cr3) : map_p2m_tree(ctx); From patchwork Mon Jul 5 15:16:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359295 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 AE641C07E99 for ; Mon, 5 Jul 2021 15:16:39 +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 595A96143B for ; Mon, 5 Jul 2021 15:16:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 595A96143B 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.150361.278024 (Exim 4.92) (envelope-from ) id 1m0QKl-0007gr-0L; Mon, 05 Jul 2021 15:16:31 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150361.278024; Mon, 05 Jul 2021 15:16: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 1m0QKk-0007gk-TM; Mon, 05 Jul 2021 15:16:30 +0000 Received: by outflank-mailman (input) for mailman id 150361; Mon, 05 Jul 2021 15:16:29 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QKj-0007gR-FF for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:16:29 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.109.102]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id cc6a4b37-51ac-4aaf-8f83-bdcfe2678826; Mon, 05 Jul 2021 15:16:28 +0000 (UTC) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2050.outbound.protection.outlook.com [104.47.14.50]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-39--TSgA9JGM7yATgxUCHtwrA-2; Mon, 05 Jul 2021 17:16:26 +0200 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB5472.eurprd04.prod.outlook.com (2603:10a6:803:d3::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23; Mon, 5 Jul 2021 15:16:25 +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:16:24 +0000 Received: from [10.156.60.236] (37.24.206.209) by PR3P191CA0016.EURP191.PROD.OUTLOOK.COM (2603:10a6:102:54::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18 via Frontend Transport; Mon, 5 Jul 2021 15:16:24 +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: cc6a4b37-51ac-4aaf-8f83-bdcfe2678826 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498187; 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=0wA9AAqtkrdQU9VPvSonatQPKPM1QlgORRMW1Ye+aCM=; b=mKC+xD6lzcYufRDdn+1C9uF9t6ujsKj8WgAQnpB1PWFF06WzPvNb+a1KiTygjJsGVaC0dr yAsw9W1IFum8UmOJOta2N63bTthzirmDYN6bKBAaC2IVjQ97iagLArFXWZBgBq6kqQPaB3 RsqV23+rwcumAbRBqlbaNtR9cOo8sks= X-MC-Unique: -TSgA9JGM7yATgxUCHtwrA-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YQqWpj7gBxmMeY9HAbLLd7Ej7yqNMw5Y+/KqOy/U6oM6Shd7L9A/vBCANvBxvnDUxtR1z717M/XuHyPc5kWhA527xXf3ta2dWOPy+faNiGvJQzFwsY03YJzp0pUe83GwUuwBVLm4VO86jSUNBc+EPleKnqYqXuj+Afub5iLNYxKwMvrRzVJ9+wDvSSolrqix6E/RwxQ2dU8CUESbb8LhVgYaEOV4P7plk6qF15eYdppYlucm0i7Bd8ZJB0wCNi3n/biWUgoPftvoQciuzJjAt3NC1UwryHCApVG40gFgD3Z8okTqw/ol0O97IZyNkYZesq8jd6CvDtRjRlBUs0mQgQ== 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=0wA9AAqtkrdQU9VPvSonatQPKPM1QlgORRMW1Ye+aCM=; b=HABKzdKtFiT5IH3krVMarL002MTR1X4gSJOPsOSEk5e4M8zHa7QcvbCxrL6dxMklhUZ1HsuwZn1jNqCLu2E6/T201+rMrsVerknA5wnMMLiyXvZrXtpjOdwT06QVt2MNml6cajUf+qKBO4SErfDbtWYRZD3NqfWSD5RDJBhsMDJJrm/+jEf1SkrcC1QqCFhmC50Me05T4RhBYP9TJe1JAQ1T5JWKDy3mRIQgzAexBd8i7r5rtNTZFK6qtNEyhZ+vuVQSQbQZdLRJ9M9qZO2neaNPAbMhe2GqvjSgx9WKqZKaXlMojwaEW5PyMg7U9LEmq+vrQMxedXskHiXhJmVx6g== 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 10/13] libxc: simplify HYPERCALL_BUFFER() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Wei Liu , Juergen Gross , George Dunlap , Ian Jackson References: <0bebfe8c-6897-dc8b-7fe0-9127d4996eb8@suse.com> Message-ID: <2d8b0f54-3045-f881-4705-28317e5ab509@suse.com> Date: Mon, 5 Jul 2021 17:16:23 +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: PR3P191CA0016.EURP191.PROD.OUTLOOK.COM (2603:10a6:102:54::21) 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: 259828eb-8c8a-4791-3af6-08d93fc7da97 X-MS-TrafficTypeDiagnostic: VI1PR04MB5472: 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:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ANXTnSZQqwVmOoJSScKLv+3JIK8uSQlW7I/pt6AY/DeDGSFYjx2ib8giNu8MSrSwmMaCaTfOKi5ynl6/+KOGv+jRGU6CsNERIXOcr/LV+lsfp8ZtITvxpmI7i/we45bFnRBmDAQEunad3EKs/8f2d4itkoylP95/DKtVqv5Rd8Aq1mvI5F8jQ1b/hKPThr/kGK+6Ruowy4NXAaHuTWlO+y9RovegsQK5rS1nnznHfTpS51NNssiZrxl3EVPMhJngM7NAYQtS2SAtheEFOX852PAaqR5iDzeu4e1zPXXKDtE/NELgzLREWHGro/TEwIUHTTQUJn8E4LqB4hgleqO6v3KuyqPH1Hvb+ZzcwWSYkVh93HS5VsLLWtcz8rHoarsrjEhck7pg+5ftSLyGKLTDxWUaOnR7ijQXOhxYZC2Z8crGVAZ+Tz0wPO77R/50AwEB/tYZTRKdqtHG0Jnk4VEkSU9Izahpq+XbT/Nb4n0aTZLd4KxLplI3baBJJt6F+oOCxgIvEoB7RdSwYIr1ERrDLqNbN3EMvp4KawUn3k49k3Nve8XIUhxmN30EkR89qMa30446V0K0QbTkfecIwEAEMD8Jy5/jnUDeghX5CSzG0Z+L7W6vy4YAXk0g71lPF4ALnSZSATkqrq7izq09eRXYIVpaEM32GXWBZH+SW73eb7XbrqpumWxyt9p1xTQq8N+HLBxy9ifC4M6ptLIRy8pAy4ZLEsCUXS0QKEtNNixYdtE= 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)(136003)(376002)(39860400002)(366004)(396003)(54906003)(478600001)(6486002)(316002)(16576012)(2616005)(83380400001)(6916009)(8936002)(2906002)(8676002)(956004)(4326008)(5660300002)(66946007)(86362001)(66556008)(66476007)(36756003)(38100700002)(26005)(186003)(31696002)(31686004)(16526019)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?4PqGpxmC/UCDwbrlXlQEuhnbWtxC?= =?utf-8?q?xWKwcSsnIGoajxzLDxYsLealpFXuBSTmXAZDjL/EaYH8oHjzI6Rl7KTHfAAmqmrAd?= =?utf-8?q?MKl5qpWGzOmr00I3dwhr1APRrA31T7fITWcxWtl7DRJoSqFGQyxxx0KLdX3NvFXke?= =?utf-8?q?o0x42Z9JtCVN7muuLHxcFb46EYU9pnM23nBwPuQYiNcY3FBJgCKKytXsvr7eH8424?= =?utf-8?q?hykKV53kmxIW1kbDs+7fm6Hg6E4BhXHd+OhQTerBiU3PjinQNAUsesQeNjUZrR/dK?= =?utf-8?q?Xyxr/QdnOgAmKqG5NjaWMzwSShpRbIUKFxH10vFEKkYypoHOH9WVAZGe+4/uJzQYV?= =?utf-8?q?X1mfqIQB8LhE+HgD4F8wkwVhVf03Pa9KmH4W4QQe2gTBEGcCiI9TCUiyJZ9aWga4v?= =?utf-8?q?clajN7k7w1Vx9/pFwf5/xNQOZfh3SY58WwSuEY4O6tjDNBJxly7YtDDSLvGAOlcpm?= =?utf-8?q?gzWQ3HUVT7eMPrebEuuBZFl4WT12jpR3kjJ3EFJm/t1bZCp4tGjye87PUkcVMdqu8?= =?utf-8?q?HzU8XG8TnA6STqF//VgKbIKSTHV9iwzrG2cTvMJv8U+A28qhMdPclF/cyvkO32STD?= =?utf-8?q?KbdKakw00YlcGfPgg6HpHt55CZgA+Fm76hZiTJWrEcadCTh37yy+GqYJ63ZOMv7Ja?= =?utf-8?q?//IfGPq3OvNtEnfGVaT7lb+WjqySvF51Y3oHVOvlTDbrW8uRyVYrjnOs1qEHMUcmr?= =?utf-8?q?ssjJsvFML5ww/7WEifRWgOIz0EG/aFOg6SmXTErWr34inPjLuJq9RhqQbTdKGlhIy?= =?utf-8?q?RsUCYlHkrEzJANDzNJmMts0N7BSfKaH/+Q9uww3YZm1TZfYwS0hTUknm/L1jv9mqF?= =?utf-8?q?LYEGTDrU2unTrdIeJVw5lXpHGabn8PabQ+VqcSCoGKtgHkin1W0q8cTR3ZfZYPZld?= =?utf-8?q?Vi+BzTRGbwQJ8zPkOTN8BTV517apSIZNIhc+SrjaRr1T7rBASTE29+MtwC5C5P8Et?= =?utf-8?q?zZ+JiOwPQlvj5KNmBDsjd85IMhk3xgH6vchslrNytbSfYvnkUig9czjlsiNxcjOKH?= =?utf-8?q?1HCM4cyAsY62LajFnNka4V+u3CP9oGn3M15Zo/4jf6oWCyQeb6dkRBk5hqaklFpBi?= =?utf-8?q?eZDZy/5bX1LQgSUkZ1cJEn/bBSPnAFCjUd/so9eMRGrqNQDe96T3Gmc3iF/8bQ8DK?= =?utf-8?q?x4QG5FUfd2fs9qK8e0kLD2GRvpli0nutraNR/QOYLmIuxfFes0IhrbYT4ZftqQT0u?= =?utf-8?q?GZNMyDsXzNwcUzcWBF/3wc2QX+5Gz0kWss7mym/1esfd+Q84wfLJ5a9d11RHLaFS2?= =?utf-8?q?25cWfW/bq3TIT8Jb?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 259828eb-8c8a-4791-3af6-08d93fc7da97 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:16:24.9091 (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: aQlG3QWZ8FUZ4OENAowtOhAFR6GYECATSU+ObCQAdZsCEUuDY1Cp5aIXtiSei1EIzfPK2eThMeZg9LB1GKuKNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5472 _hcbuf_buf1 has been there only for a pointer comparison to validate type compatibility. The same can be achieved by not using typeof() on the definition of what so far was _hcbuf_buf2, as the initializer has to also be type-compatible. Drop _hcbuf_buf1 and the comaprison; rename _hcbuf_buf2. Since we're already using compiler extensions here, don't be shy and also omit the middle operand of the involved ?: operator. Bring line continuation character placement in line with that of related macros. Signed-off-by: Jan Beulich Acked-by: Andrew Cooper --- v2: New. --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -247,13 +247,10 @@ typedef struct xc_hypercall_buffer xc_hy /* * Returns the hypercall_buffer associated with a variable. */ -#define HYPERCALL_BUFFER(_name) \ - ({ xc_hypercall_buffer_t _hcbuf_buf1; \ - typeof(XC__HYPERCALL_BUFFER_NAME(_name)) *_hcbuf_buf2 = \ - &XC__HYPERCALL_BUFFER_NAME(_name); \ - (void)(&_hcbuf_buf1 == _hcbuf_buf2); \ - (_hcbuf_buf2)->param_shadow ? \ - (_hcbuf_buf2)->param_shadow : (_hcbuf_buf2); \ +#define HYPERCALL_BUFFER(_name) \ + ({ xc_hypercall_buffer_t *_hcbuf_buf = \ + &XC__HYPERCALL_BUFFER_NAME(_name); \ + _hcbuf_buf->param_shadow ?: _hcbuf_buf; \ }) #define HYPERCALL_BUFFER_INIT_NO_BOUNCE .dir = 0, .sz = 0, .ubuf = (void *)-1 From patchwork Mon Jul 5 15:17: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: 12359297 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 D1D51C07E99 for ; Mon, 5 Jul 2021 15:17: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 6B21E6194B for ; Mon, 5 Jul 2021 15:17:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6B21E6194B 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.150370.278035 (Exim 4.92) (envelope-from ) id 1m0QLa-0008NP-Am; Mon, 05 Jul 2021 15:17:22 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150370.278035; Mon, 05 Jul 2021 15:17:22 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QLa-0008NI-7N; Mon, 05 Jul 2021 15:17:22 +0000 Received: by outflank-mailman (input) for mailman id 150370; Mon, 05 Jul 2021 15:17:20 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QLY-0008Mw-EO for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:17:20 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.111.102]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 937a7f0b-7ff4-4cd4-9c75-47175e6cd93d; Mon, 05 Jul 2021 15:17:18 +0000 (UTC) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2054.outbound.protection.outlook.com [104.47.14.54]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-24-qFzQzhysOZa-eU2zVNpaWg-2; Mon, 05 Jul 2021 17:17:17 +0200 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB5472.eurprd04.prod.outlook.com (2603:10a6:803:d3::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23; Mon, 5 Jul 2021 15:17: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:17:14 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM0PR02CA0099.eurprd02.prod.outlook.com (2603:10a6:208:154::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.21 via Frontend Transport; Mon, 5 Jul 2021 15:17: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: 937a7f0b-7ff4-4cd4-9c75-47175e6cd93d DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498237; 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=PbQU7L3blROF4Klwca7Ybd+xUlO1Dcp9UzFdRq08MR0=; b=ZW8qpxCenTIqKu+Vrv/rjih+Vr4EQQDzigNqSENnfgyop1kATHCbIBo3SrNWxDeWSNeflI 9cSAT50eS7LDDq+Uxjs5kF+K49BiLKque2G+6EWRmnQNlKo61lhfcfKcHoA1+zViTa6ERB CukBXHaStWzTXFWrEXF08b+Cx3lBYpI= X-MC-Unique: qFzQzhysOZa-eU2zVNpaWg-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X9zeorFJ8Epf1KxcHwClJfJjkymJMMAMpws/Ju4tlJf5zKoRheap6QkbevTfEU5Roht/feojKrqFT1nD274PVT1hxRI7/Mkveklm/bqxB5+sHPGflJnwqOsumaxBEwxZjpyNHZGQOdW+OkXbpPsnk8yinsQEwp+GgDUYFQg2VfMJmYf/92CZbJZmvo2IeJyE2dp34cBR6zDaho6G97ysrTstiNZiYowA/K/buQ0ECC8g2z3f+TNUB8yG5JrC9aFsjs6+6I2JSCxDEMH1c+Z95xpYVCDBrUjsyeQo3mX+wNPct4fCtuSGgo4F47fwerKzGz3WOoTOVtx7oIIYssi58Q== 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=PbQU7L3blROF4Klwca7Ybd+xUlO1Dcp9UzFdRq08MR0=; b=N+7UFuQOTk93zw2pkkJes+XwD2JeqW0/KviOm1THMFqHaqGcv6IVEuWM8tT0XiQIQ0q1K4AnGPuKk5g3ib8bx7ijtqkrxD4TLX9Z6RhVVjZXyKx0LzL+5H+eoZKA+0gLCg+FrNNSj+RRVGxraEal+5KJbXaIa/0UJNAW6m71gR9gV4cMUX7WYMHv8N1HAcDH5vdvOpO4IAbiW1levWDJ5FZOnjoZqPCncjo1ESOjMDXIiWjVJVCRKjzZzQhVLAdM/uPvoIG67G+AMShM6vTflXpZvVRcqLycEnXN9V+gPVwUglGHPdZEhWNTHkf+UkQXydZx7Wt9EeY0P2AiEf/pFA== 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 11/13] x86/paging: supply more useful log-dirty page count 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: <6473c419-f989-3307-f6be-7144fc9b35b3@suse.com> Date: Mon, 5 Jul 2021 17:17:13 +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: AM0PR02CA0099.eurprd02.prod.outlook.com (2603:10a6:208:154::40) 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: 96dc78b4-f40e-4e24-4647-08d93fc7f839 X-MS-TrafficTypeDiagnostic: VI1PR04MB5472: 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:4941; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gwjQuGee4eXl9jSzCyMj9LHR6jjHJ6I1mpMxvdMgfku/QNQpFNhjM6n1mSLSj9lDOe8xVwR0eDGsnJThf1Cj+zmHiRs8B5oQQ0Y7q+sIN1f7y82EVH/CY+awY+k3abmPJArA+NR7e9wsznh5caJ6yAcs4BRDbSeT1ZzOcDYDL/dpIEvLLObqAU0OQCWCZ8by6pXx1LAbjcWOWpKj9OZVrqWGckQEB/uGVrtVTd3AYkShfQk+cWKxcSmU1hIf6qUxk+r06LDf26zZW23J49qL2mRAG1IQZxQAxP/HwWzlK2DNH6oE156GY4FvocwPuS4+NQSLwdqbLTsoe/YCiB5sO/qgSoEb/C5tHJHDrSS+sOREa02d4yixxfqA7kW53yB4DrtIYH+PeDBP0s2Uibbe411pLUp7krUmodovUuQwRH6g99W59fe3Dclc736Jpjy5scCqyO4zsPrErGiUKcLGDE3j7HFuXBWrnibDQYIkVWATPCXg26pifIJpXaVwzLf4V5PkOHAVxb5IrCHsJRk1EYMt1DFLwNXpiVVus30eGao88w+J2+N4uoFHqMw0CnmsriFF5DwuBI1gMVXe5xz4KzW6FKSbY6wF4Ps/141ypt3SPTMFUc2gBd7obC7S7RsnP9j/ni/Y0KFdalGFTIYOQL3/5Tp7DrPJWBU2wn5cw3sMgHqdGVcuaVyLsxxAZwp8Eknryn0F1zEm0J7ifC+erzSEUZ3S4euG+CinkrY/0BuYjHbGi+TH4serhI31bv5V 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)(136003)(376002)(39860400002)(366004)(396003)(54906003)(478600001)(6486002)(316002)(16576012)(2616005)(83380400001)(6916009)(8936002)(2906002)(8676002)(956004)(4326008)(5660300002)(30864003)(66946007)(86362001)(66556008)(66476007)(36756003)(38100700002)(26005)(186003)(31696002)(31686004)(16526019)(14143004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?Mj9W4CeH6A3CS76+4XwDZxa5JPwE?= =?utf-8?q?gOJETKc0RgUhQaL3E+6Br3Fy6uY0xwNCUvedC3yYfGc5oxKtvAZh0EDgoaBcu74z4?= =?utf-8?q?eewNpZUv0IXPmu3NvLKPtw3YNvySJu+5dfCpEV6wMpqQg6U3El8guZZyOiu0CD8IO?= =?utf-8?q?5smbRJl2nnPtRfabgZTGks6mlUn96zHLf2nvyZQ0eujXrniwlLIu5EQGdkm0dzp08?= =?utf-8?q?ccSvYAsOADOflDR3WH16l1KDqjjGFrjVpVHg4SWAtF+wbKMUV/Xwpc+RCi5g9TpMy?= =?utf-8?q?ikYIPJHrDxUBjLxLQea5800w4DPS0V1VHpl0ICW09SM7FoQVnifr/hCcViVcpJ1HK?= =?utf-8?q?bWiAvhk8M0oyd/Zg6uRQpWCwOI0f20q7VjnYDlhn1dXSwAGY6rf66WJQ9k5cShDld?= =?utf-8?q?hAmeo2zgq+LYaC9tXvdFH5Yv1tSFVGfFyHBRnHsImvY1mFKnl5yv2UWne/YL1yBoU?= =?utf-8?q?O7H+bWX56tdyjKx7rakOh+Zmls97IuSFovyygNlQP2R7y4BiKq/QrzP8R627X0xtu?= =?utf-8?q?vI5lP4rsfyQBBcBUn0s54w3JK6IkdxggP+NMOPRBdvxktwjUQAa6j6JX4YSwxZzC2?= =?utf-8?q?OQpHIWHRpPBjYYAcCUejw81OSjJElDpa8OhDs3EjoSkC+jb8zbpNKx7X3tGhB95WP?= =?utf-8?q?y81njrkFYkRZf5A6Nqr/RuhJAbAtwVG8jxWeACQfzDL0UyiJe5yc57ES6J5sWw1O/?= =?utf-8?q?KebXx8l6aN0NanaZBnTRf/P6FcFmVf5uUle1bX1lPARclCZVlGAi2kp6AmPSzfYmt?= =?utf-8?q?fEuzqqFsgZk+ixBLf+yuXgOZYzbPvPiN1qUQN1iS6Dej2sFNyP65nRRtR9KBy/iui?= =?utf-8?q?bztTANOAMbRuNd3tqmArKmcixR2DAW8JLZ0cvuNvYNzoB8XRm6t4N1DsXaEe8Syeu?= =?utf-8?q?cqQVLS7geSYgE26tlxwoS4fFoUs4aAFYl+GODbgQBw/qEP/Z4a/0l1nHviBW14o3j?= =?utf-8?q?fjvqeats3FpTQZvlGXDTPwZtdvgONaRLy1vUgpBV8uXyV4ASmZF0K6xAjxbO4M4qk?= =?utf-8?q?SCQMbZpajiJ5W+BbKDdACbt6E+2HQkPvwAHgml1a+eg2TB4GdzO/mvdv5ZV+Y9JXp?= =?utf-8?q?lJOIRL3gKItkd+ypLOcMdCgImMQW8mg8pTlu/IrIirpBoXq8FS+kXu0MuAIVMVBDR?= =?utf-8?q?pnl+8/ToCT9xYsj8UvU48vzT2YhSmTedEw0ZY0TJk0IeIDj9WCVfgiW21AskMry05?= =?utf-8?q?E1k0M4W3y6Zeznvn3F+IdUrn1R98uXWbcY+JYcRdqrfsX4i7sC3dsjxzCMyVEi/l4?= =?utf-8?q?8lT27vjO/xu8h4A3?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96dc78b4-f40e-4e24-4647-08d93fc7f839 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:17:14.6659 (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: 9zCDBfAyrX+pE5z4UZAUcfkvEsWOeth9g+GFEtMrkM91wdKIUkGuSwrE9X3Hwa9pZRDwtk0+UWLPjuSMm6UAAA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5472 In paging_log_dirty_op(), always update the count of pages field: - if more pages were specified than the guest has ever accessed (HVM) or marked part of the p2m (PV), there's no point for the caller to inspect bits beyond the one for that last page, - if the guest's p2m size has grown in the meantime, the caller would have no indication that it may not have caught all dirty bits. Also exit the loop once having passed the last valid GFN. To balance overhead and savings, do this before inspecting a new L2 table. Adjust libxenguest accordingly, albeit these changes are necessary only for guests which actually alter their P2M size while under migration. They do, however, additionally open up the option of the hypervisor eventually zapping large ranges of trailing zeros from the bitmap when providing it back to the tools. Signed-off-by: Jan Beulich --- Of course this still is far from ideal: At the very least a perhaps large tail of zeros could very well also result in a reduced page count. --- a/tools/libs/guest/xg_sr_common.h +++ b/tools/libs/guest/xg_sr_common.h @@ -237,7 +237,16 @@ struct xc_sr_context /* Further debugging information in the stream. */ bool debug; + /* + * Counts of bits (each representing a guest page), expressing + * respectively + * - obtained P2M size, + * - allocated bitmap size, + * - range actually filled with valid data. + */ unsigned long p2m_size; + unsigned long p2m_alloc_size; + unsigned long p2m_used_size; struct precopy_stats stats; @@ -245,6 +254,7 @@ struct xc_sr_context unsigned int nr_batch_pfns; unsigned long *deferred_pages; unsigned long nr_deferred_pages; + unsigned long used_deferred_pages; xc_hypercall_buffer_t dirty_bitmap_hbuf; } save; --- a/tools/libs/guest/xg_sr_restore.c +++ b/tools/libs/guest/xg_sr_restore.c @@ -450,7 +450,8 @@ static int send_checkpoint_dirty_pfn_lis xc_interface *xch = ctx->xch; int rc = -1; unsigned int count, written; - unsigned long i; + unsigned long i, p2m_size; + long long ret; uint64_t *pfns = NULL; struct iovec *iov = NULL; struct xc_sr_record rec = { @@ -459,22 +460,29 @@ static int send_checkpoint_dirty_pfn_lis DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, &ctx->restore.dirty_bitmap_hbuf); - if ( xc_logdirty_control( - xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, - HYPERCALL_BUFFER(dirty_bitmap), ctx->restore.p2m_size, - 0, NULL) != ctx->restore.p2m_size ) + ret = xc_logdirty_control( + xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, + HYPERCALL_BUFFER(dirty_bitmap), ctx->restore.p2m_size, + 0, NULL); + if ( ret < 0 ) { PERROR("Failed to retrieve logdirty bitmap"); goto err; } + if ( ret > ctx->restore.p2m_size ) + { + ERROR("Guest has grown its p2m too much"); + goto err; + } + p2m_size = ret; - for ( i = 0, count = 0; i < ctx->restore.p2m_size; i++ ) + for ( i = 0, count = 0; i < p2m_size; i++ ) { if ( test_bit(i, dirty_bitmap) && !++count ) break; } - if ( i < ctx->restore.p2m_size ) + if ( i < p2m_size ) { ERROR("Too many dirty pfns"); goto err; @@ -495,7 +503,7 @@ static int send_checkpoint_dirty_pfn_lis goto err; } - for ( i = 0, written = 0; i < ctx->restore.p2m_size; ++i ) + for ( i = 0, written = 0; i < p2m_size; ++i ) { if ( !test_bit(i, dirty_bitmap) ) continue; @@ -739,8 +747,10 @@ static int setup(struct xc_sr_context *c if ( ctx->stream_type == XC_STREAM_COLO ) { + unsigned long pages = NRPAGES(bitmap_size(ctx->restore.p2m_size)); + dirty_bitmap = xc_hypercall_buffer_alloc_pages( - xch, dirty_bitmap, NRPAGES(bitmap_size(ctx->restore.p2m_size))); + xch, dirty_bitmap, pages); if ( !dirty_bitmap ) { @@ -748,6 +758,8 @@ static int setup(struct xc_sr_context *c rc = -1; goto err; } + + ctx->restore.p2m_size = pages << (PAGE_SHIFT + 3); } rc = ctx->restore.ops.setup(ctx); --- a/tools/libs/guest/xg_sr_save.c +++ b/tools/libs/guest/xg_sr_save.c @@ -74,6 +74,16 @@ static int write_checkpoint_record(struc return write_record(ctx, &checkpoint); } +static void update_deferred_pages(struct xc_sr_context *ctx, xen_pfn_t pfn) +{ + if ( !ctx->save.deferred_pages ) + return; + set_bit(pfn, ctx->save.deferred_pages); + ++ctx->save.nr_deferred_pages; + if ( pfn >= ctx->save.used_deferred_pages ) + ctx->save.used_deferred_pages = pfn + 1; +} + /* * Writes a batch of memory as a PAGE_DATA record into the stream. The batch * is constructed in ctx->save.batch_pfns. @@ -130,11 +140,8 @@ static int write_batch(struct xc_sr_cont ctx->save.batch_pfns[i]); /* Likely a ballooned page. */ - 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; - } + if ( mfns[i] == INVALID_MFN ) + update_deferred_pages(ctx, ctx->save.batch_pfns[i]); } rc = xc_get_pfn_type_batch(xch, ctx->domid, nr_pfns, types); @@ -196,12 +203,7 @@ static int write_batch(struct xc_sr_cont { if ( rc == -1 && errno == EAGAIN ) { - if ( ctx->save.deferred_pages ) - { - set_bit(ctx->save.batch_pfns[i], - ctx->save.deferred_pages); - ++ctx->save.nr_deferred_pages; - } + update_deferred_pages(ctx, ctx->save.batch_pfns[i]); types[i] = XEN_DOMCTL_PFINFO_XTAB; --nr_pages; } @@ -369,7 +371,7 @@ static int suspend_domain(struct xc_sr_c * Send a subset of pages in the guests p2m, according to the dirty bitmap. * Used for each subsequent iteration of the live migration loop. * - * Bitmap is bounded by p2m_size. + * Bitmap is bounded by p2m_alloc_size, but populated only up to p2m_used_size. */ static int send_dirty_pages(struct xc_sr_context *ctx, unsigned long entries, bool all_dirty) @@ -381,7 +383,10 @@ static int send_dirty_pages(struct xc_sr DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, &ctx->save.dirty_bitmap_hbuf); - for ( p = 0, written = 0; p < ctx->save.p2m_size; ++p ) + if ( all_dirty ) + ctx->save.p2m_used_size = ctx->save.p2m_size; + + for ( p = 0, written = 0; p < ctx->save.p2m_used_size; ++p ) { if ( !all_dirty && !test_bit(p, dirty_bitmap) ) continue; @@ -526,6 +531,8 @@ static int send_memory_live(struct xc_sr for ( ; ; ) { + long long ret; + policy_decision = precopy_policy(*policy_stats, data); x++; @@ -552,15 +559,23 @@ static int send_memory_live(struct xc_sr if ( policy_decision != XGS_POLICY_CONTINUE_PRECOPY ) break; - if ( xc_logdirty_control( - xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, - &ctx->save.dirty_bitmap_hbuf, ctx->save.p2m_size, - 0, &stats) != ctx->save.p2m_size ) + ret = xc_logdirty_control( + xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, + &ctx->save.dirty_bitmap_hbuf, ctx->save.p2m_alloc_size, + 0, &stats); + if ( ret < 0 ) { PERROR("Failed to retrieve logdirty bitmap"); rc = -1; goto out; } + if ( ret > ctx->save.p2m_alloc_size ) + { + ERROR("Guest has grown its p2m too much"); + rc = -1; + goto out; + } + ctx->save.p2m_used_size = ret; policy_stats->dirty_count = stats.dirty_count; @@ -614,7 +629,7 @@ static int colo_merge_secondary_dirty_bi for ( i = 0; i < count; i++ ) { pfn = pfns[i]; - if ( pfn >= ctx->save.p2m_size ) + if ( pfn >= ctx->save.p2m_alloc_size ) { PERROR("Invalid pfn 0x%" PRIx64, pfn); rc = -1; @@ -642,6 +657,7 @@ static int suspend_and_send_dirty(struct xc_shadow_op_stats_t stats; char *progress_str = NULL; int rc; + long long ret; DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, &ctx->save.dirty_bitmap_hbuf); @@ -649,16 +665,22 @@ static int suspend_and_send_dirty(struct if ( rc ) goto out; - if ( xc_logdirty_control( - xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, - HYPERCALL_BUFFER(dirty_bitmap), ctx->save.p2m_size, - XEN_DOMCTL_SHADOW_LOGDIRTY_FINAL, &stats) != - ctx->save.p2m_size ) + ret = xc_logdirty_control( + xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_CLEAN, + HYPERCALL_BUFFER(dirty_bitmap), ctx->save.p2m_alloc_size, + XEN_DOMCTL_SHADOW_LOGDIRTY_FINAL, &stats); + if ( ret < 0 ) { PERROR("Failed to retrieve logdirty bitmap"); rc = -1; goto out; } + if ( ret > ctx->save.p2m_alloc_size ) + { + ERROR("Guest has grown its p2m too much"); + rc = -1; + goto out; + } if ( ctx->save.live ) { @@ -670,7 +692,8 @@ static int suspend_and_send_dirty(struct xc_set_progress_prefix(xch, "Checkpointed save"); if ( ctx->save.deferred_pages ) - bitmap_or(dirty_bitmap, ctx->save.deferred_pages, ctx->save.p2m_size); + bitmap_or(dirty_bitmap, ctx->save.deferred_pages, ctx->save.p2m_alloc_size); + ctx->save.p2m_used_size = MAX(ret, ctx->save.used_deferred_pages); if ( !ctx->save.live && ctx->stream_type == XC_STREAM_COLO ) { @@ -688,8 +711,9 @@ static int suspend_and_send_dirty(struct goto out; if ( ctx->save.deferred_pages ) - bitmap_clear(ctx->save.deferred_pages, ctx->save.p2m_size); + bitmap_clear(ctx->save.deferred_pages, ctx->save.p2m_alloc_size); ctx->save.nr_deferred_pages = 0; + ctx->save.used_deferred_pages = 0; out: xc_set_progress_prefix(xch, NULL); @@ -702,6 +726,7 @@ static int verify_frames(struct xc_sr_co xc_interface *xch = ctx->xch; xc_shadow_op_stats_t stats; int rc; + long long ret; struct xc_sr_record rec = { .type = REC_TYPE_VERIFY }; DPRINTF("Enabling verify mode"); @@ -715,15 +740,18 @@ static int verify_frames(struct xc_sr_co if ( rc ) goto out; - if ( xc_logdirty_control( - xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_PEEK, - &ctx->save.dirty_bitmap_hbuf, ctx->save.p2m_size, - 0, &stats) != ctx->save.p2m_size ) + ret = xc_logdirty_control( + xch, ctx->domid, XEN_DOMCTL_SHADOW_OP_PEEK, + &ctx->save.dirty_bitmap_hbuf, ctx->save.p2m_alloc_size, + 0, &stats); + if ( ret < 0 ) { PERROR("Failed to retrieve logdirty bitmap"); rc = -1; goto out; } + if ( ret > ctx->save.p2m_alloc_size ) + IPRINTF("Guest has grown its p2m too much"); DPRINTF(" Further stats: faults %u, dirty %u", stats.fault_count, stats.dirty_count); @@ -804,13 +832,14 @@ static int setup(struct xc_sr_context *c if ( ctx->save.live || ctx->stream_type != XC_STREAM_PLAIN ) { + unsigned long pages = NRPAGES(bitmap_size(ctx->save.p2m_size)); 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); + xc_hypercall_buffer_alloc_pages(xch, dirty_bitmap, pages); + ctx->save.p2m_alloc_size = pages << (PAGE_SHIFT + 3); + ctx->save.deferred_pages = bitmap_alloc(ctx->save.p2m_alloc_size); if ( !dirty_bitmap || !ctx->save.deferred_pages ) goto enomem; --- a/xen/arch/x86/mm/paging.c +++ b/xen/arch/x86/mm/paging.c @@ -397,6 +397,19 @@ int paging_mfn_is_dirty(struct domain *d return rv; } +/* + * This is used to provide a rough (upper) estimate to the caller of how many + * more pages we might have data for. + */ +static unsigned int last_valid_entry(const mfn_t *tbl, unsigned int idx) { + unsigned int last = LOGDIRTY_NODE_ENTRIES; + + for ( ; idx < LOGDIRTY_NODE_ENTRIES; ++idx ) + if ( mfn_valid(tbl[idx]) ) + last = idx; + + return last; +} /* Read a domain's log-dirty bitmap and stats. If the operation is a CLEAN, * clear the bitmap and stats as well. */ @@ -405,10 +418,10 @@ static int paging_log_dirty_op(struct do bool_t resuming) { int rv = 0, clean = 0, peek = 1; - unsigned long pages = 0; + unsigned long pages = 0, extra = 0; mfn_t *l4 = NULL, *l3 = NULL, *l2 = NULL; unsigned long *l1 = NULL; - int i4, i3, i2; + unsigned int i4, i3, i2; if ( !resuming ) { @@ -479,6 +492,15 @@ static int paging_log_dirty_op(struct do l3 = (l4 && mfn_valid(l4[i4])) ? map_domain_page(l4[i4]) : NULL; for ( ; (pages < sc->pages) && (i3 < LOGDIRTY_NODE_ENTRIES); i3++ ) { + unsigned long max_gfn = domain_get_maximum_gpfn(d); + + if ( (i4 * LOGDIRTY_NODE_ENTRIES + i3) * + LOGDIRTY_NODE_ENTRIES * PAGE_SIZE * 8 > max_gfn ) + { + i4 = LOGDIRTY_NODE_ENTRIES; + break; + } + l2 = ((l3 && mfn_valid(l3[i3])) ? map_domain_page(l3[i3]) : NULL); for ( i2 = 0; @@ -502,18 +524,36 @@ static int paging_log_dirty_op(struct do goto out; } } + pages += bytes << 3; + if ( l1 ) { + if ( unlikely(pages >= sc->pages) ) + extra = (PAGE_SIZE - bytes) << 3; + if ( clean ) clear_page(l1); unmap_domain_page(l1); } } + if ( l2 ) + { + if ( unlikely(pages >= sc->pages) ) + { + i2 = last_valid_entry(l2, i2); + if ( i2 < LOGDIRTY_NODE_ENTRIES ) + extra = ((i4 * LOGDIRTY_NODE_ENTRIES + i3) * + LOGDIRTY_NODE_ENTRIES + i2 + 1) * + PAGE_SIZE * 8; + } + unmap_domain_page(l2); + } - if ( i3 < LOGDIRTY_NODE_ENTRIES - 1 && hypercall_preempt_check() ) + if ( pages < sc->pages && i3 < LOGDIRTY_NODE_ENTRIES - 1 && + hypercall_preempt_check() ) { d->arch.paging.preempt.log_dirty.i4 = i4; d->arch.paging.preempt.log_dirty.i3 = i3 + 1; @@ -521,10 +561,21 @@ static int paging_log_dirty_op(struct do break; } } + if ( l3 ) + { + if ( !rv && unlikely(pages >= sc->pages) ) + { + i3 = last_valid_entry(l3, i3); + if ( i3 < LOGDIRTY_NODE_ENTRIES ) + extra = (i4 * LOGDIRTY_NODE_ENTRIES + i3 + 1) * + LOGDIRTY_NODE_ENTRIES * PAGE_SIZE * 8; + } + unmap_domain_page(l3); + } - if ( !rv && i4 < LOGDIRTY_NODE_ENTRIES - 1 && + if ( !rv && pages < sc->pages && i4 < LOGDIRTY_NODE_ENTRIES - 1 && hypercall_preempt_check() ) { d->arch.paging.preempt.log_dirty.i4 = i4 + 1; @@ -534,8 +585,19 @@ static int paging_log_dirty_op(struct do if ( rv ) break; } + if ( l4 ) + { + if ( !rv && unlikely(pages >= sc->pages) ) + { + i4 = last_valid_entry(l4, i4); + if ( i4 < LOGDIRTY_NODE_ENTRIES ) + extra = (i4 + 1) * LOGDIRTY_NODE_ENTRIES * + LOGDIRTY_NODE_ENTRIES * PAGE_SIZE * 8; + } + unmap_domain_page(l4); + } if ( !rv ) { @@ -562,8 +624,8 @@ static int paging_log_dirty_op(struct do return rv; } - if ( pages < sc->pages ) - sc->pages = pages; + sc->pages = min(pages + extra, domain_get_maximum_gpfn(d) + 1); + if ( clean ) { /* We need to further call clean_dirty_bitmap() functions of specific --- a/xen/include/public/domctl.h +++ b/xen/include/public/domctl.h @@ -261,7 +261,8 @@ struct xen_domctl_shadow_op { /* OP_PEEK / OP_CLEAN */ XEN_GUEST_HANDLE_64(uint8) dirty_bitmap; - uint64_aligned_t pages; /* Size of buffer. Updated with actual size. */ + uint64_aligned_t pages; /* Size of buffer. Updated with actual (or + potentially needed) size. */ struct xen_domctl_shadow_op_stats stats; }; From patchwork Mon Jul 5 15:18:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359301 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 C03B5C07E99 for ; Mon, 5 Jul 2021 15:18:17 +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 6745E6143B for ; Mon, 5 Jul 2021 15:18:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6745E6143B 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.150377.278046 (Exim 4.92) (envelope-from ) id 1m0QMK-0000eM-Q3; Mon, 05 Jul 2021 15:18:08 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150377.278046; Mon, 05 Jul 2021 15:18: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 1m0QMK-0000eF-Mt; Mon, 05 Jul 2021 15:18:08 +0000 Received: by outflank-mailman (input) for mailman id 150377; Mon, 05 Jul 2021 15:18:07 +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 1m0QMJ-0000e5-Jz for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:18:07 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.111.102]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 32618978-dda4-11eb-844b-12813bfff9fa; Mon, 05 Jul 2021 15:18:06 +0000 (UTC) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2053.outbound.protection.outlook.com [104.47.14.53]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-18-nna5v4Q3OsK8LUYMWGk8dg-1; Mon, 05 Jul 2021 17:18:04 +0200 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB5472.eurprd04.prod.outlook.com (2603:10a6:803:d3::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23; Mon, 5 Jul 2021 15:18:03 +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:18:03 +0000 Received: from [10.156.60.236] (37.24.206.209) by PR0P264CA0106.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:19::22) 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:18:02 +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: 32618978-dda4-11eb-844b-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498285; 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=RJUMTKaJ5bhtriSU6g8YBQb46nhrBNsM85val+nqS+M=; b=XnHbSI6EPTqFQfyxmlkCiAHlEXFxlYCIt3pXZJPDw/WTZiLqpCi4+t3jfNfaReea9fS/M4 agEsSzcc4hBYybpafABbyCRv3Dajor/3nzRwNQkHR7j1zidSw0frD3vg9s8P74sb1ceakJ nc30WN7Hy9rU9Ye/Z6vHhKAxvyhcvCI= X-MC-Unique: nna5v4Q3OsK8LUYMWGk8dg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NpLQWAqat7FGtaChv5q+l+wqzhBJgdZPsL18T5JgWQkP7uX9DtlopiC5pv/o3DV6crqTQvQEYl8H/jrY2MG0FBw72kLj0et3ZQWQeErXQpyPhNb5cwcoyDOl0sco4WsgMPnQVDb8d7445E0983ne54eUlBqHzrlW4jxjmeTkKWYuE8un+iEP0pkcZI0g4xUZk8YC4X740ntpMdvUQZF3aZgk/KMnu2g4Bsk3fsD7MA4A9px73CFR9ira2SrHqxZBvHPONdBBLhvEnI8iqyegH4d6pLYy0Us1CBzbvQmacLDxTMFvsXQNjF/ImCBrtP7deECJ75wsTHZUjyO/V9Y1kA== 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=RJUMTKaJ5bhtriSU6g8YBQb46nhrBNsM85val+nqS+M=; b=DOjnGpsDWil1jnC6Up4Mb2p63Pk0TBT/hWNvK5HK2saMSLrrp6/Fw6JhW/D3qax2ffF5vXCYAFAFrEy2U2YPDn3B0BBHbxqfrd+2TJBh0B1t6USl/QDsAXou5yoSRc/mMTrCYOJzLOiDtAk1FBYN/5QsfJSPJvG7gW+qjBqan8CjjBp/DyirysK06LcnVHwtcqgCDfReUvYr13nbe4HYiwM88wREQ/gKnAfZe4d+HnjvecGS0Do/tQjto0tuR6Hu0TsHyH3aTnenT54MDel/HCme2slFw+20cyPasWlt6m+oyR2ITrAjbNGUFYMEdjMzsqh+snJcS129Z6e6oZtpvg== 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 v2 12/13] x86/mm: update log-dirty bitmap when manipulating P2M 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: <0bebfe8c-6897-dc8b-7fe0-9127d4996eb8@suse.com> Message-ID: <2fa96dd3-986f-e41a-266e-9cdf8941b4dd@suse.com> Date: Mon, 5 Jul 2021 17:18:01 +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: PR0P264CA0106.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:19::22) 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: 378bae56-8d98-4973-987e-08d93fc81504 X-MS-TrafficTypeDiagnostic: VI1PR04MB5472: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: T/XUsibU4ttsa3QJc2JsURW34wWsOSBmTpMSCrjA98ivWrABlDe2kDc4aRtwU6EVPVX4bAO2RwhL5S9qnAe0IP+G6YOloH1p2hq3J9BuZQ+ueVO0DKs0OOO8ld7X6I2FI6RiKRoWjRsQS1NQ+9j0nj0mXOjYyow9kobyv4ZNYw5nzcIaplHgbodkP9lDa2GA87mPr60Q/wEjgw0lV6vtQUDmSsEP05/X/PaimBpeJ8GDsVLgBlSpCVMbEmVlBS1OuGRJUZ0dHCt6xuLaVMmPTEuGmEl1irBzmfC7lwL2AtkNH5krU9I9/RnzY3TQkw8b/BllpDJnRd7I2Gwu+mPHDKOSqlwVbk49B5ipZ1NrhG4ZXTugW9ng0ZyHVDcGHcRAaKIeTbndWs4pVuMKtZ7Z0A9+T9MYaQUz2wPyRnG6b8p/Ir5BI/1xdEkktzjDD6HdAFJX7Ouu6WIBazmWJc/D0SSQdkuWS7W32oGJ0X4Klr0zDqr4AYNW6nmMPf7HFoRtmh0wntL9Y0939ckXWS4dVvXGNI600ImVX2fpbLq5dSIUo4EblATvcK++TEqlPomQ/Np3R2Y41HALs0zkFzIxQ+ZTyFnSYJqBq0mPzlWLULQ94Y0YWnJWPQS1dq9QUq9R3NRarSdMUvn2u/PqLjR968Wwhv81dGe/tTCtibE5vxBX255jPfgqFDV4iDQHRM5OkoNO+g3TGLhRSTi3fU5UlWJ6Bwkp1nuv/3rIu5jDX+JdLG2YjpBCLoqGEjQaGK+Y 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)(136003)(376002)(366004)(396003)(39850400004)(54906003)(478600001)(6486002)(316002)(16576012)(2616005)(15650500001)(83380400001)(6916009)(8936002)(2906002)(8676002)(956004)(4326008)(5660300002)(66946007)(86362001)(66556008)(66476007)(36756003)(38100700002)(26005)(186003)(31696002)(31686004)(16526019)(14143004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?ce7BdHtZ8giDrmD8DvWhscJt605C?= =?utf-8?q?skvcZvFpg7Kuhp1Y0hb1RO39PkS0grVjXTPK/KS7Sd8GBMZUEgCdzE5WS1RYuDH3i?= =?utf-8?q?Od8K1Ow4qnMK10EenG31fnzJdUL7WCoyxtnprt88qugBdW/nUpda8eWnBzwwK5ZQL?= =?utf-8?q?3xRAH8YU2Z0fpSUHwL2r9s3a18LgyIo5SLd506hP/49cPPADTPbhr81M3A37aRuI/?= =?utf-8?q?F8i71w4rvg7ipSl1bji39jhTyDQInrWvm8BJ4eqMyLr2N6A2CVbjxj6w/k2syudk8?= =?utf-8?q?8lxEdFvDhwcnukcSFJoFlb/C3+ZZSWbrLYXYJt0IwkP3W4b6TN6DHkrflKmDqHMMg?= =?utf-8?q?dUaBlZ4YFA0DDcDQzonsYDy/IjXquCX2avBYCDdawjU0dthJVcHpGQ6cBWTPttpjN?= =?utf-8?q?I2jEeN+CGLTo7zIBotUr3T4mJ1MsT71wmgNslYfk69K+2Vhu1Dvar/mfjOhidUT+8?= =?utf-8?q?FFe+JiK7maFinTMq0BmUReYLvdtH66M6J/N6EgOPbdnw7/oL1oZLTvESB2C66OEFo?= =?utf-8?q?983d9W+cmKtp61oIRcxnQIB1UwiwUR2tbAbMjtb31I0sYiuAVTzKMSENG4G3a3qZb?= =?utf-8?q?yvVpY6YXpoAaPMhwbtNuoeaHiyECNORV4TA6+JsUksZ+ADFqwhQZRQVo78t3EUclJ?= =?utf-8?q?W/9ynWJPxeOkHzft4IfDSLALgG0GzzGTe2EZW3h1Ijyl/ww2SyfnHSTEVakkK0FOy?= =?utf-8?q?io5JY3v4vVIzcZOqLOb/dhcN8I/uKDmfScnUDndglhOraCyNOBVjnz8SvABUqaKs6?= =?utf-8?q?vhjg48TDZgAoRV67LsitHzGQZpl5EsKAufWKLVTHzOTTzmisdGkwz4rDQ1Qku8s7X?= =?utf-8?q?a14G/Gt2usLEcxLXmGjssoaUBiA7ywHnADri+mE5A8LnFRnq9VJrHxwq9Mu6O3tc4?= =?utf-8?q?BumeZM3CcABbOwQveZpPcBgzypvvGSlSE+h23T0DQIpTGgQnME998pe/mwB7vyWT+?= =?utf-8?q?P7N4TqjaAjI55CFNdS8xC2fp73Hwdz5y2SbvQaU4vIg6JUcqqTRQpRceQ5/QaSiMy?= =?utf-8?q?pqJ/6tw5Bk2hyI9btXB0xXnvhTSys1lYew3jO0OxhBQf1YDOHoxQvpJ/3sfe94hh4?= =?utf-8?q?4aqz9y11O5l7LE76ACg1NqildEnxVCP//p9HewB6Fd4YyM00GQ9VTDPQYPJXz0gl8?= =?utf-8?q?RgfTbfXHlQfqQRLjwEb16LPQhRm96QftXlrvo6X5cWc4ZSwma76Zi5VZWa6JsUCED?= =?utf-8?q?nr8RBHFD8J18GGFeL+U8vn7Ywp+/7p+g5aL+HaDejSu+XFcsYJECR7s049p0IKbeL?= =?utf-8?q?l1GNvDyM4Dwje7ZO?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 378bae56-8d98-4973-987e-08d93fc81504 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:18:02.9377 (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: +RoKEJOcN32NEkkSVHxCWhcjEjci7UBHSWl40GBxdcYq17XvG2jetdrxhlGPN1XW1qn8EVmX+UJG/qCfg/EFNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5472 Just like for PV guests MMU_MACHPHYS_UPDATE implies marking of the respective page as dirty, additions to a HVM guest's P2M should do so. For HVM the opposite is also true: Pages being removed from the P2M are no longer dirty at their prior GFN; there's no point in telling the tool stack to try and copy that page, when this will fail anyway (until perhaps a new page gets placed there). Introduce paging_mark_pfn_clean() (intentionally without a paging_mark_clean() counterpart) to handle this. Note that while there is an earlier call to set_gpfn_from_mfn() in guest_physmap_add_entry(), but there's little reason to mark the page clean there when later in the function it'll be marked dirty. This is even more so given that at this point it's only the M2P that gets updated, with the P2M still left unchanged. Signed-off-by: Jan Beulich --- guest_physmap_add_entry()'s error handling looks bogus in this regard anyway: If an error occurs before an MFN actually gets assciated with the new GFN, the M2P entry ought to be restored imo. But of course a guest is still hosed if the operation succeeds partially. Note that I've not even checked mem-paging and mem-sharing code for whether they may need similar adjustment. At least the latters is, aiui, incompatible with log-dirty mode anyway. --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -818,7 +818,10 @@ p2m_remove_page(struct p2m_domain *p2m, { p2m->get_entry(p2m, gfn_add(gfn, i), &t, &a, 0, NULL, NULL); if ( !p2m_is_grant(t) && !p2m_is_shared(t) && !p2m_is_foreign(t) ) + { set_gpfn_from_mfn(mfn_x(mfn) + i, INVALID_M2P_ENTRY); + paging_mark_pfn_clean(p2m->domain, _pfn(gfn_x(gfn) + i)); + } } } @@ -1027,8 +1030,11 @@ guest_physmap_add_entry(struct domain *d if ( !p2m_is_grant(t) ) { for ( i = 0; i < (1UL << page_order); i++ ) + { set_gpfn_from_mfn(mfn_x(mfn_add(mfn, i)), gfn_x(gfn_add(gfn, i))); + paging_mark_pfn_dirty(d, _pfn(gfn_x(gfn) + i)); + } } } @@ -1314,6 +1320,7 @@ static int set_typed_p2m_entry(struct do { ASSERT(mfn_valid(mfn_add(omfn, i))); set_gpfn_from_mfn(mfn_x(omfn) + i, INVALID_M2P_ENTRY); + paging_mark_pfn_clean(d, _pfn(gfn_x(gfn) + i)); } ioreq_request_mapcache_invalidate(d); --- a/xen/arch/x86/mm/p2m-pod.c +++ b/xen/arch/x86/mm/p2m-pod.c @@ -645,7 +645,10 @@ p2m_pod_decrease_reservation(struct doma } p2m_tlb_flush_sync(p2m); for ( j = 0; j < n; ++j ) + { set_gpfn_from_mfn(mfn_x(mfn), INVALID_M2P_ENTRY); + paging_mark_pfn_clean(d, _pfn(gfn_x(gfn) + i + j)); + } p2m_pod_cache_add(p2m, page, cur_order); ioreq_request_mapcache_invalidate(d); --- a/xen/arch/x86/mm/paging.c +++ b/xen/arch/x86/mm/paging.c @@ -259,7 +259,7 @@ static int paging_log_dirty_disable(stru } /* Mark a page as dirty, with taking guest pfn as parameter */ -void paging_mark_pfn_dirty(struct domain *d, pfn_t pfn) +static void mark_pfn_dirty(struct domain *d, pfn_t pfn, bool dirty) { bool changed; mfn_t mfn, *l4, *l3, *l2; @@ -290,14 +290,15 @@ void paging_mark_pfn_dirty(struct domain if ( unlikely(!mfn_valid(d->arch.paging.log_dirty.top)) ) { - d->arch.paging.log_dirty.top = paging_new_log_dirty_node(d); + if ( dirty ) + d->arch.paging.log_dirty.top = paging_new_log_dirty_node(d); if ( unlikely(!mfn_valid(d->arch.paging.log_dirty.top)) ) goto out; } l4 = paging_map_log_dirty_bitmap(d); mfn = l4[i4]; - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(mfn) && dirty ) l4[i4] = mfn = paging_new_log_dirty_node(d); unmap_domain_page(l4); if ( !mfn_valid(mfn) ) @@ -305,7 +306,7 @@ void paging_mark_pfn_dirty(struct domain l3 = map_domain_page(mfn); mfn = l3[i3]; - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(mfn) && dirty ) l3[i3] = mfn = paging_new_log_dirty_node(d); unmap_domain_page(l3); if ( !mfn_valid(mfn) ) @@ -313,21 +314,22 @@ void paging_mark_pfn_dirty(struct domain l2 = map_domain_page(mfn); mfn = l2[i2]; - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(mfn) && dirty ) l2[i2] = mfn = paging_new_log_dirty_leaf(d); unmap_domain_page(l2); if ( !mfn_valid(mfn) ) goto out; l1 = map_domain_page(mfn); - changed = !__test_and_set_bit(i1, l1); + changed = dirty ? !__test_and_set_bit(i1, l1) + : __test_and_clear_bit(i1, l1); unmap_domain_page(l1); if ( changed ) { PAGING_DEBUG(LOGDIRTY, - "d%d: marked mfn %" PRI_mfn " (pfn %" PRI_pfn ")\n", - d->domain_id, mfn_x(mfn), pfn_x(pfn)); - d->arch.paging.log_dirty.dirty_count++; + "%pd: marked mfn %" PRI_mfn " (pfn %" PRI_pfn ") %s\n", + d, mfn_x(mfn), pfn_x(pfn), dirty ? "dirty" : "clean"); + d->arch.paging.log_dirty.dirty_count += dirty ? 1 : -1; } out: @@ -336,6 +338,16 @@ out: return; } +void paging_mark_pfn_dirty(struct domain *d, pfn_t pfn) +{ + mark_pfn_dirty(d, pfn, true); +} + +void paging_mark_pfn_clean(struct domain *d, pfn_t pfn) +{ + mark_pfn_dirty(d, pfn, false); +} + /* Mark a page as dirty */ void paging_mark_dirty(struct domain *d, mfn_t gmfn) { @@ -348,7 +360,7 @@ void paging_mark_dirty(struct domain *d, /* We /really/ mean PFN here, even for non-translated guests. */ pfn = _pfn(get_gpfn_from_mfn(mfn_x(gmfn))); - paging_mark_pfn_dirty(d, pfn); + mark_pfn_dirty(d, pfn, true); } --- a/xen/include/asm-x86/paging.h +++ b/xen/include/asm-x86/paging.h @@ -170,8 +170,9 @@ void paging_log_dirty_init(struct domain /* mark a page as dirty */ void paging_mark_dirty(struct domain *d, mfn_t gmfn); -/* mark a page as dirty with taking guest pfn as parameter */ +/* mark a page as dirty/clean with taking guest pfn as parameter */ void paging_mark_pfn_dirty(struct domain *d, pfn_t pfn); +void paging_mark_pfn_clean(struct domain *d, pfn_t pfn); /* is this guest page dirty? * This is called from inside paging code, with the paging lock held. */ From patchwork Mon Jul 5 15:18:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12359303 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 A0980C07E99 for ; Mon, 5 Jul 2021 15:19:17 +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 4CDD36143B for ; Mon, 5 Jul 2021 15:19:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4CDD36143B 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.150384.278057 (Exim 4.92) (envelope-from ) id 1m0QNJ-0001Gw-4e; Mon, 05 Jul 2021 15:19:09 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 150384.278057; Mon, 05 Jul 2021 15:19:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QNJ-0001Gp-1S; Mon, 05 Jul 2021 15:19:09 +0000 Received: by outflank-mailman (input) for mailman id 150384; Mon, 05 Jul 2021 15:19:07 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1m0QNH-0001GA-GP for xen-devel@lists.xenproject.org; Mon, 05 Jul 2021 15:19:07 +0000 Received: from de-smtp-delivery-102.mimecast.com (unknown [194.104.109.102]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 9ef82d97-3515-4199-8073-9a88d7333d68; Mon, 05 Jul 2021 15:19:06 +0000 (UTC) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2056.outbound.protection.outlook.com [104.47.14.56]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-13-nu-3OTzgMRuMgoeBjUPhAQ-1; Mon, 05 Jul 2021 17:19:04 +0200 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB5472.eurprd04.prod.outlook.com (2603:10a6:803:d3::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23; Mon, 5 Jul 2021 15:18: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.4287.033; Mon, 5 Jul 2021 15:18:59 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM4PR0101CA0061.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::29) 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:18:59 +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: 9ef82d97-3515-4199-8073-9a88d7333d68 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1625498345; 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=zViDK8FuxeRhRXIhpj/SCVn6kY0R8hbaF74WBTbyFgY=; b=ksAM+1xgCk1RBAve0txCj1XusQfUd4IKDMUjcC0DIJWCKCOyCJp8e9PjRG75+5qy2O0t3G y4Qk6Tm7nf9d8Xo1itu8E5XmKRYN/bOhDwZhsDEKXh9eXKmUWMo5+NvEjLPB4I795Fr0Lg LtyNxroTJHXW7yhAXbvhmfZEIaCme3E= X-MC-Unique: nu-3OTzgMRuMgoeBjUPhAQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MjvDoRys9kN38HoiEWKnTwyXmqNAfxjfCgEq/yxfbgIZgvJG8B+0S/bGG6enkUMsN3N9BTwFqA3wDmYdt+WZPl6NGbH5BDpcfdB8bwVYXEVLce8TPNkTd4reQ6foxBCGtk11kIe8dtThUa1eUZD6QzxmWBuUYFOua5H0j/Jct0QsqXPbIMvFr4/WIkb371T5FfFj5hpFjjCgNh17y3lWiWMiQ2dYDQ0MH/KzoXHdNRqHiY4coZz6Kv8iK4TCT7APYUIoARkUlCat5QkCCZPoCS/ygrE6eNNpA1vY9atSyEj20XxEHjwL5v+prOhbtg8xLw+it9Lu5Sxn97f6l9s5aw== 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=zViDK8FuxeRhRXIhpj/SCVn6kY0R8hbaF74WBTbyFgY=; b=buof7unWyY+mF0+gLLy8IhYHOO4eb0AFQx/jYWuN2P2Ld3MhBozCKkCDTYRMoS+82Wr8r+GRfDTfqTEMv93njyWKtsVy1RgMexHASXlG2XYBTm3Yc17kKKl6ca9hOE7TlN41mDlgjqjZMx44mwnU6GIYHqOujAlT+pkevPSH3N8PRKlPXxInNmbWXnUxWgGV2c4COEoIeiWaVM8BXr4Xjbe+uVOJqbMKD+g3JJJ/7tKPkbEbnAyMYK2CIkUidn04xLkiaL8jZtYzhw09jLBRZnaVzY8tkFrzC9Uznk5qSR3oBJBoAb8h694zb634koAUpDUb1sbl1w8hK7US8pxiZw== 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: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=suse.com; Subject: [PATCH v2 13/13] SUPPORT.md: write down restriction of 32-bit tool stacks From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: =?utf-8?q?Roger_Pau_Monn=C3=A9?= , Andrew Cooper , George Dunlap , Ian Jackson , Julien Grall , Stefano Stabellini , Wei Liu References: <0bebfe8c-6897-dc8b-7fe0-9127d4996eb8@suse.com> Message-ID: Date: Mon, 5 Jul 2021 17:18:58 +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: AM4PR0101CA0061.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::29) 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: c8810012-ea42-4dbd-1f88-08d93fc836f8 X-MS-TrafficTypeDiagnostic: VI1PR04MB5472: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HICbAzkd9BhTrQHoTbg/+Yqh4t12j96rpBo0dtHhkTA0zvf7O/VZRG6dwLppYNAUH8V9bQL9k2Zbb7DdzpsKZKd3OJAlNstmJWRATSF0lgdt/pT6u1/3HW4SR/K/lP8TbCGbMnWgD//jKGUpmvOMT3T4/4mEBbxUcJ7Pg90imqfyRMujaBOZT6SDtbKbhjnzl4cJfmFIsJcdzen4AIdCORN/aaDAdGr8kfHjWGGa3AbmQucuIhJdpUoYJsMWHtBDVTLYGxSspGOxyERFKdkd8Ds+7RpaxccMafRuMd0sKWhADp41TEXQNrMu3myBJp1xIwPd60EiKj7PgIDupHMZstyl+9CT20+qoD5w7IUMLSsW3ihScZ9esyt2hd0usb+JZ/YoqHTzu3+dzNKNWQV8rRC3Y5+4nWfIJ0zWxxIo/+SoWk8ekbS6XnHDnH+aeYE4xkxhFFRkdV0QsOxDx2U0LuIh7UoXG20r/YQpXF8tXQ9Tckp38eJKmcysIox+RljpaHkC7bcXuLZzPWzhhUABjtwKYO7LRKF9yq+mzbXE1R0yBk2aTO2rsf6rK1r8h+IO2VQAQC91pjAfrv5BRLPieOhGcqWdKR/KwuwuKWTWlIrXyeG/3THfCrM7E96rTbT8yTb2g46u0AltmnCjLhljKY0f3VAsoZZXmoxXIuBeEAb7CEbHmcGD03Uo3GdfgFAXNlq9phUq11KzhWoCPN5ojQ== 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)(136003)(376002)(366004)(396003)(39850400004)(54906003)(478600001)(6486002)(316002)(16576012)(2616005)(6916009)(8936002)(2906002)(8676002)(956004)(4326008)(5660300002)(4744005)(66946007)(86362001)(66556008)(66476007)(36756003)(38100700002)(26005)(186003)(31696002)(31686004)(16526019)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?s2shz0ChKkZbCp9bK6GiUrLVWi/o?= =?utf-8?q?ia3zdICBpt3URAL3bevCGVb46afp94k8QVmXXLiDm2vBjhXaHOCAXpO8B8h5q9g6M?= =?utf-8?q?DkJbKtKRTmbN3AVOgKAegK2Bj7iOSjZd7EZZpjHT+dhbppzfxLIc4wl85OIrNl4ts?= =?utf-8?q?VJonOqC8Q6SU4RzL4xu4L5cJnMm7KUogQYSK5aYxxjzZZXDiseC8ZiImpWri/J1e7?= =?utf-8?q?YegHOB5Tf5CwYho8IUfiH1nQAPHGERddLd48I4PPMnwu0ObQJHkKM+km/jTpbZVZ4?= =?utf-8?q?l3WHquurWn/pNrVE0EFSXmZBPVVj3jXeCeI8oNt1KlwM94A6v/8NNXYd22kFxN4oG?= =?utf-8?q?sUmfgOQD5H21ds9rljPCcj7vv272mAKBU6N8XfoNZlaVolm/egXJeO/bvodVl8QZ/?= =?utf-8?q?OXt3qOBYmNBoKRtuikGfmaaUAoZfkHY7CZx8YDSJNq4Gj5hdhQQyMtnIIaCUhR1n6?= =?utf-8?q?egIEirC0gvhiaDgijNlzquf40cfRtug3v6tn1lEY6U9x8u1OD4PcCmJGRPQ5DES2u?= =?utf-8?q?45sabOH4mKfI2zAs8/wLaEDGerZ/ObZ/xli0EIHMgZkjBI8QJOzdOIz2sHJ4fU4ed?= =?utf-8?q?xa1R1GAsl5EwvCUsao1h/Y+pirZ5eT7YL84SF/w6BxPRlDKiU52qHm8FCVxctzND6?= =?utf-8?q?n9d6Wc2XzjAPit9ZX3t6aeJ97hsBKaG8xoSwZB+j+djq0tOMJ1NRsRc2M7eXZZjvQ?= =?utf-8?q?5kDDh7HbhPurIHssux+5d5gbcqnYv7168UcRJDSkmUhRHtk71pGj4hXtTm1V/hmer?= =?utf-8?q?JNvvIeifxjUxcjTPSQdFrfb0q52xOvRCXOljye+aP8DANOm9sVgzMr5BkK5Jyf1B3?= =?utf-8?q?l33t/hMr0Or9phIQvDzri+WfKQCBN6RBSVdHbP0v97MjtsmQkpFnAEFdXco+p8rHn?= =?utf-8?q?xQDBT6AgndPn6vLDWMXy0rKpbjqz5h+frmZqJoen5w9OPfNI8y4UBUsPQVOQyJIAb?= =?utf-8?q?IJGvIC7JxRsIpeW2JDh/aHzQBB0cBKtP/nB8JDvN545cDFO2jD9+BzK/QWgetebxC?= =?utf-8?q?PtmOPNiiqmQhdpF/jLGK3ezIV8hDObe5OwSyX8R4HrcQuGmFPpqrqOnd4ihbhUtLR?= =?utf-8?q?s5lni3uxjx+ukUfvaTAx7MhvEE/5ywftCDn8G+Bi/3iQPkWpQawQpr3MxI74aBfjj?= =?utf-8?q?ZOVW0z/4g1trypbC4r3rVKQEVMlVgXWyNMAIL2MJxM7MyTH3HUDlZe9FuAuKTDd7X?= =?utf-8?q?aV4UFkVfReIrK3+yvK1oKKjCyG4IySCOMNs4jNJWsao9G+zKCdRpcxDAsX771gTs/?= =?utf-8?q?9LgOw3FDDzsPG2YL?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c8810012-ea42-4dbd-1f88-08d93fc836f8 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:18:59.8934 (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: YuG47RgKBH+h5gDloSuD2P2kgHViTWrXg622nhILaWrT3aKBphVx1lepOga2dj7Hg1tnu7+V7wJQ9L+nLavcKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5472 Let's try to avoid giving the impression that 32-bit tool stacks are as capable as 64-bit ones. Signed-off-by: Jan Beulich --- v2: Wording adjustments as per review discussion. --- a/SUPPORT.md +++ b/SUPPORT.md @@ -131,6 +131,12 @@ ARM only has one guest type at the momen ## Toolstack +While 32-bit builds of the tool stack are generally supported, restrictions +apply in particular when running on top of a 64-bit hypervisor. For example, +very large guests aren't expected to be manageable in this case. This includes +guests giving the appearance of being large, by altering their own memory +layouts. + ### xl Status: Supported