From nobody Sat May 18 18:58:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1632298940; cv=pass; d=zohomail.com; s=zohoarc; b=NFmBj40XGP2RXqbGPSQKfxL3iMqO1uT8NGEU6DW+cWNK06sW+5bzdMCdZ06XpTltIX6m+tmL++7jr07Nt9AloH2+C+00Ft6WETXQHwfcvBZ/lnx2BZvc9HTuvh81Ilcr4+G1t3TpBH9U6YRes5FUVpbVrk7cDF/ML4fp9mZoQ5Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1632298940; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=p6U9+CcoG+mX2fECvTxGB38bv2Hcg2ZxfYzHOKtfzAE=; b=UOv08bU1in7n1C2cBajcdG88LxG80veRSco5MqEDpnlcUY71ul6eZ/TAkzqm1o86XT0jDQ1A1S02fSl1TlHlLIPffWlQaTrdMP3DCo3neBkLzmqtrmJjAvZQ7gsRROzR81ML2VVc3JZelRsW4aA5DDN7l47P6Njxlz9GdMX+M0c= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1632298940553644.668300840651; Wed, 22 Sep 2021 01:22:20 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.192237.342578 (Exim 4.92) (envelope-from ) id 1mSxVs-0004MR-Tw; Wed, 22 Sep 2021 08:21:56 +0000 Received: by outflank-mailman (output) from mailman id 192237.342578; Wed, 22 Sep 2021 08:21: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 1mSxVs-0004MK-Qv; Wed, 22 Sep 2021 08:21:56 +0000 Received: by outflank-mailman (input) for mailman id 192237; Wed, 22 Sep 2021 08:21:55 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mSxVr-0004ME-4J for xen-devel@lists.xenproject.org; Wed, 22 Sep 2021 08:21:55 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id d3f31747-cd10-4295-a5cf-4c9efeefc486; Wed, 22 Sep 2021 08:21:53 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version 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: d3f31747-cd10-4295-a5cf-4c9efeefc486 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1632298913; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=KvlRs63Cx+Jvx4nNBqIkILrlJjUxHNtbkim4lAXRCe8=; b=c+gTB/FRcbo5acUYLMpatTJm5x98BGAYMSy+Q67Te4cqGfiWilAgi1Lz kwFHGWGW3G230pWIud+rNwUV6wY7gil6AKSm5TF/gXlTqyib5EQsWtbVz +pc3208rajXTXpBpi04c5cqhtrj9amN52kqmAv1xNl6pwA5B6SfoGMQOF E=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: IDblU9qmfXikEPp8GctaHMIy18ZtDSb5xCLFEX0CVudyjJix0RqPbadI5AgIvonUTL52uvlhl4 a6ex4/Vfcv3bwX8e2M5zoMW94MxKbUoMJnrWiuJKSM1aj/eGQlQI5ZPLr4qeukeWTaTVlEcg/b 2ZxHdkHhiB7nqheC9sesO2Rzmk6w0xqz7sjOWFiVMTuOEulNU46IxK/FAXAjxK0Wx3uxNVrO91 /FBCzjb3Lzy0eqou1TpJxRy75Gn9fS0b3V5kOWgj2TK96MQsRmHiak8FHiJWJqP4+dPGvBvOXY 8HU1BWgknW8uGpOpTPBYKEvl X-SBRS: 5.1 X-MesageID: 53315430 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:Uidazq3ONy1j7cfDBPbD5cp2kn2cJEfYwER7XKvMYLTBsI5bpzEPy mZKXmDTOPnYZzfyLdgiaYnk/UpXu5XWmNMyS1NtpC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCan0ZqTNMEn970EoywbRh2OaEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhvdt94 Y9f7sSMYzwLYaLsveg2cDlHHHQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1EnMMsIdOtJIoCknph0SvYHbAtRpWrr6DiuIQDhWps3Zgm8fD2Z ZAhYyFMK076eSZdZVlJOYMgvriIiSyqG9FfgA3M/vdmi4TJ9yRu1JD9PdyTfcaFLe1UgUSwt m/A537+ABwRKJqY0zXt2mKhgKrDkD32XKoWFaak7bh6jVuL3GsRBRYKE1yhrpGEZlWWAowFb RZOo2x38PZ0pBfDosTBswOQgnWIl0QOAIJsOdYYtw6t76b/wCaGCT1RJtJeU+DKpPPaVBRzi ATTxoO3WWQ22FGGYSnCrebP9FteLQBQdDVbNHFeFWPp9vG++Nlbs/7Zcjp0/EdZZPXOEDfsy nihqCEkjt3/ZuZaiv3moTgrb9+qz6UlrzLZBC2MBQpJDSsjPeZJgrBEDnCBtp59wH6xFAXpg ZT9s5H2ABoy4XSxqcBwaL9VQOHBCwm53M303gc0QshJG8WF0H+/Z4FAiAxDyLNSGp9cI1fBO RaL0SsIvcM7FCb6PMdfPtPqY+x3nPeIKDgQfq2NBja4SsMqL1HvEeAHTRP44l0BZ2B2wPljZ s/EIZjzZZvYYIw+pAeLqy4m+eZD7gg1xH/JRIC9yBKi0LGEY2WSR6tDO1yLBt3VJovdyOkM2 9oAZcaM1TtFV+jyPnve/YIJdAhYJnknH5Hm7cdQc7fbcAZhHWggDd7XwK8gJNM5z/gEyL+Q8 yHvQFJcxXr+mWbDdVeAZEd8Ze69Rp14t386Y3AhZA76x3g5bI+zx64DbJ9rL6I//eluwKcsH fkIcsmNGNpVTTHD92hPZJXxttU6Jh+qmRiPL2yuZz1mJ8xsQAnA+9nFeArz9XZRUnrr5JVm+ 7D5j1HVW5sOQQhmHf36UvP3wgPjp2UZlcJzQ1DMfotZdnLz/dU4MCf2lPI2fZ0BcE2R2juA2 g+KKh4Evu2R8ZQt+dzEiK3Y/YekF+xyQhhTE2XBtOvkMCDb+iyowJNaUfbOdjfYDTum9KKnb ORT7vf9LPxYwwoa79siS+5mnfAk+t/ih75G1QA1TnzEYmOiBq5kPnTbj9JEsbdAx+MBtAa7M q5VFgK25Vld1BvZLWMs IronPort-HdrOrdr: A9a23:5pA90KiEJv1Q1kTtcQFfJpbfs3BQX0t13DAbv31ZSRFFG/FwyP rAoB1L73PJYWgqNU3I+ergBEGBKUmskaKdhrNhQYtKPTOWxVdASbsN0WKM+UyHJ8STzJ8+6U 4kSdkENDSSNykKsS+Z2njALz9I+rDum8rJ9ISuv0uFDzsaEZ2Ihz0JdDpzeXcGIzWua6BJca Z1saF81kWdkDksH4mGL0hAe9KGi8zAlZrgbxJDLxk76DOWhTftzLLhCRCX0joXTjsKmN4ZgC f4uj28wp/mn+Cwyxfa2WOWx5NKmOH5wt8GIMCXkMAaJhjllw7tToV8XL+puiwzvYiUmRoXue iJhy1lE9V46nvXcG3wiRzx2zP42DJr0HPmwU/wuwqqneXJABYBT+ZRj4NQdRXUr2A6ustn7a 5N12WF87JKEBLphk3Glpj1fiAvsnDxjWspkOYVgXAae5AZcqVtoYsW+14QOIscHRj99JssHI BVfYDhDc5tABGnhk3izyxSKITGZAV2Iv7GeDlNhiWt6UkUoJgjpHFog/D2nR87hdsAotd/lq L52gkBrsA7ciYsV9MOOA42e7rANoX8e2O+DIusGyWTKEh+AQO0l3fW2sR/2Aj4Qu1D8HMN8K 6xJ2+w81RCIn7TNQ== X-IronPort-AV: E=Sophos;i="5.85,313,1624334400"; d="scan'208";a="53315430" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZhLjhOMPDYiYOtBcyO2HEUeAYNvrcM5dhfeIUy+QLs7kaEWe52aTLcv4WaG93gCxtCIQ6StY5BuQArA8SbQ4BhUEyp9QAejSB3M9GcWXiMhwoNcki+culN/MWcxKZCqgKsDDvYuerfuji2/JWJiZXvXyRlXrsUp48JcBCJ1tQNh6AJ+wgZgUk7ONi2o0At/C/2ufiDiARIw1ta796cSd6p2XVple/2gJtiv0LnlkNEL+BowmADNKy8reIDMiRhAgLHZQlQikVmM97+DlxL60lTc16DVXT9R6qOUjhgYPCvEl/NxL3JiKwvyv5CvCMElBy/WNvVx6PGGPT5rAPsAlhg== 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; bh=p6U9+CcoG+mX2fECvTxGB38bv2Hcg2ZxfYzHOKtfzAE=; b=W6AD/rIiqS1Wdj9hwk2VvkOfrh4Vf0jCKuByWPSvg0fEhXqbwaTsO2WamWaBWnQUMqdwgX6zqx8mRV3bhfOGoYxACqfYWj13vx2Z2Z+k5QDnR3L/JQ5cMG61MexAq1y9lEpZHXU0OfIDNr5cCqo4wvVdY0yrBK0EsSCTLCBzLsvuswmrt68GS3hLsCT7H3T2vbCafpsaNHwzKSXysPMdJ5flMgO+oj2SA30BkHS2ORFyaGGFrmGJYSojSXbX2ot3nsAv/cTEFUt9xkW5moRVBHR9krxtz3+qF3m86+sX3YSM7WSw4pYsPi9b61F/Joi2ndUhuf3o4eYH+dEx1j4yxg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p6U9+CcoG+mX2fECvTxGB38bv2Hcg2ZxfYzHOKtfzAE=; b=QDWXLIz5g7Bjj82bvzImjkxuV0oXOJZn8vdK7+W3op157Ds2cpG73W/oymE7nh0Ju/5E38Zl5pjajwnZ418hh947+T/z234qYkfjnAbBaAmjx95Ew0UAB8fjWb2asvN0HGxJteFqSHoErU4jCe9y9AB8xN+fioQ5gVS9a4FCCyY= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 1/6] tools/console: use xenforeigmemory to map console ring Date: Wed, 22 Sep 2021 10:21:18 +0200 Message-ID: <20210922082123.54374-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210922082123.54374-1-roger.pau@citrix.com> References: <20210922082123.54374-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0042.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:61::30) To SA0PR03MB5610.namprd03.prod.outlook.com (2603:10b6:806:b2::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f5fcaec7-237b-49fd-71f0-08d97da205ff X-MS-TrafficTypeDiagnostic: SN6PR03MB4015: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TqDweZTz9JMoOtoEKoQPx6jqGFJUZJwquY9EgHbXTho4ZHCMjM18dJikjti3MYe8no3nHpDit77I7Ey399vRgY3p5LRQFO3oB0g9sc2lOUqjpF/HEcQ+zir12bkaOXHgvV4h0jqSJHnL4ENldXxWcqX91q4Yg5gIERvlgjs0OF3Oxz/J7nG+wak9plZLQsNAcBgg3ECwr9BSCq7domv1ENabkgHrV9Zth9BDTjYYi+GoywV+jjYLPKFhz6ohPU3bONLxILsjsPzSHZi234zOTiwZeiUu/ywMrNuucmFn6t+3F2TsrW8G7YgOcLEIcJDQXFXIP0psDVJVdrSk8qdhLvCfg6umAzGIkA8LO3A+yjvVydmEyW3pe+hvim8EPuUfqf04uX7RvRv9cHI34VtPUyytqtEiV4z1sR7g3Ez44buEOtpPgK7vIHp7DD0+aukEt5jToGhZ082+Exlz4IsLNjcgTtnKTJr9obHi04sGqn8GKetPY8rcmLHYuZ5aNyofdhy+xv3bxBrDThpogKSFdI001oj2tY7AWF+aOXqacOO0Dp7O+3onS3TkY6OK+bc42/R/yUIrjAwF4JpBTLioFjFI8BzFpBcHT8AKzczaEZKwG7nJVUE2KdJYu1FtpsTNPaU8h6Og5Lve36s08JJ0EQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR03MB5610.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66476007)(66556008)(66946007)(4326008)(38100700002)(8936002)(186003)(956004)(86362001)(2616005)(8676002)(508600001)(54906003)(83380400001)(6496006)(26005)(6916009)(2906002)(6666004)(5660300002)(1076003)(6486002)(36756003)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bElBQStZRGRBSWhZWlVUZTF3NTZZQzlSUklIVmpVRCswSE9KTVlxRmJXaUdh?= =?utf-8?B?QjkwWmZHYk1sczYya1MvQjlXWmx2VHkwSlorTTlPaWhJYUJtb1ZXdUZzK3JK?= =?utf-8?B?NzNuWEIwRkdyaVBjbEJFaUpVVVB4bWtHVjNsUGg3T1RYWjVab3pPdjVZODdq?= =?utf-8?B?MjVhMVk4akpOSUwzQXBKMVMxazNKajdxcVFycmE5bHA3R0FsYnF4aXY4d2FT?= =?utf-8?B?RmxZVnM4K3N1aGNtZ2ljZnhEdlVUUXFVOXFMdCtjejY5cGNZb1lUM3RTNDFK?= =?utf-8?B?LzB5bUhSL1paa3FJRWFidGhDNXVwcHB4S1kxYk1IdFhBejM4WkNjTzZaUkxq?= =?utf-8?B?VDBnMnluU3dDVWpnTXlWTVEwZGdlOUtGREZCSWxpUkhGRFJOb2JIQWJjK1N6?= =?utf-8?B?UHA5ZUcwQnFtMlRuckhEOWdNN3RtSndGbGswS0dpVDZPdWhwekM4V3A1emRZ?= =?utf-8?B?Wkx4UHNJZ2RnVitsVWpUdG5lcnRYYlVGSFF3WE9YaTZhMDdrR0J4SkFkMGxY?= =?utf-8?B?M25pRW9mNXlNUXFnZk5qTm1vSFlYT3h3Q1ZNaytSM3JYRlJwM01YMXZ6dW1r?= =?utf-8?B?UFh5VGZTTVlTd1VuMWVFOW9rZ3k0eHpJSXRVeHczeDNra2hlNHVUU1NteUFC?= =?utf-8?B?c0xHcy9xdHhqMHorcVZSV25FYkFFMGQ4V2xXelpaM0svZk05OXFyQjV0bEti?= =?utf-8?B?bVkxTXhoMWJOU2cwbi9XWjNKc200Z1FzUzRRM3NGbmVLMElxQkRodFl4YW90?= =?utf-8?B?eXQvQjViL3lXS0IyRjVEOGFMREJVRjE1UmNwOVdpSTZyZGF2RmxCRVB1RlY1?= =?utf-8?B?MlI4YVNQdEpHZE9TWDJlVzJaNHd5UGRIeEs0YTNROFRUVXdVRWtSVmpUcjRW?= =?utf-8?B?Rks2bXhSanMyOHZ1Z0RjR0c4NTRoRVRmRnowRlpoKzRqRE5qbldKTGNxY3Vw?= =?utf-8?B?WDczaHVFSkZhVWFPVW9Dd1J3V25VbXdNZkRTZU5XODVnU0FYSEU5UjNPUDht?= =?utf-8?B?TkhROXdBNEw1UDI1cDVJaCtLWTVDM2M1d01WaXpDb0RoNlNkRXlHQ1FVUk9J?= =?utf-8?B?UEhUZUNnVU5PbTZKMjI0bHhqbUZHeGNhS1pRNW5MTHFTUUZmcExzOXFRTStn?= =?utf-8?B?WjBLdXB6bSsyelkxcDZqZHdXSVlRaVdjeXBZeGRoQkRKRU1vR0ErNWEzekZN?= =?utf-8?B?UUxFV3hCWTFUVys1V1VoM2ZESmY4Rm5JRHFIVnVNZ0pjMG1lckZvQ1huNklr?= =?utf-8?B?R3ArM3g2c1FPSzljNUVwclc1OC93ZjVzbTN3L1VoM1FCbTdtSFVaR2F5SklJ?= =?utf-8?B?TllHQ3NRZEd1MTdXbTIyRFZFcFBxMGEvZmpiRFVacDBhcmxiYWRtUUNaTm1u?= =?utf-8?B?WkdzZlBwUStsT0JhbEZGWVp6RTNHQ28wT0xld0RZZkp6cUkweWRZbHhJeE14?= =?utf-8?B?UTQ0SWFTbE0yUDdxMzZmcFlLZy9yNldacFg4dnlQa0R4ekJ4ZVZJb1pUaFNL?= =?utf-8?B?NWxBRWlhMklMV0lmUHR5b3A0UTBJZGtiV28vM01NZnB2UFozVm5JbEVTTW1F?= =?utf-8?B?UC81S3oxNUFVS3RpOG5JR3lvTEx4SEJMSVNPZlBSclY3N2JwRjhqdG1Wdzhi?= =?utf-8?B?QUFVb2cxUUlZRmZwTzBsZElmK0Y4d1pjaVFkODVyYVptQUN5Z3QzczVvUHpo?= =?utf-8?B?dXp2bnE5U254V2daU2hvdHBMQkRZeXhmbFQ1bXJqcVhkNDJkY2R0VVVlZVBY?= =?utf-8?Q?Xrg4guZefYCRcFiSznnWCSQC9fRHLGu6NDCKDR6?= X-MS-Exchange-CrossTenant-Network-Message-Id: f5fcaec7-237b-49fd-71f0-08d97da205ff X-MS-Exchange-CrossTenant-AuthSource: SA0PR03MB5610.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2021 08:21:49.0452 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +dMTkd1udyg6R+er5SXbtfgoY0j7YbR5kiIxnCiCuvwJaetRkpy0LTNTiNynxyS4HC8hqc/DiE0Y2+N+R1umYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4015 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1632298941212100003 This patch replaces the usage of xc_map_foreign_range with xenforeignmemory_map from the stable xenforeignmemory library. Note there are still other uses of libxc functions which prevents removing the dependency. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Ian Jackson Acked-by: Christian Lindig > --- tools/console/Makefile | 4 ++-- tools/console/daemon/io.c | 25 ++++++++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/tools/console/Makefile b/tools/console/Makefile index 84796eac8f..3f4cddab03 100644 --- a/tools/console/Makefile +++ b/tools/console/Makefile @@ -29,9 +29,9 @@ clean: distclean: clean =20 daemon/main.o: daemon/_paths.h -daemon/io.o: CFLAGS +=3D $(CFLAGS_libxenevtchn) $(CFLAGS_libxengnttab) $(C= ONSOLE_CFLAGS-y) +daemon/io.o: CFLAGS +=3D $(CFLAGS_libxenevtchn) $(CFLAGS_libxengnttab) $(C= FLAGS_libxenforeignmemory) $(CONSOLE_CFLAGS-y) xenconsoled: $(patsubst %.c,%.o,$(wildcard daemon/*.c)) - $(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(LDLIBS_libxenevtchn) $(LDLIBS_libxe= ngnttab) $(LDLIBS_xenconsoled) $(APPEND_LDFLAGS) + $(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(LDLIBS_libxenevtchn) $(LDLIBS_libxe= ngnttab) $(LDLIBS_libxenforeignmemory) $(LDLIBS_xenconsoled) $(APPEND_LDFLA= GS) =20 client/main.o: client/_paths.h xenconsole: $(patsubst %.c,%.o,$(wildcard client/*.c)) diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c index 200b575d76..682c1f4008 100644 --- a/tools/console/daemon/io.c +++ b/tools/console/daemon/io.c @@ -22,6 +22,7 @@ #include "utils.h" #include "io.h" #include +#include #include #include #include @@ -73,6 +74,7 @@ static int log_time_guest_needts =3D 1; static int log_hv_fd =3D -1; =20 static xengnttab_handle *xgt_handle =3D NULL; +static xenforeignmemory_handle *xfm_handle; =20 static struct pollfd *fds; static unsigned int current_array_size; @@ -675,7 +677,7 @@ static void console_unmap_interface(struct console *con) if (xgt_handle && con->ring_ref =3D=3D -1) xengnttab_unmap(xgt_handle, con->interface, 1); else - munmap(con->interface, XC_PAGE_SIZE); + xenforeignmemory_unmap(xfm_handle, con->interface, 1); con->interface =3D NULL; con->ring_ref =3D -1; } @@ -722,11 +724,12 @@ static int console_create_ring(struct console *con) con->ring_ref =3D -1; } if (!con->interface) { + xen_pfn_t pfn =3D ring_ref; + /* Fall back to xc_map_foreign_range */ - con->interface =3D xc_map_foreign_range( - xc, dom->domid, XC_PAGE_SIZE, - PROT_READ|PROT_WRITE, - (unsigned long)ring_ref); + con->interface =3D xenforeignmemory_map( + xfm_handle, dom->domid, PROT_READ|PROT_WRITE, 1, + &pfn, NULL); if (con->interface =3D=3D NULL) { err =3D EINVAL; goto out; @@ -1341,6 +1344,14 @@ void handle_io(void) errno, strerror(errno)); } =20 + xfm_handle =3D xenforeignmemory_open(NULL, 0); + if (xfm_handle =3D=3D NULL) { + dolog(LOG_ERR, + "Failed to open xen foreign memory handle: %d (%s)", + errno, strerror(errno)); + goto out; + } + enum_domains(); =20 for (;;) { @@ -1462,6 +1473,10 @@ void handle_io(void) xengnttab_close(xgt_handle); xgt_handle =3D NULL; } + if (xfm_handle !=3D NULL) { + xenforeignmemory_close(xfm_handle); + xfm_handle =3D NULL; + } log_hv_evtchn =3D -1; } =20 --=20 2.33.0 From nobody Sat May 18 18:58:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1632298940; cv=pass; d=zohomail.com; s=zohoarc; b=XYqNeYOcjoSacN1Gd6dFNsPUqrsxokRtm+5D30qodw3nORuQDQmwoldIRklPwIrRB6VuV2+6ig/RjtPyqqImCruxw01o0uw3FJIrhuuktpHkwuwzBuFNoQ1A81rLQjB4SwjMnlEOng6g96EQtlK0VDl7Zoc0NOot+Gtj5dtiANQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1632298940; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=s6lQCVt6prMWfBrL/PhlimqEZ3vfPawL47OaNE9m03I=; b=TBP8R6Nxie9TUqaIyAWxzNzNlv1isYGsAkt0wtgc1RqtoEQamxBV/eNyskByJGJxlQBtqWWshW/1WHT3sckkU8N9D+jMOGv1qYU3ZZOx0dJ53Kq2FQdtiKczd0PK/7vr97S0WY68ktYFhCx0/IDFQJFzRsVqKBYjYTnb2qUnpMY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1632298940523536.0612507031008; Wed, 22 Sep 2021 01:22:20 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.192239.342600 (Exim 4.92) (envelope-from ) id 1mSxVz-0004uK-Es; Wed, 22 Sep 2021 08:22:03 +0000 Received: by outflank-mailman (output) from mailman id 192239.342600; Wed, 22 Sep 2021 08:22:03 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mSxVz-0004uB-BN; Wed, 22 Sep 2021 08:22:03 +0000 Received: by outflank-mailman (input) for mailman id 192239; Wed, 22 Sep 2021 08:22:02 +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 1mSxVx-0004pu-VM for xen-devel@lists.xenproject.org; Wed, 22 Sep 2021 08:22:02 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 280ab036-1b7e-11ec-b962-12813bfff9fa; Wed, 22 Sep 2021 08:21:59 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version 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: 280ab036-1b7e-11ec-b962-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1632298919; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=UFeBg4V7WhycC2OZ2X38kzJnMjaHRI/emKcUl+Sg2oM=; b=f8iCrKmvLipTef9Ynlk1NBuioH/NuxYnBoCTLpH1ZHnVutT0QNOg8exd iG4qhjFXsN78Rf+Z4sdgq+KvtQMZh7K9Ile9GXqlx5lKrgh9bsq5p8t4i J2ZfzYQlOfpTxDn5viLs8miGm+C/tbPtJl+PR4P+vz3V38z9GOox4VuAZ Q=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: v6ae+TdAS45AqlttK1L+/fUh7eFpq41ArRGM0X4BN9ddn15wNIksIXqFskblmGJm/Kh96+1CIx CvOYYTx8QpyJbDHvX8kDiy2/b7rdJpUEJPE6ARr88HB4LQpK4hRfGTn7lHqbbHoZZODEYkSwdO IK6qoa3w3DTXvwaUScIMWhgGPFmsUJX3Vs0EFmeuVKCImWlqgOCn52Dl0knBZQvV4t9Tbskl+r NQsnN0N3aYcutP2mTubtxero/VVxFoVstrqum/oiYD9c8RzCdt6NftARyZIPhmnrNQId736FiG gE+1PitmFm5exQsVNLUb4/cH X-SBRS: 5.1 X-MesageID: 52894196 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:2lA926+147V4qFfNN1OSDrUDEHmTJUtcMsCJ2f8bNWPcYEJGY0x3z mAYXjyGb/zbZmPyLtp3a96zoEMA6sCAyYIyTgo4rSA8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhGGeIdA970Ug6w79j2NYy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhok O1xsJaLSj4kYPLhu7skbhZACzNHaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguw5K8bmJsUHs2xIxjDFF/c2B5vERs0m4PcFhmdh2pkfQ54yY eIDKjRfMy/vYCYWAVIFN5Ukjdr1jGvwJmgwRFW9+vNsvjm7IBZK+LriKt3OYfSRWN5Y2E2fo wru5H/lCxsXMNiezzut8X+2gOLL2yThV+o6Krq88fJ7hUyJ8UYaAhYWSFiTrOGwjwi1XNc3A 0Ad5CcGt6U5802vCN7nUHWQomOAvxMac8pdFas98g7l4qvL4S6JC24cVDlDZdc68sgsSlQCx lKP2t/kGzFrmLmUUm6GsKeZqyuoPioYJnNEYjULJSMH6dT+pIA4jjrUU81uVqWyi7XdBjXY0 z2M6i8kiN0uYdUjjvvhuwqd2nT1+8aPHlVdChjrsnyN91tBWIuvXI+R5AaEwNUfFbuWVkGTh S1R8ySB19ziHa1hhQTUHr5XReH3u67cWNHPqQUwRMh6rlxB71bmJNoJsW8kfC+FJ+5ZIWeBX aPFhe9GCHa/1lORZKlrasqaD80wxMAM/vy0C6iJMrKijnV3HTJrHR2Ch2bLhAgBc2B2yMnT3 Kt3lu72Vh4n5VxPlmbeegvk+eZDKtoCKYbveHwG507/jer2iIGppUctbwLVM7FRAFKsiwTJ6 ddPX/a3J+FkeLSmOEH/qNdLRXhTdCRTLc2m+qR/K7/YSiI7ST5JNhMk6e54E2CTt/8OzbmgE 7DUchIw9WcTclWdeF3WNSg8OO2wNXu9xFpiVRER0Z+T8yFLSa6k7bsFdotxer8i9ed5yuVzQ eVDcMKFasmjgByek9jERZWi/oFkajqxggeCY3isbDQlJsYyTA3V4N70OADo8XBWXCawsMI/p Zym1x/aHsVfF1gzUp6OZaL91U61sFgchPl2AxnCLO5MdRi+64NtMSHw0KM6epleNRXZyzKG/ A+KGhNE9/LVqoo4/YCR16CJpoukCcVkGU9eEzWJ5Lq6L3CCrGGi3ZVBQKCDejWEDDH4/6CrZ ON0yfDgMaJYwAYW4tQkS7sylPAw/driobNe3z9IJnSTYgT5EK5kL1mHwdJL6v9HyIhGtFbkQ UmI4NRbZ+mEYZu3DF4LKQM5Re2fzvVIyCLK5PE4LUimti96+L2LDRdbMxWW0XEPKbJ0NMUuw Ps7ud5Q4Au600J4PtGDhyFS1mKNMn1fDPl36sBEWNfm2lgx11VPQZ3AESunspiAZuJFPlQuP jLJ1rHJgK5Rxxaafnc+fZQXMTGxWXjaVMh28WI/ IronPort-HdrOrdr: A9a23:Sed+XqH9fmqeuynYpLqEEseALOsnbusQ8zAXPiBKJCC9vPb5qy nOpoV+6faQslwssR4b9uxoVJPvfZq+z+8R3WByB8bAYOCOggLBQL2KhbGI/9SKIVydygcy78 Zdm6gVMqyMMbB55/yKnDVRxbwbsaa6GKPDv5ah8590JzsaDJ2Jd21Ce32m+ksdfnghObMJUK Cyy+BgvDSadXEefq2AdwM4t7iqnayzqHr+CyR2fyIa1A== X-IronPort-AV: E=Sophos;i="5.85,313,1624334400"; d="scan'208";a="52894196" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fWJtCZoJ3RK8BrwVuuq6W0DcE26fXCTsHbGxOQwoQbTgB7zgUH0XiomUOegXLep28Ft/uEnBAILDGCYY+jsA3b9kSV8pBfq7TSAHUR4tbb4u3Z4BIwiR1/+OdO8SkiFb2/YVEcWj4VHpj5EM8lICslQAO+FUyKsXRxYfpEeN9sdFOuktpLTPbnfISUfFCli58na7kA+ioUt8MBbIb49FNknpkB8sYRKrWCqLsLgOTFJg2LHBbFBKTzFI3gOh441nxDuWt8Z3fXE7GvgBPyc+AJJhJUL7Q2cZ4YXPD7o3l7M4g5PnFhc2diJfnqNfoCG5d9akccUyHHpbHCd5rQzPEA== 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; bh=s6lQCVt6prMWfBrL/PhlimqEZ3vfPawL47OaNE9m03I=; b=aAsvlBmhbG+9mHV3Dt8XOgq2komdnpjXLdXBrHbIQ2Or+20uXnLe244BA8UkSGTRupsGZpOz9B3WUSszuzQcV9J0MBKK+5cJgB/baYwslKOCw5vBjj07IyfMuqGeYswKuOxjHhGFz2Q6/4h6mtqynR/w1+BHWHCfa2m1RtJhEIqd0Bpeqrdv98w3az8hXd03W1QcKWadJ4xsjoBzxBwTrA9vsLoUDlwkuxpJn4ELTQ/Uh/R8jaEL929IXPePoB8adq7lnxSQSixbClOV2owkPkcWro0DfWGWAxWVMj8bSlb1yBOYI5t82hxd2Z2sYhM/zzZ5i8GXJEJMKXPVJR6B3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=s6lQCVt6prMWfBrL/PhlimqEZ3vfPawL47OaNE9m03I=; b=aq5pjQM5s2Fys386chs6Cs+IkwUzU0RTX/7aEAAAxpMWWAYVNyxLYFuqXUrsPJ7zeb6N9VT/XWCkRsEP+njyfyNdK/Qu/OaPAE/ugn6JV5xNwPOQET9Y5Z2S5I5XZsGlz4nri42uvAoqQ+cVem+TRlkC6alqKdB0DirL0te/k94= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu , Andrew Cooper , "George Dunlap" , Jan Beulich , "Julien Grall" , Stefano Stabellini , "Anthony PERARD" , Juergen Gross , Christian Lindig , David Scott , Volodymyr Babchuk Subject: [PATCH v2 2/6] gnttab: allow setting max version per-domain Date: Wed, 22 Sep 2021 10:21:19 +0200 Message-ID: <20210922082123.54374-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210922082123.54374-1-roger.pau@citrix.com> References: <20210922082123.54374-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0191.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::16) To SA0PR03MB5610.namprd03.prod.outlook.com (2603:10b6:806:b2::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7b4a01ee-bfa5-49de-5113-08d97da20985 X-MS-TrafficTypeDiagnostic: SN6PR03MB4015: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iSX0t8/ejFWgfv1Ko28SBs6ZcHMZjud+Ryl9xmuv/tCkU21iN30X9EGFP6d3g9OzJHIyeWBOn7Orf95fEJ/hjYlIfYwhAjXirzfmqn6/NatVWEhNU5wy5J40KDKd4EEqynY8bQ/8uXEr1M0ka95f8TReDM6JgpQwQ1RGEeBPekEBFFoyPQX7EgtvaOOrN0lZY5K0LvRRQ+KG0Q2+hLQv+TGQvZEE2GE9Vo2oKFeabEoW23f9rRNuqHVZ6/1f8wOKytMuVP0wAeyLxktaZ7HOK3m+X9QN9t9bWDt/15pdXI6NwrIEMAXdNlzhRl0yRRHNBOg8flr6w+vGYB3Do+kh74zu0mGvONYKZlj3eagHkfG2hIK5GSVuPO49pWONj4nAatHSSR6Lkv6tJF1dVm9o3If15+acAZz81sbfkL+xqi8iQ0OlF0mTtqRhNGVVm3rz4vjbR7B9K7vQdoQgrWPVmENewvmhZg3jPLYlgkvxf/d+oG47hz8mp9Uxc6GxWHje+iTTaf8e8TOMVgpFV8u6QSWstWUezqQv+WGe2k2ipxUK9Eg5ZlP1FmXVNYvVIMKNN3F14Yb5narOlbMigVZHO7ubqpqgHAuaLOJTbg/lbLggvRKzETGGqKmWGBKV8MKK43jBUPOKYBC63lAXpPxaKg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR03MB5610.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66476007)(66556008)(66946007)(4326008)(38100700002)(8936002)(186003)(956004)(86362001)(2616005)(8676002)(508600001)(54906003)(83380400001)(6496006)(26005)(6916009)(30864003)(2906002)(6666004)(5660300002)(1076003)(6486002)(36756003)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SXF5dDIvTG5jbERxOWh0dU9TZEJDd1pjeHJxZVVzaXdTUFFuTUFTbHVlNmlR?= =?utf-8?B?Y0hXaDhhcU9vbSt6VktYSlovbW9ILzV3ek14cmxOVHBhVW1rYVBoL1JmSlB3?= =?utf-8?B?V2Y2K1RydVhOSitMWkFwcytVa3lrTGRHKzV6SlRubDM3YlhPdmZCMnY5SXJX?= =?utf-8?B?bDRqMmpJaWFGMzlMdlh4cUYvZ3hsRnRidVB4RG0wdGlGQ0dlTTZ6SnVjSTFj?= =?utf-8?B?cE9JeGpGSkhRUDBjSXRuOUNPYmxIRTc1QVlGQmphMHFsNjd5UXZnRGFrY0la?= =?utf-8?B?aUNwS3BwWFV3YS9VMk5yclJHb2QrWCtiUFlwNnYrbjZ3N3EyUms2MjhOLzF6?= =?utf-8?B?N0hrTkVhQUp3N2g1SitZQnVFQmYrV2UrUElIVzZCbEVmREpwODExRmF1UXVO?= =?utf-8?B?TXJvM2d4Y0lYTlNnamQrOFJJMGpkM3NlWVhKblZJZWNlaC9GQXRWTEJ3Uzdm?= =?utf-8?B?d3VSeVhoNlJxczBCN25QMGYrdjltRFAzMVZOQU1BWU1qQ21hRWxiakR6UytI?= =?utf-8?B?Y0lUYnFUeHo5WEEzM04wb1MvK0t0S2VEUVJidDZLL1dGVlgyTHZ3Rnd4azRY?= =?utf-8?B?TS92K1NZR1Q0RUx3bUc2aFBMeWRCbUF5WVhJSjliYk9scEs4MmpSbVU3WGs5?= =?utf-8?B?T1RCdEhBdUJ6SW5HUlF4algrbUxRbWg3bWpwZjVKcGVENzBQVTV2VnNYVWZp?= =?utf-8?B?a0Zrc25FcjNnbVh4YXBHd0ZxWTFXclhnMGZpeVF3MC9jNUtMNW9VVXRGbWw2?= =?utf-8?B?THBvWlQrQmNwWjZzQVI5OUN0cjVyMG10VC81c2JkQzRqMlRnaDFwbEpYU2Jk?= =?utf-8?B?Mk5BMkhMWXgydWhGYkdPOFh5c1dQMnB3ZHdsbFVhQ1Q2b2ZWNzZEQUNiTEps?= =?utf-8?B?T0Y4WjZmVjNlRmdIRVZpZ1VvYmwwMWhpUGNmQnI4K25QVGZ6YmNXZFgrUXJF?= =?utf-8?B?YktGN3BnQ3FjaStsbExoeUhMRzRLZmhtRkFPZTZEV0ZIaGN2NHREQjBTajFj?= =?utf-8?B?Z2VUcmZQeCt5VU1iMlJhZHY2a00xaWdWcjFCRm96VDQyYVlCQVp3UjNqM0Ro?= =?utf-8?B?UVhKaTlPaERBbFBrOEZITUxsUkV5eDlCUWozRzhXYWRiMVBqTkV5MDV5c0V2?= =?utf-8?B?N1VZcWxzeWdTM3VvM3RjWFhpaE1Jc3hIdjRsWmJnRTU4ZUNaUGxxc0FuQS9N?= =?utf-8?B?YVhmNU9XaE9xRGdoNkluYldVckg3N0FlUCttYi9hTlBTMVZLclU5SEFXN2Fv?= =?utf-8?B?ZlJZbGlZSnlPN3FObGVtelBNcFdqanBXZ3BpTUxXWDU0R2JoRzl1ck1ZTmJ3?= =?utf-8?B?cGJINW9nZVp0d2NNNmxobHl3OUJvRVFGUFZoVDJWN2JUUXpjc09NbDI3SUJO?= =?utf-8?B?RDNhakdVMC8wV2hYMFBnaURLclF4MjlTNEJiTEJaK1JCcVhua3hrcThCbUZy?= =?utf-8?B?a2g1a3Vja2ttYnYrSHJnYTdhQ1NGK21xSEFCd1pUR003cU9WTDdGT09ER2VQ?= =?utf-8?B?ZUNDMVIzcVBCTVhtMFJTRm10eGxaU1ZpaXJVYkxaVWxUdFVrMVhBaFRWUU9G?= =?utf-8?B?aEdIaWsxaVdrYUxDYVBBUjgzUkdkUFF5UTBzSHNCSnVhZDdscEhTdy9pbFVz?= =?utf-8?B?cmhtM2g5SytuYjF6TlZrU0xDSnNkYklYMVd4TEpZcXN5cU10d3dSQ1RKWW5Y?= =?utf-8?B?cGRxcmtjNWhUNk54WitlNCtZeldlWVYxRk9zVGxJRWV5MEYxaFNZTFgyTzFV?= =?utf-8?Q?bE0Nd0ilAWxtPJBxUgLkGO+umE/4waBIo3spjF9?= X-MS-Exchange-CrossTenant-Network-Message-Id: 7b4a01ee-bfa5-49de-5113-08d97da20985 X-MS-Exchange-CrossTenant-AuthSource: SA0PR03MB5610.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2021 08:21:54.9428 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: he5AWf2yRRdGH5sjsh/G9Y5uzpLBPKuKKrw8TRzE7y7BXYekATQZ0xd9gNCBUxsy0JRvpSzF0bpPUmydZ7hjxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4015 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1632298941148100001 Introduce a new domain create field so that toolstack can specify the maximum grant table version usable by the domain. This is plumbed into xl and settable by the user as max_grant_version. Previously this was only settable on a per host basis using the gnttab command line option. Note the version is specified using 4 bits, which leaves room to specify up to grant table version 14 (15 is used to signal default max version). Given that we only have 2 grant table versions right now, and a new version is unlikely in the near future using 4 bits seems more than enough. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Christian Lindig > Reviewed-by: Jan Beulich --- NB: the stubdom max grant version is cloned from the domain one. Not sure whether long term we might want to use different options for the stubdom and the domain. In any case the attack surface will always be max(stubdom, domain), so maybe it's just pointless to allow more fine setting. --- Changes since v1: - Introduce a grant_opts field and use the low 4 bits to specify the version. Remaining bits will be used for other purposes. --- docs/man/xl.cfg.5.pod.in | 6 ++++++ docs/man/xl.conf.5.pod.in | 7 +++++++ tools/helpers/init-xenstore-domain.c | 1 + tools/include/libxl.h | 7 +++++++ tools/libs/light/libxl_create.c | 3 +++ tools/libs/light/libxl_dm.c | 1 + tools/libs/light/libxl_types.idl | 1 + tools/ocaml/libs/xc/xenctrl.ml | 1 + tools/ocaml/libs/xc/xenctrl.mli | 1 + tools/ocaml/libs/xc/xenctrl_stubs.c | 7 ++++++- tools/xl/xl.c | 8 ++++++++ tools/xl/xl.h | 1 + tools/xl/xl_parse.c | 9 +++++++++ xen/arch/arm/domain_build.c | 2 ++ xen/arch/x86/setup.c | 1 + xen/common/domain.c | 3 ++- xen/common/grant_table.c | 22 ++++++++++++++++++++-- xen/include/public/domctl.h | 12 ++++++++++-- xen/include/xen/grant_table.h | 5 +++-- 19 files changed, 90 insertions(+), 8 deletions(-) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index 4b1e3028d2..a4bf2caafa 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -580,6 +580,12 @@ to have. This value controls how many pages of foreign= domains can be accessed via the grant mechanism by this domain. The default value is settable via L. =20 +=3Ditem B + +Specify the maximum grant table version the domain is allowed to use. Curr= ent +supported versions are 1 and 2. The default value is settable via +L. + =3Ditem B =20 Disable migration of this domain. This enables certain other features diff --git a/docs/man/xl.conf.5.pod.in b/docs/man/xl.conf.5.pod.in index b48e99131a..0a70698a7c 100644 --- a/docs/man/xl.conf.5.pod.in +++ b/docs/man/xl.conf.5.pod.in @@ -101,6 +101,13 @@ Sets the default value for the C = domain config value. Default: value of Xen command line B parameter (or its default value if unspecified). =20 +=3Ditem B + +Sets the default value for the C domain config value. + +Default: value of Xen command line B parameter (or its default val= ue if +unspecified). + =3Ditem B =20 Configures the default hotplug script used by virtual network devices. diff --git a/tools/helpers/init-xenstore-domain.c b/tools/helpers/init-xens= tore-domain.c index 6836002f0b..7cd1aa8f7c 100644 --- a/tools/helpers/init-xenstore-domain.c +++ b/tools/helpers/init-xenstore-domain.c @@ -88,6 +88,7 @@ static int build(xc_interface *xch) */ .max_grant_frames =3D 4, .max_maptrack_frames =3D 128, + .grant_opts =3D 1, }; =20 xs_fd =3D open("/dev/xen/xenbus_backend", O_RDWR); diff --git a/tools/include/libxl.h b/tools/include/libxl.h index b9ba16d698..7a35833312 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -502,6 +502,13 @@ */ #define LIBXL_HAVE_X86_MSR_RELAXED 1 =20 +/* + * LIBXL_HAVE_MAX_GRANT_VERSION indicates libxl_domain_build_info has a + * max_grant_version field for setting the max grant table version per + * domain. + */ +#define LIBXL_HAVE_MAX_GRANT_VERSION 1 + /* * libxl ABI compatibility * diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_creat= e.c index e356b2106d..1ee86602ae 100644 --- a/tools/libs/light/libxl_create.c +++ b/tools/libs/light/libxl_create.c @@ -606,6 +606,9 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_conf= ig *d_config, .max_evtchn_port =3D b_info->event_channels, .max_grant_frames =3D b_info->max_grant_frames, .max_maptrack_frames =3D b_info->max_maptrack_frames, + .grant_opts =3D b_info->max_grant_version =3D=3D -1 + ? XEN_DOMCTL_GRANT_version_default + : b_info->max_grant_version, .vmtrace_size =3D ROUNDUP(b_info->vmtrace_buf_kb << 10, XC_PAG= E_SHIFT), }; =20 diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c index 9d93056b5c..9a8ddbe188 100644 --- a/tools/libs/light/libxl_dm.c +++ b/tools/libs/light/libxl_dm.c @@ -2320,6 +2320,7 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stu= b_dm_spawn_state *sdss) =20 dm_config->b_info.max_grant_frames =3D guest_config->b_info.max_grant_= frames; dm_config->b_info.max_maptrack_frames =3D guest_config->b_info.max_map= track_frames; + dm_config->b_info.max_grant_version =3D guest_config->b_info.max_grant= _version; =20 dm_config->b_info.u.pv.features =3D ""; =20 diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_type= s.idl index 3f9fff653a..37789a568c 100644 --- a/tools/libs/light/libxl_types.idl +++ b/tools/libs/light/libxl_types.idl @@ -518,6 +518,7 @@ libxl_domain_build_info =3D Struct("domain_build_info",[ =20 ("max_grant_frames", uint32, {'init_val': 'LIBXL_MAX_GRANT_DEFAULT'= }), ("max_maptrack_frames", uint32, {'init_val': 'LIBXL_MAX_GRANT_DEFAULT'= }), + ("max_grant_version", integer, {'init_val': '-1'}), =20 ("device_model_version", libxl_device_model_version), ("device_model_stubdomain", libxl_defbool), diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml index a5588c643f..6a8658bfec 100644 --- a/tools/ocaml/libs/xc/xenctrl.ml +++ b/tools/ocaml/libs/xc/xenctrl.ml @@ -83,6 +83,7 @@ type domctl_create_config =3D max_evtchn_port: int; max_grant_frames: int; max_maptrack_frames: int; + max_grant_version: int; arch: arch_domainconfig; } =20 diff --git a/tools/ocaml/libs/xc/xenctrl.mli b/tools/ocaml/libs/xc/xenctrl.= mli index 6e94940a8a..5933d32c70 100644 --- a/tools/ocaml/libs/xc/xenctrl.mli +++ b/tools/ocaml/libs/xc/xenctrl.mli @@ -75,6 +75,7 @@ type domctl_create_config =3D { max_evtchn_port: int; max_grant_frames: int; max_maptrack_frames: int; + max_grant_version: int; arch: arch_domainconfig; } =20 diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenc= trl_stubs.c index ad953d36bd..1e60925069 100644 --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -188,7 +188,8 @@ CAMLprim value stub_xc_domain_create(value xch, value w= anted_domid, value config #define VAL_MAX_EVTCHN_PORT Field(config, 5) #define VAL_MAX_GRANT_FRAMES Field(config, 6) #define VAL_MAX_MAPTRACK_FRAMES Field(config, 7) -#define VAL_ARCH Field(config, 8) +#define VAL_MAX_GRANT_VERSION Field(config, 8) +#define VAL_ARCH Field(config, 9) =20 uint32_t domid =3D Int_val(wanted_domid); int result; @@ -198,6 +199,9 @@ CAMLprim value stub_xc_domain_create(value xch, value w= anted_domid, value config .max_evtchn_port =3D Int_val(VAL_MAX_EVTCHN_PORT), .max_grant_frames =3D Int_val(VAL_MAX_GRANT_FRAMES), .max_maptrack_frames =3D Int_val(VAL_MAX_MAPTRACK_FRAMES), + .grant_opts =3D Int_val(VAL_MAX_GRANT_VERSION) =3D=3D -1 + ? XEN_DOMCTL_GRANT_version_default + : Int_val(VAL_MAX_GRANT_VERSION), }; =20 domain_handle_of_uuid_string(cfg.handle, String_val(VAL_HANDLE)); @@ -251,6 +255,7 @@ CAMLprim value stub_xc_domain_create(value xch, value w= anted_domid, value config } =20 #undef VAL_ARCH +#undef VAL_MAX_GRANT_VERSION #undef VAL_MAX_MAPTRACK_FRAMES #undef VAL_MAX_GRANT_FRAMES #undef VAL_MAX_EVTCHN_PORT diff --git a/tools/xl/xl.c b/tools/xl/xl.c index 4107d10fd4..0fde879cf4 100644 --- a/tools/xl/xl.c +++ b/tools/xl/xl.c @@ -55,6 +55,7 @@ bool progress_use_cr =3D 0; bool timestamps =3D 0; int max_grant_frames =3D -1; int max_maptrack_frames =3D -1; +int max_grant_version =3D -1; libxl_domid domid_policy =3D INVALID_DOMID; =20 xentoollog_level minmsglevel =3D minmsglevel_default; @@ -213,6 +214,13 @@ static void parse_global_config(const char *configfile, else if (e !=3D ESRCH) exit(1); =20 + e =3D xlu_cfg_get_bounded_long (config, "max_grant_version", 0, + INT_MAX, &l, 1); + if (!e) + max_grant_version =3D l; + else if (e !=3D ESRCH) + exit(1); + libxl_cpu_bitmap_alloc(ctx, &global_vm_affinity_mask, 0); libxl_cpu_bitmap_alloc(ctx, &global_hvm_affinity_mask, 0); libxl_cpu_bitmap_alloc(ctx, &global_pv_affinity_mask, 0); diff --git a/tools/xl/xl.h b/tools/xl/xl.h index 7e23f30192..cf12c79a9b 100644 --- a/tools/xl/xl.h +++ b/tools/xl/xl.h @@ -282,6 +282,7 @@ extern char *default_colo_proxy_script; extern char *blkdev_start; extern int max_grant_frames; extern int max_maptrack_frames; +extern int max_grant_version; extern libxl_bitmap global_vm_affinity_mask; extern libxl_bitmap global_hvm_affinity_mask; extern libxl_bitmap global_pv_affinity_mask; diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index 17dddb4cd5..1206d7ea51 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -1431,6 +1431,15 @@ void parse_config_data(const char *config_source, else exit(1); =20 + e =3D xlu_cfg_get_bounded_long (config, "max_grant_version", 0, + INT_MAX, &l, 1); + if (e =3D=3D ESRCH) /* not specified */ + b_info->max_grant_version =3D max_grant_version; + else if (!e) + b_info->max_grant_version =3D l; + else + exit(1); + libxl_defbool_set(&b_info->claim_mode, claim_mode); =20 if (xlu_cfg_get_string (config, "on_poweroff", &buf, 0)) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index d233d634c1..3beb1cbb41 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2649,6 +2649,7 @@ void __init create_domUs(void) .max_evtchn_port =3D -1, .max_grant_frames =3D -1, .max_maptrack_frames =3D -1, + .grant_opts =3D XEN_DOMCTL_GRANT_version_default, }; =20 if ( !dt_device_is_compatible(node, "xen,domain") ) @@ -2756,6 +2757,7 @@ void __init create_dom0(void) .max_evtchn_port =3D -1, .max_grant_frames =3D gnttab_dom0_frames(), .max_maptrack_frames =3D -1, + .grant_opts =3D XEN_DOMCTL_GRANT_version_default, }; =20 /* The vGIC for DOM0 is exactly emulating the hardware GIC */ diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index b101565f14..b5b6c75447 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -750,6 +750,7 @@ static struct domain *__init create_dom0(const module_t= *image, .max_evtchn_port =3D -1, .max_grant_frames =3D -1, .max_maptrack_frames =3D -1, + .grant_opts =3D XEN_DOMCTL_GRANT_version_default, .max_vcpus =3D dom0_max_vcpus(), .arch =3D { .misc_flags =3D opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0, diff --git a/xen/common/domain.c b/xen/common/domain.c index 6ee5d033b0..6519272c47 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -669,7 +669,8 @@ struct domain *domain_create(domid_t domid, init_status |=3D INIT_evtchn; =20 if ( (err =3D grant_table_init(d, config->max_grant_frames, - config->max_maptrack_frames)) !=3D 0 ) + config->max_maptrack_frames, + config->grant_opts) !=3D 0 ) ) goto fail; init_status |=3D INIT_gnttab; =20 diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index fe1fc11b22..c43e9d5ee4 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -53,6 +53,7 @@ struct grant_table { percpu_rwlock_t lock; /* Lock protecting the maptrack limit */ spinlock_t maptrack_lock; + unsigned int max_grant_version; /* * Defaults to v1. May be changed with GNTTABOP_set_version. All oth= er * values are invalid. @@ -1917,11 +1918,27 @@ active_alloc_failed: } =20 int grant_table_init(struct domain *d, int max_grant_frames, - int max_maptrack_frames) + int max_maptrack_frames, unsigned int options) { struct grant_table *gt; + unsigned int max_grant_version =3D options & XEN_DOMCTL_GRANT_version_= mask; int ret =3D -ENOMEM; =20 + if ( max_grant_version =3D=3D XEN_DOMCTL_GRANT_version_default ) + max_grant_version =3D opt_gnttab_max_version; + if ( !max_grant_version ) + { + dprintk(XENLOG_INFO, "Invalid grant table version 0 requested\n"); + return -EINVAL; + } + if ( max_grant_version > opt_gnttab_max_version ) + { + dprintk(XENLOG_INFO, + "Requested grant version (%u) greater than supported (%u)\= n", + max_grant_version, opt_gnttab_max_version); + return -EINVAL; + } + /* Default to maximum value if no value was specified */ if ( max_grant_frames < 0 ) max_grant_frames =3D opt_max_grant_frames; @@ -1947,6 +1964,7 @@ int grant_table_init(struct domain *d, int max_grant_= frames, gt->gt_version =3D 1; gt->max_grant_frames =3D max_grant_frames; gt->max_maptrack_frames =3D max_maptrack_frames; + gt->max_grant_version =3D max_grant_version; =20 /* Install the structure early to simplify the error path. */ gt->domain =3D d; @@ -3076,7 +3094,7 @@ gnttab_set_version(XEN_GUEST_HANDLE_PARAM(gnttab_set_= version_t) uop) goto out; =20 res =3D -ENOSYS; - if ( op.version =3D=3D 2 && opt_gnttab_max_version =3D=3D 1 ) + if ( op.version =3D=3D 2 && gt->max_grant_version =3D=3D 1 ) goto out; /* Behave as before set_version was introduced. */ =20 res =3D 0; diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h index 96696e3842..e2b47184a0 100644 --- a/xen/include/public/domctl.h +++ b/xen/include/public/domctl.h @@ -87,14 +87,22 @@ struct xen_domctl_createdomain { /* * Various domain limits, which impact the quantity of resources * (global mapping space, xenheap, etc) a guest may consume. For - * max_grant_frames and max_maptrack_frames, < 0 means "use the - * default maximum value in the hypervisor". + * max_grant_frames, max_maptrack_frames and max_gnttab_version < 0 + * means "use the default maximum value in the hypervisor". */ uint32_t max_vcpus; uint32_t max_evtchn_port; int32_t max_grant_frames; int32_t max_maptrack_frames; =20 +/* Grant version, use low 4 bits. */ +#define XEN_DOMCTL_GRANT_version_mask 0xf +#define XEN_DOMCTL_GRANT_version_default 0xf + +#define XEN_DOMCTLGRANT_MAX XEN_DOMCTL_GRANT_version_mask + + uint32_t grant_opts; + /* Per-vCPU buffer size in bytes. 0 to disable. */ uint32_t vmtrace_size; =20 diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h index 41713e2726..fe6225346f 100644 --- a/xen/include/xen/grant_table.h +++ b/xen/include/xen/grant_table.h @@ -36,7 +36,7 @@ extern unsigned int opt_max_grant_frames; =20 /* Create/destroy per-domain grant table context. */ int grant_table_init(struct domain *d, int max_grant_frames, - int max_maptrack_frames); + int max_maptrack_frames, unsigned int options); void grant_table_destroy( struct domain *d); void grant_table_init_vcpu(struct vcpu *v); @@ -67,7 +67,8 @@ int gnttab_acquire_resource( =20 static inline int grant_table_init(struct domain *d, int max_grant_frames, - int max_maptrack_frames) + int max_maptrack_frames, + unsigned int options) { return 0; } --=20 2.33.0 From nobody Sat May 18 18:58:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1632298980; cv=pass; d=zohomail.com; s=zohoarc; b=cEns3G3E7jlpRF2asCIuzlKxP35KtTqc14Jlj26bOirGIw6J8lfgWR1o8ctudmxKhumK8m9PkVfuvc5mmbNxC5t4IWO2ghJxHUYeCap6qzvakdFYs8UckRcc5UNSN8Nt2OmwBxwhz2dLQ/EA5d4nA+SyYD96Wc3CgLjfzbFm5W8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1632298980; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=voNJG1FSxj3tOQiI/DkvvHkabCshBBjpOakCSWaIsGg=; b=bdLm8oEB2QhkAJGLQ8T2ZYjwgAmyhRyAu+sfCcyfoiBNfEQoedzfA1BSfyPX2ST4pJtd5YwzxSnPzV1zBy8mA8ZTk1Yg0wJrDGti0udOQayqlwvHPeAuJIZh0GI67ivISELJoyuJYXs/Ny7kbAWz8PHWaBQ4mOCO+QBXoPIDpHw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1632298979995576.3118822091226; Wed, 22 Sep 2021 01:22:59 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.192258.342644 (Exim 4.92) (envelope-from ) id 1mSxWd-0007SZ-41; Wed, 22 Sep 2021 08:22:43 +0000 Received: by outflank-mailman (output) from mailman id 192258.342644; Wed, 22 Sep 2021 08:22:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mSxWd-0007SO-0U; Wed, 22 Sep 2021 08:22:43 +0000 Received: by outflank-mailman (input) for mailman id 192258; Wed, 22 Sep 2021 08:22:42 +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 1mSxWb-0005Fo-Tu for xen-devel@lists.xenproject.org; Wed, 22 Sep 2021 08:22:41 +0000 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 35cc969e-1b7e-11ec-b963-12813bfff9fa; Wed, 22 Sep 2021 08:22:22 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version 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: 35cc969e-1b7e-11ec-b963-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1632298942; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=p/2j7Qh3HRSjw1xZ6iz4Wwt7riuFKipEEnPAZ4kgGQU=; b=eYyMA264UqhRZxFPd+pUO0ecxiTf3lSb+TFvanhckpG9b8xlmMAxMt7H W37JfVxXLXsRAdBLIUrtxBoAH8JLNLRqSOjrXFP4SSibQOAciHL6bJ2xa MZZXBuHCrIsXKNxYwlc7cLNVveI25QDJ5vcQWXRepFt8tgi/TGB46duD+ I=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: E9Xy6cmS7skkVJ/00AE9peAha+sSimph+icGRWBCy3G1U/wJ8eDyf3rBAytbXX3Bti/8iGc6LP LTwYk5FJ4w4+mG8MXycpDJbic+vulB0Du6vTfBw/ROcI6QZoayKA794RkLWEvuhz0Gs5IxrJDa l80ou6qxsjVjXMLqJDy1GQnSS1EZir1YOEZJA/fNgYemge8XAhteTu9o4/ku4rWpNPOX4hvnKB QXvqS09MTBAF0/d1Zou2OpTIBGNKVtK//g2q+d6Id5WujGVpmfqZcsI03m8zLNVZgs2gskG3p7 5aWCv9x6HeHwuRJVUMa8aGb5 X-SBRS: 5.1 X-MesageID: 53294561 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:tf0Sc6t0Z1W2azd165+IJcju/efnVMZZMUV32f8akzHdYApBsoF/q tZmKTqOOP6CM2KjKtFzbIWx8x9XsZTTmtQwGlRt+C0xE39H+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHpJZS5LwbZj29Y524LhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Npl6o6QVw0RN7f3lr4SfkV9FAxABqpb9+qSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DJoQQt2sm1TjEJf0nXYrCU+PB4towMDIY25sUTKqDO ZNxhTxHcBrGTAZ9OlYtEL0Dm973qSnGVDpxpwfAzUYwyzeKl1EguFT3C/LXdcaNXt59hVuDq yTN+GGRKgoBKNWVxD6B83StruzChyX2XMQVDrLQ3sBthFqf12kCEio8XFGwoeS6okOmUtcZI EsRkgIipLY/3FamRd78W1u/unHslhwBX9tdFcUq5QfLzbDbiy6YGWosXjNHcMYhtsI9WXotz FDht8PkA3ljvaOYTVqZ96yItnWiNC4NN2gAaCQYCwwf7LHLoos+kxbORdZLC7Oug5v+HjSY6 y+OhDgzgfMUl8Fj6kmg1QmZ2XT2/MGPF1NroFWMNo640u9nTNG3R5Ki0VHB1vgaI6vFa16sg kMDhsfLuYjiEqqxeDyxrPQlRe/yva/VbmGE2DaDDLF6qG/8oCfLkZR4pWgkfRY3aJ5slSrBP ReL0T698qO/K5dDgUVfWIu3F81i5qzpD92Nuhv8P4cWP8QZmONq+khTia+sM4LFyxNEfUIXY 87znSOQ4ZEyU/8P8dZOb71BuYLHPwhnrY8peXwe8ylLLJLEPCLFIVv6DLd+Rr9gt/7VyOkk2 /1eK9GL231ibQEKWQGOqdR7BQlTdRATXMmqw+QKJr/rClc3QwkJVq6OqY7NjqQ4xsy5YM+Tp SrjMqKZoXKi7UD6xfKiMCE7NOy3AsYh8hrW/0UEZD6V5pTqWq72hI83fJorZ7g3sutlyP9/V f4efMucRP9IT1z6F/41MfERdaRuK0amgxygJS2gbGRtdpJsXVWRqNTlYhHu5G8FCS/u7Zkyp Lip1wX6R5sfRls9UJaKOaz3l17h72IAnO9SXlfTJoUBckvb74U3eTf6ieU6Ip9QJEyblCeaz QufHTwRufLJ/90u6NDMiK3d99WpHuJyE1B0BW7e6brqZyDW8nD6md1LUfqSfCCbX2Txof3wa eJQxvD6EfsGgFcV7NYsT+c1lfozvoK9qaVbwwJoGGTwQ26qUr4wcGOb2cRvt7FWwuMLswWBR U/SqMJRPq+EOZ25HQdJdhYldOmKydodhiLWsaYuOEz/6SJ6oOiHXEFVM0XegSBRNuIoYoYsw ONns88K8Q2vzBEtN4/e3CxT8m2NKF0GUrkm6c5GUNO61FJzxwEQe4HYBw/3/IqLOodFPUQdK zOJgLbP2uZHzU3YfntvTXXA0IKxX3jVVMymGLPaG2m0pw== IronPort-HdrOrdr: A9a23:UlrRyK61ZP/PnGa36gPXwVmBI+orL9Y04lQ7vn2ZFiY7TiXIra yTdaoguCMc6AxxZJkh8erwXJVoJkmsiaKdgLNhQItKOTOJhILGFvAF0WKP+UyDJ8S6zJ8n6U 4CSdkONDSTNykCsS+S2mDReLxBsbr3gJxAx92utUuFJTsaFZ2IhD0JbTpzfHcGITWvUvECZe WhD4d81nedUEVSSv7+KmgOXuDFqdGOvJX6YSQeDxpizAWVlzun5JPzDhDdh34lInxy6IZn1V KAvx3y562lvf3+4hjA11XL55ATvNf60NNMCOGFl8BQADTxjQSDYphnRtS5zXwIidDqzGxvvM jHoh8mMcg2w3TNflutqR+o4AXk2CZG0Q6r9XaoxV/Y5eDpTjMzDMRMwahDdAHC1kYmtNZglI pWwmOwrfNsfFP9tRW4w+KNewBhl0Kyr3Znu/UUlWZjXYwXb6IUhZAD/XlSDIwLEEvBmcEa+d FVfYPhDcttABanhyizhBgq/DXsZAV8Iv6+eDlAhiTPuAIm20yQzCMjtYUidzk7hdQAozQt3Z WxDk1SrsA9ciYhV9MKOA4we7rFNoXze2O4DIvrGyWeKEgmAQOHl3el2sR+2AmVEKZ4u6fa3q 6xCW9liQ== X-IronPort-AV: E=Sophos;i="5.85,313,1624334400"; d="scan'208";a="53294561" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FM2BnFBSgG6pTY6Bi7x+SyBFQcp+ufv76WDvxpubLUYyJHeQ1oOM57SDAIS6Bl6zqFHu0npOFGEgtH2EkrLgUdkjw4SQKIv7BuTDtrNIAlQS7dTQsJ93t6OqU2cYLib5njubvNUU33OtYd3txLrK75xorT8eAYDvmNi+ZBhNwGl2o0D3LO0c3MhJNBdofc3jhKHGEhuAzt8ylkl0diOQz+mZBaifrfRTDadJvMZxsuJtmwHhwBAW+a/X5uBmBhDVs9wcwd7uYTd+9BtpZVuL3g24yx7jAEKi8Pp5wPMkP8dgCcKBthSSw6NUC30KQ34nmKfcOoyau3UjJ01Y8ReerA== 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; bh=voNJG1FSxj3tOQiI/DkvvHkabCshBBjpOakCSWaIsGg=; b=aO4LVvvH6mZBIk4/cC8PEK15NQt5RhbRxJYjZz0j35uuHWofCDoK6d4CxW8FXfYegrfYY7DTeCZF+TBnOoGUsW6jCtmGfI6foQ9IuQxaqaqs8NNOsFaXbOVSv1o5siCzfREiFPXd2k6vkMXEvurG7+3eP8gw3Da0HRGJR9bLyHjUzCOOS/haJYWkE+uRbGePLK11uOaWNKx8MZEeCOhlKCSGPfqY5NnuFZhFVg3whXJB8Co/W0DLFcYq+/54m0NHdrgBe2QNq9u4I2faAsTtPv8iO631s3K3zpaMmIwP222mRryuvdIuyxfp/U9H1gYRzrIlW+SYjFl+OSTW/mb6Lw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=voNJG1FSxj3tOQiI/DkvvHkabCshBBjpOakCSWaIsGg=; b=FG51XV7BSa4qpXeEfpZkE/mFtMwhNSk/u9QWoW8fdXwtSKZGYytp4mb0/7hZPi15lu1hQWmZSDJrm902vrJ6REueg9IIWoyNfdYE6gIpr5TjTP8CRgBi+rOxn0xDXAYpNEexfniwhGvuLvIWyth3YaGECDThyDSOWYh6i6KbExw= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu , Andrew Cooper , George Dunlap , Jan Beulich , Julien Grall , Stefano Stabellini , Anthony PERARD , Juergen Gross , Christian Lindig , David Scott , Volodymyr Babchuk Subject: [PATCH v2 3/6] gnttab: allow per-domain control over transitive grants Date: Wed, 22 Sep 2021 10:21:20 +0200 Message-ID: <20210922082123.54374-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210922082123.54374-1-roger.pau@citrix.com> References: <20210922082123.54374-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0347.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18d::10) To SA0PR03MB5610.namprd03.prod.outlook.com (2603:10b6:806:b2::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7ca136c5-6a57-4cfc-589c-08d97da20c24 X-MS-TrafficTypeDiagnostic: SN6PR03MB4015: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Fb9ovAOT/IvtJ20NdrpGwl+BRjujympR1hO2wXO3CVj2J4aUFqwsRgg6L8St5mivgw64bPjQGLpq4Ijssqs0zwfbmKH75yLoHGphzLBYJXqOiQ3kwl8SjZyfRz93HnlMpv099XxUtFXIH9WqkYSR8TtaD1xnZq5QcKyIxvcaRDR/U8BKn8qizsCKfBrx3SSv7Y8qLHZaq1dhmBvQ0GwKc1nvxJ4KaiHa9e6vTyzdH1TN3Z0InKbOmGVM1CPKuyofquX/DB5Zbt0OuU3fQxM8KxYZRbORVrrTr97eYFVZ0f57YTyAd/rEY/eT4RQHQZjFkk4jcJx5eKJR5n0epYNYRwoBt3UIRxGeb+bXkcqDthOfPBPVW+GgR/mHYjKRYBzdtCvILQe7ULW1VIHGl4wXl92CNNW/QtLSrO78lxcwdrPeof8iq0eYkN0WFuT7eFOP8ID/tK2DH2oVUwou0+sc6FshGLJdJBbOtRblQlKHB9+OVMOxfr1M9tAKBVluD9fShAO8o9EyUbRbmBTApJR2pILdhg76CS/MoKeQrD7HrDDNLQucp2zNM0dPmiPLMFvcz70NcYaJ1uyB26c5Yt0qnmNGLp9snTVw7s2xxsJU8bxg2e/DPSSLOWlFOpPhQ4iq2qCZbjMnwzyEJ6TUnwchSQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR03MB5610.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66476007)(66556008)(66946007)(4326008)(38100700002)(8936002)(186003)(956004)(86362001)(2616005)(8676002)(508600001)(54906003)(83380400001)(6496006)(26005)(6916009)(30864003)(2906002)(6666004)(5660300002)(1076003)(6486002)(36756003)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Rk1CdWdnbXFLK2RCQ1NUd2VtTnp4Y1pQRldSQkFQOVJkOEgydm0xaGYvV2Jl?= =?utf-8?B?c2srSXZFT3ZPSjFvRnlKWUpJcjNYNGx2YmYyWitXd2x0emoyL1JMVVpFOUJG?= =?utf-8?B?R3hNK1FUaFNTVWRYcEdxeC9pNlpiZ3dhcFdsQlUzbmxDclR2RjNUTm1hcDND?= =?utf-8?B?YW1JUTdWVC83M29xNi9IY0wvZmNKNForOEVteTJpbE1IOWRTeW40M1ErY1cy?= =?utf-8?B?b0dHa0tZRDQwTXYydXU3N2Z3Ykp0NjdzKzV1V1A1d3hBTDZYTmFQSkVUSEx2?= =?utf-8?B?SjBHZzBuczJFTEQrTE9sV1dBdTg5S1RQL2krd1ZCNFhlN0JQdzJ1dzRrZ1U1?= =?utf-8?B?b2tWVnR6ZmhGNDdueE5jUk9UKzVsUVYyaExLNVE2YzBKMjlhL0ZVUVR2QVZj?= =?utf-8?B?b3R1Smx2cFpVaE5LcGNORTRMeXRqVzRoYXpCZlJVR0JvRTF0bHg2TTI1R2tj?= =?utf-8?B?Qk5HR2NZbDNXK1ROdGprSTFjVTJVL2FvUDlCZEM0ZkJCS2V1V0pZNkNIQ01Q?= =?utf-8?B?TUdVb2xlbGZKaHVDNnY1WGViUW0zb3hJZTZTcVNES2phbUgrbkJRZTh5Q2dX?= =?utf-8?B?dzVrTFZZa0FFeEN5OEZjQ0EyL3BRUmhweGVxczV5aG0zbjdpeHVLVURCSXZV?= =?utf-8?B?UzFoL2R2VEV5Z2hYMmk4NnJnYmR5Z2tKVHZDRG4vdmJVZmlnc1JLZXZMSkZY?= =?utf-8?B?em9oQjlXdVQ0cWlzMGVzOWxwRnIvb0FIbnJ5YktJQm94Z2duTW42NzdtNGZr?= =?utf-8?B?ejlhTlFQT1h0b1hpbXc5THMvR1BhQkpHeS9qc2NQeGhIaHcxNDdFN1Q0SGhz?= =?utf-8?B?RS9TMUtPOUdDa20xYTV5Vy9HcmxtQlY2ckpTNXU4MHluQlY4aDcvV0pSSnN6?= =?utf-8?B?MFRTbWUyM2xZa3g4aE1nMzdZUlQwYk5HZ1dZTm1QQ21QQ3plUmpIZVhSOXF0?= =?utf-8?B?Y3U2OEFCSk5BdFYwdFoyaEZTaWU3YlcwSkhPQkVoRkZkR0JucmVxbzF3WFNj?= =?utf-8?B?QkhobnMrVUFUSitURmVTeWtCNU9Oa1NxRHNmcG9SdmdNc1A2TDZDWnpEVUZH?= =?utf-8?B?a05oSEFTc3Jnd2J5eUNxWGpIbXNQNnpzVWNrS2szSHc5cUYxU01oRXBhU2sy?= =?utf-8?B?WG1TaFZGc3ZyQlJaenZtdE5tQ2RKUDBVWXRzVVJVcWJDaTBBdmczSEJBL0xm?= =?utf-8?B?OS9qZnBKZERRdU5vR0ZVdmVQckNYSWhIOFVZMzFOd3Q2R3hmSHljRm5DOXpC?= =?utf-8?B?SlJBd24xYmZMSC9vL3hHY1lMTmJzSmowUGZVbHR2NE50NS9iZUJzcGQ4VTg0?= =?utf-8?B?alRVdG0wamVOa2dXWjVCYUFySHlZR3Q5OWtTNkdvOUxFQ1ZwK2JGN3pzRFo0?= =?utf-8?B?d29ndkhVdTBIV1NTalJ4eVpDcXA2UGVXQUl2SWlYM2FTNWFiQ1B3T3JpRzc5?= =?utf-8?B?TFRSRmJNWVdENkRqaWxRMm1qZzJ2bWtOVkJzVDJOcjhDQU0rOUFvS3hCUlBY?= =?utf-8?B?UGEyVFNzM0JiZnRDSEFkajV2blhlcENLeVEzS3Q0UHN4OHVWV1ltN3lvRGN3?= =?utf-8?B?RGR3RlR4dkRQVFZCU1VtQTRsb2RVeFptZlkxMEdMTFVLcEVoakNLRlpqMmpu?= =?utf-8?B?M2x5b1BFc0V5ekxTdFhQa0liTDZuYmROajZCRDV2OTM5M3AvZlZ0eHR4TkNi?= =?utf-8?B?UGdMRXBLVHljeWVNUyt2K1g3QUdFaHYrd2tMQW84N0VEN0YvUHdzcFY0ajZU?= =?utf-8?Q?9YA7D96jY/ECtx6kUENn1CFX4UxxmUCWb6qBT8l?= X-MS-Exchange-CrossTenant-Network-Message-Id: 7ca136c5-6a57-4cfc-589c-08d97da20c24 X-MS-Exchange-CrossTenant-AuthSource: SA0PR03MB5610.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2021 08:21:59.3101 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rKnVEWxnaLZQwW6H8sOjylWgwny0NFsk/6fte9KeEnMR01kJViYm20Lvt4Kr43/xULkKcfZ79TRJegFFM8C1Ig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4015 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1632298981443100001 Introduce a new grant options flags field in domain create and use it to signal whether transitive grants are allowed on the domain. This is settable from xl using the transitive_grants option. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Christian Lindig > Acked-by: Christian Lindig --- docs/man/xl.cfg.5.pod.in | 6 ++++++ docs/man/xl.conf.5.pod.in | 7 +++++++ tools/include/libxl.h | 7 +++++++ tools/libs/light/libxl_create.c | 3 +++ tools/libs/light/libxl_dm.c | 1 + tools/libs/light/libxl_types.idl | 1 + tools/ocaml/libs/xc/xenctrl.ml | 1 + tools/ocaml/libs/xc/xenctrl.mli | 1 + tools/ocaml/libs/xc/xenctrl_stubs.c | 7 ++++++- tools/xl/xl.c | 7 +++++++ tools/xl/xl.h | 1 + tools/xl/xl_parse.c | 4 ++++ xen/arch/arm/domain_build.c | 6 ++++-- xen/arch/x86/setup.c | 3 ++- xen/common/grant_table.c | 8 +++++++- xen/include/public/domctl.h | 5 ++++- 16 files changed, 62 insertions(+), 6 deletions(-) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index a4bf2caafa..c5a447dfcd 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -586,6 +586,12 @@ Specify the maximum grant table version the domain is = allowed to use. Current supported versions are 1 and 2. The default value is settable via L. =20 +=3Ditem B + +Specify whether transitive grants should be available to the domain. Note = such +functionality only applies to grant table version 2. The default value is +settable via L. + =3Ditem B =20 Disable migration of this domain. This enables certain other features diff --git a/docs/man/xl.conf.5.pod.in b/docs/man/xl.conf.5.pod.in index 0a70698a7c..88efbee5fe 100644 --- a/docs/man/xl.conf.5.pod.in +++ b/docs/man/xl.conf.5.pod.in @@ -108,6 +108,13 @@ Sets the default value for the C do= main config value. Default: value of Xen command line B parameter (or its default val= ue if unspecified). =20 +=3Ditem B + +Sets the default value for the C domain config value. + +Default: value of Xen command line B parameter (or its default val= ue if +unspecified). + =3Ditem B =20 Configures the default hotplug script used by virtual network devices. diff --git a/tools/include/libxl.h b/tools/include/libxl.h index 7a35833312..d23586f2cc 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -509,6 +509,13 @@ */ #define LIBXL_HAVE_MAX_GRANT_VERSION 1 =20 +/* + * LIBXL_HAVE_TRANSITIVE_GRANTS indicates libxl_domain_build_info has a + * transitive_grants field for setting whether such functionality should be + * available to the domain. + */ +#define LIBXL_HAVE_TRANSITIVE_GRANTS 1 + /* * libxl ABI compatibility * diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_creat= e.c index 1ee86602ae..fa527923e4 100644 --- a/tools/libs/light/libxl_create.c +++ b/tools/libs/light/libxl_create.c @@ -635,6 +635,9 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_conf= ig *d_config, if (info->passthrough =3D=3D LIBXL_PASSTHROUGH_SYNC_PT) create.iommu_opts |=3D XEN_DOMCTL_IOMMU_no_sharept; =20 + if (libxl_defbool_val(b_info->transitive_grants)) + create.grant_opts |=3D XEN_DOMCTL_GRANT_transitive; + /* Ultimately, handle is an array of 16 uint8_t, same as uuid */ libxl_uuid_copy(ctx, (libxl_uuid *)&create.handle, &info->uuid); =20 diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c index 9a8ddbe188..4ade437257 100644 --- a/tools/libs/light/libxl_dm.c +++ b/tools/libs/light/libxl_dm.c @@ -2321,6 +2321,7 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stu= b_dm_spawn_state *sdss) dm_config->b_info.max_grant_frames =3D guest_config->b_info.max_grant_= frames; dm_config->b_info.max_maptrack_frames =3D guest_config->b_info.max_map= track_frames; dm_config->b_info.max_grant_version =3D guest_config->b_info.max_grant= _version; + dm_config->b_info.transitive_grants =3D guest_config->b_info.transitiv= e_grants; =20 dm_config->b_info.u.pv.features =3D ""; =20 diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_type= s.idl index 37789a568c..d05b5d2abc 100644 --- a/tools/libs/light/libxl_types.idl +++ b/tools/libs/light/libxl_types.idl @@ -519,6 +519,7 @@ libxl_domain_build_info =3D Struct("domain_build_info",[ ("max_grant_frames", uint32, {'init_val': 'LIBXL_MAX_GRANT_DEFAULT'= }), ("max_maptrack_frames", uint32, {'init_val': 'LIBXL_MAX_GRANT_DEFAULT'= }), ("max_grant_version", integer, {'init_val': '-1'}), + ("transitive_grants", libxl_defbool), =20 ("device_model_version", libxl_device_model_version), ("device_model_stubdomain", libxl_defbool), diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml index 6a8658bfec..da12b67baf 100644 --- a/tools/ocaml/libs/xc/xenctrl.ml +++ b/tools/ocaml/libs/xc/xenctrl.ml @@ -84,6 +84,7 @@ type domctl_create_config =3D max_grant_frames: int; max_maptrack_frames: int; max_grant_version: int; + transitive_grants: bool; arch: arch_domainconfig; } =20 diff --git a/tools/ocaml/libs/xc/xenctrl.mli b/tools/ocaml/libs/xc/xenctrl.= mli index 5933d32c70..83ca554eb7 100644 --- a/tools/ocaml/libs/xc/xenctrl.mli +++ b/tools/ocaml/libs/xc/xenctrl.mli @@ -76,6 +76,7 @@ type domctl_create_config =3D { max_grant_frames: int; max_maptrack_frames: int; max_grant_version: int; + transitive_grants: bool; arch: arch_domainconfig; } =20 diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenc= trl_stubs.c index 1e60925069..5697a8bd8b 100644 --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -189,7 +189,8 @@ CAMLprim value stub_xc_domain_create(value xch, value w= anted_domid, value config #define VAL_MAX_GRANT_FRAMES Field(config, 6) #define VAL_MAX_MAPTRACK_FRAMES Field(config, 7) #define VAL_MAX_GRANT_VERSION Field(config, 8) -#define VAL_ARCH Field(config, 9) +#define VAL_TRANSITIVE_GRANTS Field(config, 9) +#define VAL_ARCH Field(config, 10) =20 uint32_t domid =3D Int_val(wanted_domid); int result; @@ -216,6 +217,9 @@ CAMLprim value stub_xc_domain_create(value xch, value w= anted_domid, value config /* ! XEN_DOMCTL_IOMMU_ XEN_DOMCTL_IOMMU_MAX max */ (VAL_IOMMU_OPTS); =20 + cfg.grant_opts |=3D Bool_val(VAL_TRANSITIVE_GRANTS) + ? XEN_DOMCTL_GRANT_transitive : 0; + arch_domconfig =3D Field(VAL_ARCH, 0); switch ( Tag_val(VAL_ARCH) ) { @@ -255,6 +259,7 @@ CAMLprim value stub_xc_domain_create(value xch, value w= anted_domid, value config } =20 #undef VAL_ARCH +#undef VAL_TRANSITIVE_GRANTS #undef VAL_MAX_GRANT_VERSION #undef VAL_MAX_MAPTRACK_FRAMES #undef VAL_MAX_GRANT_FRAMES diff --git a/tools/xl/xl.c b/tools/xl/xl.c index 0fde879cf4..9bd398f8c9 100644 --- a/tools/xl/xl.c +++ b/tools/xl/xl.c @@ -56,6 +56,7 @@ bool timestamps =3D 0; int max_grant_frames =3D -1; int max_maptrack_frames =3D -1; int max_grant_version =3D -1; +bool transitive_grants =3D true; libxl_domid domid_policy =3D INVALID_DOMID; =20 xentoollog_level minmsglevel =3D minmsglevel_default; @@ -221,6 +222,12 @@ static void parse_global_config(const char *configfile, else if (e !=3D ESRCH) exit(1); =20 + e =3D xlu_cfg_get_long (config, "transitive_grants", &l, 0); + if (!e) + transitive_grants =3D l; + else if (e !=3D ESRCH) + exit(1); + libxl_cpu_bitmap_alloc(ctx, &global_vm_affinity_mask, 0); libxl_cpu_bitmap_alloc(ctx, &global_hvm_affinity_mask, 0); libxl_cpu_bitmap_alloc(ctx, &global_pv_affinity_mask, 0); diff --git a/tools/xl/xl.h b/tools/xl/xl.h index cf12c79a9b..d7f83c9abd 100644 --- a/tools/xl/xl.h +++ b/tools/xl/xl.h @@ -283,6 +283,7 @@ extern char *blkdev_start; extern int max_grant_frames; extern int max_maptrack_frames; extern int max_grant_version; +extern bool transitive_grants; extern libxl_bitmap global_vm_affinity_mask; extern libxl_bitmap global_hvm_affinity_mask; extern libxl_bitmap global_pv_affinity_mask; diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index 1206d7ea51..8e4e561df8 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -1440,6 +1440,10 @@ void parse_config_data(const char *config_source, else exit(1); =20 + xlu_cfg_get_defbool(config, "transitive_grants", &b_info->transitive_g= rants, + 0); + libxl_defbool_setdefault(&b_info->transitive_grants, transitive_grants= ); + libxl_defbool_set(&b_info->claim_mode, claim_mode); =20 if (xlu_cfg_get_string (config, "on_poweroff", &buf, 0)) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 3beb1cbb41..b9048aa9cc 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2649,7 +2649,8 @@ void __init create_domUs(void) .max_evtchn_port =3D -1, .max_grant_frames =3D -1, .max_maptrack_frames =3D -1, - .grant_opts =3D XEN_DOMCTL_GRANT_version_default, + .grant_opts =3D XEN_DOMCTL_GRANT_version_default | + XEN_DOMCTL_GRANT_transitive, }; =20 if ( !dt_device_is_compatible(node, "xen,domain") ) @@ -2757,7 +2758,8 @@ void __init create_dom0(void) .max_evtchn_port =3D -1, .max_grant_frames =3D gnttab_dom0_frames(), .max_maptrack_frames =3D -1, - .grant_opts =3D XEN_DOMCTL_GRANT_version_default, + .grant_opts =3D XEN_DOMCTL_GRANT_version_default | + XEN_DOMCTL_GRANT_transitive, }; =20 /* The vGIC for DOM0 is exactly emulating the hardware GIC */ diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index b5b6c75447..7ce54a5a57 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -750,7 +750,8 @@ static struct domain *__init create_dom0(const module_t= *image, .max_evtchn_port =3D -1, .max_grant_frames =3D -1, .max_maptrack_frames =3D -1, - .grant_opts =3D XEN_DOMCTL_GRANT_version_default, + .grant_opts =3D XEN_DOMCTL_GRANT_version_default | + XEN_DOMCTL_GRANT_transitive, .max_vcpus =3D dom0_max_vcpus(), .arch =3D { .misc_flags =3D opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0, diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index c43e9d5ee4..f50e9f6a06 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -74,6 +74,10 @@ struct grant_table { * progress. */ unsigned int maptrack_limit; + + /* Allow transitive grants. Only applies to grant v2. */ + bool allow_transitive:1; + /* Shared grant table (see include/public/grant_table.h). */ union { void **shared_raw; @@ -1965,6 +1969,8 @@ int grant_table_init(struct domain *d, int max_grant_= frames, gt->max_grant_frames =3D max_grant_frames; gt->max_maptrack_frames =3D max_maptrack_frames; gt->max_grant_version =3D max_grant_version; + gt->allow_transitive =3D !!(options & XEN_DOMCTL_GRANT_transitive) && + opt_transitive_grants; =20 /* Install the structure early to simplify the error path. */ gt->domain =3D d; @@ -2887,7 +2893,7 @@ static int gnttab_copy_claim_buf(const struct gnttab_= copy *op, buf->read_only, &buf->mfn, &buf->page, &buf->ptr.offset, &buf->len, - opt_transitive_grants); + buf->domain->grant_table->allow_transi= tive); if ( rc !=3D GNTST_okay ) goto out; buf->ptr.u.ref =3D ptr->u.ref; diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h index e2b47184a0..2f90e4c3f8 100644 --- a/xen/include/public/domctl.h +++ b/xen/include/public/domctl.h @@ -98,8 +98,11 @@ struct xen_domctl_createdomain { /* Grant version, use low 4 bits. */ #define XEN_DOMCTL_GRANT_version_mask 0xf #define XEN_DOMCTL_GRANT_version_default 0xf +/* Allow transitive grants. */ +#define _XEN_DOMCTL_GRANT_transitive 4 +#define XEN_DOMCTL_GRANT_transitive (1U << _XEN_DOMCTL_GRANT_transiti= ve) =20 -#define XEN_DOMCTLGRANT_MAX XEN_DOMCTL_GRANT_version_mask +#define XEN_DOMCTLGRANT_MAX XEN_DOMCTL_GRANT_transitive =20 uint32_t grant_opts; =20 --=20 2.33.0 From nobody Sat May 18 18:58:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1632298942; cv=pass; d=zohomail.com; s=zohoarc; b=WQ5feFssPkZzpR1iMdqz4aOYVsz9gfEGORuAFbiguTEy/JspRrdFT8ha8wapo00KvZk2fhv39nyDRJxtls8Xz5EkrCdTrephz4fCPvJjBmh0ij19A2dGXKMfUWKvsJsRb1UTk1CXdrGsKH4lX+PBptzmQTFdP01/zkurtdTRomA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1632298942; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=cD1jNa1dkKGTraDhEkBrz9VgImKuoXQDqGBPFO2wT9s=; b=cECr/E+CU6TrVechLyE+Yydc1D2yPeJkUXVdzGZnTsRkRW/znwjhUJsOQFj0Jk9IVXRxf0n5tJDdSGZBwhsyadUul3YBTmLAD6TAS2B186gaIdvEdEpZ6iUum42L1MtkL31UWdLEU7K40YphP4MLFmRlfLBozzwcRAN811kQKHw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1632298942643142.08567725147077; Wed, 22 Sep 2021 01:22:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.192241.342611 (Exim 4.92) (envelope-from ) id 1mSxW4-0005Hq-VS; Wed, 22 Sep 2021 08:22:08 +0000 Received: by outflank-mailman (output) from mailman id 192241.342611; Wed, 22 Sep 2021 08:22: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 1mSxW4-0005Hh-Q9; Wed, 22 Sep 2021 08:22:08 +0000 Received: by outflank-mailman (input) for mailman id 192241; Wed, 22 Sep 2021 08:22: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 1mSxW3-0005Fo-H6 for xen-devel@lists.xenproject.org; Wed, 22 Sep 2021 08:22:07 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 2c15c576-1b7e-11ec-b962-12813bfff9fa; Wed, 22 Sep 2021 08:22:06 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version 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: 2c15c576-1b7e-11ec-b962-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1632298926; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=jl8Da4tdx3a57Qk/VIGdkSe4VlRYgk2bnETxrUhv7Ps=; b=Ydg7ksKQWc3u7cch7O0kHt981kk1A2eLXc6VAbtf8ynaZc/MagHTcgQD onT/wZuaQz+Sls1KTk2NIGfYLkDPKd9pYFx1/+zs1+hDAv78yZX4FC4Q9 WwvZU+Ss4Mie41sEhOg4l0KddyYXqkI8DMHZP6nWsENP1b9dWQ9bekO/J I=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: XFSfHGlrHY4bDoejpoN6A72iiDwFrWClWCBZ4OdBkv8r5pezev8lt8kCNR9IxlxCIF3tTSCXgW 0Rj6A9J7Jm+yLSCvFFhXiJJfUrefIvIKOTIZssBNQQQ7tGvuQmkEjuaoaqWinGP51wY5ZZKvaU E1rIhT4NTlg3aKefdW7YaNxDytvm6TPBmdOc869FJqt54AelI0fnkdFbaVF5S0f0ngn/Nie7D2 afGDxq5IwcUJ/8adbsJ4r+tLXX5VSURfp6Bp/bCTccTKqKgd3mKlU1f//uCByctcn1UVD/1vOB GTXCBIOf2b+yLYe5zZExwTeP X-SBRS: 5.1 X-MesageID: 52894204 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:hauNmqJJUDqaEwGiFE+R6ZIlxSXFcZb7ZxGr2PjKsXjdYENS0GMFz TBMXGHUbP7eNmqkL4h3aI6ypE9S6JeEmNYwSlRlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZ0ideSc+EH140UM5wbZj6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2EpIB22 IxClabrUChyGerisuomCCVXRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsF2gcsuNo/zNZ43sXB81zDJS/0hRPgvRo2Xv48JgG1o2qiiG974R 5UnTQpGay3uIBJrPE8IVc0/gOqR0yyXnzpw9wvO+PtfD3Lo5A5+yr/2K/LOZ8eHA85Smy6wp H/C/mn/KgEXMpqY0zXt2m2orv/Cm2X8Qo16PK218LtmjUOewkQXCQYKTh2rrP+hkEm8VtlDb UsO9UIGrLcw3FymSMHnWB+1q2LCuQQTM+e8CMVjtlvLkPCNpV/EWC5UFVatdeDKquc7fmwtx gaGv+myHBM0l/q7Y3ymrYub+Gba1TcuEYMSWcMVZVJbuIO68N9v1kunosVLS/Hu34ascd3k6 3XT9nFv2e9L5SIe//jjpTj6bySQSo8lp+Lfzj7eWH6spih9bZSsD2BDwQmGtascRGp1o1/og ZTlpyR8xLtVZX1uvHbUKAnoIF1Oz6zeWAAweXY1Q/EcG82FohZPh7y8BQ1DyLpBaJ5YKVcFn 3M/SSsOvcQObRNGnIdcYp6rCtRC8JUM4e/ND6iOBvIXO8AZXFbeoElGOB7Bt0iwwRNEufxuZ v+mnTOEUC9y5VJPl2HtGY/wENYDm0gD+I8kbcqql0j4ieXOOiH9pHVsGALmU93VJZis+W392 91eK9GL21NYVuj/aTPQ6okdMRYBKn1TOHw8g5U/mjerLlU0FWc/JeXWxL99KYVpk74MzrXD/ 22nW18ew1363CWVJQKPY3FlSbXuQZcg8i5rYX1yZQ6liyo5fIKizKYDbJ9rL7Mpw/NukKxvR P4fdsTeXvkWEmbb+y4QZIXWpZB5cEj5nhqHOieoOWBtf5NpSwHT1MXjew/jqHsHAiat7JNsq Ly8zALLB5EEQl06XsrRbfuuyXK3vGQcx70uDxeZfIELdRy1ooZwKiH3gvsmGO02KE3OlmmAy gKbIRYEvu2R8YU7x8bE2PKfpICzHuogQkcDRzvH7ay7PDXx93a4xdMSS/6BeD3QWT+m+KimY ukJnfjwPOdewQRPuot4Vb1q0bg/953koLoDllZoG3DCblKKDLJ8IybZgZkT5/MVnrIJ6xGrX k+v+8VBPeTbMczoJ1cdOQ45Y7nRzvoTgDTTsaw4LUiSCPWbJ1ZbvZG+5yWxtRE= IronPort-HdrOrdr: A9a23:+A2wQqoFWjSaHv7dPBewOMwaV5u6L9V00zEX/kB9WHVpm5Oj+P xGzc526farslsssREb+OxpOMG7MBfhHPlOkPUs1NaZLXTbUQ6TQr2KgrGSpQEIdxeOlNK1kJ 0QCJSWa+eAfGSS7/yKmTVQeuxIqLLskNHK9JfjJjVWPHtXgslbnnlE422gYypLrWd9dP8E/M 323Ls5m9PsQwVbUu2LQl0+G8TTrdzCk5zrJTYAGh4c8QGLyRel8qTzHRS01goXF2on+8ZszU H11yjCoomzufCyzRHRk0fV8pRtgdPkjv9OHtaFhMQ5IijlziyoeINicbufuy1dmpDi1H8a1P 335zswNcV67H3cOkmzvBvWwgHllA0j7nfzoGXoyUfLkIjcfnYXGsBBjYVWfl/y8Ew7puxx16 pNwiawq4dXJQmoplW82/H4EzVR0makq3srluAey1ZFV5EFVbNXpYsDuGtIDZY7Gj7g4oxPKp guMCjl3ocVTbqmVQGdgoE2q+bcGkjbXy32DHTqg/blkAS/xxtCvgwlLM92pAZIyHtycegD2w xoWp4Y4I2mdfVmH56VMt1xN/dfOla9Mi4kD1jiVGgPbJt3Q04li6SHq4ndt9vaMqDh8vMJ6e P8uRVjxDcPR34= X-IronPort-AV: E=Sophos;i="5.85,313,1624334400"; d="scan'208";a="52894204" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AdbyU0MLp3zipdElBXPzgnhh3vHdRo4xl/AEO8OELYlNS/vYbiEcmFCzAVZqRk826vBd1ji3OZcbQL52k2ZI1OgujG9VooVhaEvP1pZbrngAOqJx0wPyZeFCdvZQ4WFACYcEXYvZfsoEQ5gsrMWnUo3PRT2QdTEWVkK8NshssX6ARcEvHCnOznZIY9iX7SKo5bpIMJGt7dxcvqfSxRbS0kvDZRKiOAkdrrMy/7EVSzi7uZ4xs+/eLdczgvFfl+orEIknGpUppuAPwMEek3XZbHpetqHgNEgvc5CKjfHhj0dja3LT7Q0VzopYOdycQZAqZyJwInsCFok/UU9fqv0jEQ== 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; bh=cD1jNa1dkKGTraDhEkBrz9VgImKuoXQDqGBPFO2wT9s=; b=atl4Pw5LlfP8hZEjnz2dk2DPpuLtPAhtBwhHAV/EFOL8+NMf3vT6N05j5Sd9Q0F+E1SF0mWXAePPcRCSxgUhWUacOEps6IW/xWfGPk8FYXfh/FFFC8Dr8aM53s/n5+UGyhlVPU9Kiaxz7TkCRpjwSxaom7JL94O4yKsOMV0edM9GPqGz6flTPevje9NxUA5Bl211sOpPITxAcrItGpFV55HL2+EZaJsuP191Hkqf0SLaxMXpV7voZJT6nPbe7/Lobmjh4GqujEcLBPdkkGuFynccbU3fo9KoVbB9F3Af4ZOGX51wq26rbV/okdOOBLTe86K/n1Tg2Z4cQDCOXbz1fg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cD1jNa1dkKGTraDhEkBrz9VgImKuoXQDqGBPFO2wT9s=; b=wR8JCmAKn9vUj5yvepkwH+sQuUVKSjBg2R3LuJOhCr0f/uGD25DsIWO5ZzyLYtNsPiKtVD15+JhKJsOES/pHmbzGpi46QaW7wggH2psnxclAzoD4pFUAR6IwQ8rX4TijVcHJ1fKF4lDQHd9auqWaZ6zxkS1M9Vegwug5jGJ+nIE= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu , Juergen Gross , Julien Grall Subject: [PATCH v2 4/6] tools/xenstored: use atexit to close interfaces Date: Wed, 22 Sep 2021 10:21:21 +0200 Message-ID: <20210922082123.54374-5-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210922082123.54374-1-roger.pau@citrix.com> References: <20210922082123.54374-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0338.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18c::19) To SA0PR03MB5610.namprd03.prod.outlook.com (2603:10b6:806:b2::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 03569a38-9dee-4d0e-000d-08d97da20e86 X-MS-TrafficTypeDiagnostic: SN6PR03MB4015: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4502; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 85vh3Jizza0/DKULkJZcbNfALAEoACDwEUv/YFuvMgoAtgycNk4AOrYAisHuDsDJ99M63PoBj3WdykTOP8giDA0GxlMLRWmv0hf3OZDkpBeU+zzC9oJ4wqH9Sc5kJ82Vqfi6nrP3ZuqPusdYX0vT+lEtDVotimt5GIxsMJ5qDUxOkg2HAPaY5hOHaHOIIxsV3NShHTwwV9XbdKKAn9WakvH/Hf0L3m5jkNNBB3TtwD4JibJiZludo+QnBOJQVu5swx2j7nX7ZfiQILrWnoXjj1bXzQP221B/4Lo4poCN4ImKy9c5IgnEZDPvDqlwgQKSopT0Ob7vuGjtXDOKFKCXauqV60e/HutpZkzRTgeCKVxsn6yrhue48pGrmVCpt7FqPfBK/dnwoixoOjHhInHIbZNjlAlzJfy4nRm1qYDcNw/EhHqPGalFUwbLKUbs7AhwtI8JR9+8ZI8MTWE8hW6WqeRtyf/yhpkmC7+MdXbNegAnE+8mGioSlJKrzqzvdpnoVKqHLDzQpqKhvoM1UOSVlOOpp9RKGcYq5NL9Rv8W5RiLOrGb8w38wHNoP50buvZL3BC3l1jFXyxpb5N2yw8lSFEz5yt6XCcaaN5K+9ZjDegVddOjrpxiwHk2UQ2dObPWJqdn2g5shWPSeSymQ2WE+w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR03MB5610.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66476007)(66556008)(66946007)(4326008)(38100700002)(8936002)(186003)(956004)(86362001)(2616005)(8676002)(508600001)(54906003)(83380400001)(6496006)(26005)(6916009)(2906002)(6666004)(5660300002)(1076003)(6486002)(36756003)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZFo1bjFoVVFLZlZ6YWIzTk9Fd3FwMWcrNy9OcUU1dEtYNGdvNzVESTZSQVRQ?= =?utf-8?B?UmZHTUV2VWxHY3lyZnFobW14b3dVcDhPeTAzdE1HM2NYa1dzN1ZiU1ZNSWxD?= =?utf-8?B?c0JtYkRYLy8yeXdXOWpqV0o4bWlHMFYxVVVLV0ZqeXNQZGgwTHlVT3RPTVBQ?= =?utf-8?B?bjVQVWt6VWpBeUVtUFE2cmJvdEVzTThMa3lYU1l6UlRQYk5ZOXltVFVNaHNR?= =?utf-8?B?NnZ3UGV1ZlRkZk1HdU42V3Nza1ZINFpybUF6Ty9tVzJndXBpdnlMaDZDRzN0?= =?utf-8?B?SFZDVExwVjcwVVhUZGN0OU41RkcySW5xNkFBblprN2NXNjZRTGVsRXpUZm0v?= =?utf-8?B?b1orM2ltYjNtMTgwN2dTT2w0U1lBWjZjazQ2enVKdWdpVDlMalVwSjcrRUht?= =?utf-8?B?cVdhMHRucG5MT21saS8xcUE4NU1SRnhOOXc5TjY3Y1ZxVUV3OXBmZk9nVjB0?= =?utf-8?B?V2c0ZmswUDFDb3ZNRFB6YkJvUjJiaE42Nk9EcWJYQXNhc3lPUlV4MkFVSGxK?= =?utf-8?B?SWtaN2Z2RSsyaEZCTHBIc0ZvU2JFNU5vRW1qL2tndnVSb3hLV0Z6MnBoWThL?= =?utf-8?B?cTBBVlA2cXdSNVQrQzVjbnVIVW5vdE1RM0grWjFETDFCcS9DVlpOVzUzUVZ0?= =?utf-8?B?S2dSWkhFSXNUcnVQeldyY1dtbWRGWkhrNzJSUkZRTVJWL05xNG5DTFl3YjJx?= =?utf-8?B?L2V2ek9maEc4U3Zvb2FiZHJ1VjZtZTUyRm1xZC9NM0RUSnFRSlJPY3JLVjEv?= =?utf-8?B?Um5wdDIvR1pBOFc2TnVUSGdFaTU4ZFNLa0M2VGl3WmlkbkpGM2loSVBFeER1?= =?utf-8?B?MlJIN1B2aWtES2Z0UFRuR04zYUpwb1ZIYWNJMjBQaURTU0k0WGJNZFZidzhK?= =?utf-8?B?WjdFajVyeVlTK25SbXBvLzZMRUxPRWExQ0tRTUxMcytNbVlEOW9LcHhhSUdP?= =?utf-8?B?RDV6MlNodlNrQ0tsMVFnWE9LMmtUS2RMaTk0UVkyR2k1RG80MDVKRlh3Qk5Z?= =?utf-8?B?WFV5YzhxWUpPUVBSMVRIZW11RVFZVUx3Y09mOEdCTFhiYlNqYjlhSnUwS1pC?= =?utf-8?B?VTVnQXpJMjZINFpFWnN6SGlja0hwOWtHTTdmVWdUUno4czFzWnVKOE1TYmJk?= =?utf-8?B?ZXVhVE5nQ0RkdWJHazFLaDZTWkt4c2N5SElWREN4QVFDODIzdTBiK0huRWRF?= =?utf-8?B?cm5WWFhrWFFaNSsvdlVvYm55TFNlYWtYMER4RCttVW5uWXl4MDhJTzZVaFhT?= =?utf-8?B?elV3a0xJM3MzaGRlc3ZzSHpTV1d4Y0FaT3FtenlUNGRyL2NscDdyWFFPYTBz?= =?utf-8?B?dnlFNjd6RlYwSVJzQklsdWpLSUhlOUVrNGpkUTdEL21jRlNIVUxNY1RJTnJE?= =?utf-8?B?NGN2MmovUmFiT3d4VytSL0x1U2Y4aGl3dVJFUUY4TkNpV3h0bTRXZklOSmxX?= =?utf-8?B?YzNNZGI5a1FIRmVvZW5GOGtqUEFtZWNYb2JQK1NiblhsNVpJbndsYUIzVVFJ?= =?utf-8?B?aEpGRE9KbjRKVlpOc1R0WGhKcURoMFdlSFhkeG1VTmlLZnFuWlpJTUp1ZUJt?= =?utf-8?B?ZS8wRkFSUmNhb0JqNUJJVCtUZmdOYVk0R0x4WDdZUU9FS3RTYUtxL2pHNWZu?= =?utf-8?B?VzZ2VWlCc3ZIR2EyUlJVL1hSLzBHd2o3SWV5bG1XdXE0RUZ4YnZHUWZUakNK?= =?utf-8?B?R3ZRUDE3TGpIa0dvb2dIdWc3MXZYblRLQ29aczZlQ3hyRG9wb2U1SCtlaEFN?= =?utf-8?Q?0HymaWAKcVxDEy2wieogcmGEKibiP/24WPCvXAb?= X-MS-Exchange-CrossTenant-Network-Message-Id: 03569a38-9dee-4d0e-000d-08d97da20e86 X-MS-Exchange-CrossTenant-AuthSource: SA0PR03MB5610.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2021 08:22:03.2607 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zIVgAK/7kr0uxyHLN53ht7WX4pQTz7c8gEQmpxDi2AY1v75F8w31TfCO0UZLritnjnHeUtxnjG11sWNy+mi59A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4015 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1632298943024100006 Exploiting the talloc clean up routines to close the Xen interfaces is cumbersome, specially when atexit can be used to the same effect. Convert xc and gnttab to use atexit which allows to drop one indirection from the storing variables. While there also close the event channel interface. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Christian Lindig > --- Changes since v1: - Fix minios xenstored build. - Also close event channel handle --- tools/xenstore/xenstored_core.h | 2 +- tools/xenstore/xenstored_domain.c | 61 ++++++++++++++----------------- tools/xenstore/xenstored_minios.c | 4 +- 3 files changed, 31 insertions(+), 36 deletions(-) diff --git a/tools/xenstore/xenstored_core.h b/tools/xenstore/xenstored_cor= e.h index 258f6ff382..a813bc5a8c 100644 --- a/tools/xenstore/xenstored_core.h +++ b/tools/xenstore/xenstored_core.h @@ -266,7 +266,7 @@ void init_pipe(int reopen_log_pipe[2]); #ifndef NO_SOCKETS extern const struct interface_funcs socket_funcs; #endif -extern xengnttab_handle **xgt_handle; +extern xengnttab_handle *xgt_handle; =20 int remember_string(struct hashtable *hash, const char *str); =20 diff --git a/tools/xenstore/xenstored_domain.c b/tools/xenstore/xenstored_d= omain.c index 47e9107c14..9fb78d5772 100644 --- a/tools/xenstore/xenstored_domain.c +++ b/tools/xenstore/xenstored_domain.c @@ -35,8 +35,8 @@ #include #include =20 -static xc_interface **xc_handle; -xengnttab_handle **xgt_handle; +static xc_interface *xc_handle; +xengnttab_handle *xgt_handle; static evtchn_port_t virq_port; =20 xenevtchn_handle *xce_handle =3D NULL; @@ -198,14 +198,14 @@ static const struct interface_funcs domain_funcs =3D { =20 static void *map_interface(domid_t domid) { - return xengnttab_map_grant_ref(*xgt_handle, domid, + return xengnttab_map_grant_ref(xgt_handle, domid, GNTTAB_RESERVED_XENSTORE, PROT_READ|PROT_WRITE); } =20 static void unmap_interface(void *interface) { - xengnttab_unmap(*xgt_handle, interface, 1); + xengnttab_unmap(xgt_handle, interface, 1); } =20 static int destroy_domain(void *_domain) @@ -240,7 +240,7 @@ static int destroy_domain(void *_domain) =20 static bool get_domain_info(unsigned int domid, xc_dominfo_t *dominfo) { - return xc_domain_getinfo(*xc_handle, domid, 1, dominfo) =3D=3D 1 && + return xc_domain_getinfo(xc_handle, domid, 1, dominfo) =3D=3D 1 && dominfo->domid =3D=3D domid; } =20 @@ -648,18 +648,6 @@ int do_reset_watches(struct connection *conn, struct b= uffered_data *in) return 0; } =20 -static int close_xc_handle(void *_handle) -{ - xc_interface_close(*(xc_interface**)_handle); - return 0; -} - -static int close_xgt_handle(void *_handle) -{ - xengnttab_close(*(xengnttab_handle **)_handle); - return 0; -} - /* Returns the implicit path of a connection (only domains have this) */ const char *get_implicit_path(const struct connection *conn) { @@ -737,35 +725,42 @@ void dom0_init(void) xenevtchn_notify(xce_handle, dom0->port); } =20 +void interface_cleanup(void) +{ + if (xc_handle) { + xc_interface_close(xc_handle); + xc_handle =3D NULL; + } + if (xgt_handle) { + xengnttab_close(xgt_handle); + xgt_handle =3D NULL; + } + if (xce_handle) { + xenevtchn_close(xce_handle); + xce_handle =3D NULL; + } +} + void domain_init(int evtfd) { - int rc; + int rc =3D atexit(interface_cleanup); =20 - xc_handle =3D talloc(talloc_autofree_context(), xc_interface*); - if (!xc_handle) - barf_perror("Failed to allocate domain handle"); + if (rc) + barf_perror("Unable to register cleanup handler"); =20 - *xc_handle =3D xc_interface_open(0,0,0); - if (!*xc_handle) + xc_handle =3D xc_interface_open(0,0,0); + if (!xc_handle) barf_perror("Failed to open connection to hypervisor"); =20 - talloc_set_destructor(xc_handle, close_xc_handle); - - xgt_handle =3D talloc(talloc_autofree_context(), xengnttab_handle*); + xgt_handle =3D xengnttab_open(NULL, 0); if (!xgt_handle) - barf_perror("Failed to allocate domain gnttab handle"); - - *xgt_handle =3D xengnttab_open(NULL, 0); - if (*xgt_handle =3D=3D NULL) barf_perror("Failed to open connection to gnttab"); =20 /* * Allow max number of domains for mappings. We allow one grant per * domain so the theoretical maximum is DOMID_FIRST_RESERVED. */ - xengnttab_set_max_grants(*xgt_handle, DOMID_FIRST_RESERVED); - - talloc_set_destructor(xgt_handle, close_xgt_handle); + xengnttab_set_max_grants(xgt_handle, DOMID_FIRST_RESERVED); =20 if (evtfd < 0) xce_handle =3D xenevtchn_open(NULL, XENEVTCHN_NO_CLOEXEC); diff --git a/tools/xenstore/xenstored_minios.c b/tools/xenstore/xenstored_m= inios.c index c94493e52a..9b050c7e02 100644 --- a/tools/xenstore/xenstored_minios.c +++ b/tools/xenstore/xenstored_minios.c @@ -49,12 +49,12 @@ evtchn_port_t xenbus_evtchn(void) =20 void *xenbus_map(void) { - return xengnttab_map_grant_ref(*xgt_handle, xenbus_master_domid(), + return xengnttab_map_grant_ref(xgt_handle, xenbus_master_domid(), GNTTAB_RESERVED_XENSTORE, PROT_READ|PROT_WRITE); } =20 void unmap_xenbus(void *interface) { - xengnttab_unmap(*xgt_handle, interface, 1); + xengnttab_unmap(xgt_handle, interface, 1); } =20 --=20 2.33.0 From nobody Sat May 18 18:58:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1632298948; cv=pass; d=zohomail.com; s=zohoarc; b=cIziGyraSuMfNpwFna6h6BjvHxVfXLSO+e2vY4SNlS7yKRAcZ5p3DXazY8xkd3rOKO3bBxdO5KKJM43D8LuCuPIT0fDNlX61jVHHRVYCxNouTi3iwQ4jyi9MFVOvDfcJiQaqK6KIUGKFl/kpdg91P0Zl/jr4R9V4woAq33AhyKE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1632298948; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JJ6k9ObCJZQ1HpQusAHVsZSz5HvaRNVf12lIJWSFRDo=; b=DHSFWcDhBAF9LINmQy2Jmj+ASav+++yQ8pGV0+ljDsi/FTt3W4+UeYIWe6eSxAHQLkWTdTHHlmzspAEKQARYtI1NsXM8ZnHGEYS3EOZ4AjCi7HoYIVIGy1bWs/c0VtDscMlRnLLi6+TiO2tnmeSNeCRNtcWgD2zA2ye4ySiErB0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 16322989488961017.3173010757021; Wed, 22 Sep 2021 01:22:28 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.192243.342622 (Exim 4.92) (envelope-from ) id 1mSxW9-0005ei-9p; Wed, 22 Sep 2021 08:22:13 +0000 Received: by outflank-mailman (output) from mailman id 192243.342622; Wed, 22 Sep 2021 08:22:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mSxW9-0005eR-4V; Wed, 22 Sep 2021 08:22:13 +0000 Received: by outflank-mailman (input) for mailman id 192243; Wed, 22 Sep 2021 08:22:12 +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 1mSxW8-0005Fo-2t for xen-devel@lists.xenproject.org; Wed, 22 Sep 2021 08:22:12 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 2ebd5d20-1b7e-11ec-b962-12813bfff9fa; Wed, 22 Sep 2021 08:22:10 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version 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: 2ebd5d20-1b7e-11ec-b962-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1632298930; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=ElWsU4ziXSiPMiGxXcaqusDkCKlRzfSDrCEyvckfErY=; b=VbBpVbnNzs19xm7HwCZ/RyzaTscS+lBtQvUmqP78O8bwQsGMCTWU2pl/ hwRiZ80g75jIWqubPa3cjrUIOQEr7D70JDHib6WapVyCy+IkOfdPt37rd 0PhMGFBe+c9i4QZumJFgLDaO9FYgChHCFlMy7x47cKKO2kZ8YshxOwTnU A=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: uDlN0FMrWxkQnIxn6+J++S9bhU8sC2M7mS2WehoftiQEH0+rdN+CPOAHN6r4MNPV4IatFOWEcz wq3oBquWAwJsK6nyjDgVx7bazsmeTGc76BmUgH2wmnJh6l4Gq06nXbNsfz7wnF3AJ+63uX7B9P U8PVSVz9sq39D0iEL48o5DyJQCtXU1frn87g7LobXc1nex2yViQbsXOTDDe5mLABEaloRH3Ye2 MxzjTX99QkLnvl+MxkvxlMjFMC3VrJI4KGCXIRUPPChsXbWpkpgOhl17JQFx89miCRgMwyer+F 0H6mI3U+7UVgSGSjqL/Fbmxi X-SBRS: 5.1 X-MesageID: 52894211 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:q5+Xm6tv8luKKsDQIdxnSBZTQOfnVG5ZMUV32f8akzHdYApBsoF/q tZmKW7SP/3ZZzfyfookPovi/R9V75HUzt43HFE4qywwFywX+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHpJZS5LwbZj29Y524LhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Nplj5buV10xb5D1ots4Uz1bLT53AKF25+qSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DJoQQt2sm1TjEJf0nXYrCU+PB4towMDIY25oeTKqEP pNxhTxHNkT7bwceJXMrBrkOvsyilmL5UhxdpwfAzUYwyzeKl1EguFT3C/LXdcaNXt59hVuDq yTN+GGRKhMHMN2SzxKV/3TqgfXA9QvkXKoCGbv+8eRl6HWDy2pWBBAIWF+TpfiillX4S99ZM 1YT+Cclse417kPDZtjiXTWorXicpBkeVtFMVeog52mwJrH8uljDQDJeF3gYNYJg5JReqSEWO kGhpdm3G2Z34YCsc0249pOXkyy7BCQlMjpXDcMbdjfp8+UPsalq0EmVF4Y9TPbs5jHmMWqvm GHR9UDSk51W1JRShvvhpTgrlhrx/sChc+Ij2unAsotJBCtCbYi5bsSD7VHB5J6sx67IEwHc4 BDodyWYhd3i7K1hdgTWG43h/5nzvp5p1QEwZnY1RPEcG8yFoSLLQGypyGgWyL1V3iM4RNMUS BWL5VM5CGBv0IuCMvYsPtPZ5zUC5qn8D9X1Ps3pgi51SsEpLmevpXg2DWbJhjyFuBV8wMkXZ MbAGe7xXClyNEiS5GfvLwvr+eRwnX5WKKK6bc2T8ilLJpLENSbJFu9aYAXRBg37hYvdyDjoH x9kH5Li4z1UUfHkYzmR9ogWLFsQKmM8C4ywoMtSHtNv6CI/cI34I/OOk74nZaJ/mKFZyrXB8 n2nAxcKw1vjn3zXbw6Nbyk7Or/oWJ9+q1M9PDAtYgn0iyRyP9734fdNbYYzcJkm6Pdnkax+Q c4adpjSGf9IUDnGpWgQNMGvsIx4eR23rguSJC75MiMndpttSlWRqN/pdwfi7gcUCS+zuZdsq rGszFqDE5ECWx5jHIDdb/f2lwG9un0UmeRTWUrUI4YMJBWwodYycyGo1605OcABLxnH1wC27 QfODEdKv/TJrq807MLN2fKOobC2HrYsBUFdBWTas+q7bHGI4mq5zIZce++UZjSBBnjs8aCva OgJnfHxNPoLwARDv4ZmSus5yKs/453kpqNAzxQiF3LONgz5BrRlK3iA/M9OqqwSmeMJ5VroA hqCqotAJLGEGML5C1pAdgMqY9OK2ewQhjSPv+8+J1/35XMv8beKOamI08JgVMCJwGNJDb4Y IronPort-HdrOrdr: A9a23:w50CJaBJtCr0lzPlHeg9sceALOsnbusQ8zAXPh9KJiC9I/b1qy nxppkmPH/P6Qr4WBkb6LS90c67MA/hHP9OkPQs1NKZMjUO11HYSr2KgbGSoQEIXheOjdK1tp 0QApSWaueAdGSS5PySiGLTc6dCsam6GeKT9J3jJh9WPH9XgspbnmBE42igYyhLrF4sP+tHKH PQ3LsLmxOQPVAsKuirDHgMWObO4/XNiZLdeBYDQzoq8hOHgz+E4KPzV0Hw5GZQbxp/hZMZtU TVmQ3w4auu99m91x/nzmfWq7BbgsHoxNdvDNGFzuIVNjLvoAC1Y5kJYczPgBkF5MWUrHo6mt jFpBkte+x19nPqZ2mw5SDg3gHxuQxeo0PK+Bu9uz/OsMb5TDU1B45qnoRCaCbU7EImoZVVzL 9L93jxjesWMTrw2ADGo/TYXRBjkUS55VA4l/QIsnBZWYwCLJdMsI0k+l9PGptoJlO61GkeKp gtMCjg3ocSTbvDBEqp+lWHgebcEEjbJy32AXTr4aeuon9rdHMQ9TpQ+CVQpAZHyHqRI6M0k9 gsCZ4Y5o2mePVmG56VNN1xMvdfNVa9NC4kSFjiWWgPNJt3cE4l+KSHqonc2omRCes1Jd0J6c 38bG8= X-IronPort-AV: E=Sophos;i="5.85,313,1624334400"; d="scan'208";a="52894211" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kT91xiZCymbi/a9eAObbML8TTh2rbWpJraf7GPxFkP7iRma1uLVMZm9WjovCipIeMRq5riIrDwo1f3fMSVtaU5VYgymtEE3YYlQAUJaktOOgsPJ8MZqImACm6tMkA6wBhr0ANZw/Ek67TGdR8hkIavRgmE+fEbvQY6rDj44vUWvLcKXHTpcvZacPlQyWniORf7oYU4VI+ukYJtKfsYNzzUR8gyMZRZhuAXYu8Koml9Bg53NpU2R0RUAAbdP82NE4cBtDVFKJ5+FPqkGtJ7zwm6EG05B+Hkg0A4StKB2ahNSxaA5bY2xs0BxQrpHqe1hu87u6EWVFtGi1knjmn6+Vlw== 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; bh=JJ6k9ObCJZQ1HpQusAHVsZSz5HvaRNVf12lIJWSFRDo=; b=bpQsg8o/HPh+yIeApBcW+jvcIjrW9n6iOF3BLnWGBG7g1o/iI+C4uwdZBGzFT5mQldmHqU8bFbuZKP7jYMxV7iHYAYm7HWGF9OEThjKEn619rX2lRMviKvpDonKoPj89xt0W3KVwZuZL4uYhqefDAL8/aYMytNvM6ff9CKXmBAJZljzW/WOGNt35QZRibX/8+qlSKkJnbIITTEfKkpsp8JvCahLm+dOqDmTS8iCmnW8+lqZ61v5JZ1v8sugRVOANJll89DVZtSRWlkBeqyudPo7xHAHsZpTDxfyAOpNQiLbupbLbQ4wCISTnS+TukuRfDFd17whN4LwCwohd1qziCg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JJ6k9ObCJZQ1HpQusAHVsZSz5HvaRNVf12lIJWSFRDo=; b=lQWMqYxbpJduJTmEUEOVfXegibdEMvJ5DoR9g3nqbGHbA5tTy+RbDT9URClKXR5vdGE9B/snE+paOPBucJyrqC/vqwb3IERAtWjzEvK3jp+gVf0GiOK/EAh167rzT6dv4D/bvWq9Xtt1WB99akO2YN3u74uUOt7kzwtcq73hrQQ= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu , Juergen Gross , Julien Grall Subject: [PATCH v2 5/6] tools/xenstored: partially handle domains without a shared ring Date: Wed, 22 Sep 2021 10:21:22 +0200 Message-ID: <20210922082123.54374-6-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210922082123.54374-1-roger.pau@citrix.com> References: <20210922082123.54374-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0091.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8::31) To SA0PR03MB5610.namprd03.prod.outlook.com (2603:10b6:806:b2::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f82e8c16-cf70-4f15-cb8d-08d97da2114f X-MS-TrafficTypeDiagnostic: SN6PR03MB4015: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: igH50E/luNphf9V4ruhaktmmNQDXPeRdax/TSCxF/Y1Rf3nkCjgohDXioeahUV6kvOgfSmx3cRvA1iYeV2ESeuSyz7P2iyvAzT9GYYnvgWTELX4qyQD+zUnKCGV6l4zhCipI6lCzMCEHbET8EgQAgRVtxyKbpFH1y1dTg8z6I4vjI8QzU3Lph0YpAwIgPy2rfiCL91rwffm2YzKOfrDmXBDne6CuRs81CxROG+cZ9an50IKP/svtfd0m4UjWkPn4v5FW2XYqgjanF1Odo7BxIX84a4m/EvlPQ3h+XZAKWnkr2CZjGc+6A/KefwE9n7Xb/QhNKuYfRGuuayKSA7j6aAFPWSi3t8cDVX5jpRGn7GrnxJCnhPXvq0f7YGpv09lq8JfW2ulNQSeFKPdmSMYm6YNRO1Vo6PMR2HHMk7Jkx2H2nj26KrwAFX6Y0NgdH8EwN08aOgfiaTDmxkIMMmrXXuPOm0r6tRd/8sALQnBHf2yjOJkSeax2c0JZtXePrJYlP4wKvkxIbzuK/9zwVxFPDoz+nLdJXohdDiQL42JMdAue7to6h5DLjRP/22RzbwX2KTbaDeWEYn7MZ3w68bfYddnFvu4AXtzb51qcyYd0792UiDi0H02W3QTLLhIVumAnaOBqSxUwlaCL/UwXEjocZw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR03MB5610.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66476007)(66556008)(66946007)(4326008)(38100700002)(8936002)(186003)(956004)(86362001)(2616005)(8676002)(508600001)(54906003)(83380400001)(6496006)(26005)(6916009)(2906002)(6666004)(5660300002)(1076003)(6486002)(36756003)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MEZJdUgyWVhxQ3g2ZVQzMElnNlM3V2VPaXF0YWdJbk1wQ0ZvTHJKSStoRXpl?= =?utf-8?B?ZlprR0JmbC85S25EaFBMSDZ3OWJjby9POEpXRzJkQkRxdDNIdFovMUg4cWt4?= =?utf-8?B?SVkyT21yZXREdmYwRG0zUjZjai9oOW5FVG9zZUczK0pWdnROK3YxSmc2N1Vj?= =?utf-8?B?M1hTV1kxZ2RiUW12QTNOditVUlZoQ0lOQU92OFNQTEI1WGNMUVFCWXhUU1ZT?= =?utf-8?B?UHF2eVowMFZEQTZSVTNISE1hbUNaTmZ2Y1QxYzRpcWdWd3hSUGlibWtZdmpk?= =?utf-8?B?ZVVrQlE4TlFib1Y4RjNnWFUxWlYyckZUdnVjNlZZODBCVmx3LzJ0VEJiZlFh?= =?utf-8?B?bGc5ekpPSXNiY3ZRL0h4cGhydUVZTi81VHFGOFNYcEhVOERhTkxxNS9zdWNY?= =?utf-8?B?ZkFSVVJCMkp4Ly9WM1NhYjFkRUUxUGphSVpKTk5HWVZCZ0l0YmhMeDZIY0pF?= =?utf-8?B?bkVVR21UMmNkK01ZT2Y1NVhwK1Z4RmhzYTJnTlo2MkNzUEpuM1JTaURXNXNU?= =?utf-8?B?T0l6cXE5Zkg0Mjl5Z3lnVTNEVVBwQ2x6OUlNRUlNOUU5ZUlmSEpRRjB3UjJQ?= =?utf-8?B?dm1GTkNqTjdYNmZnNnJ5ZkpCN2N6R2tCdnRmRTY0QytDdGxmQlhKU1E4ZjhS?= =?utf-8?B?cW1OWldQN2tjQ2w4Wm9hSVU1S0JWOFdMeDBYa0FRVDdTeUoycjVSTGZ5RVBF?= =?utf-8?B?V3BLUDdCeTM4dWpxbVFtQUg1MzV2L1pUeEU1VzFGbVdNT1lrQThYMERqWlEx?= =?utf-8?B?UlNmdjYvSFNkTWhvN0QreTFpYjlrZDMycEdrbFBnZXl6aFo0Q1hvMG1PWDA4?= =?utf-8?B?YVBzTHlwTjkrRXRDVWttcExSTFB3bmRoOWIzakxUd2hjMU4zNHFjSE54SEl4?= =?utf-8?B?Zk1STDg2QmFjS0ZSOG1wM2hkYzZKWVBHUXRsRGo0cGpaUEU0NXBrOWRsQm5P?= =?utf-8?B?TE1WNlVCUVVGS2xBSkRyUDBNSHpxY1gwdGJHRlZ1MGc1SHBEWHltVkVVd3Z4?= =?utf-8?B?d1N0aDlBWW1RblJ2OVZZQ3JtVVhBQ3FyU1BWUEphUXljSFM0d0ZpdHNJczA5?= =?utf-8?B?ZElOTmZYVjhhUVVybHVUMHdWdjBrL1pZUlVJYXBMME5rbSt6ejJRV0hjb1lH?= =?utf-8?B?UFJabHVQbUN1d2czRjVHZ0c1RWFFcWY1YkdwQUFGS2Y0bWlaazlveTFTd3Nj?= =?utf-8?B?N1NCdjZZL2wzOXhISmIwV2J3emlnN29yVzk5TUtma3l0Z3N5Qm1SaGJ2NDJF?= =?utf-8?B?ZEpoYjNMd3hrcXhtU3NUVVRIY25BK2xMMWozeGpQUG5rR2p4ODhCN0JnK0sx?= =?utf-8?B?bDdHeDRCb0NCK01Nc0MwMEJjMGxGNHVIQkplanZ5dUIzWHVVRWZ1L3lWb1Jp?= =?utf-8?B?YmhPMVlLVDA0VzlldENSQWdtY2xaNnpTOEhLaERrUlM3MXpPdWkxeGo2ZDVz?= =?utf-8?B?OVdrYkxOTFhwY3lkMU1lcE1UVUh1c01uWU5RdFJzc0xkVnJTTlhOSGxOMDZh?= =?utf-8?B?VXY0dEF4STgyNml6RFJhWjJwMW9tdnF3aXlWVU1pR2M3R3hOK0FBdU00Zktt?= =?utf-8?B?Y3EvcDIrNitUdDE2bFVCZEZTV1YzeDdjM2MrTjFtbkE5WmV5aUdOV2gxcVNL?= =?utf-8?B?L2U0YlBBMnJhUElPUmpVV0ZRVTFDaS8xL2pwUVRjNFJIWDc2b3pMU3NzbUh4?= =?utf-8?B?a25jblRidnVPSzVGdlI1OHBSSVp2WFpqczYxeDcrREtSdHNhOTNPZDkwVkxt?= =?utf-8?Q?flKobiLpyFgOZUcjOZ7YjvSHw4+iWmquSo94dNo?= X-MS-Exchange-CrossTenant-Network-Message-Id: f82e8c16-cf70-4f15-cb8d-08d97da2114f X-MS-Exchange-CrossTenant-AuthSource: SA0PR03MB5610.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2021 08:22:08.0302 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jxwx+aTF73ovA/gYHZFT40uDNvvWyza1h+VCtGI90bpEYFFwJSO5V2eoOrp/lGK3/oaOBamNBIB/hA626cmPJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4015 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1632298949311100001 Failure to map the shared ring and thus establish a xenstore connection with a domain shouldn't prevent the "@introduceDomain" watch from firing, likewise with "@releaseDomain". In order to handle such events properly xenstored should keep track of the domains even if the shared communication ring cannot be mapped. This was partially the case due to the restore mode, which needs to handle domains that have been destroyed between the save and restore period. This patch extends on the previous limited support of temporary adding a domain without a valid interface ring, and modifies check_domains to keep domains without an interface on the list. Handling domains without a valid shared ring is required in order to support domain without a grant table, since the lack of grant table will prevent the mapping of the xenstore ring grant reference. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Christian Lindig > --- oxenstored will need a similar treatment once grant mapping is used there. For the time being it still works correctly because it uses foreign memory to map the shared ring, and that will work in the absence of grant tables on the domain. --- Changes since v1: - New in this version. --- tools/xenstore/xenstored_domain.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/tools/xenstore/xenstored_domain.c b/tools/xenstore/xenstored_d= omain.c index 9fb78d5772..150c6f082e 100644 --- a/tools/xenstore/xenstored_domain.c +++ b/tools/xenstore/xenstored_domain.c @@ -119,6 +119,11 @@ static int writechn(struct connection *conn, struct xenstore_domain_interface *intf =3D conn->domain->interface; XENSTORE_RING_IDX cons, prod; =20 + if (!intf) { + errno =3D ENODEV; + return -1; + } + /* Must read indexes once, and before anything else, and verified. */ cons =3D intf->rsp_cons; prod =3D intf->rsp_prod; @@ -149,6 +154,11 @@ static int readchn(struct connection *conn, void *data= , unsigned int len) struct xenstore_domain_interface *intf =3D conn->domain->interface; XENSTORE_RING_IDX cons, prod; =20 + if (!intf) { + errno =3D ENODEV; + return -1; + } + /* Must read indexes once, and before anything else, and verified. */ cons =3D intf->req_cons; prod =3D intf->req_prod; @@ -176,6 +186,9 @@ static bool domain_can_write(struct connection *conn) { struct xenstore_domain_interface *intf =3D conn->domain->interface; =20 + if (!intf) + return false; + return ((intf->rsp_prod - intf->rsp_cons) !=3D XENSTORE_RING_SIZE); } =20 @@ -183,7 +196,8 @@ static bool domain_can_read(struct connection *conn) { struct xenstore_domain_interface *intf =3D conn->domain->interface; =20 - if (domain_is_unprivileged(conn) && conn->domain->wrl_credit < 0) + if ((domain_is_unprivileged(conn) && conn->domain->wrl_credit < 0) || + !intf) return false; =20 return (intf->req_cons !=3D intf->req_prod); @@ -268,14 +282,7 @@ void check_domains(void) domain->shutdown =3D true; notify =3D 1; } - /* - * On Restore, we may have been unable to remap the - * interface and the port. As we don't know whether - * this was because of a dying domain, we need to - * check if the interface and port are still valid. - */ - if (!dominfo.dying && domain->port && - domain->interface) + if (!dominfo.dying) continue; } if (domain->conn) { @@ -450,8 +457,6 @@ static struct domain *introduce_domain(const void *ctx, if (!domain->introduced) { interface =3D is_master_domain ? xenbus_map() : map_interface(domid); - if (!interface && !restore) - return NULL; if (new_domain(domain, port, restore)) { rc =3D errno; if (interface) { @@ -505,7 +510,8 @@ int do_introduce(struct connection *conn, struct buffer= ed_data *in) if (!domain) return errno; =20 - domain_conn_reset(domain); + if (domain->interface) + domain_conn_reset(domain); =20 send_ack(conn, XS_INTRODUCE); =20 --=20 2.33.0 From nobody Sat May 18 18:58:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1632298959; cv=pass; d=zohomail.com; s=zohoarc; b=HxUoqmr3gWTGy3Y6LY2dJ5kzlApZsa27Sb0YcbPF9/wN/hPOjOow+0q0egg0Hts6NhHHQaMO74tWIxcM8iTDuY2Z2oclILZJ2HEczK3omqGECJLQFBSls4LOHo7LjojPNPzSwr0+O56BKFsTm/Nhwe+OsXRG+p7qJ7JH0EzjfmY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1632298959; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9tcyJZDVToONgtALKgRS3g/dMzuoFmclxk5371g7gig=; b=NmZVFXv3zVbq+efGyykQVGr8ZsMT8s8S1GsBsCoI6D9MxDoEo6DMxuNPqCT6hUiP74V5JYzEwuYQUu7EVGDWgpgY0bCQ9hqQCbPp3nGgg+nAI9wRG1I27K9Zm0x7N8TJTHLfke/5RSwtS05vXgbkLassOnc6u8RL5kbvVyQON/w= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1632298959490147.54513629634414; Wed, 22 Sep 2021 01:22:39 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.192248.342633 (Exim 4.92) (envelope-from ) id 1mSxWJ-0006RI-Oq; Wed, 22 Sep 2021 08:22:23 +0000 Received: by outflank-mailman (output) from mailman id 192248.342633; Wed, 22 Sep 2021 08:22:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mSxWJ-0006R9-Kk; Wed, 22 Sep 2021 08:22:23 +0000 Received: by outflank-mailman (input) for mailman id 192248; Wed, 22 Sep 2021 08:22:22 +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 1mSxWH-0005Fo-TC for xen-devel@lists.xenproject.org; Wed, 22 Sep 2021 08:22:21 +0000 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 31895ee6-1b7e-11ec-b962-12813bfff9fa; Wed, 22 Sep 2021 08:22:16 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version 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: 31895ee6-1b7e-11ec-b962-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1632298935; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=zAhiWJIs0wbl7XNVNT3P6InRVdgLDNm/3Htj620jk5E=; b=S4GPl0FEwGviTfW762IMygOPd+/uhC2iRHReN3S8kAZEUtmKVDhghhjF sMUHrPAp1XoSgQc8SGafJG6P164GeTSZ2ivrjqr+JFV/MHn+ufjIh7leY hFJkmnrqvL9DT4oHXkZ+vegiPCmtV8088oHOR33WeAsJLZomrZ/GF+G8X A=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: jZCjbM+N1sOj+WiRfQBGmrBCA4CGnbNwg35d1f+DKcKjXsfQlg8mowpP6A2UmtW7T6tCxabsfZ 5maHkjYWsiusJRqEmWOdvfUPw34twYeohmxYQoNie0c+UfUPo+hFY6VIy+vRP4mUKydZY1X32N zaaPP260vrHlKYXrceDjA6nQ8x2Vz2oNuHImx+QL4MRnhHBT4YgbnkpCeqwtqgobZXtctFmeHB y+yOSdYro/fBTXVONtYBd2wF14gONmkuOSYQek40ZYhktbS3bHyzIgihzeTtXMVXaNRTwSmnpV S4UhMCMCOJPhfuFOZ3b0HCZc X-SBRS: 5.1 X-MesageID: 53713461 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:h/Tv9auyTG9w8oMe8Op+7HtAdufnVLtZMUV32f8akzHdYApBsoF/q tZmKW+Ga/+KazT3fdkkb4W//RkO7MDdxoRqSAZt/i4zQioT+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHpJZS5LwbZj29Y524LhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Nplj5W1bQwgDqz2w6cDcztKVDh/PYZrweqSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DJoQQt2sm1TjEJf0nXYrCU+PB4towMDIY25sRRK2CO ZNxhTxHVTOaURETBEUrIq0jheiwpybCSzcJtwfAzUYwyzeKl1EguFT3C/LXZ9iLSMN9jkue4 GXc8AzRGQoGPdaSzT6E9HOEheLVmy7/HoUIG9WQ9PFwh0aI7ncOExBQXly+ydG7gEOjX9NUK 2QP5zEj66M18SSDXtT7GhG1vnOAlhodQMZLVf037hmXzajZ6BrfAXILJhZAd94OpMIwXSYt1 FKCg5XuHzMHmKKRYWKQ8PGTtzzaBMQOBTZcP2leF1JDuoS95tFo5v7Scjp9OJS8i/n+EAHx+ WvJsggclfIKjM4g+pzuqDgrnAmQSoj1oh8dv1uMBDv1sF8hPeZJdKTztgOKtq8owJKxCwDb5 SlawZD2APUmUMnV/BFhVtnhC11ACxytCzTanVcnNJ0o7T3FF5WLLN0IvW0WyKuENK85ld7Vj K374lg5CHx7ZiLCgUpLj2WZUZ9C8EQYPY65Ps04l/IXCnSLSONiwByCmGbKhzy9+KTTrU3PE cjCKpv9ZZrrIY9m0CC3V48g7FPf/QhnnTm7bcmil3yPiOPCDFbIGeZtGAbfNYgRsfLbyDg5B v4CbqNmPT0EC7agCsQWmKZORW03wY8TX8Gu95MPKb7dfWKL2ggJUpfs/F/oQKQ894x9nebU5 HCtHEhezVv0n3rcLguWLHtkbdvSsVxX9xrX5AQgYgSl3WYNe4Gq4PtNfpc7Z+B/pudi0eR1X 78OfMDZWqZDTTHO+jI8a5jhrdM9KET31FzWZyf1MiIie5NARhDS/oO2dAXY6yRTXDG8stEzo uP821qDE4YDXQlrEO3fdOmrkwGqpXEYle8rBxnIL9BfdV/C6o9vLyCt3PY7L9tVcUfIxyeA1 hbQChAd/LGfr4gw+djPpKaFs4b2TLcuQhsERzHWtO/kOzPb82yvxZ57fNyJJT2NBnnp/KiCZ PlOy62uOvMwg1sX4ZF3FKxmzPxi6oK39aNa1AltAF7Cc0+vVuF7OnCD0MRC6v9Ny7tetVfkU 06D4IAHa7CAOcejG18NPgs1KO+E0KhMyDXV6P00JmT85TN2o+XbARkDYUHUhXwPNqZxPaMk3 fwl6Zwf5AGIgxY3NsqL03JP/GOWI31cC6gqu/n22mMwZtbHHr2aXaHhNw== IronPort-HdrOrdr: A9a23:wr3VAKEqqBUDSQO8pLqFDZHXdLJyesId70hD6qkvc3Nom52j+/ xGws536faVslcssHFJo6HlBEDmewKnyXcV2/hrAV7GZmfbUQSTXedfBOfZsl/d8k7Fh5FgPM VbAtFD4bTLZDAQ56aKg3jHLz9J+qj6zEnCv5a4854Cd3AOV0k2hD0JdzpzX3cGDzVuNN4cLt 6x98BHrz2vdTA+adm6PGAMW6zmq8fQnJzrTBYaD1p/gTP+wA+A2frfKVy1zx0eWzRAzfML9n XEqRXw4uGGv+ugwhHR+mfP59B9mcfnyPFEGMuQ4/JlYAnEu0KNXsBMSreCtDc6rKWG70srqs DFp1MaM8F6+xrqDxeIiCqo/zOl/Ccl6nfkx1Pdq2Dku9bFSDUzDNcErZ5FczPCgnBQ8u1U4e Zu5Sa0ppBXBRTPkGDW/N7TTSxnkUKyvD4LjfMTtXpCSoETAYUh4rD3xHklUKvoIRiKq7zOSI JVfYPhDbdtAB+nhknizyhSKIfGZAV3Iv+EKnJyzfB9nQIm2EyQYiMjtb4id0w7heIAoq9/lp D525RT5cBzp/AtHNFA7Z86MLOK40z2MFvx2TGpUBza/J9uAQO5l3ew2sRz2N2X X-IronPort-AV: E=Sophos;i="5.85,313,1624334400"; d="scan'208";a="53713461" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CBeKqpKOkoDnnTv5ogE1Ik94K9FODESOmkdu/7i3cVnxJdyI2drJYrnNLJMwgqZatF3KxqkV/iPfm1j6twba9MEyuVD+6/7dKTurumodLosMbEp6KjEjNUfJGbhxnrtnmskhdNal0wWa307GOWoVKgK0MlLHXDL7tusN7LuaVyimCB5a1a5UDHw+D/osy42EXYarbHzoMvnkyK0WDh+ZWBAF+vDFPnZJ/Csya8Zn8nCjdkZ2iwCvRVCpSWG4Tpgrr3IUsJKZyhF3P76Pp5srUrgLtHhDrP/Pyhjvk1hU3idvY+5MdUCCt6BRmg8Vm4fEgtgyvpTv5HmYQaApcd//Vg== 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; bh=9tcyJZDVToONgtALKgRS3g/dMzuoFmclxk5371g7gig=; b=K39HAv+SkLpXc5vLGaOpkIfWMFxDA20beiCPlkEAy4hyHUz6/ajz14PIuUvkDUEs3yDzarRlCowrcDYrePsIHTA3T9VF90SHK8I9PwPe8i40GRBwvdTjLPGBFiCxxONV3U4HFpp+vbTiPl6Jt1dsohkbajXjBGCHGcdHwNU9f8wH6fOHkAjLf/9wAypSAShUANu7WSFAhSA8RfYlQGnH++bKt2H2JDih6KrCekXkPXTEGghBBpFkq4yMkzFPF5GcS0VRqAzw+aJTZoLeQ2iQYqxfnH8J8wkzAJu/nlXHUGcW2H4UAaL2mIjZgZV8QF3MQn4vCweAPJOWvfrE3yCSWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9tcyJZDVToONgtALKgRS3g/dMzuoFmclxk5371g7gig=; b=lpZQakppQw7z34vxRmWYjqq+CDq+ASwGaH/53/YJ1WJezdIY0E5SqkKtNqavmwnEhpS1ljDMnI2XzbsoDeQVhACZCVo9NUd/OfwrCwjdw9CfU01rbCPavC4yDt0yeq1ox8gwzQ/Jx6G1OJ1IogYfuADduJ/1asR+VTqIfBs5BJM= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu , Andrew Cooper , George Dunlap , Jan Beulich , Julien Grall , Stefano Stabellini , Anthony PERARD , Juergen Gross Subject: [PATCH v2 6/6] gnttab: allow disabling grant table per-domain Date: Wed, 22 Sep 2021 10:21:23 +0200 Message-ID: <20210922082123.54374-7-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210922082123.54374-1-roger.pau@citrix.com> References: <20210922082123.54374-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0110.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:192::7) To SA0PR03MB5610.namprd03.prod.outlook.com (2603:10b6:806:b2::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ba7b8016-b3dd-4ea7-4b30-08d97da213f4 X-MS-TrafficTypeDiagnostic: SN6PR03MB4015: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V5NPVDihWrMAPy8NDznUvuL396Fo+ZUrMqRTuVjMam7KW52N+KgTcxzFrVLev5CAuJvUIyPg820H/yyYxepJ3voDwjauX8yHX0YjMM+PTuuU8AAPM40NWw5EZ5kq10N7T1KgjpSVzdawIcRWCbKCkmkvUc1VwumvqNH/ZNZdrzjkwi0xmZrpjShb1FDLf4ubyr16EGlGOWUYNv1hoAgdfgrb4qeXYcykr7vJpMqXv4FAA+PVLFVgn/EIy5lGvIgwq7xGz9Bsvs0gQMZ6U9aMPCn49L+ZmPGtm3yTDNrnvHzzlO30L19S52aDTN3Dfw+wIgnSriHEdKNYqhhkMDEHb9aXrx+j7bGRlIMDRJvpzZ6vM/Sw0civgFnwnRVIEtTGkTN1VpzaXD3VvETnxxT7DzjwwgS2N/jL8vLuUSZaPVXmMQcNz/ltydnMqDUXExX30xtZmV1qx6/zPBLgARQ9XeIytQfuTjz98qWJigtE8u4pbCYW0ZX3ArHP9ju4uY1HE+obfmLCN+Z4POHlRklcgTvi5klhtsjb7AytqH6vxEMkm7XErkExxEOwiYuWkNOOoILRb3BY3U0gDP1XXd5g6j5zqU71i7gP95iN+48+rF1CE7WhBXaMOx5dsonTp2FwqZsLg9+6SRtcIRiTdnZteA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR03MB5610.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66476007)(66556008)(66946007)(4326008)(38100700002)(8936002)(186003)(956004)(86362001)(2616005)(8676002)(508600001)(54906003)(83380400001)(6496006)(26005)(6916009)(2906002)(6666004)(5660300002)(1076003)(6486002)(36756003)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q3gwMElBWVBrMmxDaWNvS0xjc01JeHRzQUNFWDhZeVYvTWRVSFErcDNBZWhK?= =?utf-8?B?MitHb2QycCtNV0lBTk5kbmtRaktSQjFlU1E5a2haUHVhS2gxR1Bma0sxRVYz?= =?utf-8?B?SVFmQk1hcmQyakg3V0diVHBsV0hwVVBUYy81bnljejF6SEt6STZRK3dMd1di?= =?utf-8?B?Z0d2U2ZsUXRKcnRwUDFJWUluTWNjYzlCUWVFdnhLZVM3Y0FBdUR1OUtoN2N5?= =?utf-8?B?RW9wY3gxUGNUMmFRdmgzNzh3UEJrRGNqN0ZaSnZyYjI4b0h0RGwrdFhKRklO?= =?utf-8?B?N3NFeXk5dmhCZnc2QjBQM2xsUTRFMHpCeGNUQ0hBckc1UTc5c3ozWmVwSFlr?= =?utf-8?B?NHkraVB4alM4Wk5HVm4vYnVxL2Fxa1dnazRoTmZyeTRHYUlxTU5iVnBIcUtT?= =?utf-8?B?YXRlUmcwVjFlazBpZi85UE16Ui9ML1M2WU1FWlgwT2wrMWFqMHVhUTRjdUhz?= =?utf-8?B?V3VYM1RyQ1hRYkhxV2Nncm1oZEdBZ2U1ZWI5MHJpUE1YODdTaHIwUlU5ZWk2?= =?utf-8?B?bS9ieHpjVEJ5alE4OTZaOGx2VkdoMzQ5cm1SYUJpalZBZ0V6WlBnTHFhcWdT?= =?utf-8?B?RTQ0dW16b2RnTHU0N0xTZnAzWi9sLysrbFVGWFJtbUJwVWN3Rkw5QnZJb0hJ?= =?utf-8?B?K2wya2JqU28xSlA2ZEErbFRtL04ydmtra09qMTc0QVRPbXNoTStqYWdKNTVw?= =?utf-8?B?ZkxJckRMaEt5d2t6dU50ajV6aEVmSkZuamFZRGhkM2gyMkJyaVRJUG01a3gz?= =?utf-8?B?NHRPTnk3MHFnTWw1MnYxU2xEQUtJcCsxTjZhU0paL2l5RnhuZ2dMUFZYaFBx?= =?utf-8?B?ZkdJR0laenNpNjF2RnRYaTAzR1BEbGxKejhxNnl0Z0U5UTFVSEYzVENVNksy?= =?utf-8?B?dHlnbFQvRmpEK0cxdzU5MXFwYSt1SmoxUFBCQ2pFOFRKNGZtYVF0ZUhOOHhK?= =?utf-8?B?bWFZSlNURTBFTG1xV2VhdHppclRZUXhxUkEzOEN5UEQwYkUwN1ZUZnBZN3dZ?= =?utf-8?B?TldLYVRhWkZxeC94OTF2TmdySURuTERhTjhab1J6OEdzVm9YK2hYZVB3WnJP?= =?utf-8?B?dDlVZk1BOHBYK3ZtMEl2MEovL2VURHdRVWE1NHBjQitoVDI3TENJY05NdkRv?= =?utf-8?B?cDJwNGdLY0FzRGcweVVvWW93RnpXTlFUYnVsNmJYU0xnSURTYlNVUzZCQi8v?= =?utf-8?B?WEpza2lTSjhSbWgrbXNaRm9ReXh4RlNCN2drbWJ5MXBab0Y5NFVTMU13bWx2?= =?utf-8?B?bllpdU9SS0l0NWhkdWF2S2Y4QTAxZ2dNcnhhV1RUaXdtK2gvNlA1aDVDMERx?= =?utf-8?B?aml1SFdQald2TE9JUmN5a0UyZXFmSTRoNS9adU92b2hrbUUxS0szMTVLZ0tk?= =?utf-8?B?Z3FSeHk1SGlTNGZRQmV4SEZDWFh6VEt4SGV6ZHZkSDNvZ3lxRWUxaDNTS2F1?= =?utf-8?B?RWNONW1oT0hFUlNzcEdEWnVxTjFOR1VnSWxCY3BCN1pRbUZJcndva0xEVTlR?= =?utf-8?B?OXpYT0ZYR3lpcHBTVEg2R0xjenpGUnVTMTRFYTk4Ylk5QVdxR0FaLzdxRnpG?= =?utf-8?B?V28vUmtKd0h0YmhNVm1UREhVaGtjMm1yVW40R29HRHp1UnFzWkg3QUl4SHFl?= =?utf-8?B?eVh4UkxQUjBaaUtDeklyK0U1V1BGN0QwNnBCTDVYcEh1SDEwMTE5WStSNWp0?= =?utf-8?B?UTFtTE1RYXhMTnI3QjRUbHFJTDdRY294UHp4VnpMZDByVjlhSktPVHlWZEZa?= =?utf-8?Q?cm5hSwZFPEc+P+dfmeiti1bI5gE/K/klYnrNCkP?= X-MS-Exchange-CrossTenant-Network-Message-Id: ba7b8016-b3dd-4ea7-4b30-08d97da213f4 X-MS-Exchange-CrossTenant-AuthSource: SA0PR03MB5610.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2021 08:22:12.4130 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: DKQBC9dv1cpFOoNwkvoWgw+1wHUeoSqDtL6/AizjGrpcIT0T7rTWq05rBfJaICSdzBhrOo6+nnYJ7Amft7Bt1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4015 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1632298959844100001 Allow setting max_grant_version to 0 in order to disable grant table usage by a domain. This prevents allocating the grant-table structure inside of Xen and requires guards to be added in several functions in order to prevent dereferencing the structure. Note that a domain without a grant table could still use some of the grant related hypercalls, it could for example issue a GNTTABOP_copy of a grant reference from a remote domain into a local frame. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Christian Lindig > --- docs/man/xl.cfg.5.pod.in | 4 +- tools/libs/light/libxl_dom.c | 2 +- xen/common/grant_table.c | 100 +++++++++++++++++++++++++++++++++-- 3 files changed, 98 insertions(+), 8 deletions(-) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index c5a447dfcd..d507540c2c 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -583,8 +583,8 @@ L. =3Ditem B =20 Specify the maximum grant table version the domain is allowed to use. Curr= ent -supported versions are 1 and 2. The default value is settable via -L. +supported versions are 1 and 2. Setting to 0 disables the grant table for = the +domain. The default value is settable via L. =20 =3Ditem B =20 diff --git a/tools/libs/light/libxl_dom.c b/tools/libs/light/libxl_dom.c index e9f58ee4b2..afc8b88497 100644 --- a/tools/libs/light/libxl_dom.c +++ b/tools/libs/light/libxl_dom.c @@ -598,7 +598,7 @@ static int libxl__build_dom(libxl__gc *gc, uint32_t dom= id, LOGE(ERROR, "xc_dom_boot_image failed"); goto out; } - if ( (ret =3D xc_dom_gnttab_init(dom)) !=3D 0 ) { + if ( info->max_grant_version && (ret =3D xc_dom_gnttab_init(dom)) !=3D= 0 ) { LOGE(ERROR, "xc_dom_gnttab_init failed"); goto out; } diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index f50e9f6a06..df01d03ce4 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -1027,6 +1027,12 @@ map_grant_ref( } =20 lgt =3D ld->grant_table; + if ( !lgt ) + { + gdprintk(XENLOG_INFO, "%pd has no grant table\n", ld); + op->status =3D GNTST_bad_domain; + return; + } handle =3D get_maptrack_handle(lgt); if ( unlikely(handle =3D=3D INVALID_MAPTRACK_HANDLE) ) { @@ -1037,6 +1043,14 @@ map_grant_ref( } =20 rgt =3D rd->grant_table; + if ( !rgt ) + { + put_maptrack_handle(lgt, handle); + rcu_unlock_domain(rd); + gdprintk(XENLOG_INFO, "%pd has no grant table\n", rd); + op->status =3D GNTST_bad_domain; + return; + } grant_read_lock(rgt); =20 /* Bounds check on the grant ref */ @@ -1367,6 +1381,13 @@ unmap_common( ld =3D current->domain; lgt =3D ld->grant_table; =20 + if ( !lgt ) + { + gdprintk(XENLOG_INFO, "%pd has no grant table\n", ld); + op->status =3D GNTST_bad_domain; + return; + } + if ( unlikely(op->handle >=3D lgt->maptrack_limit) ) { gdprintk(XENLOG_INFO, "Bad d%d handle %#x\n", @@ -1406,6 +1427,13 @@ unmap_common( TRACE_1D(TRC_MEM_PAGE_GRANT_UNMAP, dom); =20 rgt =3D rd->grant_table; + if ( !rgt ) + { + rcu_unlock_domain(rd); + gdprintk(XENLOG_INFO, "%pd has no grant table\n", rd); + op->status =3D GNTST_bad_domain; + return; + } =20 grant_read_lock(rgt); =20 @@ -1556,6 +1584,12 @@ unmap_common_complete(struct gnttab_unmap_common *op) =20 rcu_lock_domain(rd); rgt =3D rd->grant_table; + if ( !rgt ) + { + rcu_unlock_domain(rd); + op->status =3D GNTST_bad_domain; + return; + } =20 grant_read_lock(rgt); =20 @@ -1931,10 +1965,7 @@ int grant_table_init(struct domain *d, int max_grant= _frames, if ( max_grant_version =3D=3D XEN_DOMCTL_GRANT_version_default ) max_grant_version =3D opt_gnttab_max_version; if ( !max_grant_version ) - { - dprintk(XENLOG_INFO, "Invalid grant table version 0 requested\n"); - return -EINVAL; - } + return 0; if ( max_grant_version > opt_gnttab_max_version ) { dprintk(XENLOG_INFO, @@ -2056,6 +2087,11 @@ gnttab_setup_table( } =20 gt =3D d->grant_table; + if ( !gt ) + { + op.status =3D GNTST_bad_domain; + goto out; + } grant_write_lock(gt); =20 if ( unlikely(op.nr_frames > gt->max_grant_frames) ) @@ -2138,6 +2174,11 @@ gnttab_query_size( } =20 gt =3D d->grant_table; + if ( !gt ) + { + op.status =3D GNTST_bad_domain; + goto out; + } =20 grant_read_lock(gt); =20 @@ -2302,6 +2343,13 @@ gnttab_transfer( goto put_gfn_and_copyback; } =20 + if ( unlikely(!e->grant_table) ) + { + gdprintk(XENLOG_INFO, "%pd has no grant table\n", e); + gop.status =3D GNTST_bad_domain; + goto unlock_and_copyback; + } + if ( xsm_grant_transfer(XSM_HOOK, d, e) ) { gop.status =3D GNTST_permission_denied; @@ -2888,6 +2936,12 @@ static int gnttab_copy_claim_buf(const struct gnttab= _copy *op, =20 if ( op->flags & gref_flag ) { + if ( !buf->domain->grant_table ) + { + rc =3D GNTST_bad_domain; + goto out; + } + rc =3D acquire_grant_for_copy(buf->domain, ptr->u.ref, current->domain->domain_id, buf->read_only, @@ -3092,6 +3146,9 @@ gnttab_set_version(XEN_GUEST_HANDLE_PARAM(gnttab_set_= version_t) uop) int res; unsigned int i, nr_ents; =20 + if ( !gt ) + return -ENODEV; + if ( copy_from_guest(&op, uop, 1) ) return -EFAULT; =20 @@ -3270,6 +3327,11 @@ gnttab_get_status_frames(XEN_GUEST_HANDLE_PARAM(gntt= ab_get_status_frames_t) uop, } =20 gt =3D d->grant_table; + if ( !gt ) + { + op.status =3D GNTST_bad_domain; + goto out2; + } =20 op.status =3D GNTST_okay; =20 @@ -3332,7 +3394,11 @@ gnttab_get_version(XEN_GUEST_HANDLE_PARAM(gnttab_get= _version_t) uop) return rc; } =20 - op.version =3D d->grant_table->gt_version; + if ( d->grant_table ) + op.version =3D d->grant_table->gt_version; + else + /* Use 0 to signal no grant table. */ + op.version =3D 0; =20 rcu_unlock_domain(d); =20 @@ -3351,6 +3417,12 @@ swap_grant_ref(grant_ref_t ref_a, grant_ref_t ref_b) struct active_grant_entry *act_b =3D NULL; s16 rc =3D GNTST_okay; =20 + if ( !gt ) + { + rcu_unlock_domain(d); + return GNTST_bad_domain; + } + grant_write_lock(gt); =20 /* Bounds check on the grant refs */ @@ -3872,6 +3944,9 @@ void grant_table_warn_active_grants(struct domain *d) =20 #define WARN_GRANT_MAX 10 =20 + if ( !gt ) + return; + grant_read_lock(gt); =20 nr_ents =3D nr_grant_entries(gt); @@ -3953,6 +4028,9 @@ int mem_sharing_gref_to_gfn(struct grant_table *gt, g= rant_ref_t ref, int rc =3D 0; uint16_t flags =3D 0; =20 + if ( !gt ) + return -ENODEV; + grant_read_lock(gt); =20 if ( gt->gt_version < 1 ) @@ -4069,6 +4147,9 @@ unsigned int gnttab_resource_max_frames(const struct = domain *d, unsigned int id) const struct grant_table *gt =3D d->grant_table; unsigned int nr =3D 0; =20 + if ( !gt ) + return 0; + /* Don't need the grant lock. This limit is fixed at domain create ti= me. */ switch ( id ) { @@ -4100,6 +4181,9 @@ int gnttab_acquire_resource( if ( !nr_frames ) return rc; =20 + if ( !gt ) + return -ENODEV; + final_frame =3D frame + nr_frames - 1; =20 /* Grow table if necessary. */ @@ -4156,6 +4240,9 @@ int gnttab_map_frame(struct domain *d, unsigned long = idx, gfn_t gfn, mfn_t *mfn) struct grant_table *gt =3D d->grant_table; bool status =3D false; =20 + if ( !gt ) + return -ENODEV; + grant_write_lock(gt); =20 if ( evaluate_nospec(gt->gt_version =3D=3D 2) && (idx & XENMAPIDX_gran= t_table_status) ) @@ -4200,6 +4287,9 @@ static void gnttab_usage_print(struct domain *rd) struct grant_table *gt =3D rd->grant_table; unsigned int nr_ents; =20 + if ( !gt ) + return; + printk(" -------- active -------- -------- shared --------\= n"); printk("[ref] localdom mfn pin localdom gmfn flags\n= "); =20 --=20 2.33.0