From nobody Sun May 5 17:19:12 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=1631893658; cv=pass; d=zohomail.com; s=zohoarc; b=VX/5mb2ycUEYxedF1gX71NivNUXOgBXuIGRbCpYX9uHCi8wQaYvHPntMoMxFiqCqFxq69zZHSf5wwsiZ2Obth+nfcBMhvQjEYuIYD2+FAEFjkhIq0AWAXLSUDtveO+uFPCvPdEF/Yo9e5wDidtuhmTTWIT+ukJanwnz98wFyQ1o= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1631893658; 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=Bu0TMxjWbgiww8scS6K16pgJHFVz6vxT3LdI3IYuik0=; b=ftuqkZMPrEIAsLzAB+otnmh0NMU/7GZ3k2rBccBEAtluyTbAWCzdU999k1Hei8blI6DHgQK9qzPnVUFXa6z47Ql5sFBc+nIZC7MqJy6OBXtBAIBERDahdG+onzCs7zZF6YCNLkIIxEdNsszX+RdbK01w9BaLUk43nDZMrE1c+Qo= 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 1631893658132930.5213087122833; Fri, 17 Sep 2021 08:47:38 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.189499.339263 (Exim 4.92) (envelope-from ) id 1mRG4w-000766-Fe; Fri, 17 Sep 2021 15:47:06 +0000 Received: by outflank-mailman (output) from mailman id 189499.339263; Fri, 17 Sep 2021 15:47:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mRG4w-00075s-B0; Fri, 17 Sep 2021 15:47:06 +0000 Received: by outflank-mailman (input) for mailman id 189499; Fri, 17 Sep 2021 15:47:05 +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 1mRG4v-0006W6-BF for xen-devel@lists.xenproject.org; Fri, 17 Sep 2021 15:47:05 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 7ddbc655-17ce-11ec-b6db-12813bfff9fa; Fri, 17 Sep 2021 15:47:00 +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: 7ddbc655-17ce-11ec-b6db-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1631893620; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=1etlgP7mFsflfylfK61PxYqfdVOAtjgUkmrFPWOAfDA=; b=B/DH57/Bv7Qn/CdtFSMJ6FZiX6yYcLJR5Ef7TJWw4DZvYCi6ovG5JB48 faSnNcWHuQTyc6S/iLUynCEMaEDNcY6ej9xy8SNt0ziRN9nDUkgMn0KZa HRZbv60mYWfhprsVSf7/jQXNvCfGSSKby+4dNJ1MxPfShh88wvVG0UE0f 8=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 5f+G22Fki+OfZN26Pv7RKruV6RxMPHJj8Zb815KCJHFJKaoMw8qwbyHEi0mucEcrY657uV3RAp s/3EWfkSbLEqLBnMiuuqpIexW37AZrgrePdUBalU/HWbWtZ37nrp2hs3BkmzA5ZwwSg3vPh98z 4ROX338qrJguUkkUs1ojw1WAidVyh5nQ9I2fuoqwH9u1X5Y8LN6GLCyvsPFh5zagX7MSdtgTzH FeyJi9b00jyARX9L2Dizy7lMxm/4Q9vOok8D7PgCwclpdEk5Wq7VDRpGngKDHy7JXyoVb1bn/C /ZmisBWXuDKzKHXBo8Vh2phl X-SBRS: 5.1 X-MesageID: 52589406 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:pUYhq6nklf5B8/E/WBcZVdTo5gwuIURdPkR7XQ2eYbSJt1+Wr1Gzt xIaDGrTP/ffNGCjKtpyOorg909X7J7dn95jQARrpSowHyMWpZLJC+rCIxarNUt+DCFioGGLT Sk6QoOdRCzhZiaE/n9BClVlxJVF/fngqoDUUYYoAQgsA185IMsdoUg7wbdh09c32YLR7z6l4 rseneWOYDdJ5BYsWo4kw/rrRMRH5amaVJsw5zTSVNgT1LPsvyB94KE3fMldG0DQUIhMdtNWc s6YpF2PEsE1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXee0v0XRYRQR4/ttmHozx+4 Ml9rp6tZhYSBa3vlNw7eRMfHAhvJZQTrdcrIVDn2SCS50jPcn+qyPRyFkAme4Yf/46bA0kXq 6ZecmpUKEne2aTmm9pXScE17ignBNPsM44F/Glp0BnSDOo8QICFSKLPjTNd9Gpq25AfQa6AD yYfQWcsQzTCTBwTAHZJArYktej0j1fvKyIN/Tp5ooJoujOOnWSdyoPFMtXPfceRbd5IhUver WXDl0ziGQ0TPtGbzTuD81qvi/XJkCe9X5gdfJWG8fptjEyW13YkIhQcXlumotG0kke7HdlYL iQ89iMwoIAo+UesT927WAe3yFaGoxodVtx4A+A8rgaXxcL84hmbLngJSCZbb94rv9NwQiYlv neZktWsCTFxvbm9TXOG6qzSvT60ITISL2IJeWkDVwRty9vprZw3jxnPZs1+C6PzhdrwcRnvx xiaoS54gK8c5fPnzI3iowqB2Wj14MGUEEhlvW07Q15J8CtlVJWneqO50mPbzvp4CqyTCVaor WA9zp32AP81MX2dqMCcaLxTR+j5vKfUaGe0bU1HRMZ6pm/0k5K3VcUJumgveh0xWioRUWKxO CfuVRVtCIi/1ZdARZR+ZZ64Q+8uxLLpfTgOfqGJNocSCnSdmQnuwc2PWaJy9zu2+KTPuftmU Xt+TSpLJSxBYZmLNBLsG48gPUYDn0jSP18/oKwXKDz8itKjiIO9E+9ZYDNikMhgtP7sTPrpH yZ3aJLRlkQ3vBzWSSjL648DRW3m3lBiXsueliCjTcbaelAOMDh4U5f5mOp9E6Q4z/U9vrqZp RmVBx4HoGcTcFWacG1mnFg4M+ixNXu+xFpmVRER0aGAgSl7Pdn3s/dBKPPav9APrYRe8BK9d NFcE+2oCfVTUDXXvTMbaJj2tot5cxq3wwmJOkKYjPIXJMcIq9Xh9oC2cw3x2jMJCybr58Iyr 6f5jlHQQIYZRhQkB8HTMar9w1S0tHkbueRzQ0qXfYUDJBSyqNBne37rk/s6A8AQMhGflDGU4 BmbXEUDru7Xro5rrNSQ3fKYr52kGvdVF1ZBGzWJ9q6/MCTXpzLxwYJJXOuSUyraUWf4pPera elPlqmuO/wbhlda9YF7Fu8zn6454tLuoZ5czxhlQyqXPwj6VOs4LyDfj8dVt6BLyrtIgieMW xqCqotAJLGEGML5C1pNdgArWfuOiKMPkT7I4PVrfEijvH1r/KCKWFl5NgWXjHAPN6N8NY4oz LtzuMMS7ADj2BMmPszf03JR/mWIaHcBT78mptcRB4qy0lgnzVRLYJr9DC7q4c7QN4UQYxdye jLE1rDfg7l8x1bZdythHHfA6uNRmJAStU0Y11QFPVmIxoLIi/JfMMe9KtjrotC5Fil67t8= IronPort-HdrOrdr: A9a23:eVanpKD4DMFqoVHlHeg9sceALOsnbusQ8zAXPh9KJiC9I/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,301,1624334400"; d="scan'208";a="52589406" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NAuMLAZWBc1iFweknCy4RbD2zLvawFtieXRQYv1GlvDlki1U+lvTHV91yR+K1PKvZZCn4WYSWyaNa0cDTdWyQqMBYhxqa2e8xMGkMGi7f4Yy3XMHzRL4Z4rLYGfRkvKlMtMsNsVG5o1rn91JkEBcwn1sIfwxFz3A4PnRntME3FClP0CjUmQsYvFU96cHSV9hetYn6yZmTw0w/7NJtB/XD8sN/26MH225ecX2B4tvKP2Qojaww8GkihQSUFgMPjI/8zGViQmo7oW7g8K3auPSDrFYSyXk/8fJSSYM4VVKRgCjl8oSVfz3Ic5rc8hF5zM4HIBd23LvBc1wO1epT8zH0A== 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=Bu0TMxjWbgiww8scS6K16pgJHFVz6vxT3LdI3IYuik0=; b=kUMWcBVpt1t2b4klqTFfwLJ8Pv2kMS7GU13BB314Cm7Gs4Q4HrkMaZAgX7lWOV3EU0vQpIgldAkMJPq1h0kPr8DyVSkAyg5YUEFNrVpWUaJ+rVofqrVtCf29Lzwjg0CA69rhTR7W71pXgl/9Z0PvEzC4ZdTE2TOnV6VK0XHNRJa09KY6W6nDxe/0k6TzvtP+hXEYRG/hhnHDi1UvhcXJoDX1u41DZGkfSBx9hsN9bMnVkto04x3uYlT3lU2FPot3ZyfTAKrWb8iYfmxB3wkc01wSqpBIW+oGKRXxtUHG+oRG/aDrF+X/2IEJrhj7cEvnsi494+1j0rMJi7/jDS5uGQ== 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=Bu0TMxjWbgiww8scS6K16pgJHFVz6vxT3LdI3IYuik0=; b=MKeAI1VklbvZUZHIGTO50eMJxE8o2GFHE2+tb4/+UJ4EBMgfDsoDPpT3Pi5YdYvsCKPB0XAdCUI1b4SruBTB7OBYvTNfs7Z1kGKvBmzs3Sv4hANJ8QVBrZaKs3U0lIQqvbneG5vZu4u66d0B1RYNLePHZgARnH+9lhgdTBlE4J0= 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 1/6] gnttab: allow setting max version per-domain Date: Fri, 17 Sep 2021 17:46:20 +0200 Message-ID: <20210917154625.89315-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210917154625.89315-1-roger.pau@citrix.com> References: <20210917154625.89315-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0174.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a::18) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: de553a2c-7165-4c43-b22d-08d979f25907 X-MS-TrafficTypeDiagnostic: DM6PR03MB4057: 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: pI+Geo3HKY3FeSPmOcwH8O5Kbs7Ff39+UtD1jiHhx+OwoARP66WdbJ4mI9dHju3oRn81R36yc0icepko06kimHlQ/4VQlRk5ju56hqTNfp5tFXae3gny9od9tJCwqkb8gvn8F4VRc9zqDjhKGBjibHoBm3awp7GZOPQEoRcuyb9nv9bRq1c4iqtw0M+bb3+Pe00IfVZrO59JR/TJlDF+1N+/ZjLQWFApe05Rd/vpF565mfd4DC3wxae6vt0OItJD2n85D5VmdeIkQFG3Bsn8TWbX5okov+1FDEe2engchjOLABZHL9Xly7hjrn1TFIhzA7Dev10NoQrzLvm9bCTZMzBtAJ16fZd7Ycc/4ICO6zAyWAcQHsKcI42IAzzqR4yDOaP3SS8Lg7xrlqTZB1NIZnFHMspVWnyCC16+rKskz0y3ojNZpYvmeG7QFCezk3jK9dURvbWe4p85gE+XjtovT6Pg4I4WtUS79RHDn52R6g3f1yYR/9Q8u6nTm2H2iYtfy+ecKMhP9O6LS8PyT9GOQiPlgVkc8hOcpCT1v0tt12qifHi0LT/9KlcfXT7tYayw5FeuvsgW4IHnWECwu2cGu+yFjSAKKFAm5Iaz7yFe4g0ICpoMm/YgOoA4yJMqVuRNkw2pAojUCmvylLs/pYGqFw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(1076003)(2616005)(956004)(66946007)(66556008)(66476007)(316002)(6666004)(30864003)(8936002)(8676002)(2906002)(4326008)(186003)(26005)(6916009)(54906003)(6496006)(508600001)(6486002)(38100700002)(36756003)(83380400001)(86362001)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eFFVanIrNGE2aktmSXd5UTlMMXBZQWRIb3M5NmFPcHBBSk9TQkx1ZEUvNXFh?= =?utf-8?B?VlRacVorRXI5ODVzejNvZVFxbldFVnpRTXYwQzYvMkNBSEFqbUdQaHBCb2ty?= =?utf-8?B?R3g2bWpOWVFHWjNRbDJtalBEdEc5M0pZaWhqWGtiRnluOXhmK0tvM1VteGlC?= =?utf-8?B?UnA0d3c5ZUgvTzAzSlROVjBNNm9mWnJJc1d4VFBuTUUwZ1hURGN0NHZCQ3Nu?= =?utf-8?B?NGI0WGFwVUZ3a01OeTRHaW94RTd5OEpja2FIcVNGd3c2UjI0UzNsUFVhblRW?= =?utf-8?B?UHNySU05SEMwQXE1VUVzaWdVTlh5ZGNmN2twTU12RmdYY2RMZUQwVlVFd281?= =?utf-8?B?WlNpaE5Kbnl5VEJnTlNqbGhUNEV0aG14WFZ4YTRvUHgrQ3ljY0h2YnFOUWJX?= =?utf-8?B?N1JmSHdmeG04azVwUnpoaW44dnVRVEMvalFNU1ZCWTZYdmpnMDJZYjFzdGZq?= =?utf-8?B?ZGdBdDdCVWR2UGsrMDZJMHB6NVZScFB0bkRsdlEyWnlFRmRmU2ZQeVFHY3VO?= =?utf-8?B?MUV1TFlQSmpBTTQrQU0rYzg1bnVjWUZvOEd4ZlRyWld1TTFVNXZwRGJUM0E5?= =?utf-8?B?UDQyUUxZTlEyYzVNWlVyZFZ6eSszNG1rVm9zSnh2elJCeUtKcnhYa1pVczdY?= =?utf-8?B?cUJyc1E3d2pzTmtXZUxMRlBweHp5NmI2S1JRTEdMTXRKUFJUeUcyWjRNWGQw?= =?utf-8?B?RlFnMFpZZllUK3lHR3NLSGwrYk1MS21lOGcxbHdVdlpqTGxtZStlTnFna3Rr?= =?utf-8?B?SFFrckMwM2k0MExVamNXNTN5ZHdHa1BPVVNiME5PWFdHaHBXNm5ieU5jM2lv?= =?utf-8?B?aGdUT05DODZaUEE1Y2gwTnI5M2FabUppYW0zY0hQeVdyNVhuSzYybE95TStZ?= =?utf-8?B?RWI1b1lDbHhGVkxMYmN0SmY2UEJ3eDRyT2IvR0dEL1dFRzBLazIrSUdyMTdI?= =?utf-8?B?RW5NQXVrZDJYZDRSay9pTnFVWnQxMzlKeld4b21sT0Vubk1oM2RiemlFVmtl?= =?utf-8?B?aHdUUmdUV0JmZDlkOGlxQjBpQmxKRitkYks3VXVkU0JSS0lUdkp2NzJUaW9v?= =?utf-8?B?VjhjSXV5eTZ6Z2RDbTZneFVUTjhZOTB1Q1hCQjcvNnpiTG9FOXVOcGxzU3cr?= =?utf-8?B?YTRBcldkaGxzdGxwOHNpL1FZTEtLR0pFdUNndHpjMlRmRjYxd0RNVmFoN3ZX?= =?utf-8?B?SU16UkdtbFZzKzFKZnk3bDhxY2huWWEwRkx3bGEwOEY3ckZJNVlrTEgzY1F0?= =?utf-8?B?UWFPc3F6MGdQYi8xQ3daWWZJd2hhVWM5blk5aHQrbHlkeXNqWE9mVGJURGI3?= =?utf-8?B?ZmhnYXhTN0xQN3lzaXhrZUZ1dW15Ymt2N2p1eTVwc2YrdGhTWnlKdUxCQjdT?= =?utf-8?B?NjROcjgrTGpOTjFtTFdvS29mZlBKK2kvMXhDV3JyRTJ5TEN6VVZZd01odkdG?= =?utf-8?B?MzNRcy9JZ25acENxejNVQlFiQ3I3VGNzKzFrM1drQk9XR0JFTHhGSUxualVB?= =?utf-8?B?MjBQY1NyL1IzaTEvRWlsTEowd0JJbTVrUUt6UnpsRDhrckR3aUlUbGJCQ25r?= =?utf-8?B?RnQ1OGZDM2plWXlkcVc0YkIrb3JCTlFkYkszTEREZkZ5Y0trbmsxL3ZKNE1E?= =?utf-8?B?dG1ucko4TXd3aVBmeU1OcjIwVU1MSTVmSWQ2SzZkUi9VUWVRd3RRVXZ5K0lX?= =?utf-8?B?Tlo1QUxOQ3dha1Z2UVB4MU5zQXBpZXlxZTFSY0NLcDJVb1QweGlWNmVZVnh5?= =?utf-8?Q?WSYdp+lw9Wwo+TxkXcbBTqRKOsKy1ZBB2nIIeRk?= X-MS-Exchange-CrossTenant-Network-Message-Id: de553a2c-7165-4c43-b22d-08d979f25907 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 15:46:43.3742 (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: D6NtZZjRXxfc3ualrD4KL6juyTi9ZMvENLUXel/TlD6WNn/+uaXWIdaPLSijWnymNdS1WYs9/526DBpO+0gynw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4057 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1631893659745100006 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. Signed-off-by: Roger Pau Monn=C3=A9 --- 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. --- 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 | 1 + 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 | 5 ++++- 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 | 21 +++++++++++++++++++-- xen/include/public/domctl.h | 5 +++-- xen/include/xen/grant_table.h | 5 +++-- 19 files changed, 78 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..dae2b68f27 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, + .max_grant_version =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..69b5419416 100644 --- a/tools/libs/light/libxl_create.c +++ b/tools/libs/light/libxl_create.c @@ -606,6 +606,7 @@ 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, + .max_grant_version =3D 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..aad3c6a726 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,7 @@ 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), + .max_grant_version =3D Int_val(VAL_MAX_GRANT_VERSION), }; =20 domain_handle_of_uuid_string(cfg.handle, String_val(VAL_HANDLE)); @@ -251,6 +253,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 206038d1c0..e9a34f2f8d 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2484,6 +2484,7 @@ void __init create_domUs(void) .max_evtchn_port =3D -1, .max_grant_frames =3D -1, .max_maptrack_frames =3D -1, + .max_grant_version =3D -1, }; =20 if ( !dt_device_is_compatible(node, "xen,domain") ) @@ -2591,6 +2592,7 @@ void __init create_dom0(void) .max_evtchn_port =3D -1, .max_grant_frames =3D gnttab_dom0_frames(), .max_maptrack_frames =3D -1, + .max_grant_version =3D -1, }; =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 8105dc36bb..af69e20029 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, + .max_grant_version =3D -1, .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..0c85d89419 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->max_grant_version)) !=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 e80f8d044d..d01c6813d1 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,26 @@ active_alloc_failed: } =20 int grant_table_init(struct domain *d, int max_grant_frames, - int max_maptrack_frames) + int max_maptrack_frames, int max_grant_version) { struct grant_table *gt; int ret =3D -ENOMEM; =20 + if ( max_grant_version < 0 ) + 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 +1963,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 +3093,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..7f8456c50e 100644 --- a/xen/include/public/domctl.h +++ b/xen/include/public/domctl.h @@ -87,13 +87,14 @@ 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; + int32_t max_grant_version; =20 /* Per-vCPU buffer size in bytes. 0 to disable. */ uint32_t vmtrace_size; diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h index 41713e2726..d6da067fc1 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, int max_grant_version); 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, + int max_grant_version) { return 0; } --=20 2.33.0 From nobody Sun May 5 17:19:12 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=1631893651; cv=pass; d=zohomail.com; s=zohoarc; b=Iq8b2h9velPRkeb2Ho3lzsz85d6KjlQMhQw4bmKc5oyhKCy7pGSiEgwME63aBzXGit1GeiZQu13YJjGWYf4Fj/u88tp+D//s7ZPQkTyJLpVrRMG/97eYq72G9wuUJdJ4YXGRjMKbsWoBMeD+EUBAgY74mpe3xslNRcjPrZoU+9w= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1631893651; 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=oFmL7GXpSQBvcx3T6o/NI73rUPRPzWCG2d3RTcwysco=; b=XO1FfCNYFPajoHq6ANAMOxfIWARs+gWdId63pkUiYI+okc4SRxwTJZ9SLU4EUi5DBwXAn6lq0exqrbZghIxAhKA+92+qPJwj13d88RxTOghTE7shKLI8dM3Gbyr2aKslztjb6VC0orz4AAraWDBvnPZMZZxJWuBns5TYSG6d9x8= 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 1631893651417621.2603423238936; Fri, 17 Sep 2021 08:47:31 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.189493.339241 (Exim 4.92) (envelope-from ) id 1mRG4k-000692-OO; Fri, 17 Sep 2021 15:46:54 +0000 Received: by outflank-mailman (output) from mailman id 189493.339241; Fri, 17 Sep 2021 15:46:54 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mRG4k-00068t-Kn; Fri, 17 Sep 2021 15:46:54 +0000 Received: by outflank-mailman (input) for mailman id 189493; Fri, 17 Sep 2021 15:46:54 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mRG4j-00068c-Vs for xen-devel@lists.xenproject.org; Fri, 17 Sep 2021 15:46:54 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 6b0d47b6-8517-4a4f-8811-acbd96c09264; Fri, 17 Sep 2021 15:46:51 +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: 6b0d47b6-8517-4a4f-8811-acbd96c09264 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1631893611; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=mOE0yL5slFfYU8+bdX/AoH1hs+X1pgLMgHslV6f/8Xw=; b=W4CBNh7lJrOB3u1ogW3QWLwsc3djUiWjt/r8deIlSn5fXRdRDCiihkjK DH9PwAtL8j5caYbmtlEgl0r/DH9dV5z9MF5SaBE4SLivtCRyQ7SL0wlgn UH/pA86xCZJYNwknz4yHdOl7Cam1Y4SnSMExQnZBtJ5onbcP+EsObkGWz I=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: ww4bUqDkPIdjUfB0EqodsCtqGwj5JsHL672fvGGXY1Gr6GH01PqO9yF8DEzFqtXZ77S8y1oKQZ 9UzI5Fs4x8mENwM8jF9z7sOdRQ6w2nzMn6npXkgXBR7OSzvcp2mse9t6A/KcGWPLNapeXTaFDu HOC7k29itaYwSfFovaVyVPaLTFFbXx/SeUWCClfu17LXtGdeCJ1yM8t+x23GKfGY53YO5rYWfb EgMTWgMfSp8NwJlnceDkouwxltZAnTHuwgzkuEc2nLtmZ2BvYjr3EFTlK3GRxPwGfHIIjPTkyr nPzsGJEZYFzZobUmaMnmHDKn X-SBRS: 5.1 X-MesageID: 53016148 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:tu6asaywVcQXNIwMucV6t+ebwSrEfRIJ4+MujC+fZmUNrF6WrkVRm 2AdCm+EbveJa2Khe4snO4S080oH657Xz4diTQU6pCAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAsLeNYYH1500s7yrdm2tQAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt8w25 M5zub+3dR8SMp/gxaM6awVFTwgraMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVort4kI8TxepsWp1lrzC3DDOZgSpfGK0nPzYIDhG5u35wedRrYT +s0dTtxMSiRWhpCHVQeKbVuobiwxUCqJlW0r3rK/PFqsgA/1jdZ0rf3N8HOUseXXsgTlUGdz krd5HjwCBweMN2ZyBKG/2iqi+uJmjn0MKosE7m/+u9vkUek7GUZAx0LVnO2ufC8zEW5Xrp3J 0UK9wI0oKM19UjtScPyNzW6vXqFsxg0S9dWVeog52mly7XWyxaUAHAeSTxMY8Bgs9U5LRQ62 1nMk973CDhHtLyOVWnb5rqStSm1OyUeMSkFfyBsZQkP7sTnoYozpgnSVdslG6mw5vXqHRngz jbMqzIx74j/luZSif/9pwqexWvx+N6ZFWbZ+zk7QEq5qS9iWoKGYLCw0lTpwasHC76FUwWo6 S1sd9el0AweMX2cvHXTG7xdR+D4v6zt3C702gE0TsJ4n9i50zv6J9kBvmsmTKt8GptcIVfUj FnvVRS9DXO5FECja7N+K6m1At4jpUQLPYW4Dq2IBjaij54YSeNmwM2MTRXLt4wOuBJ1+U3aB Xt8WZz3ZUv28Yw9kFKLqx41iNfHPBzSIF8/origlHyaPUe2PibJGd/pznPXNr1RAFy4TPX9r I8EapriJ+R3e+zieCjHmbP/3nhTdiNTOHwCkOQOLrTrClM/QAkJUqaNqZt8K90Nt/kEzY/go yDiMnK0PXKi3BUr3y3RMSs9AF4uNL4ixU8G0dsEZwfwhyd7Ptbxs8/ytfIfJNEayQCq9tYtJ 9EtcMScGPVfDDPB/jUWd57mq4J+Mh+sgGqz0+CNOVDTprZsGF7E/MHKZAzq+HVcBya7r5Jm8 bahyhnaUdwIQAE7VJTab/emzlWQu3kBmb0tAxuUc4cLIEi8opJ3LyHRj+MsJ51eIxv02TbHh R2dBg0VpLeRrtZtosXJn62Ns6ygD/B6QhhBB2De4LvvbXva82OvzJVuSuGNeTyBBmr49L/7P bdezu3mMe1Bl1FP6tIuH7FuxKM4xt3uu74FkVg0QCSVNwymU+oyLGOH0M9Dsrx26oVY4QbmC FiS/tR6OKmSPJ+3GlAmOwd4PP+I0usZm2eO4K1tcln6/iJ+4JGOTV5WY0uXkCVYIbZ4bNElz OMmtJJE4gCzkEN3YNOPjyQS/GWQNH0QFa4gs8hCUoPsjwMqzHBEYIDdVXCqsM3eNY0UPxl4O CKQiYrDm69YlxjLfHcEHHTQ2fZQ2MYVsxdQwV5ef1mEl7IpXBPsMMG9Jdjvcjlo8w== IronPort-HdrOrdr: A9a23:vw842K92RLk/tJ5CrYZuk+FJdb1zdoMgy1knxilNoENuHfBwxv rDoB1E73LJYVYqOU3Jmbi7Sc29qBTnhOJICOgqTMqftWzd1ldAQ7sSi7cKrweQeREWs9Qtrp uIEJIOeeEYb2IK9PoSiTPQe71LoKjlgdCVbKXlvg1QpGlRGt9dBmxCe2Gm+yNNNWx77c1TLu vi2iMLnUvsRV0nKuCAQlUVVenKoNPG0LrgfB49HhYirC2Dlymh5rLWGwWRmk52aUIB/Z4StU z+1yDp7KSqtP+2jjfaym/o9pxT3P/s0MFKCsCggtUcbh/slgGrToJ8XKDqhkF4nMifrHIR1P XcqRYpOMp+r1vXY2GOuBPonzLt1T4/gkWSgWOwsD/Gm4jUVTg6A81OicZyaR3C8Xctu9l6ze Ziw3+Zn4A/N2KBoA3No/zzEz16nEu9pnQv1cQJiWZEbIcYYLhN6aQC4UJuFosaFi6S0vFnLA BXNrCf2B9qSyLeU5iA1VMfhOBEH05DUCtue3Jy+fB8iFNt7TdEJ0hx/r1Xop5PzuN6d3Hoj9 60RpiAr4s+PPP+W5gNctvpcfHHeVAlfii8RV56WW6XbJ3vG0i94KIfs49Frt1DRvQzvewPcd L6IQpliVI= X-IronPort-AV: E=Sophos;i="5.85,301,1624334400"; d="scan'208";a="53016148" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iMzcNMe9DMlYNt62q7HrlD5R66M7A9G1wYbYUJBSrqqKDQ7tQAzzV5j68B7FDCaD1pnmeFqOCeYsw7uHNmeMfa00oRlbi2m9ezUvQYwC3FSjEcrnMHpBf4dBIU6tFhCo4+vzQBsIL85UPNkSQBGhJuN7qT7yoK0gdizSe/H66ezxPyRGiDG4MABELN8v17uLVUowM84LfoZ1rcRv2AB3rlyWexyho8TamxvblxA68ZaeTrh4/VBgD6CnPM2j3bj7IAWbVp2TEKIT6ODXSy1TM8PIhb4vXjz8IHKSESlHYP+eLzWSe7wBYSo1zbv0iT7A5hgHx3+WT/Z3D8eZyoY5tg== 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=oFmL7GXpSQBvcx3T6o/NI73rUPRPzWCG2d3RTcwysco=; b=k+g/fVRac8eC8q7441bW4DXLl59yNar+fYEUgSbqJ77Ah9KaHzlTBxo4rr5TTl3K7CSvxZUosvxS504p427btXbkicho+fFRGHwuSNANDpc4l74Eje+zKD4thlbuFpf7rNk+qmD+RyW7bWCmmNCU36wn2JYpSAdKmxkwxImkiWcuHMr85AXdhD3eeDUoXCn3d+HQ1wl7ShIfnFwhUwF5yEeFIRX6QgmqY146nSw3JcKqdGX46jP0BJ1H+E4PUxWXvjeqzPD7l8FIbDv4W63T4DN4NwEYr3LswP1Ey1Y2uOumppWOKErs4aCL4UuCx8751u+fGR9BOr/6fi42wwtpdA== 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=oFmL7GXpSQBvcx3T6o/NI73rUPRPzWCG2d3RTcwysco=; b=E2xo1Px0dG9WOFt5myTACXHQxTDXJmMoQQVOjJ+6AC3dbgN5A349GT606AeRNqAOSNY4J8Pww6pB4JBFztcHfyGE4tEAQ6GKyRNtAinzm1ksI/ct9UwaQqt/WSpSGjAJA4koKDvXh64Qdc97TGLojQmRaoB/d5IVFpYuG5f7hQI= 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 2/6] gnttab: allow per-domain control over transitive grants Date: Fri, 17 Sep 2021 17:46:21 +0200 Message-ID: <20210917154625.89315-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210917154625.89315-1-roger.pau@citrix.com> References: <20210917154625.89315-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0279.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:195::14) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 124d820b-a3a1-40c6-9706-08d979f25bc3 X-MS-TrafficTypeDiagnostic: DM6PR03MB4057: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VSvtcpToyVj2OZyE4sDXy5RqI+toq05GBFmH0P/HhvfgfCuNAtxNU1uQv9oNWMGByuUwxXsLTVwR317t6JgUB6i4qUUuBOa8DCnyZTTuh8IXWALuAHLqFEZ4DQrSDRIMBv4VBurkoqHvo/85cZKhxC8dX6Iy2+k/cTpLAWY4OzvFTx3Do+ovjS72FR21jHvurP0utRHJJ6BY793XhjkwFXOBMLZPNa2q2gsWVxtuWUJc2eLTH8nZdc26P8qhAGBEHq10fRFJMLThXIsRL5bO9MtADwvWcktNbwVonSsZwErqySVI0Svn/yHxelMjLVMzCkD9HjoYo3Od1EQfWciq3qygKZs+HxDi4jOJ3mAeugT4bnouFX1+1NG7eknY+dTDG0bnmjsVsRBO7D4lpXC+uIefc+qY3CICwQla+I+a6lhUQFiNBJSIItR7itG05nCeKmyYP8HAtPjhy2zw8m4hXKULRGmXYZ9lU8j2ddB6EutCeQwfoFOhq2POJKqrzhKWZuPCy6y+RHlGWzaVCxqriVusiYkAv+ftuBx3o5ewuRCWijahgL4+3V73SkknBAF9n9XB7DgjCPf5amkLuvSddGwd1ZheN1I5ZNSgAJ+Lc0Ng1g8/tnyecHe5BF+gyedOgEg1wwwA085EAnCbu958ng== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(1076003)(2616005)(956004)(66946007)(66556008)(66476007)(316002)(6666004)(30864003)(8936002)(8676002)(2906002)(4326008)(186003)(26005)(6916009)(54906003)(6496006)(508600001)(6486002)(38100700002)(36756003)(83380400001)(86362001)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZDcwOGpkMUhjczlVTkVtYWM4SVF4Kzc0RUJ0TGxjL0s4eGJYSWI5dUhkM0Jw?= =?utf-8?B?V2VzTDBZQVdLelh3ZkQ4SWtCV3M1ZzljTWpNZ2d4ZnNleHNLWnZ5eFplTWVW?= =?utf-8?B?Z2FXVnh3c3ZaZXNOMFBOb0hOR2dSK2NyWXhEbXFWNU03ZE52NGpPb2dldlFm?= =?utf-8?B?bzVWVDFpRk5PaWhua0Qva3FCYVUwNW5ldU9nWG5OVUg1ZEUvcDhkMEJMZDVh?= =?utf-8?B?TC9Ic0lmN2xjUXpmbnQ5WHovbW84eXFDSURoSkdCVmJCWWNBQTB5L0hTNlJL?= =?utf-8?B?U2o1L2hPVlZrWWRkQ0YrWkJUSWoxL0xHeFlVYVdGckNyM0xNbUhBRkE5eHpl?= =?utf-8?B?ZUQvWEh0d3F2RnNJRkxNblA4N0Q1N2NCM29yOEduNjN5NExxMzg2WVlFbGd5?= =?utf-8?B?Q3NMTy8xUlJINjdEKzQ0RVFkSllJNVZCbEtuN3hXek9zYVpxMVhlTU1mczA4?= =?utf-8?B?ZzdPeW1tcmdCY2pacVc5OFRROVZncm91VzVJVGxVbUF5bEQ5a3hVdWNVY002?= =?utf-8?B?b1ZKSk5zSk9TTml1Q2JHZmpQeXdHUDNtalJucGpMeU1ZNGVJMTQwbFpaV1dt?= =?utf-8?B?cXpacFdwVmJnVXNUVytOZnpaMFhxK2ZBSFhVeWE5eE5VUklXRysxNnB3bGgy?= =?utf-8?B?cnAzRTdZR0t0OVRVbFV2M3p1Umw0Y1hsME5ET2FObTBJazE5LzRIYVVjamdQ?= =?utf-8?B?dzhTVEVKRDFEVm1kTFNnT29PYXJIbTF0aWpLazIwNlE5VEdhRlBNMW5Sc3pG?= =?utf-8?B?ZUZqMFBhQXU2TFUyZEc2NWgzMFJDMTMrNzdVZlZCWCtUTVp4a2xxQ0tGaWNu?= =?utf-8?B?SFpxcTdMYVpCRjFtaHBhRmwwbVk3ckd0N1FNTzcrMEwvQTVpQlJZTEtSQTlj?= =?utf-8?B?RXUwWE1FbjhobWhXRFFmSklBbUUxb3RXc0ZRNVdadWNLbU1GR2FRbkdaaHhu?= =?utf-8?B?b3pUSFNHRzdsdHdEZ09LVkcvQU83ZzFKUGVEYzJJM0tCbUYrSjFXQkF5VVBM?= =?utf-8?B?YkNOdGxCZU43aUxSd3MyNFNER2J4UnFZTmQ0R3VrajZpdmZkQU5NYU90WVBP?= =?utf-8?B?RzNqU2ZiMTVGRjhiYWQwWDR4bnRkeXNzUEtmMTJTbjUrbWVYNkFaQmFaeS9v?= =?utf-8?B?N3RtOHB5c2poQTJjc09oTktDeEZ5WVVDV0Z2YmpSQnBFRUdJbVRTS2dEYmRs?= =?utf-8?B?MEhkcU1KWjBBZ3poT3NWNU13TDBQcjRLd09oRU1kci9FbFQ0UC9kK0Vwdmti?= =?utf-8?B?RDFZY0M2ZTgwcW1rUjgvREp4Mm4wUUgrSGZ4d29hZVA4eHMzRWFLaGF4NWtI?= =?utf-8?B?MHFscmV4d09MWklnQTBOMGE1SDZvZVYzWVhlckxIaUExc2FWb0E1TGdBcmVO?= =?utf-8?B?REQxN2hoODRpUThzR0w0ZkVWK3hQVlJXZUErK0MxTHlQODg5MVdRSENCZG5k?= =?utf-8?B?STZlY0JDQWRnVFRTU0IwN2NIZlRTNDgwWUdQSkdhMWlFWWZ1d2F2V3U1Sm4r?= =?utf-8?B?MDFGTnZkK3gyVGlqbDVxREVwUko0KzNBSjRMTXZVOFdmTnhNUjBFU3lyQzU5?= =?utf-8?B?MWxGL1hBY0lTSndTOUdvZlkvenRtcnpvY3MyMEpTYlppWk1oZXFFNzNKeTh2?= =?utf-8?B?allBalExc2VVUXR4bkRobHc4eCtjZlFFRDdNMk5QbUlyZWhyM2JQb28xdm9q?= =?utf-8?B?eDkxaDNZMVpROHVZYmtjRkc0SXM3UFEyNDF6eWNtZkI3ZmN6eUJYZkFqOEdq?= =?utf-8?Q?Oy3XytBW5qFP28fRPYL/2Ia+E4+GVHkdS9xLGhp?= X-MS-Exchange-CrossTenant-Network-Message-Id: 124d820b-a3a1-40c6-9706-08d979f25bc3 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 15:46:48.2010 (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: ZO8CfCP9tEuLOREF4JL7gvprEA0FNkpzyWBMoPnoTJ6oo7gqNd9rI6NmrMO8TW4FqIwG6BETEld/wLL1O82wUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4057 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1631893653390100002 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 --- 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 | 4 ++++ tools/ocaml/libs/xc/xenctrl.mli | 4 ++++ tools/ocaml/libs/xc/xenctrl_stubs.c | 9 ++++++++- tools/xl/xl.c | 7 +++++++ tools/xl/xl.h | 1 + tools/xl/xl_parse.c | 4 ++++ xen/arch/arm/domain_build.c | 2 ++ xen/arch/x86/setup.c | 1 + xen/common/domain.c | 3 ++- xen/common/grant_table.c | 11 +++++++++-- xen/include/public/domctl.h | 8 ++++++++ xen/include/xen/grant_table.h | 6 ++++-- 18 files changed, 79 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 69b5419416..61d65d1342 100644 --- a/tools/libs/light/libxl_create.c +++ b/tools/libs/light/libxl_create.c @@ -633,6 +633,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..ec7a296776 100644 --- a/tools/ocaml/libs/xc/xenctrl.ml +++ b/tools/ocaml/libs/xc/xenctrl.ml @@ -73,6 +73,9 @@ type domain_create_flag =3D type domain_create_iommu_opts =3D | IOMMU_NO_SHAREPT =20 +type domain_create_grant_opts =3D + | GRANT_TRANSITIVE + type domctl_create_config =3D { ssidref: int32; @@ -84,6 +87,7 @@ type domctl_create_config =3D max_grant_frames: int; max_maptrack_frames: int; max_grant_version: int; + grant_opts: domain_create_grant_opts list; arch: arch_domainconfig; } =20 diff --git a/tools/ocaml/libs/xc/xenctrl.mli b/tools/ocaml/libs/xc/xenctrl.= mli index 5933d32c70..e47fd1947f 100644 --- a/tools/ocaml/libs/xc/xenctrl.mli +++ b/tools/ocaml/libs/xc/xenctrl.mli @@ -66,6 +66,9 @@ type domain_create_flag =3D type domain_create_iommu_opts =3D | IOMMU_NO_SHAREPT =20 +type domain_create_grant_opts =3D + | GRANT_TRANSITIVE + type domctl_create_config =3D { ssidref: int32; handle: string; @@ -76,6 +79,7 @@ type domctl_create_config =3D { max_grant_frames: int; max_maptrack_frames: int; max_grant_version: int; + grant_opts: domain_create_grant_opts list; arch: arch_domainconfig; } =20 diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenc= trl_stubs.c index aad3c6a726..772704759d 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_GRANT_OPTS Field(config, 9) +#define VAL_ARCH Field(config, 10) =20 uint32_t domid =3D Int_val(wanted_domid); int result; @@ -214,6 +215,11 @@ CAMLprim value stub_xc_domain_create(value xch, value = wanted_domid, value config /* ! XEN_DOMCTL_IOMMU_ XEN_DOMCTL_IOMMU_MAX max */ (VAL_IOMMU_OPTS); =20 + cfg.grant_opts =3D ocaml_list_to_c_bitmap + /* ! domain_create_grant_opts GRANT_ lc */ + /* ! XEN_DOMCTL_GRANT_ XEN_DOMCTL_GRANT_MAX max */ + (VAL_GRANT_OPTS); + arch_domconfig =3D Field(VAL_ARCH, 0); switch ( Tag_val(VAL_ARCH) ) { @@ -253,6 +259,7 @@ CAMLprim value stub_xc_domain_create(value xch, value w= anted_domid, value config } =20 #undef VAL_ARCH +#undef VAL_GRANT_OPTS #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 e9a34f2f8d..b4763b5ec6 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2485,6 +2485,7 @@ void __init create_domUs(void) .max_grant_frames =3D -1, .max_maptrack_frames =3D -1, .max_grant_version =3D -1, + .grant_opts =3D XEN_DOMCTL_GRANT_transitive, }; =20 if ( !dt_device_is_compatible(node, "xen,domain") ) @@ -2593,6 +2594,7 @@ void __init create_dom0(void) .max_grant_frames =3D gnttab_dom0_frames(), .max_maptrack_frames =3D -1, .max_grant_version =3D -1, + .grant_opts =3D 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 af69e20029..c743a88592 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -751,6 +751,7 @@ static struct domain *__init create_dom0(const module_t= *image, .max_grant_frames =3D -1, .max_maptrack_frames =3D -1, .max_grant_version =3D -1, + .grant_opts =3D 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/domain.c b/xen/common/domain.c index 0c85d89419..ab16c422f7 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -670,7 +670,8 @@ struct domain *domain_create(domid_t domid, =20 if ( (err =3D grant_table_init(d, config->max_grant_frames, config->max_maptrack_frames, - config->max_grant_version)) !=3D 0 ) + config->max_grant_version, + 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 d01c6813d1..280dbc850a 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; @@ -1918,7 +1922,8 @@ active_alloc_failed: } =20 int grant_table_init(struct domain *d, int max_grant_frames, - int max_maptrack_frames, int max_grant_version) + int max_maptrack_frames, int max_grant_version, + unsigned int options) { struct grant_table *gt; int ret =3D -ENOMEM; @@ -1964,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; @@ -2886,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 7f8456c50e..fe2201fca1 100644 --- a/xen/include/public/domctl.h +++ b/xen/include/public/domctl.h @@ -96,6 +96,14 @@ struct xen_domctl_createdomain { int32_t max_maptrack_frames; int32_t max_grant_version; =20 +/* Allow transitive grants. */ +#define _XEN_DOMCTL_GRANT_transitive 0 +#define XEN_DOMCTL_GRANT_transitive (1U << _XEN_DOMCTL_GRANT_transitive) + +#define XEN_DOMCTL_GRANT_MAX XEN_DOMCTL_GRANT_transitive + + 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 d6da067fc1..f264b1c3fc 100644 --- a/xen/include/xen/grant_table.h +++ b/xen/include/xen/grant_table.h @@ -36,7 +36,8 @@ 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_grant_version); + int max_maptrack_frames, int max_grant_version, + unsigned int options); void grant_table_destroy( struct domain *d); void grant_table_init_vcpu(struct vcpu *v); @@ -68,7 +69,8 @@ int gnttab_acquire_resource( static inline int grant_table_init(struct domain *d, int max_grant_frames, int max_maptrack_frames, - int max_grant_version) + int max_grant_version, + unsigned int options) { return 0; } --=20 2.33.0 From nobody Sun May 5 17:19:12 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=1631893658; cv=pass; d=zohomail.com; s=zohoarc; b=XtwhZstAsU/T63+85nj2azwsCeg70n6VJahCRZWB9iz9IUWFfPDz3WyTVIM6IcivK9o+/ZJCcgek07W+JXaA3CEyVi04/f0X3SzLQQ+84TASOpQJ/aA/xjgiFyc7jfo7vzJKSnfZpdTeHim0nfUHzfEOcy/lFbzw2Cq3fmSyjPI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1631893658; 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=P6No9nF8vaLlLWVxNdu1JhmKZDYGo8kkft5wXq/DnGc=; b=F/c6/GRmVBRHcW0ngso9mXuZDd27hiMiHqu9H/R80dI+TWEybF/g4ydS8zTb3WZwmBuR72if+p7eZwor1qkN3TFyEwY1M+8chw6nhv4lKYLrMKn/mu4yahhaZ+eRccq86s6QVLQybGmjf7IaKS1PPNYejrBsMwCJg8t8oqs8G9E= 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 1631893658001885.9656462382584; Fri, 17 Sep 2021 08:47:38 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.189495.339252 (Exim 4.92) (envelope-from ) id 1mRG4q-0006U7-4v; Fri, 17 Sep 2021 15:47:00 +0000 Received: by outflank-mailman (output) from mailman id 189495.339252; Fri, 17 Sep 2021 15:47:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mRG4q-0006U0-1O; Fri, 17 Sep 2021 15:47:00 +0000 Received: by outflank-mailman (input) for mailman id 189495; Fri, 17 Sep 2021 15:46:59 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mRG4o-00068c-UY for xen-devel@lists.xenproject.org; Fri, 17 Sep 2021 15:46:58 +0000 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 11889cf3-44ea-448b-97de-562d11ded3d2; Fri, 17 Sep 2021 15:46:57 +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: 11889cf3-44ea-448b-97de-562d11ded3d2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1631893617; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=xc5XifEQVsXnyl+ZbEPS5l0E4aBxZPLm3FQyJKAUnc0=; b=b0EmUgeoZhOOSWUxpQrluSmqoUoRA+lCRXNGOcQ1CIyMzjsv9cZndKJ3 FZQnHkQ6rXGoos5LKatC/7ZcJbjQmD3LaEmd+Ld7ct/oDmDV7TH0F7SXF 3xFousb9J+YZpJkxIiq+Kk+uf0DtSi9SG9Va8Q8WIRkAdrORh8v/rz41S o=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: pOxK3cjNsiCcsVk2qd0VoLNGC3qVs7nlM9GbjU0ETwP5mjDbCqV4JndzjiUQ9sCu1dJf8NRvfS bmB81hJyPB3xxKTJyfjU5PbYQbPfr1X210I0Ri+ExKC6P0c57RtfjXgwcT7j1TjJI4RFJYv89Y 54j6Wgzbmzgf1p11pR3c6SmAAo6rt7ti2eXq7Klo7QPwaKEtXNLOR1mBC1sOObscD0R2QlQxxq 5izpWvDR8FZNK/x+9xz3ZJoo3AQvauD8UZZ9bZrJlowkLg4LtUCYyWaXj+lu6fWNu+62GlsHQ3 c1/dATSiksu3SMK7tcCb78VC X-SBRS: 5.1 X-MesageID: 53410938 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:kVrkTq0Wkh0LjcACBvbD5eZ2kn2cJEfYwER7XKvMYLTBsI5bpzJRy 2IeDW/Ta/+PMGP1Kd8gbIzjoxlX7ZDVmoBrSAJvpC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCan0ZqTNMEn970EoywrFh2OaEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhso0yx oVrn7WLSDgUb+7Rut4cQwEFKnQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1EnMMsIdOtJIoCknph0SvYHbAtRpWrr6DiuIQEhW9h3ZAm8fD2R Jc8bQt3cx36bTpqfQxOEIIat+KHvyyqG9FfgA3M/vdmi4TJ9yRu1JD9PdyTfcaFLe1UgUSwt m/A537+ABwRKJqY0zXt2mKhgKrDkD32XKoWFaak7bh6jVuL3GsRBRYKE1yhrpGEZlWWAowFb RZOo2x38PZ0pBfDosTBswOQjSPHsE46cfNrEtIHuUKQ6JDV8x7EPz1RJtJeU+DKpPPaVBRzi ATQz4i4VGQ12FGGYSnCrebP9FteLQBQdDVbNHFeFWPp9vG++Nlbs/7Zcjp0/EdZZPXOEDfsy nihqCEkjt3/ZuZaiv3moTgrb9+qz6UlrzLZBC2MBQpJDSsjPeZJgrBEDnCBtp59wH6xFAXpg ZT9s5H2ABoy4XSxeMulG75lIV1Uz6zdbG20baBHRsF8n9hSx5JTVd8Ju2wvTKuYGu0FZSXoc CfuVfB5vcQIVEZGmZRfOtrrY+xzlPCIPY28Cpj8M4ofCrAsJVTv1Hw/OiatM5XFzRFEfVcXY szAL65BzB8yVMxa8dZBb71MieN0nn9umzy7qFKS503P7IdyrUW9EN8tGFCPcvo4/OWDpgDU+ MxYLMyE11NUV+iWX8Ud2dR7wYkiISdpCJbohdZQc+LfcANqFHt4U63awK87epwjlKNQz7+a8 na4U05e6Vz+mXyYdlnaNiE9MOviDcRlsHY2HS0wJlL0iXItVpmisfUEfJwtcLh5qOE6laxoT +MIctmrC+hUTmiV4CwUaJTw9dQwdBmiiQ+UETCiZTwzI8xpSwDTo4e2dQrz7igeSCGwsJJm8 bGn0wraR7sFRhhjU5mKOK7+kQvpsCFEyuxoXkbOLt1CQ2nW8dBne37rk/s6A8AQMhGflDGU4 BmbXEUDru7Xro5rrNSQ3fKYr52kGvdVF1ZBGzWJ9q6/MCTX8zbxwYJEV+rULznRWHmtpfenb ORRifr9LOcGjBBBtI8lS+Rnyqc35t3Oob5Gz1s7QCWXPgrzUr4wcGOb2cRvt7FWwu4LsAS7b UuD591GNOjbI8jiClMQeFIoY+nrOSv4QdUOASDZ+HnH2RI= IronPort-HdrOrdr: A9a23:SBrV2azKQmuU5hfoH25pKrPxv+skLtp133Aq2lEZdPULSKKlfp GV88jziyWZtN9wYhEdcdDpAtjmfZq6z+8L3WBxB8bfYOCCggqVxe5ZnPLfKlHbakjDH6tmpN 1dmstFea3N5DpB/L7HCWCDer5KqrT3k9HL9JTjJjVWPHxXgslbnnZE422gYytLrWd9dP4E/M 323Ls4m9PsQwVaUu2LQl0+G8TTrdzCk5zrJTYAGh4c8QGLyRel8qTzHRS01goXF2on+8ZtzU H11yjCoomzufCyzRHRk0fV8pRtgdPkjv9OHtaFhMQ5IijlziyoeINicbufuy1dmpDh1H8a1P 335zswNcV67H3cOkmzvBvWwgHllA0j7nfzoGXoykfLkIjcfnYXGsBBjYVWfl/y8Ew7puxx16 pNwiawq4dXJQmoplW/2/H4EzVR0makq3srluAey1ZFV5EFVbNXpYsDuGtIDZY7Gj7g4oxPKp gvMCjl3ocSTbqmVQGcgoE2q+bcGUjbXy32A3Tqg/blkQS/xxtCvg0lLM92pAZJyHtycegc2w xoWp4Y442mdfVmGJ6VMt1xCPdfOla9My4kD1jiVWgPbJt3QE4li6SHqondt9vaNaDh8vMJ6e L8uRVjxDYPR34= X-IronPort-AV: E=Sophos;i="5.85,301,1624334400"; d="scan'208";a="53410938" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YrfTnXCmYWfM+R0x/MdNBensOUWNPuBdEmzcz4b3LAgSH1udHnWKDMrCu1BG5WSSSs9rgA7unc+BFtgRpsF1OhsmtDIzm45G3L21O1k5nf0aVx9PN9n/zyRPYCp2Xz7l7sQhnxXtTxpRLWUZjReoXfM2fiiDq0FY+8Qv1JpSAOkH4y0s5pv0P2NFWkj4BdQTPoUAsBVH7OebrRAeNNsfIstxPOdQxMJ/s7J7Fsx/eC95cziM5kDXhd8BR2kSkqtqinoVYi2g+Spj1GoELzWF6FOPL5H9X6Tq5QZOj2R1MYJqNRD41+0vPZZ1UJNCo34Lev+5KzegKhXKomrW7UszOw== 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=P6No9nF8vaLlLWVxNdu1JhmKZDYGo8kkft5wXq/DnGc=; b=QZOm5UlHuVOLtEtJyTtlGa6rhHTP+M3FYYIJ92lj1DaXjxKWYIefz6e6MAmfH70Ng3nxu9968dKiyFlDkAgXD3jNw1I3n74YgKn3eQs1fBqQCSZaA5PaZfNup5fAG26ehJtdoaOFstdP23nxBXluzi+5lrtxe6PfiAcZwVTT2lDxanGgwWGFprFqM8vDn/XnwmFqCeHkwR9p9ii3PdufJ9efzQs6o5O2Ig/jDjvbsQMA8H/NkHB8XDLhW88mN+PZznToBDgujmf2QYC9sLPWe8rfC4kLghribmMW1tlaLZKTsxREm402PQaR9+55aBK/uQyAxNLw7PrShY5/EZsW7Q== 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=P6No9nF8vaLlLWVxNdu1JhmKZDYGo8kkft5wXq/DnGc=; b=Vle/hxLrbcpyANodfXK1dFKMtMO5qk+6W+9hh/de/Ser8O0gCr6yv3lunPI72aIIOg2MKNa+R+rs9weQlNw149vMOFzZsgKZNoRJ2wgitJt7ZW2GGoVD+ZMfsQ2BTDF8cBKueNbvZTi70h7r8zaFaEN/ShFPfAcmQeTCy44FRlk= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH 3/6] tools/console: use xenforeigmemory to map console ring Date: Fri, 17 Sep 2021 17:46:22 +0200 Message-ID: <20210917154625.89315-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210917154625.89315-1-roger.pau@citrix.com> References: <20210917154625.89315-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0243.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8a::15) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 51663f29-f51c-47d4-db21-08d979f25eff X-MS-TrafficTypeDiagnostic: DM6PR03MB4057: 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: +IP6b9WqtYY0BCvD0zGkG70xxa0sfnFZSFJt2lqxtZOE+q+bR7+nrm4J8TwNmhnmGvVqYoOGE9OkxiJ2reg2QiHv4x8oPZca/8prw4iAnoyDkLLnGRkNTCYD7Whgja1mZqBqETRUOrOtCfkNRf5mtWiw5/RG6ssBX8PSrZCDymixcPruAlUO1UUpOk8W6NTs+4ovb20EkHKxwviYXpaLFHVfeSwqS5GiKu9bYTH7hKlYYA02aEP8zFjb+2f04gpvAvENJmq0CHI2XoEbfwY8zTsE/ZqF/0oZDkyIiSUhEW+9cxOrGFdeE1xJwR5M+qkClw0xbAjm54laaV52PP40Zd3tivHGv05RRGB7bHu+K8E8xEJ8kuOv8Rf00IjuiKx1DbtWopfpwu6E369cz354nbOVZGFqgLGmj8IFn5HTjyvCjx/aKvIqkNfC3DxZgTnoCz7o2Vnq5oi0KCJL//RDBHO9S3cZzPcDFpXNJjj/vof3k1J7f5WEi+GBYGLsbOFh1DJ4uqKeojxSYuun3XOc6cI/SW5rF9xJE2Y4utQgr54BOXmo/vPibTU2j1MyRTMLa0nQmv1292rAQllqR56KMo3ZgBBE+l6+XUvcjfyD7hf+wfjEvAFErSA15ErvrK19zSzNWjavPbv6bGpIILrhvg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(1076003)(2616005)(956004)(66946007)(66556008)(66476007)(316002)(6666004)(8936002)(8676002)(2906002)(4326008)(186003)(26005)(6916009)(54906003)(6496006)(508600001)(6486002)(38100700002)(36756003)(83380400001)(86362001)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aHRaa0dZd0F5eTVVQlN3WkVHY1dxeVVib2RzK1hRVmZ2MHFVcVBod0ZEMjJr?= =?utf-8?B?eHBrN3VESTArblhLZEJQMmsxejkzQUZaU3FWNVpPL0VWUzI3SGhBZGlRaTh2?= =?utf-8?B?M0gwcWoySW1Ucnh0bmNqZXQraFM1cEt3amFMam5pR0llRTdWSmRudkRKcCt6?= =?utf-8?B?MjF3eWo1ekliUDdYNWZOampYbERmV0hxZTlxeTQ3QzJWSUJxYU9hdTBOMTha?= =?utf-8?B?enZkcDFqaWNCRkdTWld2dGxZbHczRkhHam5RSFVFenh2VDd3SzRjdm1FWmo4?= =?utf-8?B?clN5MGFaR2txWDA2cWZlQmxUUkNvYnRuZWVWZGh5VlgxOUtjYTFIUE02WDdH?= =?utf-8?B?NStFNTU3L0JGRUhET2tFSExVcStNN2ZFUCtiUVQ5bkNZL3NBbFB3TzZrOTNN?= =?utf-8?B?T3E5UEh1Snh0TDJaY2pVL0I1U0M4TmkxanpURTBTY3d5MVVZaVg1bTRHRUsx?= =?utf-8?B?VVJ3L3hsdzV3ZWkyb2d1S0VFN2dDRDBTOVZpSUI0dXE5djBtTHEwTm5iNXdO?= =?utf-8?B?eS9hZ2dOUU1rWjlYRmpzWXJzYlJ2ejdFZzB2VUJqbnlaUVI2NlZqTDNiOWFa?= =?utf-8?B?RFZReFYyNS82ajhGS2JidU5NdDFFY1U2Nys0dzJLVlVPOUN6QTVRVzU2N3Ji?= =?utf-8?B?TmZWdWd2WmZTZCtueXNlWHQ5eFFrUUFzVkZubkRoUEVMZXdUK2NJcXB1WEU2?= =?utf-8?B?QkNCeDdJSEs0RkNZRmwwc0ZqZFRJbGpIS2l2VFJ5ZHNTSUJXZ2ZOK1FzZ1gr?= =?utf-8?B?OXg5V3JmTWxhNTZTSjNwQ3IvaU5tUGR2c2RZZmNoUE5XVVM0WkRVaWEybVhJ?= =?utf-8?B?U1dESUpLKys1WHlFZmhTK2VFTW1aRzkzNGJ4NkpKQmNHV2NTSjhhTUdxbHVZ?= =?utf-8?B?RERzYi9ObGhKNllVcXZmemt4cUt5N2VPeTMvckZUUzl0VktrVUxXMG0wanZr?= =?utf-8?B?S0tCZEtnTFpNaUhUN0I4eERlREVNSk5DVXZRa1dFc01QZEJHQjV1YjY5NlRn?= =?utf-8?B?MkV1NTdGMDZBeFBPTHhKSkNDTlY1ZE43WmVOU1BqWTdqSS9lcDl0Mm9sQ2JL?= =?utf-8?B?TXpWSkNvV1hTaUdCVGh5WXY5K1VXc1l2UDFyK3JrV1pOd3dpczRxMk0rdEYr?= =?utf-8?B?S3dlbmQ1ZmRqRWIwRW52Y3dxVk8xZDdJQXBnaWpwemRaVmJhMHovYmx2VWtO?= =?utf-8?B?TlR1djd1QWJQa2JDUEdBRXlXTU1VdENvSURTd1dEY0VBb0xGKzZRalIxUzJG?= =?utf-8?B?WXJ4eC91Q1BKcmNHNzQ1dHFmbzBCNDViMDA0Y0tGWTloMUlTNGZ3MmF3dUo5?= =?utf-8?B?NkpiVXptdlpjWTJBZHFOU20wVjR5cE1IaVlWb1BsdGw2Y0lYN3VjdUorM1pN?= =?utf-8?B?M0FKYllPSFZOMVpHbGhoSGJEYzNUNHZyUm1XRlQwcVYwekYrRHp3bnlmaGtG?= =?utf-8?B?bS92aENPMTdLa1JESWNKZ0xCWFBrVW5YVkE0SW1EVEZUUjJXMXJIbE1iNkEx?= =?utf-8?B?MHdIaE92NkdNMFRMQkJ4NDI3SE96eHNPd3dmNEdLK1hnS3dXZUczL3l1ZWNP?= =?utf-8?B?aE5iak1ZSHFpZHpiMFJ3VitQNmlVTmJlTFl6WUNJL0h4U2NJekFHRkU0djRC?= =?utf-8?B?UFVEeFNJLzhzeVlmblhOTk9jRU4xNTdwSUtZRzFwVWlLQnhvZXpTVEpBMjI4?= =?utf-8?B?SHJ4UWhvL3NyL1ZLQmRXWjlvNHRiaEJma1B0eGM2MWJYNC9Md3R4N3FFelI5?= =?utf-8?Q?LLmaRa3nvc8yhR9Qky5RguCZBFPiPsW1P1E3zMk?= X-MS-Exchange-CrossTenant-Network-Message-Id: 51663f29-f51c-47d4-db21-08d979f25eff X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 15:46:53.4280 (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: F0woerLFdqsuRCe72mwIkSNYeJvsgP0s56UMCmMCybsjtimS/Ee49skWezQBYyo7JTXsY1HPOjUmxwpCPLiqWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4057 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1631893659570100003 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 --- 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 Sun May 5 17:19:12 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=1631893658; cv=pass; d=zohomail.com; s=zohoarc; b=USCyWsnSs/x5lGBRB4yx+AdfSZhkymsYvupStsrhWZOzAOYpOUfMaF1p6FOYeMUJzIFjYmXKmnuPTySYHjE2B/NKGIHcZkN6Cpeewtl20Jp+g8wx+wYAsOJoUcf7HblF9ConLU5IX5+Kxwt8Jt1+LtcgJRrZJNQVwbrxX9H0w84= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1631893658; 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=PD/IfqxTWeG2APbkwJ0yiHnyMtoPw+kS5Zi2MNtycSo=; b=X+Azn5iDZU1H4G38+3oDEoGSsPBlfx2uBKoJ/1IWLit9/nUYWaMCByoYYEnx+SCFSrAkuopL0EBrfZ1PHCiGT9FLKsmRjS86cKXqS2qE3h7BoUakjp3TOqLbyfbDJO15J7LDQFZhVdHQQFApWex0gBudpHEjXav/9YIHQ433/So= 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 1631893658985596.030609962635; Fri, 17 Sep 2021 08:47:38 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.189502.339274 (Exim 4.92) (envelope-from ) id 1mRG51-0007Yt-48; Fri, 17 Sep 2021 15:47:11 +0000 Received: by outflank-mailman (output) from mailman id 189502.339274; Fri, 17 Sep 2021 15:47:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mRG50-0007Yc-Uv; Fri, 17 Sep 2021 15:47:10 +0000 Received: by outflank-mailman (input) for mailman id 189502; Fri, 17 Sep 2021 15:47:10 +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 1mRG50-0006W6-BE for xen-devel@lists.xenproject.org; Fri, 17 Sep 2021 15:47:10 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 826b16fa-17ce-11ec-b6db-12813bfff9fa; Fri, 17 Sep 2021 15:47: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: 826b16fa-17ce-11ec-b6db-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1631893626; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=cW68oEJxhg7ruw/Wz/7ZZTJZ5IG09WPYChe/mZQXPdQ=; b=EDWsobZ1a1aq4AKTefkRmALj1Skr9u60fVd0fRP/kgadxVyBY8p7TjPk oeRw8WOUSeUlqEDcC+h1/FXlQSl20PnCJijsmQBmTn8M1X5KXMVCtEaZw 3qqTY6sXxN//YN4W5qgDAVsoIpgJeILKUgg1nhI0UQVRER70dCEmakIyn w=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: xItb0CioMwH5Zii2Prkp7bX2rdwRmY3bKzif0LdSjIujch0rlR42CfVRLl8apsOmfX3W2HJVQ0 vhcXVy8D1P5bQ51b8bApDdqO6k3NftypaBp3PuyHDkiTWeGs8wknPbFtv3EJ6sgUFCUZdHJNH6 QJy02e6xSpL1/8PfLGek9NQ5vwQ0quA5OQeycHeb8NMr55d9FMuw+KLokEp2D6X45P/hBOl3E7 P7WxaFBKIY3AzBPZQuAVCT1S2mi1sOxlJyUMolXJXaKArS6YyfW6+7+esMR1mJinvdc2ZViiXJ VJzLnk77rFSpBLAqn4JhewXO X-SBRS: 5.1 X-MesageID: 54784990 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:1VvuP6tZXAqzZ8MeXI9zlWjPc+fnVIJZMUV32f8akzHdYApBsoF/q tZmKWuAb67fMGuket1ybtvl90oD7ZaDxtQ2TAtl/CBjEXkU+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHpJZS5LwbZj29Y52IfhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Npl6p2xQzoMJKT1scskSkRcSnklE79G5+qSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DJoQQt2sm1TjEJf0nXYrCU+PB4towMDIY25wRTaqPN pJxhTxHbB/wSTdXAgYrCZcPuuCUtFnCYxxIgQfAzUYwyzeKl1EguFT3C/LXdcaNXt59hVuDq yTN+GGRKhMHMN2SzxKV/3TqgfXA9QvkXKoCGbv+8eRl6HWDy2pWBBAIWF+TpfiillX4S99ZM 1YT+Cclse417kPDZtjiXTWorXicpBkeVtFMVeog52mwJrH8uljDQDJeF3gYNYJg5JReqSEWO kGhwNLoDwFKqrSsYF2k7+qQ9GvpFzoVMjpXDcMbdjfp8+UPsalq0EmWHo0yQfbv5jHmMWqvm GHR9UDSk51W1JRShvvhpTgrlhrx/sChc+Ij2unAsotJBCtCbYi5bsSD7VHB5J6sx67IEwHc4 BDodyWYhd3i7K1hdgTWG43h/5nzvp5p1QEwZnY1RPEcG8yFoSLLQGypyGgWyL1V3iM4ldjBO xS7hO+szMULYCvCgVFfOtrsYyjV8UQQPYu8Da2FBja/SrNwaBWG7ElTib24hju2+HXAZZoXY M/BGe71VC5yIf0+kFKeGrdMuZd2l3tW7T6CGvjGI+GPjOP2iIi9EuxebjNjr4kRscu5neki2 4wOb5fVk0oPDrKWj+u+2dd7EG3m5EMTXPjeg8dWavSCMkxhHmQgAOXW2rQvZ8pumKE9qwsC1 ijVtpZwxAWtiHvZBx+Nb3w/OrrjUYwm9SAwPDA2PEbu0H8mON794KAafpoxXL8m6O08kqIkE 6hbI52NUqZVVzDK2zUBdp2h/oZsQwum2FCVNC2/bTlhI5M5H17V+sXpdxfE/TUVCnblrtM3p rCtj1uJQZcKSwl4ItzRbfajkwG4sXQHwbogVErUONhDPk7r9dEyeSD2i/Y2JeAKKAnCmWTGh 1rHX09AqLCU8YEv8dTPiaSVlKuTErNzThhAAm3WzbeqLi2GrGCt9pBNDbSTdjfHWWKqpKj7P bdJz+vxOeEslUpRt9YuCK5iyK8z6oe9p7JeyQg4TnzHY07yV+FlK3iCm8JOqrdM1vlSvg7vA hCD/dxTOLOoPsL5EQFOeFp5P7rbjfxEyCPP6fkVIVnh4H4l9bWKZkxeIh2QhXEPN7ByKo4kn b8stcN+B9ZTUfb23gJqVhxpylk= IronPort-HdrOrdr: A9a23:E7TCM6zPfimGcrC7Ey+MKrPxv+skLtp133Aq2lEZdPULSKKlfp GV88jziyWZtN9wYhEdcdDpAtjmfZq6z+8L3WBxB8bfYOCCggqVxe5ZnPLfKlHbakjDH6tmpN 1dmstFea3N5DpB/L7HCWCDer5KqrT3k9HL9JTjJjVWPHxXgslbnnZE422gYytLrWd9dP4E/M 323Ls4m9PsQwVaUu2LQl0+G8TTrdzCk5zrJTYAGh4c8QGLyRel8qTzHRS01goXF2on+8ZtzU H11yjCoomzufCyzRHRk0fV8pRtgdPkjv9OHtaFhMQ5IijlziyoeINicbufuy1dmpDh1H8a1P 335zswNcV67H3cOkmzvBvWwgHllA0j7nfzoGXoykfLkIjcfnYXGsBBjYVWfl/y8Ew7puxx16 pNwiawq4dXJQmoplW/2/H4EzVR0makq3srluAey1ZFV5EFVbNXpYsDuGtIDZY7Gj7g4oxPKp gvMCjl3ocSTbqmVQGcgoE2q+bcGUjbXy32A3Tqg/blkQS/xxtCvg0lLM92pAZJyHtycegc2w xoWp4Y442mdfVmGJ6VMt1xCPdfOla9My4kD1jiVWgPbJt3QE4li6SHqondt9vaNaDh8vMJ6e L8uRVjxDYPR34= X-IronPort-AV: E=Sophos;i="5.85,301,1624334400"; d="scan'208";a="54784990" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fPrljNJuUzlaiE3uB7BySX4ZgGxchSW3zB/SUI87DnmM4V2i/ve1V5LJUNGL7YgQDM6MN5wSOmk3e6RlmPS9QwoFjcr7TYvegKJWro4H0kqMHhzE+Y8PXuYZmFTVm8d4GVIOeVSQtHoBBzpuX1QpgjkC8RwNonP1hw8RKtqvScUtQedFYu4bjzs957A0463RgUJaVPIktlbKi6sDIhh8e3NKsJfSM/ukZx9vRkNnJFRIPtW7mj6FjmAiRP9RXJYcmNxAcZ5M5s/1KQv5LSAKabtyosn5r6pqIR1uiTD48Dn3nSP6lPZ3P06cRsrXJjr/gYtwvS1wNUhJcaDRVq7rbA== 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=PD/IfqxTWeG2APbkwJ0yiHnyMtoPw+kS5Zi2MNtycSo=; b=h4vL46bJUIRvTbg8xpKGn7bRQo64FPPVSslmKMhEMiAF8NH9Mb42S2v/0rqzYGXQr5AtqgO5pQnoSs23fRjpxGXz4NVU8hrMpvY0BG+A9QPqe8cabewtXOBEaJEdWioK7YcpjXZMkN3zumz6RgEkhJjzzSlHRjFVWUpRn777IsfgZnCBqxSuZ86mK8gGsqlArnpOicfYvTFIRA1KlqZ22P9O2Vm6b6T+oZs1kz6slSaakkoKcJZcSNZPr19ze456wud7S+Q5WAA5bdxD1vEoUH6wgFyzGPh7gFTe5jLqGdJJB0mTttinuP18fH/J9JLVEk5WZbxWZgi9LrG37CnyUA== 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=PD/IfqxTWeG2APbkwJ0yiHnyMtoPw+kS5Zi2MNtycSo=; b=m3kTSLDzfO7UgZuI6VMI+XhP63NJQovDXRrvdJEhI2BWuDvdBjgw7oIY/yM2DS3+cIP0UprQHfPo+SVqpexnNmeDrEznHzfVKvWZ7slcKmumhecgSwJYlGggtw6rBKugAvsiZV7UAccdduA4mwzG4kSfpqQEEFfQksPPXckNv+s= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu , Juergen Gross , Julien Grall Subject: [PATCH 4/6] tools/xenstored: use atexit to close interfaces Date: Fri, 17 Sep 2021 17:46:23 +0200 Message-ID: <20210917154625.89315-5-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210917154625.89315-1-roger.pau@citrix.com> References: <20210917154625.89315-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0415.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18b::6) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d2de9c44-070a-4d21-4c1c-08d979f2622e X-MS-TrafficTypeDiagnostic: DM6PR03MB4057: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3826; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OTZ/QHx/pBtUWN3R32f+OFxoi37zvv5PVbCqVR0ZLI/M9FcJKBfXz1BWV+46XSMz8njvmk7J9iwdk2jcz7ftLgd2eXzCuMowWzqEYrYw26scAF5R68IbX2q9/k5w2VzxQg/3fVeiC9sRctdcnu5+E93LhyGOa91syHL7m9njtZzOP32G4hu9564ZHchC+kGmXeI6kQFgkcNu8BXm64LJRvXgoevjE0+kBaC870YOO9Y9eHmcKnPTkditQ6dZ1y1Czeb8KI+uECqxXBC5K8ditWsRfrCGukejv1XMPkNqluzHwTp1WabATkKyt9KosKf0oUed63SHon/1aR/pIWBDq+TEhKDiT+Kec7+rDpX3myxfZE4dVgI4/XU+QGX/jJLteC3FtzQW8cD+jMX61n+qilPprtH/oRh6unBPz9XeeL5Kkx5fHOZaqZgB3sBgGexHDWKt7wyUwwhgk+AmmCV43Kn0XxS295CADF8i4mETA/CAvklfXusdolPTPEnun2w6v8nesQ30ecJBpK4JUMyp2kjowCw5YfjJrXmIdHG2cUrorKDZaQC+fMDw/8yuPVIIwGaB3EtNz9XVcu+BnMrSxCRWsIjsrcIIOgILJUcLuLZ5BPSPh8fu1pJyAGbn7yXqknScxLmkyjb2tTacOWoORw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(1076003)(2616005)(956004)(66946007)(66556008)(66476007)(316002)(6666004)(8936002)(8676002)(2906002)(4326008)(186003)(26005)(6916009)(54906003)(6496006)(508600001)(6486002)(38100700002)(36756003)(83380400001)(86362001)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cjhYUkRGU0MyZjRUOFE2RTJac1NLL1VGMVI0cW5PelpZTzdZby84ZG4wY283?= =?utf-8?B?VDF3NDVJNDBHMFZPbjBJUHhkenFlZXlkbklPQUl2YWF6WVdlNmhIalRiWjhD?= =?utf-8?B?QnhzbGw5OXg5VTJrYjZRWm1IZ2JzZHJkM0dsWXJZZzUxMWM4WWFqbU80akph?= =?utf-8?B?aU5sRm1rU21JUjMzeFlwcXRUL0gvME1VMEU3KzhiRlFxUFBYY2VsN2RvSnZx?= =?utf-8?B?ejZ2MXg0VXpQbmJ3dU5LS2lJL3lIOVRZYXNIVXQ2TGV0V1BVSFRTd3JlVzNj?= =?utf-8?B?RGttemtCRE12VTlUd21qdGtxcWpIZWJPMXBXRWIrZFdTSmNkdEp4a01wam1u?= =?utf-8?B?dG1pOHdNT1BWaXl1T0RrRU9ZQlVsZEZKNWRiYlVqZnlKa2RML00rcjRSYVRN?= =?utf-8?B?QXQvNVdJU3dZbWltaVJSbGJaZjRsdEdwYVVNRklYVy84ZTJxVzRkMmRqb25z?= =?utf-8?B?L1B1Slp0WElrZ0U2ZjlFNzBZMG82dytvb3NSWjJwUDBablVYR2VXSzgxalNs?= =?utf-8?B?N2ZlVjlSSDFNdHVMSDczQmNWbmwzaEZsZTdxUUR5ZkhZZXBHYWJWQS9hUDZv?= =?utf-8?B?Tm9yS3BPbnQ0QVNRSmFqUVNWMEhBU2VXc1hGc3FtanNMamZ0NTFGYnFkTXkw?= =?utf-8?B?Y3NIa29VWTdoM3ovS1B5RWgzeTdYTWl2aEcyalVjdDEvNXM2azJZRmZ2Rnpo?= =?utf-8?B?N05Pb05FeVQwcjJvSFVIekNGWXVRZnpQVkY0OVQrV21RYVVZSlFhK3U0aHJK?= =?utf-8?B?YW9jMFExaVViVVdyWHZ4ZGVVWER2aXpTMjgrWG9laUVoYUlNdE02ZXpJNk9Y?= =?utf-8?B?WEV5WkRCM3ZnSm82a2lMQk5yNWpZeGFBUHF6aHhKNnBmcGhsU2x1ejNOS0Ju?= =?utf-8?B?Y2V1RUp3VVo4RXpKMTV6Ukc3VDcxVkJiRk44L1Nscnk4NDhudXdubEpZMWE0?= =?utf-8?B?ZStxSTB0M2thR1VkUEpRaVFvNkdVTUVtcGpjYVQwcjFMYVM2TXBCckdWbWl3?= =?utf-8?B?TmMvbklxZGhTQURES2ZsNjM5UjRISHJ2UUFaTzhYL3FDZ29iRUxWRmFoQ05y?= =?utf-8?B?dGpPTkZaajI5K1BhSkozait0QVE3RmpaVXRIOWE1R00wOXZCRGVxUHYzTEkw?= =?utf-8?B?V2ZUQWlZbnZ1czh3WEN6enpJcWhoeWRWZXVCaUtFbzM0alFVelZIc2MzMnJu?= =?utf-8?B?dmlMZ3NHQzViNGFaV205endnZ2tGdlB0eUxvVU1QU3FQbStjTXllR29rSlRT?= =?utf-8?B?RE13MmZYc2czZktjNlFZYXloYUhRdlNUcWhNMnVhSkwzUjVDVXNYS0JNM040?= =?utf-8?B?TE1WcWY1RXdNTjZlb2wrVUhuamhBaEVxTTdORVB3YmNNOEx4dVVDZzIxb0xV?= =?utf-8?B?Q3kveVZEN3BleWZ4bWxKOXZ5RDE3bEsxNDNvZjROcTRFc1I5VkQ4Tk1XZEhy?= =?utf-8?B?RGFmWUlZL0R5eHNodTV0OFhDTWRGZk5GZHhpZDlGa0l2R1NwSUt2MHIxUm1w?= =?utf-8?B?Y01tWW1iMGR2NXljZ25NRVl1K1VQZHh5SU5tWTFhMVZBbGp4T2lhSXgyaFlM?= =?utf-8?B?dFdFUGh1d2xXeXB5ck8yZ1dSelFDWE5Jb2hkVDA4V2kwcVFFL0NsNENjVjh1?= =?utf-8?B?elFBT0txL2ltRVo2dGZLaWtlN2t2MzlVSzNrTFZRSUJsaC8zdndDaktnZENi?= =?utf-8?B?bktzd2dKdjJKakxTalpwYzBucjdtY3I0NHFIaGg4Y1ZYK1N3ekFZYXFEaXRz?= =?utf-8?Q?Xu2Z635D5HLPdFXC1D0O/ZjNQIjrua9ey3hB479?= X-MS-Exchange-CrossTenant-Network-Message-Id: d2de9c44-070a-4d21-4c1c-08d979f2622e X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 15:46:58.6929 (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: DmsC/IgnDRv+SzLndDcxq1N6dIs2mgYBIwBPWehRmFqaS0vbg/ld5qFtVLd8s5chucux5+C864q6EUTE3hgEDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4057 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1631893659713100004 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. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- tools/xenstore/xenstored_core.h | 2 +- tools/xenstore/xenstored_domain.c | 57 +++++++++++++------------------ 2 files changed, 25 insertions(+), 34 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..8930303773 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,38 @@ 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; + } +} + 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); --=20 2.33.0 From nobody Sun May 5 17:19:12 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=1631893663; cv=pass; d=zohomail.com; s=zohoarc; b=H9smt0BT41thfJv/Hha/bS4xOzsNHneVDp10t8nkCTEWClPPp9iUjzEC8vWP5cfupvBn9uoi5QDO3Ab2NXZ3xQpuKdwQussPIXoRkWxTbfkDW57XcGnUQ4NaCQavmVdOD3S1Jx5/nljSZV87nJ8zd1IEqfmX+IywSuCz3IM9Rko= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1631893663; 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=ODViCmJYnKpIZT6ta/bzfRMYz5jZaA8JqNXfGiUOkig=; b=Oz7yOQBNJEsou/JMMC5N3Z+HIRgbjBNJ/Lo7is2Gwm4Ja3CRldqcKsNcTxDLYaO9AtzAFt4wCZu6riRkuJhSInzrWzyQgVoITszkB8imBJSU0ISYunQSXli7mZpq+uE03gHNyQjHU60805bgya6TsxWVUQdxfXIm7XffXgjNrl4= 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 1631893662980325.5343945566092; Fri, 17 Sep 2021 08:47:42 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.189504.339284 (Exim 4.92) (envelope-from ) id 1mRG55-00082j-Ed; Fri, 17 Sep 2021 15:47:15 +0000 Received: by outflank-mailman (output) from mailman id 189504.339284; Fri, 17 Sep 2021 15:47:15 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mRG55-00082R-AS; Fri, 17 Sep 2021 15:47:15 +0000 Received: by outflank-mailman (input) for mailman id 189504; Fri, 17 Sep 2021 15:47:14 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mRG53-00068c-V6 for xen-devel@lists.xenproject.org; Fri, 17 Sep 2021 15:47:14 +0000 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id a040cada-593e-4371-9c63-1d06627651ef; Fri, 17 Sep 2021 15:47:07 +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: a040cada-593e-4371-9c63-1d06627651ef DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1631893627; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=8yaSBJfS4uBB9CmxQZt73y0W3kku5w3/WtdaE+LvS9c=; b=gv+pTvZeWfWw29hMFNISOvI6h8ZTuZHGF2cn2g7SQBcYJ90MRrqavERQ nlliqexqskgULnKIlvDrzQ2v9CV0N8rkPXpyq7Hf4ZbKboqSYzUeNvLBv xtr9eU8S4E1F4RUFZY/Irl/VZThPyLMw/SoTJE9SRUXitMHeItB6cb9tT E=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: EmJ3mxN3nx6zzStBk3fTRuwk7pnO7KwmLP0B2u8QxQXnQ51V592DGCTH2sRhkYhlmxJhZR1KBn omw1YMRBKrFaM3R8PUeLPqCM8uJNZOV6a02ZOffodFAisS1GHCq8ns6Jo6HGvKMUX3HHgTPr9d PZHuDzcsl7MvIH3qOIgiIQhdT4ie2FTKOtMHEO1XHn7cyFQhpARIL90EI6mEOCG05XTLvqNZ7z ve8bumARwld8WapcgTsCzhmeLinps8Uo9F4BoXdzUpHEsKQMHwm91Mpot3vaWJzaKnlYENLTce W8QWfSe0NT14qHLrw1j34oLc X-SBRS: 5.1 X-MesageID: 53410957 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:3Pnbz65wYTCpQmsHDM4yFAxRtOzAchMFZxGqfqrLsTDasY5as4F+v jFMX22PP//fNjOkc4tyaovi8khT7JPTzN43HldvrHs9Hi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVIMpBsJ00o5wrZo29Ew27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z6 /Ngn5CcRzcQGKzpibRMaUJZAi1YIvgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALNs7kMZlZonh95TrYEewnUdbIRKCiCdpwgWxs35gfQKm2i 8wxTwNUXRTiPj12ABQ4EckVxcqToUKkSmgNwL6SjfVuuDWCpOBr65DvP8DSYceiXthOkwCTo Weu12bkBhAXMvSPxDzD9Wij7sfQmQvrVYRUE6e3ntZ6jVvWymENBRk+UVqgveL/mkO4Q8hYK UEf5mwpt6da3E20TPHtUhugunmGsxUAHd1KHIUHBBqlk/SOpVzDXy5dE2AHOIdOWNIKqSIC9 Xmktd/FCwxWlrywWCLMzOyVvD+UJn1ARYMdXhPoXTfp8vG6/tpq3kmeH445eEKmpoaqQmCrm lhmuAB73u9K3JBRj81X6Hia22rEm3TfcuIiCuw7tEqe5wVlbcaOY4Wy4DA3Bt4Rcd7EEjFtU JUC8vVyDdzi77nWz0Rho81XRdlFAspp1xWG2jZS82EJrWjFxpJaVdk4DMtCyKJV3iEsImSBX aMukVkJuM870IWCNPcqC25ONyja5fe5Tom0PhwlRvFPfoJwZGe6ENJGPBXLt10BZHMEyPllU b/CKJ7EJS9DVcxPkWrnL89AgORD7n1vmgvuqWXTkk3PPUy2PyXOF9/o8TKmM4gE0U9ziF+Eq 4oAb5TalUo3vS+XSnC/zLP/5GsidBATLZv3t9ZWZqiEJA9nE3smEPjf3fUqfIkNokifvr6gE qiVVhAKxVzhq2fALAnWOHlvZKm2BcR0rG4hPDxqNlGtgiBxbYGq5aYZVp02Ybh4q7Azka8qF 6EIK5eaH/BCajXb4DBBP5Pzm5NvKUawjgWUMiv7PDVmJ8x8RxbE88PPdxf08HVcFTK+sMYz+ uXy1g7STZcZaR5lCcLaNKCmw1+r5CBPk+NuRUrYZNJUfRy0ooRtLiXwiN4xIt0NdkqflmfLi V7ODE5B9+fXooIz/N3Yvoy+rt+kQ7lkA05XP2jH9rLqZyPUyXWunN1bW+GScDGDCG6toPe+Z f9Yxu3XOeEcmAoYqJJ1FrtmwP5s59broLMGnA1oEG+SMgauA7JkZHKHwdNOputGwboA4Vm6X UeG+997P7SVOZy6TA5NdVR9NunTh+sJnjTy7OguJBSo7SB6y7OLTEFOMkTekydaNrZ0bNsoz OpJVBT6MOBjZs7G6uq7sx0= IronPort-HdrOrdr: A9a23:GHULGqq7icN6S65es1HxuPEaV5u6L9V00zEX/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,301,1624334400"; d="scan'208";a="53410957" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gJP/gv9BZcBvmv3vrYTwxXY4zUImWbh5MbXJz1n0j9jdXM2hcCbVHCdl+0laV8EieWioyw0RCSKuA+Q0H5e32NLVqN0TlRnt8VYj7p+zaoCaK9OUexC2kGa62aMXtQ2miPnBk2fpRdEUCI6qThc/kfjfyjuwadzQMwYpm5yMmSqOZe4vrRY3ghvL5fcm/L4hr2QHnWNo3uCxigj18eP9nTFuDMwMoYLqk938avRkNPO5ki17EbGmSpyH1XzcS9o2g8AJzVqqvRO52X5AD0agSy15IC3gFCLwYODAabOomk+odtXDj3FpQGaygxHTwKgr6EIHiHsuQYWkrmbdzLgM7w== 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=ODViCmJYnKpIZT6ta/bzfRMYz5jZaA8JqNXfGiUOkig=; b=jPzNrGxDY1wy9FTQdtSiC1MqrQMqWyrrvdYuY3/xsQOvXuQU/b07v8I3RTq92Is6m4am0eAPl3br7JVrpCisBvJ5U7ycqmChW6CdQAFDC0l8FKY528N5il3T1wyaJ/3vR2UF2h7cpIDvjrEBOKyaXXI4lcp5OU9ufEIsp6TT1uUlSGNGrGQz22Bvn2S11DVpeoaNgoig6zFx9N3Ebmu3wwE9v//jadcGrjmZDowzuwI5F6qdzKngOCKFhrEdndV1I9ZP7oIw6nG5QzkBD/R6aIf98BF2Mg9Dexjf8slLvnXiXkIYAHHEPBRS8Yf1D68ShRFqOw0zVkNlgZXKRFnCMg== 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=ODViCmJYnKpIZT6ta/bzfRMYz5jZaA8JqNXfGiUOkig=; b=gFHgp9xe/umT5196u6fsHKnMDL0VZEayKmXoRPEEfD5tKTV0yVuU1pRjL8RmDQ0jiDNuNzZBV9xmlLHZgVDkyOS6G6EjbOWWGEuU+UKzZyz9AvqFk8H2My3oI31G/UNHxI7SywmnYmxYfXK+vGq1l3/8POBYAl+SCZ/Rt1W/sVc= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu , Juergen Gross , Julien Grall Subject: [PATCH DNA 5/6] tools/xenstored: restore support for mapping ring as foreign memory Date: Fri, 17 Sep 2021 17:46:24 +0200 Message-ID: <20210917154625.89315-6-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210917154625.89315-1-roger.pau@citrix.com> References: <20210917154625.89315-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0148.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9::16) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f94f4209-069c-46ed-38ae-08d979f26567 X-MS-TrafficTypeDiagnostic: DM6PR03MB4057: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9NR5mG7bGcEpi2nyflGUVC9ZRtjpY5LvZbSOvBHOeOlj2eGwZmQSqf/G+48ZRrWvuRkAJl4YBFpuCPsPxRdkMgqco3JaC4M4kGzwJw8saTgpmH3PfEge6zk9BdxEXtm/OVLhj0yUeZ4ttl0XIi4+1dwtnFOhh22Kljhdw3LZnCZVFXkgq+5S2goGFDpTCVkQB27Pzt+CsSNYzPPSm+k6Ttg6NFeTkS2h3tiW70oFeKZM2JEwHmVzqgCBveKARwxObfSerb+cVbz+dfOiJAiXEi9E9MO9uzajdELiGSpkV0UACk2ZvFc2zEiKUPuPmbiILvZ/YXgl5oVVhltD/hSofgA1OiXaVBcM06t8GcpZc6Ar8wWrF1blqIZVXrmW5TxJO8LPITahTCNZeWOB59yLZiLlHWeWFGakdUS8jq4lh85GLPUwh7pryDs+jaxyko+8PpVXNZ15b681eEkOJ0eR5IIph7R77vMZM5/A3K23Izq69JspH5M9z5PpYTfUPxvMJXcHjGWxXoUco/4HO0X5Aoj+khJht7eRWf6gKZ7TN4kmZV8dY6woFWLUObRnnVZ31uZ/EdnGxj+K40lBUG3nIoCBv2RVOvPP80E0Ddg/tFw7Gr41Z2CZqciQNP7velw7QeBwTrUy3oMPeXWXGGD5NBeLG22bUHISH4dhm87NbsBUrXlTdu3A9jTGY9RUbJop4QB3ftwQ3EC9pWfcvJI7Vw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(1076003)(2616005)(956004)(66946007)(66556008)(66476007)(316002)(6666004)(8936002)(8676002)(2906002)(4326008)(186003)(26005)(6916009)(54906003)(6496006)(508600001)(6486002)(38100700002)(36756003)(83380400001)(86362001)(5660300002)(309714004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZmNGN2VOd0FncGRYdUhxZ1ExWUR0VDBYMWRJSVBMUGJXSi9XcC94VWhaczRv?= =?utf-8?B?RWNkNHF2TkZTb0x4U243OHpNZ08wdnVBbXZPMFJxN08yK1RVbnVOWkN5SzJT?= =?utf-8?B?L3l0WGUvdUZid0hVMW5XZ0Jtb2lDL2kxMHBsSE5Cb05KdWFxM2lGN3V1ZmZh?= =?utf-8?B?enF6dWJsbGNkcVppaUFUeDNRQVU2VWIrNlhOMzFYYlVha2s5STF4aksrZnEx?= =?utf-8?B?YjRlakcweVNUMVZtL0VxSTM3UFcwelMzUWd3YTN0cGxNZWJQL1ZSaHREYWhG?= =?utf-8?B?bFY3YlJwaW94RmRFcnhMY1BPd25tZm1mTUZ0SzdrVFFaT0dIUEhVaU13TG1T?= =?utf-8?B?d1F5WWFMbTQvS1Bsa3hxcHhXSWVzcTlXaGIxT2ZGcitleS9UZEo3LzFtTEhZ?= =?utf-8?B?S0lQTGp5UGxVYXYzaDJ6dkRRdzBEMFZwYkZxL0t3ZjFzNjhhaXU1cnY0ZUxq?= =?utf-8?B?OHNqTzZpKzB6T0hEankvbmllWHpYVFZackI5WldjVnhOOCtBT3JObU5qVXhI?= =?utf-8?B?c2dXWSsxZjFxUDdnL3pjbnNlNDU1TnczQm9wOFAzUkxxQ3BpS205cmhkUFpp?= =?utf-8?B?Y3JSL1ZqZjUwcWxLTXlSK1VlcksxK3hJZlJkWk1ZUHptZzhta3NzaE5vMVU3?= =?utf-8?B?TnE2SDhpRW10MEdNaU90MVdITVh0U2lMZmhLTWlpNW1QTWZCMllVVi9ra3Z3?= =?utf-8?B?TEJabDlRUUJyT05QSVQwb2tVSHdpN3FBRHdJd080YloycHVCOUJWY3VqTHhS?= =?utf-8?B?Y0czUGk2NS9hcWpWRU03QVNSZVkrUmlESTRIWEhhcmRaSU5rNGVCaWRlelZO?= =?utf-8?B?RXpGMTFwRXNDcFNxZHQ5Tzd4U3lqRVR5YU50ZGQwVWpHaXBUQ2RXZTN6dUhK?= =?utf-8?B?QzFmejdMSHNjaWRtRDcxbGoxZXhFWjIxWlJDbzZsRGFLSlNOaWhTRFd1VEJW?= =?utf-8?B?eHZJVTRSdHJ0bWFibFZKYUpYOUpFVUJvbjZLYXhUWVRPbnhmNUl4TUhvNmtr?= =?utf-8?B?RkxsR0xDSWJCYmg3NDJxTU0xSXNlbXA0V1VGemlkZEJObktQQ3JZQUlDV2JK?= =?utf-8?B?MWZPNEhTL1R0WUlNczBGK0hlUncvUWUyYkMyTGt5WWNWbVZtd3Nab1hjaFEr?= =?utf-8?B?VFExdDdPS1daNExPbFhTMVFIcXRKcG0yTWdpdy9rNWU4SVJ4dzNXVlhtRUx1?= =?utf-8?B?em5KcXphazVMMTNGWFNLQlpONkdwN29QdWVsaHlFRW81ZEtwamUxZ2p0RHJt?= =?utf-8?B?UnFRZENRclpIUmVMQ3JvNjAyTmd6RitRV1dSQ29OUllvWHdmZzgyU0dybG1h?= =?utf-8?B?ek1Pc05YNzU0L3MvS05VNWFxL2VqS3JZQmRrbmxiL3pkOFRsVjFTOUpSZEl1?= =?utf-8?B?VDkvVFlyOEwrRmU1UUpqbG9mOExGUmo3bjgvSmVuaVBVb1JMN051dnZsUE1O?= =?utf-8?B?UGkxZWdmY2F5Q3hDak90ZVRvTnJ6eEhCa1ZFSmJLU29qb1J0TVFkTnp4WXQv?= =?utf-8?B?bHpLV09kSGs5d0hFa3F4OGJ3YmJYM0hrUituNGtwYmNDaWp6aklxMm9za0h3?= =?utf-8?B?SnpPL2NYLzU2cEJ2cEV4MGtCNEMxTmNZN21DYlRqdjNUN3BhK2MyMzRaS0l4?= =?utf-8?B?WnNhNE1TMk1YOG5SY1hWRUJDcndiMTZHSVcvMzdmLzM4dGtHVWhvWktxN0h0?= =?utf-8?B?dHhUNXZrOU9acGRnbHgvVWJzQ1dsaFhZaG9nTDdSVU1tQmlLSUQ1L25iRlRF?= =?utf-8?Q?XPT9cdnrStLfuGIE5EowHg03ZMRk9pCXGQIhsAQ?= X-MS-Exchange-CrossTenant-Network-Message-Id: f94f4209-069c-46ed-38ae-08d979f26567 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 15:47:04.1160 (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: 5MZKf3+IwtwmBdpfSJTqDvL035q0mNj6+6N34pm0VNYMawg0AZZdZJenSB5SigB/Fmh/1K7B6RLnSSJpdniqfQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4057 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1631893664221100001 Restore the previous way of mapping the xenstore ring using foreign memory. Use xenforeignmemory instead of libxc in order to avoid adding another dependency on a unstable interface. This in turn requires storing the gfn into xs_state_connection for resume purposes, which breaks the current format. Note this is a preparatory patch in order to support the usage of xenstore on domains without grant table. This not only allows xenstore usage, but also makes things like "@introduceDomain" events work when using such guests, otherwise the mapping done in introduce_domain fails and the "@introduceDomain" event won't be signaled. Signed-off-by: Roger Pau Monn=C3=A9 --- tools/xenstore/Makefile | 4 +- tools/xenstore/include/xenstore_state.h | 1 + tools/xenstore/xenstored_domain.c | 69 +++++++++++++++++++------ 3 files changed, 56 insertions(+), 18 deletions(-) diff --git a/tools/xenstore/Makefile b/tools/xenstore/Makefile index 292b478fa1..9a9f7be5cb 100644 --- a/tools/xenstore/Makefile +++ b/tools/xenstore/Makefile @@ -67,10 +67,10 @@ $(XENSTORED_OBJS): CFLAGS +=3D $(SYSTEMD_CFLAGS) xenstored: LDFLAGS +=3D $(SYSTEMD_LIBS) endif =20 -$(XENSTORED_OBJS): CFLAGS +=3D $(CFLAGS_libxengnttab) +$(XENSTORED_OBJS): CFLAGS +=3D $(CFLAGS_libxengnttab) $(CFLAGS_libxenforei= gnmemory) =20 xenstored: $(XENSTORED_OBJS) - $(CC) $^ $(LDFLAGS) $(LDLIBS_libxenevtchn) $(LDLIBS_libxengnttab) $(LDLIB= S_libxenctrl) $(LDLIBS_xenstored) $(SOCKET_LIBS) -o $@ $(APPEND_LDFLAGS) + $(CC) $^ $(LDFLAGS) $(LDLIBS_libxenevtchn) $(LDLIBS_libxengnttab) $(LDLIB= S_libxenforeignmemory) $(LDLIBS_libxenctrl) $(LDLIBS_xenstored) $(SOCKET_LI= BS) -o $@ $(APPEND_LDFLAGS) =20 xenstored.a: $(XENSTORED_OBJS) $(AR) cr $@ $^ diff --git a/tools/xenstore/include/xenstore_state.h b/tools/xenstore/inclu= de/xenstore_state.h index ae0d053c8f..8dcc8d9d8b 100644 --- a/tools/xenstore/include/xenstore_state.h +++ b/tools/xenstore/include/xenstore_state.h @@ -80,6 +80,7 @@ struct xs_state_connection { uint16_t domid; /* Domain-Id. */ uint16_t tdomid; /* Id of target domain or DOMID_INVALID. */ uint32_t evtchn; /* Event channel port. */ + uint64_t gfn; /* Store GFN. */ } ring; int32_t socket_fd; /* File descriptor for socket connections. */ } spec; diff --git a/tools/xenstore/xenstored_domain.c b/tools/xenstore/xenstored_d= omain.c index 8930303773..f3563e47aa 100644 --- a/tools/xenstore/xenstored_domain.c +++ b/tools/xenstore/xenstored_domain.c @@ -33,10 +33,12 @@ =20 #include #include +#include #include =20 static xc_interface *xc_handle; xengnttab_handle *xgt_handle; +static xenforeignmemory_handle *xfm_handle; static evtchn_port_t virq_port; =20 xenevtchn_handle *xce_handle =3D NULL; @@ -66,12 +68,18 @@ struct domain /* Generation count at domain introduction time. */ uint64_t generation; =20 + /* Store GFN (if using a ring connection). */ + xen_pfn_t gfn; + /* Have we noticed that this domain is shutdown? */ bool shutdown; =20 /* Has domain been officially introduced? */ bool introduced; =20 + /* Is the ring memory foreign mapped? */ + bool foreign_mapped; + /* number of entry from this domain in the store */ int nbentry; =20 @@ -196,16 +204,29 @@ static const struct interface_funcs domain_funcs =3D { .can_read =3D domain_can_read, }; =20 -static void *map_interface(domid_t domid) +static void *map_interface(domid_t domid, xen_pfn_t gfn, bool *foreign_map= ped) { - return xengnttab_map_grant_ref(xgt_handle, domid, - GNTTAB_RESERVED_XENSTORE, - PROT_READ|PROT_WRITE); + void *map =3D xengnttab_map_grant_ref(xgt_handle, domid, + GNTTAB_RESERVED_XENSTORE, + PROT_READ|PROT_WRITE); + + if (!map) + { + map =3D xenforeignmemory_map(xfm_handle, domid, + PROT_READ|PROT_WRITE, 1, + &gfn, NULL); + *foreign_mapped =3D !!map; + } + + return map; } =20 -static void unmap_interface(void *interface) +static void unmap_interface(void *interface, bool foreign_mapped) { - xengnttab_unmap(xgt_handle, interface, 1); + if (foreign_mapped) + xenforeignmemory_unmap(xfm_handle, interface, 1); + else + xengnttab_unmap(xgt_handle, interface, 1); } =20 static int destroy_domain(void *_domain) @@ -228,7 +249,8 @@ static int destroy_domain(void *_domain) if (domain->domid =3D=3D 0) unmap_xenbus(domain->interface); else - unmap_interface(domain->interface); + unmap_interface(domain->interface, + domain->foreign_mapped); } =20 fire_watches(NULL, domain, "@releaseDomain", NULL, false, NULL); @@ -363,12 +385,15 @@ static struct domain *find_or_alloc_domain(const void= *ctx, unsigned int domid) return domain ? : alloc_domain(ctx, domid); } =20 -static int new_domain(struct domain *domain, int port, bool restore) +static int new_domain(struct domain *domain, int port, xen_pfn_t gfn, + bool foreign_mapped, bool restore) { int rc; =20 domain->port =3D 0; domain->shutdown =3D false; + domain->gfn =3D gfn; + domain->foreign_mapped =3D foreign_mapped; domain->path =3D talloc_domain_path(domain, domain->domid); if (!domain->path) { errno =3D ENOMEM; @@ -436,7 +461,8 @@ static void domain_conn_reset(struct domain *domain) =20 static struct domain *introduce_domain(const void *ctx, unsigned int domid, - evtchn_port_t port, bool restore) + evtchn_port_t port, xen_pfn_t gfn, + bool restore) { struct domain *domain; int rc; @@ -448,17 +474,21 @@ static struct domain *introduce_domain(const void *ct= x, return NULL; =20 if (!domain->introduced) { + bool foreign_mapped =3D false; + interface =3D is_master_domain ? xenbus_map() - : map_interface(domid); + : map_interface(domid, gfn, + &foreign_mapped); if (!interface && !restore) return NULL; - if (new_domain(domain, port, restore)) { + if (new_domain(domain, port, gfn, foreign_mapped, restore)) { rc =3D errno; if (interface) { if (is_master_domain) unmap_xenbus(interface); else - unmap_interface(interface); + unmap_interface(interface, + foreign_mapped); } errno =3D rc; return NULL; @@ -489,19 +519,20 @@ int do_introduce(struct connection *conn, struct buff= ered_data *in) char *vec[3]; unsigned int domid; evtchn_port_t port; + xen_pfn_t gfn; =20 if (get_strings(in, vec, ARRAY_SIZE(vec)) < ARRAY_SIZE(vec)) return EINVAL; =20 domid =3D atoi(vec[0]); - /* Ignore the gfn, we don't need it. */ + gfn =3D atol(vec[1]); port =3D atoi(vec[2]); =20 /* Sanity check args. */ if (port <=3D 0) return EINVAL; =20 - domain =3D introduce_domain(in, domid, port, false); + domain =3D introduce_domain(in, domid, port, gfn, false); if (!domain) return errno; =20 @@ -718,7 +749,7 @@ void dom0_init(void) if (port =3D=3D -1) barf_perror("Failed to initialize dom0 port"); =20 - dom0 =3D introduce_domain(NULL, xenbus_master_domid(), port, false); + dom0 =3D introduce_domain(NULL, xenbus_master_domid(), port, 0, false); if (!dom0) barf_perror("Failed to initialize dom0"); =20 @@ -758,6 +789,10 @@ void domain_init(int evtfd) */ xengnttab_set_max_grants(xgt_handle, DOMID_FIRST_RESERVED); =20 + xfm_handle =3D xenforeignmemory_open(NULL, 0); + if (!xfm_handle) + barf_perror("Failed to create handle for foreign memory"); + if (evtfd < 0) xce_handle =3D xenevtchn_open(NULL, XENEVTCHN_NO_CLOEXEC); else @@ -1189,6 +1224,7 @@ const char *dump_state_connections(FILE *fp) sc.spec.ring.tdomid =3D c->target ? c->target->id : DOMID_INVALID; sc.spec.ring.evtchn =3D c->domain->port; + sc.spec.ring.gfn =3D c->domain->gfn; } else { sc.conn_type =3D XS_STATE_CONN_TYPE_SOCKET; sc.spec.socket_fd =3D c->fd; @@ -1290,7 +1326,8 @@ void read_state_connection(const void *ctx, const voi= d *state) #endif } else { domain =3D introduce_domain(ctx, sc->spec.ring.domid, - sc->spec.ring.evtchn, true); + sc->spec.ring.evtchn, + sc->spec.ring.gfn, true); if (!domain) barf("domain allocation error"); =20 --=20 2.33.0 From nobody Sun May 5 17:19:12 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=1631893671; cv=pass; d=zohomail.com; s=zohoarc; b=F8I8HkZsGFUZSlcYDAB+DcvPn14JRtTIBfdREuEVIfCn098Z59QdiKc5Y71GCh4yriCWUVMkZrtBzLWynoAZhOGEkZ+Cd3lg/mdCo6vbedMM1hlOSfEI4uHQ/tNelM32Erj158uyMedT98mI+KZD1SpkeGwG5qV0iJ9YWdlaCkc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1631893671; 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=LWJyzQpn1vGwUvHb8ce1Tl9dvZuuKifQq5imQ14Lgos=; b=UBQPejeb9ky6vQiEBF7P7dlPuQHJ3y6PABVoiBlJQTWS5go423XOwpKnv/XHD3koL3toOT4PXrV1zCaY5b195rbofVPlZgWXnC9EIdUcNOl9a8kWgkaoRyTY/LI6pzCuUcm1XC57q8pN2IzGcy2DnMwhiq7E0xG9YvLH4+Ps0SA= 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 1631893671775600.5381758084054; Fri, 17 Sep 2021 08:47:51 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.189511.339296 (Exim 4.92) (envelope-from ) id 1mRG5B-0000At-4n; Fri, 17 Sep 2021 15:47:21 +0000 Received: by outflank-mailman (output) from mailman id 189511.339296; Fri, 17 Sep 2021 15:47:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mRG5A-0000Ai-Uo; Fri, 17 Sep 2021 15:47:20 +0000 Received: by outflank-mailman (input) for mailman id 189511; Fri, 17 Sep 2021 15:47:20 +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 1mRG5A-0006W6-BW for xen-devel@lists.xenproject.org; Fri, 17 Sep 2021 15:47:20 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 855571e5-17ce-11ec-b6db-12813bfff9fa; Fri, 17 Sep 2021 15:47:12 +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: 855571e5-17ce-11ec-b6db-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1631893632; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=DW6Fveyl5rzZoyiIlEPBEWmEFUr6L5PhG/wZX+BGMtQ=; b=ANhHhdEboSm26i1YXwUMFiTz7Un3u2E2Ne2ft4bZ9KTu22jhz+GvEtBJ 4mMGxLuFRxVLdv3Lsj07rQB03hjDRaI67tKRrq98mL97SbOklkQsAx9G9 nkySXdDgDX6NGzSiYbV337aB+d0iH+Nsmcgjjxc+5fV+maxeF3c2lB0ob M=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 84oIj8BE9p55PxfC9ZERa/u8i0MpK7xcXN4/KoTqWPgZmsTzH2mBW1BxVQeOrHqI87ndTyuI9j d3k3J3c6sLy9EpXO+VGmF931mzXWup7/HKx6vVPGcb+kA3fBA3hG3zQJMUPAolESXKNWvy3uxW iWQX2uu+F0tSukQ+HZO+OVyghhIs/eUsNKGVOE6gAeL9+zczzttgyQD1mpQkZjlUd2J0QrERjL dpcqI0GdOH/UTiBF4kmF92imwzUFG/C6qCyBaYiOp4lAoz4yL6N0xNEmn9yE3QTu1KCLJo6sjb QggMRAVApZ/KeBGaFuvKHHcA X-SBRS: 5.1 X-MesageID: 52589463 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:AyHeYq96yGgmKx7KigCjDrUDeXmTJUtcMsCJ2f8bNWPcYEJGY0x3y WoXWD+DPP7ZZTOgeo0jPYzioUIF65HTxoQyHVBoryE8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhGGeIdA970Ug6w79g3dYy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPggz 991mdu8TjxqI6eWndYXYgBeA3tXaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguw5K8bmJsUHs2xIxjDFF/c2B5vERs0m4PcFhmpg15wQRp4yY eIrMBNLcRLKXSRQGWcYKKxhkeeRnSXWJmgwRFW9+vNsvjm7IBZK+LrwNNvYfPSaSMMTmVyXz krd5HjwCBweMN2ZyBKG/2iqi+uJmjn0MKoQG6e/7eVCm0CIyyoYDxh+fVmxrOS9i0W+c8lCM EFS8S0rxYAi+UruQtTjUhmQpH+fogVaS9dWC/c96gyG1uzT+QnxLmkbTBZRZdo+rsg0SDc2k FiTkLvBGjhHoLCTD3WH+d+pQSiaYHZPazVYPGldEFVDs4KLTJwPYgznH9FpKILygtrOWiz6m TW4phkngaVJpJtev0mkxmwrkw5At7CQEFVstl6GDzr/hu9qTNX6PN3zsDA3+d4FddzAHwfb5 BDojuDDtLhmMH2bqMCarAzh9pmS7vCZOXX3hVd1FvHNHBz8pib+Iei8DNx4TXqF0/romxeyO yc/WisLvfe/2UdGioctOOqM5zwCl/SIKDgcfqm8giByjn1NmOivp3oGWKJt9zq1zBhEfV8XY M/GGSpTMZrqIfs+l2fnLwvs+ZQq2jo/1QvuqWPTlk/8uYdykEW9EO9fWHPXN7hRxPrd/G39r oYOX+PXmk43eLCvPUHqHXs7cAliwY4TXsut9aS6t4erf2JbJY3WI6WAme9+I9M1wfs9eyWh1 ijVZ3K0AWHX3BXvAQ6LdmpiePXoW5N+pmg8JisiIRCj3H1LXGplxP53m0IfceZ1+ep94+RzS vVZKcyMDu4WEmbM+igHbIm7p4tnLUz5iQWLNiujQT4+Y58/GFCZpo66JlPipHsUEy66lcoiu Ln8hAnVdoUOGlZ5B8HMZfPxk17o5SoBmPh/VlfjK8VIfBm+65BjLiH816dlI8wFJRjZ6CGd0 gKaXUURqeXX+tdn+9jVn6GU6YyuFrImTEZdGmDa65ewNDXboTX/kdMRDr7QcGmEBm3u+aika eFE9N3GMaUKzARQro5xM7d31qZitdHhkKBXk1Z/F3LRYlX1Vr45eiua3dNCv7Fmz6NCvVfkQ VqG/9RXNOnbOM7hF1JNdgMpYv7aiKMRkzjWq/80PF/79Gl8+7/eCRdeOByFiSp8KrppMdx6n bd96ZBOswHv2AA3NtumjzxP8zXeJ3MNZKwrq5UGDdK5kQEs0FxDPcTRByKeDEtjsDmQ3p3G+ gOpuZc= IronPort-HdrOrdr: A9a23:tIL5C6NoCf+r8sBcTyT155DYdb4zR+YMi2TDiHofdfUFSKClfp 6V8cjztSWUtN4QMEtQ/exoX5PwO080lKQFmrX5WI3NYOCIghrPEGgP1/qB/9SCIVyAygc+79 YYT0EWMrSZZjIb/KWKnjVQe+xQvOVvm5rY4ts2oU0dKD2DPMpbnnpE40ugYwZLbTgDIaB8OI uX58JBqTblUXMLbv6jDn1Ae+TYvdXEmL/vfBZDXnccmUSzpALtzIS/PwmT3x8YXT8K6bA+8V Ldmwi8wqm4qfm0xjLVymeWxZVLn9nKzMdFGaW3+4IoAwSprjztSJVqWrWEsjxwiOaz6GwymN 2JmBskN9Qb0QKmQkiF5T/WnyXw2jcn7HHvjXWCh2H4nMD/TDUmT+JcmINwaHLimgQdleA59J gO83OStpJRAx+Ftj/6/cL0WxZjkVfxiWY+kNQUk2dUXeIlGfBsRLQkjQNo+ao7bWHHANhNKp gtMCic3ocbTbqiVQGZgoE1q+bcG0jaHX+9Mz8/U4KuonxrdN0Q9Tpr+CUlpAZxyHsKcegx2w 31CNUYqFhwdL5kUUsEPpZ4fSKWMB2FffueChPbHbzYfJt3Tk4l7aSHp4kI2A== X-IronPort-AV: E=Sophos;i="5.85,301,1624334400"; d="scan'208";a="52589463" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cbHMNXuD9bdFr9bQpgF7ljI13L5DFsV6xYz4ohgBe6w4G3/3RshK9kzes0T4dbU7TOOR81Wh+M+o03eCHq8V4LOD6BMVthurBeFVrDLJro822LAGPEzPa7biNvBmpicF1pGDCLdA8OYM90iqZzAQWPTzDRyFnJw0LETd2pgg1mqrDentP/lhjW3+2b1JzXBwOQzUGE8d7KtzGP5MFyoz32bJvTXWYFm95h1X3/deXVBmF0Xxov36aoP0XK5dArhDVlOi8o6jnxFpyY+ezShDdOPcEhYdfeD1gQM3g5nkLSu1fRl1c6gyl62GN0MdwosPLTpsi/Mj80io0gc4+DGo9g== 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=LWJyzQpn1vGwUvHb8ce1Tl9dvZuuKifQq5imQ14Lgos=; b=Zy3LF5zBDxaQQKlurz2UurqVaVunP24Mwsgwr8QyvPRjrWJ8eQdC/lvzYhpEYHM2T/fxPVNrT8HLt3eWeAJdCKFybX2MNrZ3mmKKo7VHDIdKRR4rJ2I/vYdy8KtzYWwDoZuyl7Oxd9t8x2QM9DxKTQrUb4NiO/BahK0yjz8fTckRhqCrXJBZkQZT8LnT/uSbNVzNljGz1j2Rjy5YlZ3Yft+HMsCKld4EM11QcmP0FX2L8XAUVO370F1ocYsHwJGpRDuFp8w5/OHHV1N0OfmVZYOY7oquE5fWeyiV1cno4mi/oHcxnQpg90Hjz1XiKuAyb9YvB0/I68BfoEG8oxQybg== 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=LWJyzQpn1vGwUvHb8ce1Tl9dvZuuKifQq5imQ14Lgos=; b=u96UQu2ojvkNqdr9ZPaQ6UnHPImQGlluenLbNvcO7UqPRZhbO9s3CQAUYBae9U1J9jWJ8/7VaReJLy6zXX00WFlj+0x/dBCffGHODOl33n02IphswhmTNgoZoar7c/1Wz1S0wORe9PJIO56bd6VxA4ka13TdP56E+l8F8kiu/0w= 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 6/6] gnttab: allow disabling grant table per-domain Date: Fri, 17 Sep 2021 17:46:25 +0200 Message-ID: <20210917154625.89315-7-roger.pau@citrix.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210917154625.89315-1-roger.pau@citrix.com> References: <20210917154625.89315-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0008.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:62::20) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e177f618-8a9f-4544-8694-08d979f2684b X-MS-TrafficTypeDiagnostic: DM6PR03MB4057: 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: JQV6etO/I6MOy5isAT3FfV8BhrT0HdyqHid9PcU39CeiraJ6s+8Tw/WgUJJxgmgEMVRYTu3qJaxOzrWLdopA0VvrYdgapOrfKFVG/BRe1z2T0ZqD75/b8PhgsCJqbCtnTyuuUWDz/794/XeENaF+ie+lxgiTlh5j4+OgzuHa1OK6LmPB/Jbi6mt9qrDNLyjxdDu28qKs0znk5IQaLdY4Qb/YW435Wxa9ZSi9XqOcoDb79ZHXELOF+cKupHTrUNqcxFhw0B03J7WfIqzy1skdqsP5Z4CP6OQgTIeFDyKwbnHrzsqJFovImJXfemVNX8x9Qmn6/4FIW+4xAAT0vP5gjMwgjzuuVERkjHELbswm+wisVBZlaf9jo0kOihgfa5aep6pysnyahhBj6hC7DiCfu9GA1Ww7UASIt4POI+YQcIWEz621rDs6e4KsChqg/AzBXtq9ViNURW32NCD52TgGFAOOTALqj9f4E2WPictqDg07jXU9eOJQ0PwISFruY60V8XrP6elJXm2uTlmwrWAoybvC3uNM86EygvewrzDKt8Pf0OAQ6AdQbxqL4hjzbZKNf47LU2L1wcZDg25vaRYe5VAAi+SWyHCL2KMFsXMO1PftGhScy2KlRNRyX9yOp3QJtZ+o2hl+zFxkwwoFuA+Whw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(1076003)(2616005)(956004)(66946007)(66556008)(66476007)(316002)(6666004)(8936002)(8676002)(2906002)(4326008)(186003)(26005)(6916009)(54906003)(6496006)(508600001)(6486002)(38100700002)(36756003)(83380400001)(86362001)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?alAzd0hhNzZhcGt6VVA0SkFXbndJT2JMUUZLS2JZcnMrZEI1VHl5dVQrZjRh?= =?utf-8?B?cWllSGNXbGUxdU9Wa25qTldDTU9VNXpxV1I2Q0xLL2p4cVNwWWwrOU1xWDJP?= =?utf-8?B?TzIxQUxWUUl3ZVBZT0NUQkNZVXhaNG1zekVvemNtZEpnWi85V0E2ZzlaczUy?= =?utf-8?B?enpEWitBdXpkZ1ZHaXovREVocWI0b2hjNFprclZXejRrVnU3R00wUDg2dXJ0?= =?utf-8?B?ME83NWljWGEveHFFbWdFRVIyNVlnalF1OCtXNk5NNmo5ZEdaTjRDZVU5UXlY?= =?utf-8?B?MFdDUDBhZGwwWXV0Q0lBR09mUSsxNlB2dGdsQ1BpSmcvOGhCZ2VoeENaTS85?= =?utf-8?B?ZEhnbzNTL3VFZHZlT1dZcVZBT1NqOExvUUNZdGlnYmJPQ09ueGZJOFlVSlgx?= =?utf-8?B?YTUxdWpDd0tRaUc0Yk8vK2h1M1FBdVFrTWlPdCtVUlc2VERnTHZHWE9IYTUx?= =?utf-8?B?UWZETGFLaWlSWjcvVUZ4QjBsQmFqdWU5c0tFbEZzaHR4WDRVL1E3YkhQTUQw?= =?utf-8?B?ZGRkQUxCdE5vaGxGa0RxNk12cWI3d1VyVjQ1SEZ6TGpLNWJUNndOTkswN1Zk?= =?utf-8?B?YWRoS1NoMnJOV3hBM1k4RUVCbERxOGtBZHZoV3pRU3FvOXBiZGxrQm9YMlVK?= =?utf-8?B?MWlkUm1nVmhSVUxUUVJzTzVWS1BoMFJXTkRIZUM5OWE4ZmUrWTNBTDUyQXF1?= =?utf-8?B?S2wwQlRsY3ArcTFIak52ajFJTmxVR0Q0RmRvdDJiQTAvbTRheTB3ckpYcDR6?= =?utf-8?B?TVpmUFh3WnQvSmgwUmNRcm9VcGZIbXVDRXF6WlM5NWxvRHFkMi96KzJDWFhH?= =?utf-8?B?bnlFRUxoWTV0WnZGVkxDZUhBWEJoeXg5YTRsWGptbDJRd1R4bHBFbnlrNkEy?= =?utf-8?B?ZEdzTDRWZk1QRE8yQ1pIVDRVYTF6c1pja0FyaTJ1Z0xWMlhDRzZncmJoeGMz?= =?utf-8?B?aDA0UXN3VkJsTVoyWHVveGpnempOSkZNODRsMkhqWlZhM1NtNy8xOUdtYUJz?= =?utf-8?B?M0U4eWtwOERPRFVaUEJPcjA2bkc1YkdyWVRZRDB3TWdqeU5uZzRFOFhoTHVP?= =?utf-8?B?c1o2am8vamdudEJRNFdMNmNhbzRaQ2hBN1BjWUtHK3pCWjBteWs5NHE0V3U0?= =?utf-8?B?RVBOTzBja2pXZDlhZXgxbk5INjBJS2MrSzZmNTVQblJKV3pWYURpbHllYUtV?= =?utf-8?B?dkdTRGlXOHRJYVdmd1dSQXRkVFl0T21QVUFaWkdLTlB3OEM1Q3p3dnVud0NX?= =?utf-8?B?WDFYRDBtdkNONGx3YmtwamtlTmpSUjRQWjFHcXUwMnRVUFJTNk1ydlV4M2x2?= =?utf-8?B?M1hHWXIvVUo5UERBYm92eWhUYnRsdUd2RnJaYTJhS1pWb1gwYlNjMzB2Vzl4?= =?utf-8?B?dGJ1WVZkWi9xVnhTMEUvTnBFQ3FxRS8vUXduQ0RIYjlMcDkwZlI4Nmd0TDFi?= =?utf-8?B?Z3NNTDFqelVzelFsVk5hSVZ4d0tGTjMvTTVUYSt1K2NWTVN6RnZsOU90NDNO?= =?utf-8?B?TXdTOEtmcHoxdmZJNU5rZTVseWJmQkN5N2Q3c0w3MzRqSkJ5bXFLM2EvbHBQ?= =?utf-8?B?WTlKZitTSStpdlBmTkV4ZFBjVE9VYkxxM2JwYllvYjNtaGo2VmxCUWN0ZWh4?= =?utf-8?B?ZVRWbmhNMFR4YjBwaWdIeE5oQzc1OVVxRGsvZHprN3JHb3BiM0lieEE1OHdQ?= =?utf-8?B?cFJUeUliOW9Na3BsQUZlbFdNaW9SODZtY25QSmNQRzZOOXJRTHNJS3U2TVND?= =?utf-8?Q?0c1xtUdZcgXdYLe5P6YoJFV8AFmREIPjqY1SqrW?= X-MS-Exchange-CrossTenant-Network-Message-Id: e177f618-8a9f-4544-8694-08d979f2684b X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 15:47:08.9487 (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: 37Vqbtn6OtKyj2TqE8qTmxmQ50r6KUOSkz9fs0wejEyNOEKr4u/V6IjF3SewjM5s7HU1gOsAy52AyvyIDLKiBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4057 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1631893673125100001 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 --- docs/man/xl.cfg.5.pod.in | 4 +- tools/libs/light/libxl_dom.c | 2 +- xen/common/grant_table.c | 97 ++++++++++++++++++++++++++++++++++-- 3 files changed, 95 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 280dbc850a..68ea742498 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 < 0 ) 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) ) --=20 2.33.0