From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165136; cv=pass; d=zohomail.com; s=zohoarc; b=ngBVeDt997SJJh6GSQIhr/XWcr2xqBZuhovmoKKbB72jfkbuFr1GY0SgeKjU7TszP/noX+80r95JVBad1DvbcwJfUCjsIj9GYj/BOWBa5hZtP+jcOFSvmhiToc5bR+keKuchwoJMf1rJIjxdBpZmViSJStn+GYy2vAQ6VOR/ozM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165136; 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=COQfJ9cXtlA7UIJk7VaHsvDyCd7LmdLVrgloG0YU3Gg=; b=nxdHm3cFusQRXrB6j64AlIl7bMZ6wgOrYg5jXvrfuSDkJOEYBUULjIJVDXUD8A93JswoB6+h778VRneQ3JEZ64D+MEfDuDSvW605iBDEgf1br2lA8DMGvcSfSzFA2xdTC08o0IfPvTkvrtaKns6GLQdsGHlF7BJA+tDPrgL1+A4= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1666165136430571.9120256544188; Wed, 19 Oct 2022 00:38:56 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425535.673415 (Exim 4.92) (envelope-from ) id 1ol3eq-0001rl-SY; Wed, 19 Oct 2022 07:38:32 +0000 Received: by outflank-mailman (output) from mailman id 425535.673415; Wed, 19 Oct 2022 07:38:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3eq-0001re-Pb; Wed, 19 Oct 2022 07:38:32 +0000 Received: by outflank-mailman (input) for mailman id 425535; Wed, 19 Oct 2022 07:38:31 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3ep-0001rW-8o for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:38:31 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2068.outbound.protection.outlook.com [40.107.21.68]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 06667bb1-4f81-11ed-8fd0-01056ac49cbb; Wed, 19 Oct 2022 09:38:29 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by VI1PR04MB7053.eurprd04.prod.outlook.com (2603:10a6:800:12f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30; Wed, 19 Oct 2022 07:38:27 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:38:27 +0000 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: 06667bb1-4f81-11ed-8fd0-01056ac49cbb ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FZXSvtQuIDjkdFus1q3OLD+4gR7p7iKbr9kjMGS6aneK8qr17tB9PDmpAr9Y364yp+8WxqOTalInYBtnmD8/dATU94ilMXVV0BD7n69Th8ELz0+ud5TA/hq22PrRDLQDHJESM/26NFPJxOYhJlO5A4cClOk6fMMfx588ZFf2Ia0XM86y9PUzbxW3fFej1VyEmt7Wl6B7JyvVjvBpnlsxYClXRuGgE6GapFg3etDSJr8b53t2h0aIbJd6hOQ8h6T1Lh5j57YLQtGpWaVMt/+/aLfN6HrpOPfOMe2t6YVawOILeenniplpJlyJ1Y8GqKqHNGMGOwlks1WSsP5m7XHNZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=COQfJ9cXtlA7UIJk7VaHsvDyCd7LmdLVrgloG0YU3Gg=; b=jjryaKi0TlalE8tNftmC+dFFcMr2DauN0YpAfAqcGzrqzveQsjRpk6rnpYnyWUJlxWY8wpl6HqvNmYy6Z9lWL/UJUukHsxlxRAHz6TF4deGRlF1UBnfBdwITtTLBCbsIX9K5wi88zz943KPBgi6CcQ7/8hGafzaqAirQEjz+QsnSjXmtmrsEsgLx455RsP+OOylsoc60UuDREVJgpODvK+0H1BR1Gw77pXoyEuEhsyWyQ0dXlOlAgKDMNH66auBszoyVAqkYehNFgWG7Z7u9Cak2wBQfLDzN9Ekn9cIs5/+uJERG29WhRgOSrHSp+mvgQ5OIo3BELmoGx7SMnHCDwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=COQfJ9cXtlA7UIJk7VaHsvDyCd7LmdLVrgloG0YU3Gg=; b=ek5QYgbLywyD/y1tHbgWsUxhvWgiZFXZhawagYs5mzZaWV6MIA5Y60KxU58BpBHDV2iuHbdl2Sl6a/s0Ox4Zl8vE0+rg8yxWFVCE/5fCXt79UeD3o/EjaT6eLhqAX9GleZQBr76eRImo5UgE5Rchlkbqib17mDyfQsVK06u+AE0LvZU1Q27Jzmt9uFYTmWN5Jkt9Cqiw5Dby0iAx8lxq7r6A1JrH8m5AkG3K2wpk++KIhBmbTCJAzmNBeN+DXSGnxouQjojQs+n/0amGPxByOiV5dc4Txa94/UwUaiJiiEZOLK9ja3brxt/GlzHX9UAPmuGvbcHwP6vYo4mwUEbS2Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Wed, 19 Oct 2022 09:38:25 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH 01/10] unify update_runstate_area() Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Bertrand Marquis , Volodymyr Babchuk References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR0P281CA0134.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:97::18) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|VI1PR04MB7053:EE_ X-MS-Office365-Filtering-Correlation-Id: 80ce886e-6474-436c-6400-08dab1a4e938 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: c0qls4/pCAqsGa70KzhcNzFS0Elt6aS8WYI+sa5Hnbciwktgr0FGurxEGyylMewtIy+z+eS+LX/z9s3hJWGd2nN71JnZEO4wGzF/NCrqmVJWObGwZFcvDRKI9cjuhfvJSzALaMFTZj5DHkMJsB+spvCyrURsuUItD8qkMVmTWLHNmUv+2lNQIPUoUasSoa6yXc68wU2oW0xC5ikWnqT+5bZGQAFqhgN+EJN5N5UuCR5Ix7bRB7nLAWG0SjsBToPMTukZE2b0rk4cuPDNnd35tiRhFsnBv6jQCwWEy4iugZwUU5ZDKY1D6KMehfbsfIzGX3gfRmoqwbg22Tb2McL7m2kgybmh8DUpUcKWkwRx7Uj6kSeK7W7vS5d2nhCgpLp9aKUB8U+5lHgx5ynSpSNzyi59nqQZ8gQ+Fd0TofkuIIOsRsMZEZgmT4EhV7eNw/JnHjagIgGPFUR8dvIQkc4PwhaY1dsJ+om4yaxQ3oxkfA2yyPHetFLkqH+MWQeprHGVXAF50Z1Ro48AgGpVLpU8bYykOLn6tclaUq7VIWSFBvvSHz/yF0KpRlaPJANhdE8WFXw5uus8yIRTgUclSX3Ti8cci7dg0J8z0OcdHSCcSptWkwayHlKaWbMgq4stxEzg6whhSgGR10ChpUvoNy9+7PRx0j8isuGJ1Psxy7ajIACr1XaUBJCO9sIt3RcUNUVKb37MU84YD9M/sABZKVS46l0uv5s39IHz6Q4IskE9EZUr6AkH2O6pXCLzn13KeW9AIJCfuaFzIFz0q/fXdto9CrDftQNTuG9UC8uOZNvspfA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(366004)(346002)(136003)(376002)(396003)(451199015)(15650500001)(41300700001)(2906002)(5660300002)(31686004)(8936002)(316002)(6916009)(54906003)(6506007)(478600001)(66476007)(66946007)(6486002)(4326008)(8676002)(36756003)(66556008)(38100700002)(31696002)(86362001)(26005)(83380400001)(6512007)(2616005)(186003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Zi9ELzRvVWpWRWE3cEJBMW8wODZVeWNnZmNBaTh3Q2VaUmxNNnU3SEt2K0E0?= =?utf-8?B?ekdWd1JWNHNYTjRyRC8yOHNGdEpKdmlVemVXUUUvcmNBY2FpL3p6SHFlaERZ?= =?utf-8?B?bnFteFV2cGJsS0JaRWM4dXdPT2kxSUV2QlpieHNWWGxVaXZDV0drTlR1YXdO?= =?utf-8?B?YjdTVnh1SUVBOEFINEladXlSK3hSSjVnb3JVekdtaGc3dHNvVElITHFZQmY5?= =?utf-8?B?U2V3b0NvY2FHWWtDQlNvUDBNRGlaV0YvNVNYYjVvd2tvK2tMNlRzSzBBbktj?= =?utf-8?B?clFLQjhjdWxDK0dMd0tmQUFiMGJwSXRWODMwTWNrWDQwRGMwNy8vM2RkY3g1?= =?utf-8?B?ZVk1SHZZSUl3YkNLZUVmNjVLMUl3ZCttSUR2N3ZWcGJCaElNeFlpVjBBTnRx?= =?utf-8?B?UjdLZnM1ZjV2Yi81b3JkaVYweXRvQi9LOWttMXRlL1ZWQ2FCbjFRMC81UmhR?= =?utf-8?B?VEdaazF6WElxTytRR1ROYWhsU2VIN0VQWndINUg3RS81NTZMaWptSkpjVkVR?= =?utf-8?B?azFxajBDaFpJY2xhalM1cjhHTVRGY0FqK2FjZytzSVBLaDVlQmJyaHlYV00z?= =?utf-8?B?cTRFUVVDTXRkNHNYRWVFQWEva3BxTDJtSkZyM1BYak02a0dGUWdzNUVKSGtU?= =?utf-8?B?MGVoZTNDVFJpd1BQRXZoT2s3TDJZcTVoK2NPQ0NaWnNqMG16R0hqci91dWc5?= =?utf-8?B?WTJyRkJSZ2oxYzBtSFdxQTlKenhlMFpiTVE2dXRhSERWWFd1OG42ZVJ1Q3Y1?= =?utf-8?B?Qk1ydnFLZXkvRTQxQU5BZ0h1VUR2OWFPdFAwUFlJR0prRy9CVytEMGhuTzU2?= =?utf-8?B?cUNIcU5yYkxnRmJtQllzeUJOanhaVGt0YUJUOU10Y2EwWWVzMC9ZQjI0TVhM?= =?utf-8?B?Qmg2a3YyY05yOHdpWUowcVgvTVJtRjZPc0RnS2VLV2MvVE0vQ1R0cXJtaysz?= =?utf-8?B?MGFBMjBsQVJibWRnQVJhb3Q5aVF2UHdUd3VwamxNdUNmWWszS2VKa2VWbTh2?= =?utf-8?B?YVQvNkdvaFFjL2RuemV0TzV3U0ExM0tMcEJLMWFVLzExQ0FTaVg1WDhUaWRn?= =?utf-8?B?eVR1dlV2cjFHbzRaYmxmVEJqRk13aTdkMDBmZTdiUGtJN3hGcDZhY2Q2aml4?= =?utf-8?B?ZVgxNDFpVDJ4SFpyQUU5K3FSUGFESWtOOVVhSTVpODNMSXdmVDZBYXdSeU1p?= =?utf-8?B?UG1ZNW9XM2R3TWlMWEo1RzhCTThPUEZFYXhySko3aUp4cVpHajAvaWJvbmpR?= =?utf-8?B?K25Fb1BCUGlxWFBaT1cydkh6QUl6SFFDSWwrTHB3aml2aHRvOW80bzM1V1Mw?= =?utf-8?B?VnI1QjFYajkreEJWalVwdkxRdzJ4NjZuSEtOWE5tYUY4dnVRWmhjY3doWWpF?= =?utf-8?B?RXdsa1ZDc2hSeFliU2VJRGd4Y0JLQTl6dlRXTUJDcGhKek8weVQxYzR4UDFL?= =?utf-8?B?WmQyUjlSY1NqeGwvOXVuQmtnQnNUTVVnekw0ZzVyc3ZZQWg0ckRiVnB0VlRH?= =?utf-8?B?Wkx5ZFBHVVdGaTc4c3lWUGlKV2Nwd2lMWmhHcWkwVjlXR2hLY3k0TVJCbkth?= =?utf-8?B?UDNySnp3enRJYmFvTkVlTHR3V0E1b3pycDQxM1JySnVWcFlHN0tFSUZ4eVIr?= =?utf-8?B?Y1ZydmUxWER3SlUzVjVYcURlY0graXJ6b0J4RDB3RzdVeE1DMkozUlhIVzNH?= =?utf-8?B?VDFIZHMrbnczZTNBNjV6ZTUrR3huakhxZEdwWE9QYTVQbnVWWkt4ZFM1TTlS?= =?utf-8?B?RU44a1ZWU1Uwak9uTVlWQnBENUUwR1dXaE5VazFTdEwwZDlKR0YwOVZNQnZo?= =?utf-8?B?eHhPcXZIRVkxcDVkSkNtbDZHT2JJU0FGOU5PZS8xYmIwL3M1NnZLc04vTCs4?= =?utf-8?B?bTByWGFsdUhuUW9LdjJTRE1yNTFsb1ZuRFhDL1hOcENmRnM2VFY1cXhsWGtU?= =?utf-8?B?bGxWbUc5dHk0MVNLUHVOVVRSSFpZeTE1ZjJ3YTJ0WXdtUHdlOWJoM3pPWm1B?= =?utf-8?B?WVdUTHNSdUptdy9CcGlxTUcyY2YzU3VCRmVGYitZVUZpYWNPRW9pTXJ6NXJY?= =?utf-8?B?N0xnOXU0aWdJTjFPdjE5ckptMkFHd1JTT2ErRXZQTVI3RGcyblRCcWpmc3c1?= =?utf-8?Q?QNGksONWwvH0Mnus/2JKhGtdx?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80ce886e-6474-436c-6400-08dab1a4e938 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:38:27.3292 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HfC+OdPr8EqfKYjHerugrt1a4SIHu5lpasVLwrw9KWNC2VeWVWsAPbFF75gUjp3MNJqnd3ptDxcyzvZ/D607oQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB7053 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165137127100001 Content-Type: text/plain; charset="utf-8" x86'es variant is a superset of Arm's, with CONFIG_COMPAT parts already properly marked. The only other missing piece is update_guest_memory_policy(): For the time being Arm simply gains an empty struct and inline function. Signed-off-by: Jan Beulich Reviewed-by: Julien Grall --- a/xen/arch/arm/domain.c +++ b/xen/arch/arm/domain.c @@ -281,38 +281,6 @@ static void ctxt_switch_to(struct vcpu * WRITE_SYSREG(n->arch.mdcr_el2, MDCR_EL2); } =20 -/* Update per-VCPU guest runstate shared memory area (if registered). */ -static void update_runstate_area(struct vcpu *v) -{ - void __user *guest_handle =3D NULL; - struct vcpu_runstate_info runstate; - - if ( guest_handle_is_null(runstate_guest(v)) ) - return; - - memcpy(&runstate, &v->runstate, sizeof(runstate)); - - if ( VM_ASSIST(v->domain, runstate_update_flag) ) - { - guest_handle =3D &v->runstate_guest.p->state_entry_time + 1; - guest_handle--; - runstate.state_entry_time |=3D XEN_RUNSTATE_UPDATE; - __raw_copy_to_guest(guest_handle, - (void *)(&runstate.state_entry_time + 1) - 1, = 1); - smp_wmb(); - } - - __copy_to_guest(runstate_guest(v), &runstate, 1); - - if ( guest_handle ) - { - runstate.state_entry_time &=3D ~XEN_RUNSTATE_UPDATE; - smp_wmb(); - __raw_copy_to_guest(guest_handle, - (void *)(&runstate.state_entry_time + 1) - 1, = 1); - } -} - static void schedule_tail(struct vcpu *prev) { ASSERT(prev !=3D current); --- a/xen/arch/arm/include/asm/domain.h +++ b/xen/arch/arm/include/asm/domain.h @@ -295,6 +295,11 @@ struct arch_vcpu_io { struct instr_details dabt_instr; /* when the instruction is decoded */ }; =20 +struct guest_memory_policy {}; +static inline void update_guest_memory_policy(struct vcpu *v, + struct guest_memory_policy *= gmp) +{} + #endif /* __ASM_DOMAIN_H__ */ =20 /* --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1852,64 +1852,6 @@ void cf_check paravirt_ctxt_switch_to(st wrmsr_tsc_aux(v->arch.msrs->tsc_aux); } =20 -/* Update per-VCPU guest runstate shared memory area (if registered). */ -bool update_runstate_area(struct vcpu *v) -{ - bool rc; - struct guest_memory_policy policy =3D { .nested_guest_mode =3D false }; - void __user *guest_handle =3D NULL; - struct vcpu_runstate_info runstate; - - if ( guest_handle_is_null(runstate_guest(v)) ) - return true; - - update_guest_memory_policy(v, &policy); - - memcpy(&runstate, &v->runstate, sizeof(runstate)); - - if ( VM_ASSIST(v->domain, runstate_update_flag) ) - { -#ifdef CONFIG_COMPAT - guest_handle =3D has_32bit_shinfo(v->domain) - ? &v->runstate_guest.compat.p->state_entry_time + 1 - : &v->runstate_guest.native.p->state_entry_time + 1; -#else - guest_handle =3D &v->runstate_guest.p->state_entry_time + 1; -#endif - guest_handle--; - runstate.state_entry_time |=3D XEN_RUNSTATE_UPDATE; - __raw_copy_to_guest(guest_handle, - (void *)(&runstate.state_entry_time + 1) - 1, = 1); - smp_wmb(); - } - -#ifdef CONFIG_COMPAT - if ( has_32bit_shinfo(v->domain) ) - { - struct compat_vcpu_runstate_info info; - - XLAT_vcpu_runstate_info(&info, &runstate); - __copy_to_guest(v->runstate_guest.compat, &info, 1); - rc =3D true; - } - else -#endif - rc =3D __copy_to_guest(runstate_guest(v), &runstate, 1) !=3D - sizeof(runstate); - - if ( guest_handle ) - { - runstate.state_entry_time &=3D ~XEN_RUNSTATE_UPDATE; - smp_wmb(); - __raw_copy_to_guest(guest_handle, - (void *)(&runstate.state_entry_time + 1) - 1, = 1); - } - - update_guest_memory_policy(v, &policy); - - return rc; -} - static void _update_runstate_area(struct vcpu *v) { if ( !update_runstate_area(v) && is_pv_vcpu(v) && --- a/xen/arch/x86/include/asm/domain.h +++ b/xen/arch/x86/include/asm/domain.h @@ -681,7 +681,6 @@ void update_guest_memory_policy(struct v =20 void domain_cpu_policy_changed(struct domain *d); =20 -bool update_runstate_area(struct vcpu *); bool update_secondary_system_time(struct vcpu *, struct vcpu_time_info *); =20 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -1579,6 +1579,64 @@ int default_initialise_vcpu(struct vcpu return rc; } =20 +/* Update per-VCPU guest runstate shared memory area (if registered). */ +bool update_runstate_area(struct vcpu *v) +{ + bool rc; + struct guest_memory_policy policy =3D { }; + void __user *guest_handle =3D NULL; + struct vcpu_runstate_info runstate; + + if ( guest_handle_is_null(runstate_guest(v)) ) + return true; + + update_guest_memory_policy(v, &policy); + + memcpy(&runstate, &v->runstate, sizeof(runstate)); + + if ( VM_ASSIST(v->domain, runstate_update_flag) ) + { +#ifdef CONFIG_COMPAT + guest_handle =3D has_32bit_shinfo(v->domain) + ? &v->runstate_guest.compat.p->state_entry_time + 1 + : &v->runstate_guest.native.p->state_entry_time + 1; +#else + guest_handle =3D &v->runstate_guest.p->state_entry_time + 1; +#endif + guest_handle--; + runstate.state_entry_time |=3D XEN_RUNSTATE_UPDATE; + __raw_copy_to_guest(guest_handle, + (void *)(&runstate.state_entry_time + 1) - 1, = 1); + smp_wmb(); + } + +#ifdef CONFIG_COMPAT + if ( has_32bit_shinfo(v->domain) ) + { + struct compat_vcpu_runstate_info info; + + XLAT_vcpu_runstate_info(&info, &runstate); + __copy_to_guest(v->runstate_guest.compat, &info, 1); + rc =3D true; + } + else +#endif + rc =3D __copy_to_guest(runstate_guest(v), &runstate, 1) !=3D + sizeof(runstate); + + if ( guest_handle ) + { + runstate.state_entry_time &=3D ~XEN_RUNSTATE_UPDATE; + smp_wmb(); + __raw_copy_to_guest(guest_handle, + (void *)(&runstate.state_entry_time + 1) - 1, = 1); + } + + update_guest_memory_policy(v, &policy); + + return rc; +} + long common_vcpu_op(int cmd, struct vcpu *v, XEN_GUEST_HANDLE_PARAM(void) = arg) { long rc =3D 0; --- a/xen/include/xen/domain.h +++ b/xen/include/xen/domain.h @@ -98,6 +98,8 @@ void arch_get_info_guest(struct vcpu *, int arch_initialise_vcpu(struct vcpu *v, XEN_GUEST_HANDLE_PARAM(void) arg); int default_initialise_vcpu(struct vcpu *v, XEN_GUEST_HANDLE_PARAM(void) a= rg); =20 +bool update_runstate_area(struct vcpu *); + int domain_relinquish_resources(struct domain *d); =20 void dump_pageframe_info(struct domain *d); From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165212; cv=pass; d=zohomail.com; s=zohoarc; b=UROaFfRagSihJDv8u+8KzEZtgV1AyDF9+gwQi0i19KG89NHtpSoNdu33nDIjXQszyOQ9Izx2/PNdd3MdmKtdlwXqSLzkPe1EXGc5dlvOwf9hjtipZ8wLhJKom6oAq/jdbj8NhdYIqr2DsWKPX3mYRoovosPRFvo30T9v4062UKA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165212; 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=NS+Ir87A7hMdS05pA5lIP70EV6ArkjcWoo9W2xzsvTE=; b=jiOkx5ulQDtm4aokDnfbYc5MQjem6kDZYN43l173uhKBK2oHH2cEUyYeQo6eyGvRbNtuRvsL7Jrb5MkgJp7N4xjvKheBgkKWeMMVSRwVjQcyh6XeSkfh7RL2u8/leLf2dZwkPyEDa2RGMsDfRis7VKxfeiuxp+d253zB4eXQlwQ= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1666165212303552.2824375751729; Wed, 19 Oct 2022 00:40:12 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425540.673426 (Exim 4.92) (envelope-from ) id 1ol3g6-0002QP-7K; Wed, 19 Oct 2022 07:39:50 +0000 Received: by outflank-mailman (output) from mailman id 425540.673426; Wed, 19 Oct 2022 07:39:50 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3g6-0002QI-4V; Wed, 19 Oct 2022 07:39:50 +0000 Received: by outflank-mailman (input) for mailman id 425540; Wed, 19 Oct 2022 07:39:48 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3g4-0002QA-7X for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:39:48 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80049.outbound.protection.outlook.com [40.107.8.49]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 3452a975-4f81-11ed-91b4-6bf2151ebd3b; Wed, 19 Oct 2022 09:39:46 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by VI1PR04MB7053.eurprd04.prod.outlook.com (2603:10a6:800:12f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30; Wed, 19 Oct 2022 07:39:45 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:39:45 +0000 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: 3452a975-4f81-11ed-91b4-6bf2151ebd3b ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k6w6YLJXixG32gp7MkVWn1pFNyYczIDI8Iv8Y0ZCFl4M65GaATiaQUIGNN4Iung/wCv8sCYKmNVu644auOAiYcYuSNsTD3d5nMacOO1dsiUsiNkyCiS/VMfPf3Ma325x1I+OKwDgXblwv0aXvxSfsdI/OT8HsMKhEWIchtiNrz9Qm2TqMOTML4fds1mX7iZwl01+nszeBRnuZkw4ZGWjc9pvB0PnjKE4JJWd4aX2y9ifgmnZY2OGbpC+B8LqljiOy/0iiUDXdBLgIcwokMyT2KxsALHrtfTK6y1T0eYCLRrwmtQktmhM4aLTLUvh80JVJMD6ncYaUtRMaAxy7wL4NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NS+Ir87A7hMdS05pA5lIP70EV6ArkjcWoo9W2xzsvTE=; b=So1NOtATYJVmtiRge2gk5MynRXMX4dLUSk9JmBzBOS9sZLA5D1NnPCmauB2Mh+kXIfl/UxhbcpazrvP0B2KoabxaQ8+qcVZtfhmkJmD0g4USJ2DKNyuXlyKOTDrldlqai4b2nESU71gDi+GfGqEZxMEYprwHKs+ZxYj4/hINW7mxIgO8jWlB/WCUvAW/XgIYA5vqIBmmKMYqKx/TlPdBnk3NPYYe38hWC1pbRUuIz2cqBA8+wTcZAyGAZIb+ytUCUCSDymLU7zFSRNJzoymjCTYh0RNFBrCUFerOGM6H92gL9GebLlseEhVGZN006pYlyyb5k1GVfhp7LzbGNDQWAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NS+Ir87A7hMdS05pA5lIP70EV6ArkjcWoo9W2xzsvTE=; b=wBQgNm+QtaOUJF79pfjWM9mpl0Tho6x2fpCWe/JlLu6xGVjNw+wL13LbtEFenLbrmJEsXTqsS8DL2gJiSXkpTQBtu1WhJhUgJzL6gI9iqih+tg4bVj1o/H9q65sI2VLtOCc+SDBH77/C33aMKUyaEdon8KlyZsKLkVJQZsu8ieMySkPYj1OQbEht3bqoQxVk7qvwTd06tD6GW1do6vAXkfHWU6RKfEO3AACz4eALd6aKdsVfVBa3JXL46hjVLuA9uMrPDnDuLiJImRWK1EMqA1Eal6Aavk4ieng3D+ebU+W6sK9VNMTXbzzXc5nW5XG/lnt9WghC5weCWCmDEATxtw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <3ff84ed1-8143-15c2-2b4a-3ae8ef23677c@suse.com> Date: Wed, 19 Oct 2022 09:39:38 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH 02/10] x86: split populating of struct vcpu_time_info into a separate function Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR0P281CA0083.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1e::18) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|VI1PR04MB7053:EE_ X-MS-Office365-Filtering-Correlation-Id: ad5e30ed-1ee7-4ea8-56cd-08dab1a517ae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FXsLKYJshS7GEnqLwf3tWxbapiQJw5SH9CV7KNtJNmrfum7Z8yjghnpOdfay2n4Kn1KZL/rEx5fxrzZytbufIg0KvKzgLp+6+6l1lCKetYc7GCHLwCZ/1a57UXsdZf7fUgjYlbCzDos9DqEQW2F+wAmq1nxYRyINjIOxCC/tdbMprynjqkQW61VGbNdbtSFkP07lsnBlm6JwFoinoocDJDQQ97uxn95kuWMXCxezb/qm4yBEPmdjYUYIC5VUOWyuFkuneFEAaUM+R79WOpjeu4Hu+Z9pDi91bcxh7Z37m0oZOTvKrX6IWSBqaaaDJtDlC2+t21/kq8wl+IgL7jNe/Xi2MO+Pk1ma19WP7aOmavHWWdk9ZQRx4dkHHHZyZDeVYy+UxEgazP+YAi1t7JBOfe8is3ysHJeiMZVnbjWgBphYHGUV6vrBacz5dWxRmb45q5jelJrL4G5AA+A7tjpEaQTttRLu+YK8iS6aqMM5Ey+8oNeB1MLN1lo3AIb7R+KZWVgMlx8WzER5mjfF8LsD1b7kAiegcjzqoadkQ5OgcUv+gPrh/7h7IW5og9VsoyU3c+HZjb/ELEhn41QkugJ3OxL+Ua97SoKXc8L9KmvruUmnQ9oB6t61AgEB6kqcen/BqemKczhktF3T9CPQNM8iRPznTUcRnM30IfamLR+GReEKN809lVgJlIABVRIwXUqVF96pBgsFJadiE61MuOA66ES8L0WmBpF0kN0wsb6+iUkBViIa/FDffmuZ208VkKfblsOahy9BqTITBKwBDL0z9prAuAnJLNAfkcP8y7MKJt0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(366004)(346002)(136003)(376002)(396003)(451199015)(41300700001)(2906002)(5660300002)(31686004)(8936002)(316002)(6916009)(54906003)(6506007)(478600001)(6666004)(66476007)(66946007)(6486002)(4326008)(8676002)(36756003)(66556008)(38100700002)(31696002)(86362001)(26005)(83380400001)(6512007)(2616005)(186003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?a21lMWZkWDZLRTBlYW1ZdEQzTkppQTJBZkcwUmV6aFcwOEZYVTZZY3dnRzZn?= =?utf-8?B?NGFWV0dFRHcrVVc0SjJjTlJMUGtxYmNXUy9OTkkrQ2d4N3p1Ykt2Ujd3aGp3?= =?utf-8?B?ZEttNDNwZUg1U2FpeGlPMTczYW95a2JsNkNtQlZaZXVUY0ppV0dySlZwVG8v?= =?utf-8?B?amlTOWxiT3VFZ09ramt4c0E0TkxGeWxzUnRJeGwrU0M1bEpxNmtIejRQcVpG?= =?utf-8?B?NWpXeUJXOGN6RFczeWtvYnlEVnJxY05yNHVYdUROSnNOdVFUUzNRaTFhQzNa?= =?utf-8?B?VmVYLzNhbGRnekxtTThMUWt1d1FzT04vRlRwbkFCUVlEMmhMWXdZeWdxRWRz?= =?utf-8?B?QmFrZlhRRGRua2dHUnl6V3JGUDNnZm91YzJ2Vi9LSXQvUHg3Q25oN25RdXRq?= =?utf-8?B?QjBYdUlreFhheUt2YjJyV3JTRFJIbjZZMkNGY1ByV2FiTFpUL1hQV09zS3Ar?= =?utf-8?B?NWJFeTRZS1RTd0VWRE8ycm54M2RZbXI1bWs3TmtscXUzQ3JSYWFkay9uWHNQ?= =?utf-8?B?ZGc2SkpVVmRVZmYwUklrenUwTmlYNk1kN1hIZDVIVElFNFVMRW53MlFzM3pY?= =?utf-8?B?dWV0VmtLTXRlMVdxUGN6RU1BRkFIS0VidlVpemhTNFFJQmMzOFNYV0lQdk1u?= =?utf-8?B?ckV4cktKcVlNWG53Z2o0cVhzMEVkSlkvZUVtRTBoQU9ZWklqWDQvcUx0VVNG?= =?utf-8?B?c2w4L1BZYnd1c1ZKMXQ2V1ZxNVJFakR0Rm5ncWRvMUxZaTEvYmQzL09PTTJN?= =?utf-8?B?cVRaMWw2Vy9yemNqS0REOU1XYW5YeGxkN1ViRmpYKzljNHhBdFJldnBISEQy?= =?utf-8?B?Nlc4dnY2eWs5eE5MVEtkREl0K3Fvd1NiVUgzNmpOY3RidDhBU01pcU9mZ21R?= =?utf-8?B?Z205ajRsc0FlT1VOdk9rbENnWkg5eDJxZ1NZeThsUnI0TjVpb2ZndFZRQ0tv?= =?utf-8?B?ZW1FdUYrbk9GT1dWTGxjR0Fybnd2TjJFVjVyeTEzQVh0aTFZT0dUZW0yT1Js?= =?utf-8?B?MUVWSnhwMC9COHN5WSt4RHJuTFBxeHZBc2cxWWorSlB2UjBoWmNoZkE0QjVY?= =?utf-8?B?ZjNNR3YvajdQQXpHWC9STlBEQ0MvRmdtMXJJUitTYWhJUXlka1YwZ2l4Uk9P?= =?utf-8?B?UEZVbnVqVTBvUWVia2poV3MyeGhDVDZTai9sSER6ODkvNjNtZ2wyUjFBdGNC?= =?utf-8?B?VzYrU2pQc1BWbS8yc3l4a1Q3N3VEOXVhVGNGNEUrelFnK3dnaE1DcGd5K1ZP?= =?utf-8?B?Z1hTVEc3bll6TFAweStBbHZuQkN6Nm5KQ01nUEMrV0lVK2p0Y2lEdUxjMml4?= =?utf-8?B?TGNBekhIT0U5NTl5YmFkbGJBNk9GQUQwTUtyTHkwSlFpSlQwejk3aUNiNkNp?= =?utf-8?B?UEdxR2FSdThxdEFsbUlLMkE1Y1BqbTd5Q3NLb3FXa1EyTUlCZkhKeEl4aDFT?= =?utf-8?B?Mk9jYUlSL0k1c05NMXE3eXFIdUlEbkxJMlF3M0d6UFBhbi9uNjhTa3k4eU1w?= =?utf-8?B?eUJ0R09nWGl4bzh6ODBjVFFzY2pKZXEwK2Z6SUhBUFZFNGRHQys1QWRqWnVv?= =?utf-8?B?QW8xTEhtTEF2MHV1NVQvRlNtNTB1bjNDZ090emc4L01iR0h3dW1wTlBaZVgw?= =?utf-8?B?eVkzNENpZFFOcTg1MkU4eFU0aDJ0dHhyd0RWMW5lYUlPMEV5eWlVcEpFNUpp?= =?utf-8?B?enRNMHNwYWF1cHBsaUlsWXhLWUI2c0ZNc2VCZFJGRlpqMEljL3lqdks0dFNx?= =?utf-8?B?MUQwYzNRRzVkOGFnS1VLVHl5SGxYTDdNei9keVl4WVYvcnJ1aEl1N0FBVjZT?= =?utf-8?B?Sm5LV0pIcXVuOTJtRnVPYnVyRlRhbitDL1Z4N0MyajdwUnI5MTVTYm5DNVQv?= =?utf-8?B?c29lUnpVS0NBVnFIVXRybWZjQ2laRnB4YkdUOVcxUW8rYVQyOVErcmUrVFdG?= =?utf-8?B?WllBeklwM0xqWVR5N1pQaGphME8yTDlMSjZ3NkYrRFl1WkdYRmlWV0tPZ29Q?= =?utf-8?B?TFZzWlVMa0NHWlc0dkhwMk5ISDhjQWRvMGJTYmpDMkQxTVNjNU9kd1pReW1U?= =?utf-8?B?KzNuVVJ0R0M2cVZsTURLZjloSGErLzRWOVB1VE5LbjlxM0huc3d3VnhJU0NZ?= =?utf-8?Q?RgQMynEFrJTjlXeWU+WTnxQUB?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad5e30ed-1ee7-4ea8-56cd-08dab1a517ae X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:39:45.2774 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: uvMxJBohBNqiJdxwoY+KRk27By85ROdgGfuIu/7Wsv3Vh9uxdyRYNRNtTVb4LVdrBbkAtgh772uk29OSQnH51Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB7053 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165213464100001 Content-Type: text/plain; charset="utf-8" This is to facilitate subsequent re-use of this code. While doing so add const in a number of places, extending to gtime_to_gtsc() and then for symmetry also its inverse function. Signed-off-by: Jan Beulich Acked-by: Andrew Cooper --- I was on the edge of also folding the various is_hvm_domain() into a function scope boolean, but then wasn't really certain that this wouldn't open up undue speculation opportunities. --- a/xen/arch/x86/include/asm/time.h +++ b/xen/arch/x86/include/asm/time.h @@ -52,8 +52,8 @@ uint64_t cf_check acpi_pm_tick_to_ns(uin uint64_t tsc_ticks2ns(uint64_t ticks); =20 uint64_t pv_soft_rdtsc(const struct vcpu *v, const struct cpu_user_regs *r= egs); -u64 gtime_to_gtsc(struct domain *d, u64 time); -u64 gtsc_to_gtime(struct domain *d, u64 tsc); +uint64_t gtime_to_gtsc(const struct domain *d, uint64_t time); +uint64_t gtsc_to_gtime(const struct domain *d, uint64_t tsc); =20 int tsc_set_info(struct domain *d, uint32_t tsc_mode, uint64_t elapsed_nse= c, uint32_t gtsc_khz, uint32_t incarnation); --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1373,18 +1373,14 @@ uint64_t tsc_ticks2ns(uint64_t ticks) return scale_delta(ticks, &t->tsc_scale); } =20 -static void __update_vcpu_system_time(struct vcpu *v, int force) +static void collect_time_info(const struct vcpu *v, + struct vcpu_time_info *u) { - const struct cpu_time *t; - struct vcpu_time_info *u, _u =3D {}; - struct domain *d =3D v->domain; + const struct cpu_time *t =3D &this_cpu(cpu_time); + const struct domain *d =3D v->domain; s_time_t tsc_stamp; =20 - if ( v->vcpu_info =3D=3D NULL ) - return; - - t =3D &this_cpu(cpu_time); - u =3D &vcpu_info(v, time); + memset(u, 0, sizeof(*u)); =20 if ( d->arch.vtsc ) { @@ -1392,7 +1388,7 @@ static void __update_vcpu_system_time(st =20 if ( is_hvm_domain(d) ) { - struct pl_time *pl =3D v->domain->arch.hvm.pl_time; + const struct pl_time *pl =3D d->arch.hvm.pl_time; =20 stime +=3D pl->stime_offset + v->arch.hvm.stime_offset; if ( stime >=3D 0 ) @@ -1403,27 +1399,27 @@ static void __update_vcpu_system_time(st else tsc_stamp =3D gtime_to_gtsc(d, stime); =20 - _u.tsc_to_system_mul =3D d->arch.vtsc_to_ns.mul_frac; - _u.tsc_shift =3D d->arch.vtsc_to_ns.shift; + u->tsc_to_system_mul =3D d->arch.vtsc_to_ns.mul_frac; + u->tsc_shift =3D d->arch.vtsc_to_ns.shift; } else { if ( is_hvm_domain(d) && hvm_tsc_scaling_supported ) { tsc_stamp =3D hvm_scale_tsc(d, t->stamp.local_tsc); - _u.tsc_to_system_mul =3D d->arch.vtsc_to_ns.mul_frac; - _u.tsc_shift =3D d->arch.vtsc_to_ns.shift; + u->tsc_to_system_mul =3D d->arch.vtsc_to_ns.mul_frac; + u->tsc_shift =3D d->arch.vtsc_to_ns.shift; } else { tsc_stamp =3D t->stamp.local_tsc; - _u.tsc_to_system_mul =3D t->tsc_scale.mul_frac; - _u.tsc_shift =3D t->tsc_scale.shift; + u->tsc_to_system_mul =3D t->tsc_scale.mul_frac; + u->tsc_shift =3D t->tsc_scale.shift; } } =20 - _u.tsc_timestamp =3D tsc_stamp; - _u.system_time =3D t->stamp.local_stime; + u->tsc_timestamp =3D tsc_stamp; + u->system_time =3D t->stamp.local_stime; =20 /* * It's expected that domains cope with this bit changing on every @@ -1431,10 +1427,21 @@ static void __update_vcpu_system_time(st * or if it further requires monotonicity checks with other vcpus. */ if ( clocksource_is_tsc() ) - _u.flags |=3D XEN_PVCLOCK_TSC_STABLE_BIT; + u->flags |=3D XEN_PVCLOCK_TSC_STABLE_BIT; =20 if ( is_hvm_domain(d) ) - _u.tsc_timestamp +=3D v->arch.hvm.cache_tsc_offset; + u->tsc_timestamp +=3D v->arch.hvm.cache_tsc_offset; +} + +static void __update_vcpu_system_time(struct vcpu *v, int force) +{ + struct vcpu_time_info *u =3D &vcpu_info(v, time), _u; + const struct domain *d =3D v->domain; + + if ( v->vcpu_info =3D=3D NULL ) + return; + + collect_time_info(v, &_u); =20 /* Don't bother unless timestamp record has changed or we are forced. = */ _u.version =3D u->version; /* make versions match for memcmp test */ @@ -2476,7 +2483,7 @@ static int __init cf_check tsc_parse(con } custom_param("tsc", tsc_parse); =20 -u64 gtime_to_gtsc(struct domain *d, u64 time) +uint64_t gtime_to_gtsc(const struct domain *d, uint64_t time) { if ( !is_hvm_domain(d) ) { @@ -2488,7 +2495,7 @@ u64 gtime_to_gtsc(struct domain *d, u64 return scale_delta(time, &d->arch.ns_to_vtsc); } =20 -u64 gtsc_to_gtime(struct domain *d, u64 tsc) +uint64_t gtsc_to_gtime(const struct domain *d, uint64_t tsc) { u64 time =3D scale_delta(tsc, &d->arch.vtsc_to_ns); From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165257; cv=pass; d=zohomail.com; s=zohoarc; b=Izc+hviSXuwXKISDW2H6tjJtgNISgrOXfbQGOkYTeQeGNY5Nw6l24kyb8XfRiqcEffPHRALO3pmohnlH4WFklsj3U0vxJsIMAynTpUWEJmr+vMoDIZUBbzKm3CVvdQo54FOUTK8mhwWH5MvyB12xwePQvacIh1TxqoY6+6jT3+k= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165257; 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=ys5qUv51nmA4Djlb7ZReN8bSfFratiuu2AVuBlXA8hI=; b=OSNTmAVQENuH3mxVziYiT6btU2sHfC8xISb7zRFtPrUY6vKISWUFo/uEZyBoqX9/stJJLnpG8H3yvpmXxPuJaJs60RylyIpfF6FYlFVjt3tAvFZcrHXrKTzvEmAYDLUsUOJGMtFekA+hpxvjRWN2og92YjZhBr2KSEIpFpKtDog= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1666165257449613.2117354645571; Wed, 19 Oct 2022 00:40:57 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425547.673437 (Exim 4.92) (envelope-from ) id 1ol3go-0003oZ-N8; Wed, 19 Oct 2022 07:40:34 +0000 Received: by outflank-mailman (output) from mailman id 425547.673437; Wed, 19 Oct 2022 07:40:34 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3go-0003oS-Jm; Wed, 19 Oct 2022 07:40:34 +0000 Received: by outflank-mailman (input) for mailman id 425547; Wed, 19 Oct 2022 07:40:33 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3gn-0002QA-Kt for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:40:33 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80057.outbound.protection.outlook.com [40.107.8.57]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 4fa9ec51-4f81-11ed-91b4-6bf2151ebd3b; Wed, 19 Oct 2022 09:40:32 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by VI1PR04MB7053.eurprd04.prod.outlook.com (2603:10a6:800:12f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30; Wed, 19 Oct 2022 07:40:31 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:40:31 +0000 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: 4fa9ec51-4f81-11ed-91b4-6bf2151ebd3b ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U37Wvqu9UKgMQNEYUCUxBzLdO8eR7E1D/VNw5j00Suz1aTGsNuU+lBSqy9waEQg4IdgC12LrbrG6YrBnH9BRcmzVUhgNJuwAm7ByW45I8FQZXQ5Oqo1PhDZF2HWTgkza3aEiiF3BuFPeqR7bhPojtdtQZKJ9+KyPBkhpBtTBZ4kQhCQKMzuzO8F5YQ7C6ChxkvP0QX9/1NzkOLyDocuahxDkYXRuCRwPMWyS8GEaYBIjR034lzRf4XNyUiqLWtHM98ezYjsnOU4yQYemB+F3x2AMCkkEjJjenZiWoZebT3jtWP3glha47aKJYWuigLl7pUjhpw6ZGxB4fiSPijsPVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ys5qUv51nmA4Djlb7ZReN8bSfFratiuu2AVuBlXA8hI=; b=hkvfCA3TvpnPlwwr9qPB+OkRdBGY8FGvw0pJ+Q4dhyfaYu5TOaSn+m3Laq6hqjB9MbPiQwWVl8jrfbF8+iv6DDgkwbXmDWgCzefgZ5FwJQgRpojK0Uwxc4jZtTj+e6FnIX6rkI2gWc40aWwrfXGbPCi0Rhs2Dnig9XhaAfGjg3UI8CbMfn/C9BCxYNeO0CxTI6l/41z+u6kTxxRgtxkWcrxbwiEvcI9P5qHWZ1vUk7wHAyQzIMzKOGmUz9LXdcXhv4J+/cL503BpftujvNk3A8s+6Tt3sJ0ApVT3Sh6l1OoUvWldPzNCMIXfFeQPVCPrO2jlekO7d92ne4Hzz5auEA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ys5qUv51nmA4Djlb7ZReN8bSfFratiuu2AVuBlXA8hI=; b=jW7HmTmecVUTa5ENqHULQr5tLw0/JXIzalGC0BumQ9EEgTe0IXiu+nmuCbsSROdQRIygOD0C9Iu6lJLYshqIYrOIeZDlJEWYgqFO7d7BA+3y2E4hUjGb/meggTjzQLsWfs1sDvfd3RHKXfkGkwZ5/UhP+j3e25cz/J9sB3KkD3YEB3NalgZMdKkHDEKII0rInf2HsfEe/CPHYCWgjUuNNP0Op7gCx/Mst8qGnfP4DqKv4jFZjTcD+n2m2BLcaxfZ/Bk7Mm4jT9IPxyCMdxVLptO42xgbj5AjklHJFo/o3KgHG9eO9TBAdJ5iD3j2kzuARnxAC7cww9CWjtJ5AzDJFw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <214c9ec9-b948-1ca6-24d6-4e7f8852ac45@suse.com> Date: Wed, 19 Oct 2022 09:40:29 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH RFC 03/10] domain: GADDR based shared guest area registration alternative - teardown Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR0P281CA0074.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1e::20) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|VI1PR04MB7053:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e0fbdcf-ebc0-4a6e-b642-08dab1a532fe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 91ndG52ZwxfKmvtSDkw7DrjWZkHE3s8S+r8G7XFuaMXvBOm8p6IZaApwhQC/k6yEF/zflQZZgx7ii0Zxd1hxgSZeRw3Xt27rqKxcAoS9fiZnV5ZtzkETGI8Ps+7SrhCbY4bc4yj/8AlOoJejbjwm9/EDX9HMuiAwP5P3D+0BDzTCXn7JV3zOV1nIk6aDx/0/JXlGSNE64QKQEwdS7UvNjIIx6LEwL/5TMrZB8ABY7vzYOXNrbPYXvye3dnPY3KBsUicssHhIgTf07J9dl3dx687th47HGyY6Jac57zMt3RffhS7Jh/i3PPhCxCmwffSvMXZgY4IKUzDYyzIOH8oZqmoTE/nChyODsgQhUOhilnkyLCjUWgY2qjkpOcRr+79A0/uCxFfqWqmaU1hNe89R66A7j7pnhSbGFbOHg6RXluZi2t7t7n3O97QfaXn5zmCKumk9BzKTJ54nvXhy4OO/+QVJBRrxXl8sVzCOUSmXduzIWOObbOBxWM+6WbwSjFtaBf1IE6sXrwwv0wb0VD9cb9ZJYkX93mgSdeCnWpHekRhMxghxn1aIgTU+EXSTRfWFGLlmeJ92wvcTIM5gpaOGeNWrIHk5YBSr9DNaaPTQvef0pYFjNaDhWwEbfU3X8BXuH68hAwZsCKoycOHtEdSrNvVSnGSYQdVUfZ2LCNzB4l99t9mZ9zx/I64t1Z68/AFc1nxRVhYnQNbXj7L1s77qgbDyfauWGHMmYGptkIqN1futl1JtS6w5p3CIqGowHB/zaS38U33cno129auYvg/xf0Hbhl3J4mggOXjNnkGLVWQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(366004)(346002)(136003)(376002)(396003)(451199015)(41300700001)(2906002)(5660300002)(31686004)(8936002)(316002)(6916009)(54906003)(6506007)(478600001)(66476007)(66946007)(6486002)(4326008)(8676002)(36756003)(66556008)(38100700002)(31696002)(86362001)(26005)(6512007)(2616005)(186003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S05HbDNsQ2piQ0R0WlNMZ0ZqclVoQnBHNjZLZWhDMVdZNjlaQlRBZUR4UCtX?= =?utf-8?B?WDRlZ2RoOTRQTVBDRlZlMHRJZ1FHUFdhSFZYekxpamJSWjRYTU9GQjVXYk5s?= =?utf-8?B?NVhSN2FwM1k2d1NKbU4wMVlOR2NXMVZqMU5yTlBKWlBGVDRMMGU2Q0RyWDVn?= =?utf-8?B?WVl1SUk4QWhzUjBlOEswMjNoMmpUeFB3MXpaQXh4cTI5N3N0WjdueFBCQ0VV?= =?utf-8?B?K1BPUzkwUDhJZEQ0M2YrUFpRMzR4VUFSZktoeG9hSnNGdUFnZ0ZtQUg0RmZ4?= =?utf-8?B?K2NhMFNVVG9ZcmhTV1hxZ0dpRFlQLzR1MVp2SzkwWU51SUR3OVV1N2VSL2ll?= =?utf-8?B?cnZLWFowVjdDZ0N2NWoxd1hlQ3JXMWczenpIbmREQ0thSlNrZUd1ekRhd0JM?= =?utf-8?B?Q2dTMGpkZ083Mjd2UEJ0RytjVkVNUGEwY09CL003S0tCdi8ydnh6SFhEVHhZ?= =?utf-8?B?QXUzU0NZMWdSK3lVOXpyS3dwdDQyTU1VSTRWK0l2YjBOUWhQS2VCY0txUGNt?= =?utf-8?B?Vms5VHc5UUpzU281OGo3WHU3djZaVzBjQkd0YUpZNWQ1Vy95bkYvRU8wNzg0?= =?utf-8?B?M2VXYkRMRDc0OHNnTkh5cGNKbHVmTnltcXc5VnhZZEN0VTdzWHJzeTVxNTNF?= =?utf-8?B?cklIaGh5L0pVRWpYQWlRS1dsTW9PTk04NkJHUE1MeThKeHdkWDJrbk5PV1kr?= =?utf-8?B?cGFKZ1Z2YXZvQy9BQWtRUitXMlBIcGxJUFVRT2NxWVNuVjFJNUMwM2N5TG9O?= =?utf-8?B?OHlXcTFzdVdvOFRKMEtBNGdyMFlGZklSdFBQcXZ0K2lDOWZzQkdjMnlXQVhT?= =?utf-8?B?NnhBM1ZmaFFuNEtrL2N6b3J2SlN1NDFacEg4TDd4YkhSend5N2UzYXh2YjRz?= =?utf-8?B?Ui9FTldZRjY3NUlQNmUyYnBpb0tZVmhhVXBWVklaVVc3NU1oOWZjekovK0Zh?= =?utf-8?B?aUZ3WVJnVC95OGFnZy9QT3NNbkRzWDBtODNROVV4ZTVvSVhxODAxSm95RjUy?= =?utf-8?B?ZmozejNzeHN3Y09YWGYxb0U2MkhrYjF5dGtTNG9EYWdhUXJISUd4c3BWWm8r?= =?utf-8?B?b3ZaQmdUY0pDd1c5SXFveVI5aVNjdy9zdXN0MzR2c09uSENUR3g4TzBNWk5x?= =?utf-8?B?N1o3VXRuV1pOYkhkRldKT2dSZ01LOVlIVXRoZ0JCTFMxazZiK0FWS0xkL1VE?= =?utf-8?B?RmtEQlBXSWZNbm1QMFhkSWxHZ3BmUzhBOHk1S0JRRTRSM0hjZ3BzREdrWkZy?= =?utf-8?B?ZTdoWFVQSU15WHJwUkh5WnNKK3U3YkE2aEgwTlhOTVE4MjFIVVNCOWNMM0VO?= =?utf-8?B?dGNCWkhHVTYyZHdqcTFxc2FFZlV0M2lGT2FvYVRqUU1UVUk0MENub1NpSFE3?= =?utf-8?B?L0FsTlhwSHBkUTJVRml0VlpxTm9NTktNMmFyQ0d1UUdFcGw2aXpGczlwZ0Vo?= =?utf-8?B?UWo3MjJJYVhGSVJLUmVDSldQNFNBWXV1RTgzWHQxeWpUWXBtR2NmekFBU3M3?= =?utf-8?B?RkpHZTkvZUZvWEtHdERPQ1ZuN1NUdEQ5b2lpRTZlOHNwdFEvcmJLa2lWemc2?= =?utf-8?B?SkQ0SlZmcXhlbVQ3aEE2d0hQN0h1bUtCaDF2NmpmR0V1S3FvVVBwZHJZeTBr?= =?utf-8?B?clE4ckpKZXpaZE5zQmRpZUdybEtJa3RMK2NtZGhCUlVvQlZxejRxN3lTbUtY?= =?utf-8?B?d1d4dG5Ka1pVODRFYXd2V2cvSVdLUGN3dVIvTzA4L2p4YkJHRmZabXcyUU00?= =?utf-8?B?ZGZ6ckVvZnlrbjlqbG1Bek1rVVMrMU9WK3dielhzYVdRNG9Vcm1sQ0pZdFhL?= =?utf-8?B?UmMxdmN4TE14SGRnazZXVjcvRVQwMHdJb0tzZDRUWTRhSXZ6SzhBaXNoV0xv?= =?utf-8?B?a2FwRFY2SEZaMlhqVkRGR3MrVGwzWEtub200cHZMdkZrY0Zhb2w3THZZQW9l?= =?utf-8?B?dlB1dUdIS0hxLzhzc1ZaVEg1cks2cHJ3TkljZFNFUGdSZ3lPQURNWDN1emJT?= =?utf-8?B?aS9uZHJuWll6MENNdEdzNG13UVY1YkQvMzFjNVJvS0ZXZlJZZzlKajA0dnZa?= =?utf-8?B?Q2h1ZDdnL1pBRXN2ZVBSMm9RZ3g0OU9nNkdMTjgzQlk4KzFHRWhTaGFjTUhS?= =?utf-8?Q?h1lx5ewCMpWw7qGLXLYDDPUl3?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e0fbdcf-ebc0-4a6e-b642-08dab1a532fe X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:40:31.1026 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FBTIDukUI3PcDhSfJBYbmRNLzJ2DY5oOfvZU4dfWBdLjk4WYBSiHZpRkYdnyWgsKlrMdul2swqc5K6QBuuQRvg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB7053 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165257679100001 Content-Type: text/plain; charset="utf-8" In preparation of the introduction of new vCPU operations allowing to register the respective areas (one of the two is x86-specific) by guest-physical address, add the necessary domain cleanup hooks. Signed-off-by: Jan Beulich Reviewed-by: Julien Grall --- RFC: Zapping the areas in pv_shim_shutdown() may not be strictly necessary: Aiui unmap_vcpu_info() is called only because the vCPU info area cannot be re-registered. Beyond that I guess the assumption is that the areas would only be re-registered as they were before. If that's not the case I wonder whether the guest handles for both areas shouldn't also be zapped. --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1035,7 +1035,10 @@ int arch_domain_soft_reset(struct domain } =20 for_each_vcpu ( d, v ) + { set_xen_guest_handle(v->arch.time_info_guest, NULL); + unmap_guest_area(v, &v->arch.time_guest_area); + } =20 exit_put_gfn: put_gfn(d, gfn_x(gfn)); @@ -2350,6 +2353,8 @@ int domain_relinquish_resources(struct d if ( ret ) return ret; =20 + unmap_guest_area(v, &v->arch.time_guest_area); + vpmu_destroy(v); } =20 --- a/xen/arch/x86/include/asm/domain.h +++ b/xen/arch/x86/include/asm/domain.h @@ -661,6 +661,7 @@ struct arch_vcpu =20 /* A secondary copy of the vcpu time info. */ XEN_GUEST_HANDLE(vcpu_time_info_t) time_info_guest; + struct guest_area time_guest_area; =20 struct arch_vm_event *vm_event; =20 --- a/xen/arch/x86/pv/shim.c +++ b/xen/arch/x86/pv/shim.c @@ -394,8 +394,10 @@ int pv_shim_shutdown(uint8_t reason) =20 for_each_vcpu ( d, v ) { - /* Unmap guest vcpu_info pages. */ + /* Unmap guest vcpu_info page and runstate/time areas. */ unmap_vcpu_info(v); + unmap_guest_area(v, &v->runstate_guest_area); + unmap_guest_area(v, &v->arch.time_guest_area); =20 /* Reset the periodic timer to the default value. */ vcpu_set_periodic_timer(v, MILLISECS(10)); --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -950,7 +950,10 @@ int domain_kill(struct domain *d) if ( cpupool_move_domain(d, cpupool0) ) return -ERESTART; for_each_vcpu ( d, v ) + { unmap_vcpu_info(v); + unmap_guest_area(v, &v->runstate_guest_area); + } d->is_dying =3D DOMDYING_dead; /* Mem event cleanup has to go here because the rings=20 * have to be put before we call put_domain. */ @@ -1404,6 +1407,7 @@ int domain_soft_reset(struct domain *d, { set_xen_guest_handle(runstate_guest(v), NULL); unmap_vcpu_info(v); + unmap_guest_area(v, &v->runstate_guest_area); } =20 rc =3D arch_domain_soft_reset(d); @@ -1555,6 +1559,15 @@ void unmap_vcpu_info(struct vcpu *v) put_page_and_type(mfn_to_page(mfn)); } =20 +/* + * This is only intended to be used for domain cleanup (or more generally = only + * with at least the respective vCPU, if it's not the current one, reliably + * paused). + */ +void unmap_guest_area(struct vcpu *v, struct guest_area *area) +{ +} + int default_initialise_vcpu(struct vcpu *v, XEN_GUEST_HANDLE_PARAM(void) a= rg) { struct vcpu_guest_context *ctxt; --- a/xen/include/xen/domain.h +++ b/xen/include/xen/domain.h @@ -5,6 +5,12 @@ #include =20 #include + +struct guest_area { + struct page_info *pg; + void *map; +}; + #include #include =20 @@ -76,6 +82,11 @@ void arch_vcpu_destroy(struct vcpu *v); int map_vcpu_info(struct vcpu *v, unsigned long gfn, unsigned int offset); void unmap_vcpu_info(struct vcpu *v); =20 +int map_guest_area(struct vcpu *v, paddr_t gaddr, unsigned int size, + struct guest_area *area, + void (*populate)(void *dst, struct vcpu *v)); +void unmap_guest_area(struct vcpu *v, struct guest_area *area); + int arch_domain_create(struct domain *d, struct xen_domctl_createdomain *config, unsigned int flags); --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -202,6 +202,7 @@ struct vcpu XEN_GUEST_HANDLE(vcpu_runstate_info_compat_t) compat; } runstate_guest; /* guest address */ #endif + struct guest_area runstate_guest_area; unsigned int new_state; =20 /* Has the FPU been initialised? */ From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165297; cv=pass; d=zohomail.com; s=zohoarc; b=SuQxxJS4NtQmAs7lIENKgHIdn/PlDnh8+u00vtdfn84RiHwL+zrDvDt1IdyMUF1UmmgPo2roo1zF/J96Y5ZLwi7L6L/9ru6spHSfSFG+IHjqtoM9MuWKkQgg+ZQdx5QR3AKxZQ4/0HXI0fWYTkC5/AHaNTIvi51rmhnDoaLLj8M= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165297; 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=HZp+A6KIECj3TCy69kUkEPmXjjjlHR2l+u9nS0q8m9M=; b=YAPiAoKErLXcEJ+oq9L8rCr4C7Os/D2RXoTOF9sMm/b8+vtkJh8z/7cgZnCNLrpeQoZUBtMdhA/sn7H96g+KBsmRd9noq2lYuzwobecdJ54DbR00yB3QyQvpHFOXECZtWUAYZhxSdQdWsgkKC/iwgvQo2ziZ8mFxMxNO7LbYO7k= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1666165297030632.1420429925869; Wed, 19 Oct 2022 00:41:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425552.673448 (Exim 4.92) (envelope-from ) id 1ol3hR-0004NB-W4; Wed, 19 Oct 2022 07:41:13 +0000 Received: by outflank-mailman (output) from mailman id 425552.673448; Wed, 19 Oct 2022 07:41:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3hR-0004N2-Sa; Wed, 19 Oct 2022 07:41:13 +0000 Received: by outflank-mailman (input) for mailman id 425552; Wed, 19 Oct 2022 07:41:12 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3hQ-0003Zj-K9 for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:41:12 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80073.outbound.protection.outlook.com [40.107.8.73]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 6722243f-4f81-11ed-8fd0-01056ac49cbb; Wed, 19 Oct 2022 09:41:11 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by VI1PR04MB7053.eurprd04.prod.outlook.com (2603:10a6:800:12f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30; Wed, 19 Oct 2022 07:41:10 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:41:10 +0000 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: 6722243f-4f81-11ed-8fd0-01056ac49cbb ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SIhE9zIa89SFf+cHOPBHECxdOiSLaHPWte+PjRZnwk0OnvNSjNAM/wcZx/zjeeDAxy2KwIli+Lvhlc7M411qV03BuI8oJEwr8a/bKX/AK27UAfXviO/mfTEinDq5lKg9FrWti5Qd7sVwoooqcxzifGX/38Ekl/5J72BZG87xVcfc3UvPLToYfuyORdPI4CtIxA9DDm5E16lwytETBOZGEbZtKpBO5NUJYyyEjAGph+uMdJ/erxuJSGmWnimfREAk+y0Mjpf3wKTpVuehRcwJVDJCJyHIlc777plKqkMSAjMp5dtCNp+mYpGTOoH5lVWs/OtepFwauMGyoz99UMX4Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HZp+A6KIECj3TCy69kUkEPmXjjjlHR2l+u9nS0q8m9M=; b=D6e323yIvK2fQFHtHf0x9IEnEkO3KsKQMDnw0OR8NVsyLXHfHVQVGbSIe7f/YCEyQ8AZbTXp3ik73QEG2bv5GLGIjtEZY3AJBXZJ0po3HYC/kjxyo/D2BH5w7r1tN6OJN83hUpIXegF56ZLtljL0EbxfLCDsSxi6kcnQD1MFpI+DAWezchTeCZTHP9iC4uj7ilWUOQzuZtcX2fubr6pC4aSsce/5PZiXcbHPdIsJapidUS/neMMQYbox5LsyIp2qcK0+QEkLCi/VenDKJfUJKjPc/neFcG8/6bweU4QF/fLlJG60j4CeGKDzJ/nYUpAo68bSzHPBK5q4xuRNHyOYyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HZp+A6KIECj3TCy69kUkEPmXjjjlHR2l+u9nS0q8m9M=; b=mrUuh7e4haF3QCUhjMHMxDkuvI7nuiPgfindF1O1/ASDAXtg3Kwb8AVV7Dh+3FCa4urRm8o8TpQXf1koepNVbwpRmLMxcEglgntnR+Fg2hdY+YsmFs6r9j/kX4HwyVlou2hqGLrlX3+fEJFGdFBafDLL9nbnGM8pOdgpaUA862EHTsuNYPyXhwcYEqaNb9vq6tvuyzuDKJcfgfq31ZCKsSx+LrQZuvXAuIl3g/hhSmvZMPsxmm0zqeZvnQePiXCs5dpHmhrwn4x8HByzXo8DUc4L6u3KdV0ctvRNWosSshdK8KfU9WPI+XUdI7T/1susOnvRU7h5qPDu2FYZrM12Iw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <22422a1c-1cfa-95d0-c1fa-99150a8f2a32@suse.com> Date: Wed, 19 Oct 2022 09:41:08 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH RFC 04/10] domain: update GADDR based runstate guest area Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6P194CA0098.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:8f::39) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|VI1PR04MB7053:EE_ X-MS-Office365-Filtering-Correlation-Id: 519bc538-f9d8-498d-a15c-08dab1a54a7d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6kJZBBSRNjt6kprI8vd27PyXX0MSuyL1D00cmStSZtOSJUhioZTLvKU7suAPiehczis8uJ6dd41fL8ctbQhCMghoXQKnPUnhdEg0zyhWE7k6qM7ZpvXkuEMmrpM/8qZ9ILyD5HVfRBZnMVCPj7+RTHdLO8aO3hQjAhkJWRXfUiJzCs57OCBUEun9V80H4G8PCD14SY8/3v06pC1LMPNYQ10rTNuSJQQidrDyC25FYedUMhBS58b5nAtYgAagUggSFrS1rrk/Jf2TtvXGKk4GQOa9lNTFKseSmJ7e/NO4e+BZXtg1uV5+/kCRsUwImDz3wGRrSAnzdsv837DlOyx20EJYtVVGxX7is1memkH60YjI9J6vNXaOkq32GTnjQY5n8pBiM16/L52Tr10R/L+IE3ml37t16mGifyeeqf8NcdDewGo8oJaOZdWRp7iEuTN86wDBizMeDOiIG9toEQRhuhNsaM6d7DRBFbkoOgqX+95WQbTzBXTKoUJvclQQsMmstwFUrcV/y/pZizNu3F1ML1Xmt2pbbeaW/LTuZNOft+dCyJa/xDQJlkFVlb8NC4/pBcrpHrR3w0romaT9a2BPvPu6tymTKChcP87caZtsz8sa1DNd26DAh+Zs1XcoxRsMsPOj2QgZ4EE9XtcZwhGiEbujuysgb4jPT3D2gU/NgXOKT1BM2iDJZlXbNXuf+nj5qpvyvJitmFWwot7oRpCH4XD9cvfYCTusaPpWWRZYdNvEVIKpTcn+f+df01Qh32zUEGRNF/fjslNUqM5sU4frlAUMLWmN8EpHyBnkcKmOcy4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(366004)(346002)(136003)(376002)(396003)(451199015)(15650500001)(41300700001)(2906002)(5660300002)(31686004)(8936002)(316002)(6916009)(54906003)(6506007)(478600001)(66476007)(66946007)(6486002)(4326008)(8676002)(36756003)(66556008)(38100700002)(31696002)(86362001)(26005)(83380400001)(6512007)(2616005)(186003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L3dFY0Myc3JGRURlbWkxRmxNSW9mMmE2cFZGdTZKT0J4aEhVUGVGajhvYSt6?= =?utf-8?B?c1JNbm5iZnpsNWM2ZnAyYVRYS3R6cmVWWFgycWN0dHpJc2FvSmllR0xTS0hO?= =?utf-8?B?a3p1WXVKS1NwTjMwc2xRSEk2ZllkVFpFUitQQTVWNjhXSEN5QTBCdEZkWFZN?= =?utf-8?B?a1ZqanBXci95cXpHRElUbHo4VWl2NnZZcVlUN3RzK0NzSmtiM1ZHTmtXU0kx?= =?utf-8?B?WlZMZEt0K3BYRmF2TCt2Y2xDa3JuaTU2SXBwRnlzczJhdnplM0s2ZXVydS9h?= =?utf-8?B?UGZVMFZFWUJ1Si9BejNXeC95Q05QbHNUMVdxWmZxRmdsc0gwRndXSmIyWm40?= =?utf-8?B?TVdxZGRRWmZrY2ozcHlsMkJwUlh0NEZHb2E1aGhZYjVsU3VaK0VHS09zbjJV?= =?utf-8?B?ZnVldE1OaXNYaVRjREZFYVR0alVkNUhuTFA0RGlJR2dSYUExczhGQ3VhQlFI?= =?utf-8?B?d0NwZW1uYVJOamF0YnI4SDh0dmR2Vm5XbFZQSkxQQnFXZ29kTmlXZ2tYQ0li?= =?utf-8?B?Uk0wdGRKN0hNYkI1cW1aMldYTlhBZGZVc0xsQitwSEdKLytKRVhNWDhKR2Vo?= =?utf-8?B?U0htbTU0alh5MmpkUkVta1lDRGJJK2VzOURFTVBtVVViaVhQN1VzWm4xNjZV?= =?utf-8?B?YUJnWjVOMXRLTFBFR1E4UUpSNi9QQU5YZUFEU3U0b2tadVFhTWxYUjN3T0Yy?= =?utf-8?B?QkFaMWdZZUFqNzJYT3RtMzRzMDVXQ3duZTVsNUt0elIxRnduc0RtVStCQjRB?= =?utf-8?B?bUNjamdoVnB5dEgzMTlNL1VIcXFleXZUTFF1VnpqTWYrazJpMW5NTWNwTVhr?= =?utf-8?B?anlKMUhBZVpXMDRjSUI5YkIzUHJkUm0wcDI2Tm5ucjNxYUQ1WW5YaWhsNlJ6?= =?utf-8?B?cEF3R0F6Zk1LbXltd2t0L1VMbDEzNFZ1Z29vUEcya2ZhRlB2cG1reElVLzlP?= =?utf-8?B?WUNLblJiMjdYLy9zUW5qRTZjU2kvTWF4cWk1eFFBMWkyQWYwQUNpOFhhTDND?= =?utf-8?B?K21FQ2gzbWVFay92QUNpRDRmSDZnUXhUdUlkM0NBQURIejlYSTZUdXJNK1pi?= =?utf-8?B?d3RQU1RTSy9GREdNdm5BcGFlbGE5dFgyU2hlR2FPT3ExMUJZQk9TVlluWmpp?= =?utf-8?B?YUJKRHZCQWFyRzZ5ZitkZFhGK1F6RXB0TEl1SnV3MFk2dE1UR0hOcHZkYjRQ?= =?utf-8?B?YmFUY0R6T3FTU21TMDJaMWdENzdTcjY0NS9uREgreUFuaDRXbk8yNjg1MzJT?= =?utf-8?B?d3Avdy9LNjJ5Q0wxZTZqOU4rSFhtYmpNYzlib0xRK2xZSW1HaVM0bmxSNWhJ?= =?utf-8?B?Qjh2ZEkwQ2hBZVM5N1BjQUV6Rm5HNDRIZ1FiOVNxZXNCWVRvWisvMWYvdnYv?= =?utf-8?B?VGxVMEZzeDE2SDVvd2NGajc1WHl5enU3R3FsNUR5N0x2WEpLaWw4L0hsbjJN?= =?utf-8?B?eFdtc0krTlpKRVpueFdsU1lkak0zblhXYlI0SE9ZUFpnbCtBL1JQWjcwaHJU?= =?utf-8?B?eXloSk5ra1N3MU9PcitSdnJIYlVOV0tpeGRFQnd2K0FvSFJKeDBWZGNSOFlF?= =?utf-8?B?SlBGYkdiMTZmdktzL3FWTTZnZUZnNW41ekxRdGtoSGs4N1lBRldJdlg1N3Fq?= =?utf-8?B?V0J4VDg5YU9ZVGRxQTRjKyt2TVpUalRyczVPTFU0TWQ0S1ZZT2hpUTVZeWl4?= =?utf-8?B?Y2tDOTVmdUl2V2hVQnlIWnpuV0p5cnJoUUI1U09QTlk3NURtZ3kzbERaNE9s?= =?utf-8?B?NFlGa2pTbjVhSzUzM1pSc2xNRDZlekN5SHVZWkYraThFNVoyVzRWY1hvbXZT?= =?utf-8?B?ZTVQcUNBbSs5STRQYXpUdENMWVF6WUJHNFJ5UXVDc1Z1RkNLS24wdHZLMllw?= =?utf-8?B?R044VldxNzM1YVBkT3NlaW1wU2twWi9NQjZYdnA4Y2lDTEw5Z1hqZWpWcXNO?= =?utf-8?B?aGIxcnBWSWhQWGV1bTRaSGdVeUxpd2QxemxPMkhDRVVKMXdydkJONU5xcnIv?= =?utf-8?B?eEc2bXpZUFExTytFaDdOOVgzSjh6Q1dUNjZuMlZqa1NtaHFiMStBbUhtUThM?= =?utf-8?B?Q3cwbTQ5VUxodlZWUzlrL2szSEVpUFA0TVY4NDFoNjJpaUwzTjdYaDJqV3VZ?= =?utf-8?Q?QnvGE1NJxNTHJQ6F7XmyY2WdT?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 519bc538-f9d8-498d-a15c-08dab1a54a7d X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:41:10.5063 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TrDuOGT569USg1YIsWPmbErc/tzLJy1A0eNgBCd+joJDfNF5nbDlWxn9h7eNufDbkpIXnPDEWNI4D4xR09/R8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB7053 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165297941100001 Content-Type: text/plain; charset="utf-8" Before adding a new vCPU operation to register the runstate area by guest-physical address, add code to actually keep such areas up-to-date. Signed-off-by: Jan Beulich --- RFC: Pages aren't marked dirty when written to (matching the handling of space mapped by map_vcpu_info() afaict), on the basis that the registrations are lost anyway across migration. Plus the contents of the areas in question have to be deemed volatile in the first place (so saving a "most recent" value is pretty meaningless even for e.g. snapshotting). RFC: Can we perhaps avoid the VM-assist conditionals, assuming the more modern behavior to apply uniformly for gaddr-based registrations? RFC: HVM guests (on x86) can change bitness and hence layout (and size! and alignment) of the runstate area. I don't think it is an option to require 32-bit code to pass a range such that even the 64-bit layout wouldn't cross a page boundary (and be suitably aligned). I also don't see any other good solution, so for now a crude approach with an extra boolean is used (using has_32bit_shinfo() isn't race free and could hence lead to overrunning the mapped space). --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -1599,14 +1599,55 @@ bool update_runstate_area(struct vcpu *v struct guest_memory_policy policy =3D { }; void __user *guest_handle =3D NULL; struct vcpu_runstate_info runstate; + struct vcpu_runstate_info *map =3D v->runstate_guest_area.map; + + memcpy(&runstate, &v->runstate, sizeof(runstate)); + + if ( map ) + { + uint64_t *pset =3D NULL; +#ifdef CONFIG_COMPAT + struct compat_vcpu_runstate_info *cmap =3D NULL; + + if ( v->runstate_guest_area_compat ) + cmap =3D (void *)map; +#endif + + if ( VM_ASSIST(v->domain, runstate_update_flag) ) + { +#ifdef CONFIG_COMPAT + if ( cmap ) + pset =3D &cmap->state_entry_time; + else +#endif + pset =3D &map->state_entry_time; + runstate.state_entry_time |=3D XEN_RUNSTATE_UPDATE; + write_atomic(pset, runstate.state_entry_time); + smp_wmb(); + } + +#ifdef CONFIG_COMPAT + if ( cmap ) + XLAT_vcpu_runstate_info(cmap, &runstate); + else +#endif + *map =3D runstate; + + if ( pset ) + { + smp_wmb(); + runstate.state_entry_time &=3D ~XEN_RUNSTATE_UPDATE; + write_atomic(pset, runstate.state_entry_time); + } + + return true; + } =20 if ( guest_handle_is_null(runstate_guest(v)) ) return true; =20 update_guest_memory_policy(v, &policy); =20 - memcpy(&runstate, &v->runstate, sizeof(runstate)); - if ( VM_ASSIST(v->domain, runstate_update_flag) ) { #ifdef CONFIG_COMPAT --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -231,6 +231,8 @@ struct vcpu #ifdef CONFIG_COMPAT /* A hypercall is using the compat ABI? */ bool hcall_compat; + /* Physical runstate area registered via compat ABI? */ + bool runstate_guest_area_compat; #endif =20 #ifdef CONFIG_IOREQ_SERVER From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165327; cv=pass; d=zohomail.com; s=zohoarc; b=Qeou/KSTrCL/eninbwq27ltJ/3xAEQ/NELFAvfwXk+OI7lKMyMLzXbzXDnu4GRkt5H4sq4u955/N/CML7iT2U+gEcOjZ9loWpoYq6ZY28mdzeQM3ht8lIhVrsM7SpiiuAr7bp7odjkODbByRABb5c4bfRXbe8TMKPm461QS0hn8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165327; 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=4zbAeKGcLxlIY49axvUp6udDpWdFPLm3sDwSLxopW8A=; b=HcUqF27ndBWgedB196k2FN7Y7pcGS/Jg5E4YNbCLQdbevO3CUXlcaCfx/E2/JWA8azF7p1M9WEqtXPMKGCx/HbA+jGV1HJ6vbbQbgCibJsGHg6zjxCSIaEDyztgE+x2wNBzmOH1SbcZnhu5Dt/E68Josqg5U3sBgu4szLrZLwPk= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1666165327058801.6356538692824; Wed, 19 Oct 2022 00:42:07 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425556.673459 (Exim 4.92) (envelope-from ) id 1ol3hv-0004vZ-8C; Wed, 19 Oct 2022 07:41:43 +0000 Received: by outflank-mailman (output) from mailman id 425556.673459; Wed, 19 Oct 2022 07:41:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3hv-0004vS-52; Wed, 19 Oct 2022 07:41:43 +0000 Received: by outflank-mailman (input) for mailman id 425556; Wed, 19 Oct 2022 07:41:42 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3hu-0003Zj-8V for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:41:42 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2040.outbound.protection.outlook.com [40.107.22.40]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 78b0655a-4f81-11ed-8fd0-01056ac49cbb; Wed, 19 Oct 2022 09:41:41 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by PA4PR04MB8064.eurprd04.prod.outlook.com (2603:10a6:102:cf::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.26; Wed, 19 Oct 2022 07:41:40 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:41:40 +0000 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: 78b0655a-4f81-11ed-8fd0-01056ac49cbb ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M3o+6L9+WDc1yJ+tJBF/w+Yu8Ob5PCY/kqxIHbXRAuv/1R+mdKhYoZ6M/12+9tMgHPWwmpCoYWa0jfZ6X54hofU4ekEfngGv0CiXYcN9LltNpkRPAv4ApY/cZD+AKJaI9q5zduK3550dPd7igUVXcf9ZTNAgUeC9VFpgg4NGord9soP6P280Wf97bRBWS9IKqzxuW+fTUnwIhAYSXZJx8gzRY6sKROvVMHxsuDj1snxmaamayFHtWcMYSw8jcd/oNKsCUAuAKWhI2XbB0vtkg4NnCalIDXVRJaHadv8JFpN8IgPxhDSw+0N0Ny7zwDiUJUwmRM608rFgV/8FrotUcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4zbAeKGcLxlIY49axvUp6udDpWdFPLm3sDwSLxopW8A=; b=A7ir7CVPeBLLXLvaABUrjhDN5NppLgRmy2MP+ymQTgGQ4KJeR2IguxDd3tsquTgxJT0ibpygEsLKWSsTAkU81hUNy5npQS8VZ+3VeAra4dR68X8G7KXkAaOOvhebCUPQi6eaPKW6Xk93zUU3faOeXOIKMgFgaM8cXME5WMuoXZq4AICDmevfpGTFOX4BAHvlGEAcl+VjiMlIymo9vLvec3Jh0Nt9DqpU/OZCBrlbCl8ukLn+eZRAqK37T+gh9UuepF/YPUcxVi4EiP6CBVHg1xfwBhX/RDrgdMdENmyQ8v9TmiTeWvkBhCpGTwKk+hwwDBYXGjK5vWo8W2IkYPasUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4zbAeKGcLxlIY49axvUp6udDpWdFPLm3sDwSLxopW8A=; b=KHDxoiMniU20imloNY0qf7SyHA4BAsOKKcsuLWpPXIxh1eLVCohEol7ij6he03oE4VDYWvMSYG5JwwbeQQ9tqEf77mJlmVXdHWdDK5ObTaNC0P1S3sF5JwrKfizkQeb/KC/8SomJKqfTOH3GkKXFTRg+17GJY8vAFd9bFxSr+UK2M9kNnCXAsZ64AZUxBWTMcRj/U9POkhaEgv+xBPHBma4YK9sg4dVsvx4UPnWY9CLo7fPT46G7ZvZgtZe1HlaHNZFA/QbZC3GvNs0vymeaK1lrqeiEUsYjOwFWAr/LEUUnUohGl8YYviXbcLwN5eIDD9KRgoGvAEooxgZvEajWcQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <7d814375-c190-ae0b-793b-a8563a23d318@suse.com> Date: Wed, 19 Oct 2022 09:41:38 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH RFC 05/10] x86: update GADDR based secondary time area Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS9PR06CA0514.eurprd06.prod.outlook.com (2603:10a6:20b:49d::9) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|PA4PR04MB8064:EE_ X-MS-Office365-Filtering-Correlation-Id: b712a35d-e580-4324-eb54-08dab1a55c0d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: E9mQNDtbpKxXCt6fmbwstqxJCNsnzSnuo/ocAr8SvxFE9cerJsPpcepRYr6KPC/YutfwHsWF5PnBcXa0gT7maDF0q988M0L3+LF/9cEV5+EJKWRNNl60GWBxsriDsCwLBJU0y8JQCxm6GUZOAaztjG8G4G7k0A6sJl71hhyoHOIx9cry1YI3RGBnaFkTM+CEQRjucYLLd7jpRx4vRZFwP8iTZkA0P9EUA/cH+lrAXlf7M5ztoA9bH17n/BqgTeX2UigBAVh+y4pi6wyr1F4vGxOTixiWbdMZCBFAeSyCo3I78Fpjfy9R2JhZk43GsGkGwdTY6h2JuI1gFpIKhqHbi+mTVzXQBjdrvInl95lewgDWbp1xV2ONs8Am3Mn7YnxpDf2TU/ilMM+n4aoCY5bIUSXNSCfgTAB55lQ3UhWISOqmdNHhu9CZ/ZJkahJVrL2E3ZR/G+RDrv4AXmkz6YIK1om2Wr7+IYf6Stb61XRkGLi/BMq5BWzUDTnsQxrtoM41pg0gwNyC2LFilhvo5fbjuJ+r8Py8A4nltXB2QyDo1rqckxgzXrzMSv2kHLlmOzYxO/TqgKwVaALkJ+leflPmFHKGFhJ8yJ+3OCnJ4CVgE5vLBJt0DT2ja2etp55c5Z2mm4AMlcVDqPBQbJXZ0CD2GVC/IQl3MHRe0lWVhi7bid5eb1mFXSMupo84M7n3+Da1mzWhHg0xHoTW/HvVf3OAZyz23URJUl9WRm+vlu8NYVIkKQuDdpn3Ob0ghEhxJeSgl1KT/iHQ1o7kMj9rLm9vp/SAn9m7FIyasIl3Zra9UMU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(376002)(136003)(39860400002)(366004)(346002)(451199015)(36756003)(31686004)(86362001)(31696002)(38100700002)(2906002)(5660300002)(186003)(2616005)(6916009)(83380400001)(26005)(6486002)(316002)(6506007)(41300700001)(478600001)(6512007)(54906003)(66556008)(66946007)(66476007)(15650500001)(8936002)(4326008)(8676002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q20xcmNibEpqck1pVXNBNjgwQ2tvMTJnalpHZXlQRE80b0ViMWt4SUVwWmRn?= =?utf-8?B?UStqRmxqT1RDTGhvWDYyWFcyaWUxR2NnRC9iL29hT3pPS01md3Jyd1pQWGJv?= =?utf-8?B?dE94OHpiRjNpVXVYemp4UWxzdFE4UVBxelFCSGFOanBRVWJ1Z3dxY2dmU3JM?= =?utf-8?B?OTJvTWRvd3JqQTNJREY5VXVTV3JMbUxWNEw3Y2ZUTE9NTm4zeDFDaFhjdG9k?= =?utf-8?B?Q3hqYTVmKzR2bVJYWnZPKzkrWUQ5bmlzOVRyL1NrcWFhb3B5ZWN4VWo2WkpF?= =?utf-8?B?OW8rTTQydGtZZWt5WllrWEZVME5PSUljcVJpL1hUS0hUOVB4ZitBUmFicGMx?= =?utf-8?B?TTdmOTF1eTRHUGQ2R1FVUUQ4RXRJUzRtTTZ4MFA4THNRbTJ3L01QTVVnUGhD?= =?utf-8?B?eWpldnRBeHdrcWNjNGxrVlBHTmdWOHk4bVFRYlh4cFhzZ2NCajlzdllNYWky?= =?utf-8?B?cFpWQXRLVjY0MGh2UHhzTk81N3RzRjJRZW9pRDQvNlBxeXMrVFdvUVZnSlM2?= =?utf-8?B?MEhrZW0zdlEybUhCSHRXMjgvTnVNWVEzRTIrYVBBd0VZUWFHUmZ1YXliQUdM?= =?utf-8?B?MDdBLzZ0WUFPMHcwNkE0cnZ6dHBxWmxEeFVJTFlEeGtkVU1JQ0JYVlZ2R3ZL?= =?utf-8?B?NDBkV3BTQnk3UzNOVVdtKzd0bS9DaTh3TDRTTzlHS2E4dFErclZoUS9LeWhP?= =?utf-8?B?dmFpYVkrWlA0dSthcC9GUmVmMUZCeFZVcldBdzNiM1FQR3VCLzQyUlowWjdJ?= =?utf-8?B?YS9NS3B5MmFKUDJDaXJkbnhUSkZLZzFORlU0NytlcllWUXMrTWN6MHEzNTMr?= =?utf-8?B?QmN3a3JzbGhkeHU5RDdZcEVPRTJUMG5PdFg2WS8zcmhmUXdhVmRJMEt6bHMw?= =?utf-8?B?VUpLV1hvVTdZS3dZakJ0bnJmZFVOVm11YklsbUsra3BuNDFEMjA3ODI4RXhy?= =?utf-8?B?MjNTUjVHdjBNa3psWHFzak9vcGptVUNiSDF5LzlWZ2dYNVF5dUpOR2hweWto?= =?utf-8?B?dVU1WjYvVzNGWXBOK1FKd0Fkcis3TmlZbkRkNTJTNGRKR3FzaVpqNUJTeE53?= =?utf-8?B?TVQ3KzhkUzZYTEdiRVAwc0l0SjJBei9rZlVUVFFRMm9PZWhuai81RjhHTFdX?= =?utf-8?B?U2NoK1VXV25jN2ZKTytqSFBPTHpwcXUxZDFMWkZkWnNkUysveHMwZFhVdHhT?= =?utf-8?B?akMyMEROemsrMDQ2bHpyTmM2NGpIL1hUaC9mbEdyQ2VCcEpUR2VhTG5zVUdp?= =?utf-8?B?bm1INUMvallTOE1EaG40VVNnVk96dHZHVDZqR0o1QnpQTmttYWZ2NVhNTUxu?= =?utf-8?B?ZTQvYXphR3d6ditKbndmMTBDRHhYeXAxcGpFd3h2TUJ2eFhmbnNrWSs2WE1Q?= =?utf-8?B?dHpYWktORTRJZVIvTFVvWW9oNERtVUtvU29pdDBRZUw0ZmtCa0RuQkFLdGhG?= =?utf-8?B?by9TU1dyWVovaFltNWVPb3REc0VVQjRySDN3WmMzamppejBFT3VxbEZvT2JZ?= =?utf-8?B?QUhVMnFRZDhmZGJhS25XQWV0bnNITGhnR1J4WWcwa0JES2piU3orNGFtUGZq?= =?utf-8?B?cXc3RHJnQnA5S2FWRnFRS0VabFl6WmE4UVlYajdUVWlGdEZSc0NxbnoraEd3?= =?utf-8?B?OERESHZqNnFzSURTaUtsdFpzZ1dCVWQyRnVlbUljSUNNZEVpYk0xZ1IvVTJI?= =?utf-8?B?WDNZZDNCZFpMazRSWHNWSm95Ni9ZOWJlSUk2OXY5TzFIbmt4Y0R3RFlKQ1hn?= =?utf-8?B?aE4zeHRpSE9jQ2lHMXl0bUl2dDlzT1BSR3FPRFJvWmxIYzlwcndkeTd5c0Vs?= =?utf-8?B?dWNnTVRXNnpDbDFSejF4MUlrUHlGb1FvRTFtNXZMV0Z3bGhrZWRHRDBkWGNC?= =?utf-8?B?aGJvT2xrWHR3NW54b3ZWMTM3by8rdUxSeFRtQW9vV3p5eW1CQXlNeEc5VXY2?= =?utf-8?B?RFpBWGljMEFrcXp0L1M1c2JLQkZzeThnc2RPVEgxTzlNQlhBT3dNTVFyRmkx?= =?utf-8?B?TkxqYUY0dW41Smd4dGd0elh4TjFQcjFwSjBvNm9OZ2RmVW11ckVBZXZudUZ4?= =?utf-8?B?VzlnbjUwVVhvMVVRd2lQZTcraW1GdXBnMCtWTWxCc0RiV1V3UThJNEs0MjZT?= =?utf-8?Q?xgghug+CdryA6ejGGebRTglJw?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b712a35d-e580-4324-eb54-08dab1a55c0d X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:41:39.9576 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TXIy27kUkJlbrIgGLLnbwO5vnSmrMgJm3nV+Ix4EqDdP/etN5sxD7CTHCNdyKb6cxBeHOrO8ssxdOtP856h0sg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB8064 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165328285100001 Content-Type: text/plain; charset="utf-8" Before adding a new vCPU operation to register the secondary time area by guest-physical address, add code to actually keep such areas up-to- date. Signed-off-by: Jan Beulich --- RFC: Pages aren't marked dirty when written to (matching the handling of space mapped by map_vcpu_info() afaict), on the basis that the registrations are lost anyway across migration. Plus the contents of the areas in question have to be deemed volatile in the first place (so saving a "most recent" value is pretty meaningless even for e.g. snapshotting). --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1462,12 +1462,34 @@ static void __update_vcpu_system_time(st v->arch.pv.pending_system_time =3D _u; } =20 +static void write_time_guest_area(struct vcpu_time_info *map, + const struct vcpu_time_info *src) +{ + /* 1. Update userspace version. */ + write_atomic(&map->version, src->version); + smp_wmb(); + + /* 2. Update all other userspace fields. */ + *map =3D *src; + + /* 3. Update userspace version again. */ + smp_wmb(); + write_atomic(&map->version, version_update_end(src->version)); +} + bool update_secondary_system_time(struct vcpu *v, struct vcpu_time_info *u) { XEN_GUEST_HANDLE(vcpu_time_info_t) user_u =3D v->arch.time_info_guest; + struct vcpu_time_info *map =3D v->arch.time_guest_area.map; struct guest_memory_policy policy =3D { .nested_guest_mode =3D false }; =20 + if ( map ) + { + write_time_guest_area(map, u); + return true; + } + if ( guest_handle_is_null(user_u) ) return true; From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165372; cv=pass; d=zohomail.com; s=zohoarc; b=L/96uIsbLz2WchGdRBWdNp8AWHLcrTJPXiXVYRlXr4H4hIhj85QdSlrUeIdLbKdOyo6K0damQ6AoeU+8xIdQ1Woz6tsOOHHWsJ24WeHPLm8SbB4BdjndDB1IS79nArL6cUMSVuJkiSV2qwCoj0yA2KesCTt6hKBF5AIITTe3cfA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165372; 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=vVtvQDy47SYv74CafBwlr5zPDrPScUVwTLeJSlDM1jo=; b=El5IXCFFejKIeRS6ODPCNcbO+IU21w9WKGT/GGtob1ZW5I5Z4ZeZcmuo/Nvv/0cI76of8quA5LR0raGdfnAeDc7rC8XuwRjD4TgsmetI9ZsZwrFEF8150PJ67+vY80ee92aT4o+hIr7iajL+hvNa9vIZ5Z9/Kc5q65PD+oNjDCw= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1666165372471838.1819362655519; Wed, 19 Oct 2022 00:42:52 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425564.673470 (Exim 4.92) (envelope-from ) id 1ol3ie-0005bp-Mr; Wed, 19 Oct 2022 07:42:28 +0000 Received: by outflank-mailman (output) from mailman id 425564.673470; Wed, 19 Oct 2022 07:42:28 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3ie-0005bi-IM; Wed, 19 Oct 2022 07:42:28 +0000 Received: by outflank-mailman (input) for mailman id 425564; Wed, 19 Oct 2022 07:42:27 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3id-0005MY-5o for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:42:27 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2062.outbound.protection.outlook.com [40.107.22.62]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 935eeb23-4f81-11ed-91b4-6bf2151ebd3b; Wed, 19 Oct 2022 09:42:26 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by PA4PR04MB8064.eurprd04.prod.outlook.com (2603:10a6:102:cf::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.26; Wed, 19 Oct 2022 07:42:25 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:42:25 +0000 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: 935eeb23-4f81-11ed-91b4-6bf2151ebd3b ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m4yvjRXlAT++a4p1luomrB4x147nghCWDomEr2n7DVcb3AWHSjhyhebOaJ7nIJyTNShCuWEXtT8BxyuYZkdJ7D0721FYvOSU2QJAAQ/kE9WUNcbvrGR4fLg7dooTBAiq2KnrhzUrkFmm7MxMnji6XGKA2MRQaKPQQmVhSAr1k3UGpvKriJ8p2tM+Gtl6O9Zi0svGb4WjomuXcxYSl+628iT8u4895IfcOSCzT3dG8cSi7F4gXl3q4Zv0jN2FS3NDEDU0cBiNMfDh2R34XLE5q5CgMTSjLDPdfAsrOmCARc2p4jJhASGYIuuEnPu73Fk+OxxHpwtyY/v6fcoYfigLyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vVtvQDy47SYv74CafBwlr5zPDrPScUVwTLeJSlDM1jo=; b=UNUC8NnMwE8gLZGE1PcvPoqx6BSnrQyQlFbaq4RRlE3Ppscup7lfUvZmaZ5Wa2Fs4GP1v0I32nhtpf42DXRUnU16IHRiHBgbBC82xZKGTKnK2ujj1SeLKrwm0zXybbcWO+kTUprWzXMs+QBMRhaQHaBrg9q0MhJ402gP5/3WShDrwAV1umm+np4OUflCFGJkJmyatvZKGgCqUfEhNcmqIZLVFtpev0EyZg1XzHJRh25IiXfQ1WECxA6TC75buIun8KkBXivBU+1tDHgbIN8gwp66mKC+AmD8T01yJcngOfzPETPPR8HJgFM6EOiZkjE3iZ18kroij86gTch1I15H6g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vVtvQDy47SYv74CafBwlr5zPDrPScUVwTLeJSlDM1jo=; b=htwLii9fKmyNouln8Q+nQ5QTcuu8R9f5JS5z36E/WLTpZEcCV21lH+Y/oNuGHzKezLmy3z9k9tWLtF6Bb+8P1hCLQeJLi6ck7WI2p9hvk79gJBQmqc4HEeuBo1fc00/t55ynhYkujmbykavlHRAsje7iefMhhXTfhureA2ljV7tgB2WSDJORefPdi/+u2VmetHcrmkFTfMZsBmoPQWIhofXOH8HKIRvU4WtpLdFQxV4hHP+1EgwwPF/8D9Nudx4K6aVk8DUFYCemgAo8wq0Mz+0ksUb17fciX0JJYT7hSutUCichXArf6gvGEybT5mYgT5lxIV5NWKn896FTrBAsGQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Wed, 19 Oct 2022 09:42:23 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH 06/10] x86/mem-sharing: copy GADDR based shared guest areas Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Tamas K Lengyel References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR0P281CA0115.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a8::14) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|PA4PR04MB8064:EE_ X-MS-Office365-Filtering-Correlation-Id: e617502b-760b-4131-68c1-08dab1a576b7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K3AP1NupAyj7rYhopa43ytpqqHS9B34FnfPkd1zCKA/FJUP6YUaDPbb4besXONadrX8+lp4qYabOcw7jI+PP5AdpBUdU9N342Xx9Zg9S77wrD9ZUZRXPLFa6WDHziSE1BXgwCPIg6HoOpinBgY2tTa3i71umP/S8QKqRFYjBg0XXR5xPx/edbg6P1fOV+zO3adY9guxDUL9SCTWGmrQi3XUx9KlyK3AaWRZxuhRWhA5r1CDc6JHdMUxdKyLw8JVczPKv+aIy6OpKH6xSyKwjG4iG3ogF6zL7Qf+EvNX/CdokT7YkiaBbQHA72jTArkjIbBTu5SqyfZApLDZ3qnStU91GikxoZ5fe9NbxODoBv/Ui3K3kVkbRnMeE1iODTRkIxlgl+vXrGBJjrzIGRB/2xpvDPTE/4e5NIMsollfbk5IRFtMfBCIFPdvwiiDoioyElP8e4w7PKhVNVjMOAQ0Ly1Ob58bieBmu76Lv7F7fLOfUk7I/4PJKmKhDOLEGL8nJ/KDecZ0b/X6MiY8OR7g5sOae1WuqcSdVGLYDv5HPXyOJrVcrA5jdSW51odkKQcoMlg7xG+RGqKluarSiV3GuX8VZ+bOz4LKE0kRWfiX5F4Her9hO9bgCdO7il9GDMK+M1+vVMNuE0K0/jnaZLpuxK7UMRhkAuvwriV817VlIZ51xYs02MUvKqz7ys8d126gsXxaY8RdCLggilSgW/H/3xAVH5DICJErMCF8fPClz4S66ObBBqtHg7bsrkiJZ/exHpcjJJzoeIm5KZxItyoRlFum6BXmFcIxSgRWAmG4RFic= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(376002)(136003)(39860400002)(366004)(346002)(451199015)(36756003)(31686004)(86362001)(31696002)(38100700002)(2906002)(5660300002)(186003)(2616005)(6916009)(83380400001)(26005)(6486002)(316002)(6506007)(41300700001)(478600001)(6512007)(54906003)(66556008)(66946007)(66476007)(8936002)(4326008)(8676002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ejdkc1hnM2F6ZEt2aXovOFl3SVJXV0wra3dDb29XK2RITVhtZUkvNmk5cVcv?= =?utf-8?B?YWRPMVJ4RVkyVER4SkRUbUEwdjJ0dXFrNVVlWE4xdVBHcmFIVlZEalV3Nmg3?= =?utf-8?B?STh3amFOS21KMVhvS3owSW9vZTQrb00yUzdyZGgyUG0yZUV1Z2ZxSWRXSFlu?= =?utf-8?B?U0NFUE5KanJGcjNOZ2YrRlAyNDFkWndEVmtHSlJnNTRqeU9ycG9BUTRzcDc1?= =?utf-8?B?SHVMNDE0MWlUZHBURzVwaTJyUTUvUWZFbGl3UU83Y0xPNS9nK3B1UFhsbGZM?= =?utf-8?B?SU82TnNjYTNEenAwUkJHU2E0YUpIbEtyelpJVnpaQ0NLekZ0NTZaT0VjcHhF?= =?utf-8?B?ZkZla0R6VFpRWWZ6YTduM290ZWtwRWQ4cTg1YWVBRk9ybXl1TEZ5cTY3SFdR?= =?utf-8?B?S0RaVnJuN0ZKWU1KU3ZweEIycFJwNTVMK0RPM2NoRlo1M2tZeG9BK25XUEY2?= =?utf-8?B?TVlONm1lK2lSM1JCVTZLZGpYcnlRYk1ZY0RSRjN6Q3dYSks3RytISTNGVE9o?= =?utf-8?B?OFpWQ3lCNVZ4S1p4Z0hzUUNQQ216V1Rtak12dnlONUtlTXdqNEZPNzk3WTBh?= =?utf-8?B?bXBJUXVJb2QreGZZMnB5cmZPV2dvaFFCSWNUdUJtRHIxL1JtSTlGOC9mSkNH?= =?utf-8?B?M09uT0lPT1RVazFCTUg1a1lydzV2c0NNOGMxQmM4OTRvRnNrZlAwVVhidEw1?= =?utf-8?B?Q2wxaldtMC9jZ0tWcVhldkc0ajBqQmN4S1JHUk5nOWNtTlBySUFHN000ZURW?= =?utf-8?B?NXo4V0hYS2ZQbEpXcUtPOFd2MGhVandSd1BrNXRzNm5KT3RoZmNVZVlDbldE?= =?utf-8?B?a3hzZDV4SGdEU3RXaE91OTdodmVRbDlhUmNOVVdsc2tQNTVSMkR0RkVjbm95?= =?utf-8?B?NFgvd1RSbzE3bUJwdkpGd1RTaFRNV2o4Ulk1M0xoMTZiWUl0MlZIcE5ZelRG?= =?utf-8?B?YWI3OVJEeHRCdU4zVmdFVnZNUmlsMUVQOXNhTkZrYzJwRDhwUzhGaHVnSkRF?= =?utf-8?B?aEFOVnBjSFVUclVTMkJlWUwzT0pDWEFiditFWi9kQTFwMlowbnpJL0wvZGph?= =?utf-8?B?U0pHRkcyQTEybG4rd0NwWm5PcjNCeG1sYVJrSlY1VTJpU2h3L2VmVDE5QlVk?= =?utf-8?B?cU9hSXJoWW1YdHY2K01Yb0grWG0wTmhUYUJXeWxDbzFQam40Y05TUzhSWWRr?= =?utf-8?B?dGlmaHp4ekZuU3VDK0w2UlV0bmdpWGtWV2NYRWo2RHkwS0xJc1g3emJ5VEtJ?= =?utf-8?B?VEhqcDRLYkJ6YWZPVkYvamhSNmxxYUxoVG14RW9lOFVJVENzaUJWc09GNmxF?= =?utf-8?B?enM2RHZnSmVQbjJyODUxV0pTVzR1OUpUV1dSSCtLWk5FTStVRTlOZDhIci9s?= =?utf-8?B?TVJtN0pabGorT0NVVmVMOVRaaVZ5cmZBK3h5SUJaNStZTDZnTlhnMXppbmMz?= =?utf-8?B?WWZ3VUgvbityWndrazVRbWZlMGRtbDg4UGRpRkdCdGo5alZacU82aEoyQmJG?= =?utf-8?B?aTd6MnkxUmwyWDRlL0JsSUdMNG5nTUkvZ0Q5TzNqajhWTXJJa2FzK0RmMXZ4?= =?utf-8?B?VzBHc3B1bHVoZXVNYnV1d3Y1em9hZjFVUW9EaXRrdWV3VllQam5hSjNndXVJ?= =?utf-8?B?dUJZNmhUU09SOXdZU2l3QnYxaWo4REp4NzBJQXBGckNMN2h5QytsTUxXVEFy?= =?utf-8?B?VGFBM0l3N1pCYjBCMkRuRmJBYVJaNjNMcUtKSSsraG8zYU9XcEF1ZjB0VUxo?= =?utf-8?B?NUhHc1ZtUmFqSk5VQW92KzB5WExyai9PN1B1ekI1VTRZMzJOR0lndC9iZDYv?= =?utf-8?B?VGlqRkhoSUxNcUpKOW8xN1NUTU5UK1dKUXNOUFBHb2poUmluRDNpRUVjZEpv?= =?utf-8?B?cHFYTnZHdjMvWDRuTU1HT3pvQW82L1ZGS2FBYVJybnVSZ2o1THYwQjdDOEEw?= =?utf-8?B?dDkwaGVrL2NGL3lyTUsvQWRWclBoYmFmMmtwYTQ3L28veUVwc0o0RWlpOHo3?= =?utf-8?B?WU41U2g1ZEVObFdVeW5MejJrcGxKaVh6dzQyaUFSdkZLajlvZUJlUHhoaVVD?= =?utf-8?B?UGZtdXNBOE9VbW5jVWs5SWcwcUwvc3lJZVRTM091MU5PbU1RVUlONk5CMy83?= =?utf-8?Q?rx4mqiGbuHxYxDZrxucdt85bN?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e617502b-760b-4131-68c1-08dab1a576b7 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:42:25.2047 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XvL1Y3Uv16KC+CwCwPZN27LxL0jMZp3cTYlOUXiWW4jXzSOdVsQ2OP4wBnvWjOU+R+2lZK6lXxI6GVauvnip/w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB8064 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165374674100001 Content-Type: text/plain; charset="utf-8" In preparation of the introduction of new vCPU operations allowing to register the respective areas (one of the two is x86-specific) by guest-physical address, add the necessary fork handling (with the backing function yet to be filled in). Signed-off-by: Jan Beulich --- a/xen/arch/x86/mm/mem_sharing.c +++ b/xen/arch/x86/mm/mem_sharing.c @@ -1653,6 +1653,65 @@ static void copy_vcpu_nonreg_state(struc hvm_set_nonreg_state(cd_vcpu, &nrs); } =20 +static int copy_guest_area(struct guest_area *cd_area, + const struct guest_area *d_area, + struct vcpu *cd_vcpu, + const struct domain *d) +{ + mfn_t d_mfn, cd_mfn; + + if ( !d_area->pg ) + return 0; + + d_mfn =3D page_to_mfn(d_area->pg); + + /* Allocate & map a page for the area if it hasn't been already. */ + if ( !cd_area->pg ) + { + gfn_t gfn =3D mfn_to_gfn(d, d_mfn); + struct p2m_domain *p2m =3D p2m_get_hostp2m(cd_vcpu->domain); + p2m_type_t p2mt; + p2m_access_t p2ma; + unsigned int offset; + int ret; + + cd_mfn =3D p2m->get_entry(p2m, gfn, &p2mt, &p2ma, 0, NULL, NULL); + if ( mfn_eq(cd_mfn, INVALID_MFN) ) + { + struct page_info *pg =3D alloc_domheap_page(cd_vcpu->domain, 0= ); + + if ( !pg ) + return -ENOMEM; + + cd_mfn =3D page_to_mfn(pg); + set_gpfn_from_mfn(mfn_x(cd_mfn), gfn_x(gfn)); + + ret =3D p2m->set_entry(p2m, gfn, cd_mfn, PAGE_ORDER_4K, p2m_ra= m_rw, + p2m->default_access, -1); + if ( ret ) + return ret; + } + else if ( p2mt !=3D p2m_ram_rw ) + return -EBUSY; + + /* + * Simply specify the entire range up to the end of the page. All = the + * function uses it for is a check for not crossing page boundarie= s. + */ + offset =3D PAGE_OFFSET(d_area->map); + ret =3D map_guest_area(cd_vcpu, gfn_to_gaddr(gfn) + offset, + PAGE_SIZE - offset, cd_area, NULL); + if ( ret ) + return ret; + } + else + cd_mfn =3D page_to_mfn(cd_area->pg); + + copy_domain_page(cd_mfn, d_mfn); + + return 0; +} + static int copy_vpmu(struct vcpu *d_vcpu, struct vcpu *cd_vcpu) { struct vpmu_struct *d_vpmu =3D vcpu_vpmu(d_vcpu); @@ -1745,6 +1804,16 @@ static int copy_vcpu_settings(struct dom copy_domain_page(new_vcpu_info_mfn, vcpu_info_mfn); } =20 + /* Same for the (physically registered) runstate and time info are= as. */ + ret =3D copy_guest_area(&cd_vcpu->runstate_guest_area, + &d_vcpu->runstate_guest_area, cd_vcpu, d); + if ( ret ) + return ret; + ret =3D copy_guest_area(&cd_vcpu->arch.time_guest_area, + &d_vcpu->arch.time_guest_area, cd_vcpu, d); + if ( ret ) + return ret; + ret =3D copy_vpmu(d_vcpu, cd_vcpu); if ( ret ) return ret; @@ -1987,7 +2056,10 @@ int mem_sharing_fork_reset(struct domain =20 state: if ( reset_state ) + { rc =3D copy_settings(d, pd); + /* TBD: What to do here with -ERESTART? */ + } =20 domain_unpause(d); =20 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -1559,6 +1559,13 @@ void unmap_vcpu_info(struct vcpu *v) put_page_and_type(mfn_to_page(mfn)); } =20 +int map_guest_area(struct vcpu *v, paddr_t gaddr, unsigned int size, + struct guest_area *area, + void (*populate)(void *dst, struct vcpu *v)) +{ + return -EOPNOTSUPP; +} + /* * This is only intended to be used for domain cleanup (or more generally = only * with at least the respective vCPU, if it's not the current one, reliably From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165421; cv=pass; d=zohomail.com; s=zohoarc; b=Kpr8MTRFkvd4rPCuhgBYsrAxtX9GjWP0cUhqNitzKBxypcvskUYH0FO4EuR57SsIRFL9rktyym3g/B8PWP0NcG/ZZIGaNMPKVYJRWUvjskpmk6ry2AiTeI2yYfx9Y01z7D4tLIxQ9wG4WSv7tZ2foNYwvjE1O0NdEjnv4zfjkcI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165421; 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=n7rxHqGJe7QhMdpLK67MoUseFPrCyco8DcpKedNqvNI=; b=T5qZ/0BC1/+23NLQYIPA7Ds07nj6oJFXAE/eELxCWbKP3iTERCFq9Pd2W+peY4u+L4TYfXO7r/axDIvY4cqanOQ1J+xjdSaQqLC+RCYrv7WW9H1UkzKLaLCkQctcuSyu048tXwqFVL8enr2Pw2CzrPeAuLeq66VPLi4svNgydwI= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1666165421735567.5896084151863; Wed, 19 Oct 2022 00:43:41 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425571.673480 (Exim 4.92) (envelope-from ) id 1ol3jV-0006Cx-0K; Wed, 19 Oct 2022 07:43:21 +0000 Received: by outflank-mailman (output) from mailman id 425571.673480; Wed, 19 Oct 2022 07:43:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3jU-0006Cq-Sx; Wed, 19 Oct 2022 07:43:20 +0000 Received: by outflank-mailman (input) for mailman id 425571; Wed, 19 Oct 2022 07:43:19 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3jT-0006C9-Po for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:43:19 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2079.outbound.protection.outlook.com [40.107.22.79]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id b2b1d866-4f81-11ed-8fd0-01056ac49cbb; Wed, 19 Oct 2022 09:43:18 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by PA4PR04MB8064.eurprd04.prod.outlook.com (2603:10a6:102:cf::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.26; Wed, 19 Oct 2022 07:43:17 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:43:17 +0000 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: b2b1d866-4f81-11ed-8fd0-01056ac49cbb ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f29W4RaYXkfx34LmHMhA1zNJbtO35OBlU5FTC9oYT9NQDiBOfEkOTg3x9Y55ijgtC5gOoDbrM0Idh9n/scK9lKJdjGiBWnuesOM74DIhkZb/1qVMIlc5Af6siftMoXJ3wG8BxwwbkpjJlYf0KdePelJkRCuJpl+3sQuOV/EXW8qCq8feIDmuwJZy+dUQwikggMZUgGYS8EJRAF2a02n0bLqgSv5BituQwmHCY4pexSmEh/BJ1cGeX0DVh/lOrKi2oW+wFIOBUDDcp56C/xs8jmyD/ylUWcx7ei3EZO2bRrspmrvi6x/OcsTdCKGevvIFIH03tsnkGtN8Pmq6wPDD0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=n7rxHqGJe7QhMdpLK67MoUseFPrCyco8DcpKedNqvNI=; b=jzLY1lA3KEZFogH4TNrGCdZc5r5gwZWki27fIHpEkWNnoFUaY4b5DY0JhlAyROilGn8eO56pY5AeKGIUX2MzjIL5D2OQf4GQZBds/F6c7eGLEARwFAU4gz4pXk3ehRbsLFgL4s2bW1TnzST9BhXnDXdSZ8SK4zMqnD5pli0/6/UJqYFiK1RAF3up7jrurDl+abvAA0p49JyfLmtlJxZiu7gJXYdmjuR/jRvwVdG9rumE9Pv/P+edVBIKbc/7I463GCK/CbQ+sKrLqnUjdPt/d5cl0B0+3zk4LF74k5Pg+jd2VW8Gu6I1XygWaB1nl+epfIwcTytB0qHp2DSjcr+5PA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=n7rxHqGJe7QhMdpLK67MoUseFPrCyco8DcpKedNqvNI=; b=kXrDL5X9ERyfMnIAFRlomb92HBzFSnc+lclYz4s2NK+RiwpygPM1mMEqHuk5sEl3mhXWS3yBmMP1UQEjigbj9Rkkr0yptITF89V6/wDjQyNSHxnktWOHqKTAfalpvX96bD7qqCbNMKJVIyicxxoQyLVHIjRv9GPJjOQJSuzJUub/Ss+HFilXZRgSEgPo+UYI/COUUJzKV6vrwNqzuclPvOINH5lNNhfVRBJRUDQsB2H1ooK+PZzD4Ex2SrgKSVVKsOtgiSWth4CLSSn0NqsSHRluhCn7UANHjCj3TDjqrPPSq50Lwb3rLAM3HfzGOD2zHwMgUGMQdVO6EgSJ0LKXQw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <5a571fd9-b0c2-216e-a444-102397a22ca0@suse.com> Date: Wed, 19 Oct 2022 09:43:16 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH RFC 07/10] domain: map/unmap GADDR based shared guest areas Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR3P281CA0144.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:95::15) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|PA4PR04MB8064:EE_ X-MS-Office365-Filtering-Correlation-Id: 27c89384-1611-4788-491b-08dab1a59649 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GlqJBSv2tm/uopySD0w5U4yJg+YjgCamrIQizm6f/G06FJTvg8K0biOB24L09QgvSgiyx9pGY3TYb6MsaUaAvuMNs0CaWYgDbES1LF/JKj2ZcC5af/Se5e7ohyh/GhACpGl044LuCTNlZ8cRK7myVoUqek6t+eKxHaS2giXfIJ2QrN6h2VDmMOT6CzMu4D+YAeM+yBJngLXbHOzLpKA5xnDM+nna0rjrkP618052ucZ7yv1K3LCreG5/yDYm8VzYeAJutZVD3M4Ez9+4PK3gyQRsBUABi8Uq3oPUsF0CYlUZX3ins+nDG5r57pra2ylCpYM2S0HcCs8ZOF5I+EvOHMwfuPekZrkBCGSQZUsKg2lAsxj48F/KcJvNBK60CFmJopKLuod5+BK90MyZLQn8rUzdw4y2JWjh6kke2i6BcJ18cJNhfdLV6inkJbgyTqt8NL5LLBz5Kvui3n7ogqbeFl0qH9cT+jL/DE/QYjozHgtNisqkXRH7chdoNsmcP/oyIjutoMjvA+URGbulHKetSPUlAvQz7lCasvPPztuNCA8WPb1sf3O5Wv8eRw0oIHN509wmBHOWY0ix2EVwkSKSpcXGRpRgVRefsKC9d28txZ0VquxNr4grrhwqNEyc7UaBVX035uoBic2CfOoNpreZIZeYuauURiuogVltA1ez8m2h9xSUFfliUme7kd0cVkKOwBTRYcunh0+lTvpxJJ+54ltDRfjC6Q6dvKPUtgsRapyF2MSscRP9xUWrMfdqp28AJ7CQ8+ASoRFV2jyHujNcKSBAxSyOEEv7Ld6teU+wHmY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(376002)(136003)(39860400002)(366004)(346002)(451199015)(36756003)(31686004)(86362001)(31696002)(38100700002)(2906002)(5660300002)(186003)(2616005)(6916009)(83380400001)(26005)(6486002)(316002)(6506007)(41300700001)(478600001)(6512007)(54906003)(66556008)(66946007)(66476007)(8936002)(4326008)(8676002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dkgyZWFsWDJyVnNRei9FSlpmSHhNZEM3bmdRVm41bzIvOWlMZmQ0UzNXSTFv?= =?utf-8?B?c1ZRVzUyRUJVS0JxSDFqaEtPdTROaFZHYnNOTWVWaG5DdHgyaVU0Q1BUY2cw?= =?utf-8?B?MUFndkFXK1JyZWtoTzllcEJpYVRTK0lGa1ZXdnpoeFBQeHc3SlJlZXM0d1E3?= =?utf-8?B?aUV0TG1PaGxUQmhYZldGVUVHN214L1NVT1FyZS9jcEZ5T0tKRE9BYnZWNm9j?= =?utf-8?B?cERORmlDREluQnZkeUNxOG5BRS9IMnIrUVdBaFl0T0hQNlNzTHdQU3BRM0JG?= =?utf-8?B?SWl5SjYvdG1NWGhwZGZ1VlVNTUFNell4c0htOEJVL0dSWSsxRmxuRkpIaHA5?= =?utf-8?B?NXkyRnVaYkVhZlhGT1pKR0F0dy9rNVpoVWJURzkrcXowL0R4UzJnSTk4TDdN?= =?utf-8?B?TXM2SFVCeGZ4SENua1YxTHJlelpjeEo5WVR1YzFYelZjWEdtdWU4cyticHlS?= =?utf-8?B?VThTNENkNkloTjY3cStUdWtRYk5WenBEZmljOStLRGxpMlBPQ2lBSGxjc29F?= =?utf-8?B?S0tMSS8wT2k4SXpDeWZjdndVa3Z5MVV6NkVmbmRqTXNZdnVnZmtGblJKbFhJ?= =?utf-8?B?WDcrSStSd1MwWWh6MlQ5blEwdklQUUsycVVOVVI5ZFVIamRQbG5pNWs0SEFl?= =?utf-8?B?RGV3cks1Z3RLMTFrbHVBUW9hcGNJK2dHc3phMnZlNzI2UVFqMnluUzkzWHd3?= =?utf-8?B?NnlHeExUOFBJbEpFb3Q2VHY2RzNDTWVob29icnNtWk1jZCttdERNcFQ5Vnda?= =?utf-8?B?UGtkT3R1NTVxZnd6Z0ZHZDQ4azZHaTVHRnJKdmwxTlAwbG5ydU5pTkcwd1M4?= =?utf-8?B?VkhlSXZjVVMxQ1Mwd0xMQkVsNmhOSzRIRWVSc0NHUWh0MGMrNGVhYjIraStH?= =?utf-8?B?MWF2eHNTcHkrNGJzbkpvNW44eDB6eEhRTWdBa2JDNVJZYStzZng0VnVKcDhM?= =?utf-8?B?Vkg0QWgzQnJqSlhHMEpSUjNXZS9tN0N2QU9ZdFAvd3g4QmJUWmRvNmFmVTdl?= =?utf-8?B?SVh5cGc3Q1lBUTVxekd5UE9jaXVDY1NhRnlQOS9mb1M5a3M5WGVqbHZ6K2Fi?= =?utf-8?B?ZDJnU1JhbE5TdWZrN0JtdStkWC9tQUdUYXNRVEc0ei9wb0hOb1RNUUlQb2Js?= =?utf-8?B?bDdmbUFud00rNEZDZm5RNkVmNkpYVzN6OS9EZ0xHWEVrSHQ1VnlrRUl2L1gw?= =?utf-8?B?YVRoUDM0ZURDVmt1VEZjTk9KbzZTMk8xSXdkWEpHak1GbGpvdHU2aTcyZ3Fr?= =?utf-8?B?Tm42Vk1Pa3RtLzNHbmE0QnoyMkVNOHFJNnBmK1U0NkpjZzdRSUQraVhzcmJH?= =?utf-8?B?RUpuc1RPbEdxakExaGE1ZjZpQlBpcWt5dWZjWW50TDA0TGlZbk5LTXkvR0s1?= =?utf-8?B?VnpPZncxcGF2Y0pJcVBXZ3hvaTVJYXVPU0dYL2kvOXk1cjRUdU5vK3BVZmNL?= =?utf-8?B?QkNRL1hyZm9hSWt0Tndld3RpVHoxcms5RHFVNU5zcHcwdWtMOWo0UmxxWEFq?= =?utf-8?B?OWVEaG5CSHFYamo3Y0FIMzUyVHJTVS96TElJZDE3dlVQRHdyZmt2T3haMFFE?= =?utf-8?B?YUUrK20xM05UaXAyNXZpN2NBUmV1c1RLcTFvczY5VEhvNXk0SmhQTXlUL1Vp?= =?utf-8?B?YmNjOU5IeHBlN2pQeENGQmFkb2hNdUw4ZkdoWE52NkFDMEpxS29BMzFiUk5X?= =?utf-8?B?ZnIySFNHemFhT0NRb2Vwb1EzbXRPWm83ays5MGNRWVhhM2l2cXZDRE9rQ3c1?= =?utf-8?B?Y2k3QzM2TS9uNDhYSkRIRGRyTzJOZHY3VFUzd2tGMnIrY2czWDdQV3FKUDlE?= =?utf-8?B?aDVWaWNZSWJjaUVDV2w5Z1hnN0xEVFZ3cEpyYnZ5WVR5ODdKMC9NQnlwNmlX?= =?utf-8?B?RVR0MFI0eUJsb2ViK2EvZExNdkNYNnRrMXlIUHRXeHJvVEZid1JnNU82V05C?= =?utf-8?B?SE5CNEVXS1ZvRHRVZFh3Mi93Rm9iMGlvSmtEbnYwWXpEVHpyMDY2aHRzcTda?= =?utf-8?B?L0RoSVlxcU9Hbk1ZWGlKdkNOb2VWeFp6UUVEaHJJR2NzK2o2VFNwODkrWVRX?= =?utf-8?B?WmFCb0NoclRmQnk5dXNabDU4SDdmS0pTTnN3ODg1YTcxZjZxa1h3U1lQZktH?= =?utf-8?Q?OKMQ3BQg9f/e/W/PwAvFav83I?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 27c89384-1611-4788-491b-08dab1a59649 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:43:17.6545 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Z+Qlkht51QngTOTPPh4wW/f6M3Oq/ul+2zGgUeBNm/iMxiIAKUSWcNgTb2eK4SIxuF9TMHrkb5wWdHKzZ7GstQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB8064 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165422660100001 Content-Type: text/plain; charset="utf-8" The registration by virtual/linear address has downsides: At least on x86 the access is expensive for HVM/PVH domains. Furthermore for 64-bit PV domains the areas are inaccessible (and hence cannot be updated by Xen) when in guest-user mode. In preparation of the introduction of new vCPU operations allowing to register the respective areas (one of the two is x86-specific) by guest-physical address, flesh out the map/unmap functions. Noteworthy differences from map_vcpu_info(): - areas can be registered more than once (and de-registered), - remote vCPU-s are paused rather than checked for being down (which in principle can change right after the check), - the domain lock is taken for a much smaller region. Signed-off-by: Jan Beulich --- RFC: By using global domain page mappings the demand on the underlying VA range may increase significantly. I did consider to use per- domain mappings instead, but they exist for x86 only. Of course we could have arch_{,un}map_guest_area() aliasing global domain page mapping functions on Arm and using per-domain mappings on x86. Yet then again map_vcpu_info() doesn't do so either (albeit that's likely to be converted subsequently to use map_vcpu_area() anyway). RFC: In map_guest_area() I'm not checking the P2M type, instead - just like map_vcpu_info() - solely relying on the type ref acquisition. Checking for p2m_ram_rw alone would be wrong, as at least p2m_ram_logdirty ought to also be okay to use here (and in similar cases, e.g. in Argo's find_ring_mfn()). p2m_is_pageable() could be used here (like altp2m_vcpu_enable_ve() does) as well as in map_vcpu_info(), yet then again the P2M type is stale by the time it is being looked at anyway without the P2M lock held. --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -1563,7 +1563,82 @@ int map_guest_area(struct vcpu *v, paddr struct guest_area *area, void (*populate)(void *dst, struct vcpu *v)) { - return -EOPNOTSUPP; + struct domain *currd =3D v->domain; + void *map =3D NULL; + struct page_info *pg =3D NULL; + int rc =3D 0; + + if ( gaddr ) + { + unsigned long gfn =3D PFN_DOWN(gaddr); + unsigned int align; + p2m_type_t p2mt; + + if ( gfn !=3D PFN_DOWN(gaddr + size - 1) ) + return -ENXIO; + +#ifdef CONFIG_COMPAT + if ( has_32bit_shinfo(currd) ) + align =3D alignof(compat_ulong_t); + else +#endif + align =3D alignof(xen_ulong_t); + if ( gaddr & (align - 1) ) + return -ENXIO; + + rc =3D check_get_page_from_gfn(currd, _gfn(gfn), false, &p2mt, &pg= ); + if ( rc ) + return rc; + + if ( !get_page_type(pg, PGT_writable_page) ) + { + put_page(pg); + return -EACCES; + } + + map =3D __map_domain_page_global(pg); + if ( !map ) + { + put_page_and_type(pg); + return -ENOMEM; + } + map +=3D PAGE_OFFSET(gaddr); + } + + if ( v !=3D current ) + { + if ( !spin_trylock(&currd->hypercall_deadlock_mutex) ) + { + rc =3D -ERESTART; + goto unmap; + } + + vcpu_pause(v); + + spin_unlock(&currd->hypercall_deadlock_mutex); + } + + domain_lock(currd); + + if ( map ) + populate(map, v); + + SWAP(area->pg, pg); + SWAP(area->map, map); + + domain_unlock(currd); + + if ( v !=3D current ) + vcpu_unpause(v); + + unmap: + if ( pg ) + { + unmap_domain_page_global(map); + put_page_and_type(pg); + } + + return rc; } =20 /* @@ -1573,6 +1648,22 @@ int map_guest_area(struct vcpu *v, paddr */ void unmap_guest_area(struct vcpu *v, struct guest_area *area) { + struct domain *d =3D v->domain; + void *map; + struct page_info *pg; + + domain_lock(d); + map =3D area->map; + area->map =3D NULL; + pg =3D area->pg; + area->pg =3D NULL; + domain_unlock(d); + + if ( pg ) + { + unmap_domain_page_global(map); + put_page_and_type(pg); + } } =20 int default_initialise_vcpu(struct vcpu *v, XEN_GUEST_HANDLE_PARAM(void) a= rg) From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165464; cv=pass; d=zohomail.com; s=zohoarc; b=avjsSZdOUSUtgFyPf5Adfb9gSbWHXNaWY0wttaGHYuYaXuivhu2Y+9gElCvb8h0lmNB1hXINZAJRlhr3EvJieHecyu2c2R4u3OZEyjGjjNz6L8Sq34PfL2MZ3qj+UEp65MAN1DRORsf+6ilmVFE9gkE7Ov6GaD6AYlvTziV60gA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165464; 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=uIAHlBsa3yb3lyHlE99+Grwv42zC6285qiNcBzkrcuI=; b=Z3D/NSSGjQdfrTzknoxFLoO1uNfdezumGVTY+JkeLKnKw7uUGTAWLJ3NVtre6YLfCHlWb0pLV930oSrXnvGgaKsDGKzBEOxXmt5Fn/h3Vz51ve94lacEeY5qtK4JYYluDC1lPlB1V50u1+pYgMqP2EZgUmnPZIlQDhfARDTELn8= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1666165464738982.0888791633969; Wed, 19 Oct 2022 00:44:24 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425577.673491 (Exim 4.92) (envelope-from ) id 1ol3kE-0006nh-8F; Wed, 19 Oct 2022 07:44:06 +0000 Received: by outflank-mailman (output) from mailman id 425577.673491; Wed, 19 Oct 2022 07:44: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 1ol3kE-0006na-5U; Wed, 19 Oct 2022 07:44:06 +0000 Received: by outflank-mailman (input) for mailman id 425577; Wed, 19 Oct 2022 07:44:04 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3kC-0006C9-JI for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:44:04 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2079.outbound.protection.outlook.com [40.107.22.79]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id cd81bc68-4f81-11ed-8fd0-01056ac49cbb; Wed, 19 Oct 2022 09:44:03 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by PA4PR04MB8064.eurprd04.prod.outlook.com (2603:10a6:102:cf::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.26; Wed, 19 Oct 2022 07:44:02 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:44:02 +0000 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: cd81bc68-4f81-11ed-8fd0-01056ac49cbb ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UH+93NzZPaEl9BwAyleGGJPfojXWlG5Cqh1x8Nns1vD2J5OfjNA0lFqoEYnLCUwYdzqdAd1MllGrfbBKW8sHveBYRtnSLr69sG/YVlK+ecSC9jrdz+KeOCWrlexcQ2Njj22gLpUEW1z5oXG/XV02mi+rZk+0WoAvpI+kDV0K0gMttutNRbeuLh+bIVtJl8jwhP9/dKZUvP6LrW4AhkPmWsUZ3uHE9U97+ltBhKgDvxKucFSSnzmPW/ojCo0bqkRPneXKfSLLnowg6K2fc5OCXkHBtaSy+yxq2CHNUP/c2MYR2j4ufWiVY1pUHa3YefSKgBGUMoy4rfe1VAiMKXdu5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uIAHlBsa3yb3lyHlE99+Grwv42zC6285qiNcBzkrcuI=; b=VbYTVlSL4+2k2jwzh/9QF8Ol0Bbxx599CVi2upaP0C+8sjN9P9JksUU9kvg7++HXB5pP9PdIvTKSCggK7Ci7/fJUEgkeWk5Yh3zKWy1qByw3af40iLlknKUkanRyvWv8TPYDgfEiqRzU0ThihsufIX1XFnaZn/i8TwNsEGKHi92KOtBsO5d/0J/mWuF7SsyR6PXAKgEtwXVBrV5Nn1zkK9b/iCgniF6neRhis+TU7b4xoUUhR1TfSBrLWFt7HSSo71OC+ZWZ083GiFXVqGtHZYO/BvLGuWdY6ZSnoIDNlaxkGeTh9OoOv9ui5B5tLxeTwbtWL7w8UScbqo0ACb44LQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uIAHlBsa3yb3lyHlE99+Grwv42zC6285qiNcBzkrcuI=; b=rTASEkTnnFECeR4zCziETpLVSHfq6wRAWh/OEOi9b2+MNDJ9FVRGt6TVWibfDk0kfWMPfeJNl64T9lsWiS3lywgNqvKMNYeOKaDGnczJUKVaNlyHc6zOZD2HBOpBv/0L/DQoXUriI98zD4uxOhWZF3xAUpjUnSC3nUKiKMmQ12vUk8udEaM9XkBUN2f1Qd8ShFQblXCjkk+FF6YnsEEkxhhka9cgSChuKmTE/RA/FkMjGdHzFKCUoG1wKv/KGgEMbmAt0mw4Rb/XZBPNUkLBrwyG3VN7GoY1mih6gCPOsP7Iqf1edXgBh1gUpYp/wcr7mb1olGLCGXPjQLdBrFsu+A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <64915cea-918c-fc3a-6e4d-cd56b40cd225@suse.com> Date: Wed, 19 Oct 2022 09:44:01 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH 08/10] domain: introduce GADDR based runstate area registration alternative Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR3P281CA0122.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:94::6) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|PA4PR04MB8064:EE_ X-MS-Office365-Filtering-Correlation-Id: 40c7400c-f9cb-48c3-26f9-08dab1a5b114 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IOgZRECG5gH1I6OM4Y80/3SiCbMCzeXOvt25L2g1amD8Dmop75BIYhkOSjKwjiFDYGDCM1jl/oFxdjSwpR4jc8UXabfuawKmlChvaUoShqp3w86cpZNu9tSc90HenYP94TJ4CBCYu2scoy3iJBdrW49Ol4YA0wnGmibONUqhCz6jxqumX+bTtJU9mzhsZdjeUkePwLJ4o6G17XavJUuKxbQ++bpCHczNonrlUuPrQk3Zp3rCZYzzH3DV+TZxDKLdGdYNALn6haWYibSXYZa//4W3lxgNXMN7gmm8QMR7b2cpvT0qsrsAeoiUZ6qfM949yqw9wyDoi3SoN0O1hd8zbvrcL+UhN1ibgaBXIZLa5CMoDDYvtR/REhlAsPjg47vaJGwIrFY23gyV7NGqjKp8T18DxMVkl6o/mWbJJ3S0BVH74UDchYK7kUGx+PC91es/zRg9S3A2wSCbeGV3Tyarc3fb29Iw90WXZQ6CF5YDTNIsUPpv3HXxMokR0k+tN9VcioTEjNr8E9qTc2zi1bRGNS2ohRfWXNHz39XM6IoEc66GLRrWT+wffLlYdVRPlzj6r+ldksbd6eo1vF5RmoCcr1xMPUs/hzbin0jQK/lMfBL9m0aCmTpXz3dTyDiE5C8TozXDsp9XeOtAmevOwajY1yUu0JbgqcDDSyoS8lAg3jb3QP1I6aj9keJfKHZeO528zCu2E2WM0aYv1yNtcl7XbmatQOkH1XmKXwmbSsVdPIRuOrmYFm8gxExPcUZ0GLj0CmDI+cVP8gGBzVQQv38uz1TkFyKMff9/d+vVPPq9USU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(376002)(136003)(39860400002)(366004)(346002)(451199015)(36756003)(31686004)(86362001)(31696002)(38100700002)(2906002)(5660300002)(186003)(2616005)(6916009)(83380400001)(26005)(6486002)(316002)(6506007)(41300700001)(478600001)(6512007)(54906003)(66556008)(66946007)(66476007)(8936002)(4326008)(8676002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NXU2UWJPS2dYWW9zZEd6bmd0dlQ2YXpSamlSVmhkWmQ1QWMvbGdCYjNjMkU5?= =?utf-8?B?S1JzM1BRNmlLc21zaVQ0OW10MW55bTE1NDBRNytQdzBIS0RaQ1E0V0FwQkoy?= =?utf-8?B?YzgxNS9sZkFBRWJsOHZPR201VjhrcWNQZ2FTKzcxTGVEVWk2dmFXamFkTUVU?= =?utf-8?B?cjQ0RCtKdVlvYmFSZlpDKzJqeDd4ZjlwSzEySzdEb2RydnYxcW1yTG4wc0VR?= =?utf-8?B?dmVkb3lsajRFS3VEZWl1emNFbnFtOG1BaTAwTkZYZThUeWtvOFo2eGNnTnM0?= =?utf-8?B?ZjFlcWJkMHZYcXNPeE9iUkVYMVVDbkhneGRCU3VOQy9rZFFNM3lUcCtIcFpm?= =?utf-8?B?TU9GV0prY2dmSm5VLzBBZ091dVdoem5xYU1BSkhhRGRmOGhHUzF6U3VCK29G?= =?utf-8?B?ZXdEUWNkY1hEc0FLdzVjZ1MxVWRXa2w1YmRhUTk2SHBteWF4RzE0S0tKazRM?= =?utf-8?B?RmFnMkllL0tOSkhuUDBvaE96SHZYSThsZC9TbnBRSGxhU3p4TEI3cUJRdlcr?= =?utf-8?B?L2JRZkFIczU0c252SXE2SHVxV1llbXRXb0U2VUhwa3NJQnBLQVNGaFU1L2g0?= =?utf-8?B?UTdxT0dja0t6Sk9rdUIyTVhvMGp1UGdnVFhISEhQVWRaT1ltY3lrdTlGeG04?= =?utf-8?B?QWxPcHk1empTL013dkRSc01lRUlXMGZ3K3gxMlc0VjlqYUdLTGVjT2E4amhw?= =?utf-8?B?UHZLODhFNlBzNDdFa1JITTdVV1JRSExZcnhsc3kydGs3RnlOVndoZDJmalVH?= =?utf-8?B?MWZtVDdPT1hqMFI1NDJLa3k5RnBPcE0rbFhIV1dnUU9IVnhtTEFKcENrTXNH?= =?utf-8?B?RmVFWUlPVWpjK2hTOEpIaStNRWxvQ0hiY1V6QVB3M3dnSXJ5c3JrbHArTWxE?= =?utf-8?B?NUZsbU5zWTlCYTJuVE01MTcxT05PWDVYVWhGWVF6UXV6ekdieEFGZS9qSWZT?= =?utf-8?B?SVRzZndsRmYxaUt5UzFqR3BXd3VKTFJhRGY0TzdYbXFwTC83MDdnTWF6ZmxL?= =?utf-8?B?TGhaaWZMV3JrU05Va1ZLM1J6UTI1dWd5SEkwa0VzRWd5aFV6cWJpM3hISTVH?= =?utf-8?B?ZmsrTm1WUGw5Tis0aW90WDFFUnZ2YnozMk1PZjJBczkvMVczUGtDQVd1M292?= =?utf-8?B?MXNEd2pxV1F4K2U2SS92Ky96RzZGM1prd1laQUs2Y0d6VlZHMjhiM3IySGlJ?= =?utf-8?B?WEwyV2JxbWpBcGdVRGJVZE1CdVRiWE9JRTNjbVpQanRQaEJZNDhxNmJoaE1Z?= =?utf-8?B?RVB1ZUg4RVhNenFjRWZVOTBIWEd2TnZxejFwTm13b1pVbGVqYkM0YWM4bHg0?= =?utf-8?B?UXZzMlN5NE1Ja0hrMWhVdFkyalhxYUo0NElJOWJZdVVtKzBaVi9YaUZ3ODVT?= =?utf-8?B?WGJFd1hpcXNnNDUvWXZWQ2UyWG56dFE0QXNrNzVxd2FIV0IrcFB0UkE5cHJ3?= =?utf-8?B?WTJlL2h4OWNrUTJxdlI3R2JtUmNDWFJScC9NOFVYRi9XZGYxNDV4b29TR0Ry?= =?utf-8?B?NWpmUkVhMkwvbGEyVXhBQ1EzWmhOMCtyUzNoU0RNSURvUHp6QjFMUHdiSzRD?= =?utf-8?B?VndjdWYvZGp5aGZsSkNvOW9oTEhkRFhWT0ZMSWE0VDRRbXNDcTB2K0xTTjE4?= =?utf-8?B?dnRaWnZZai9EMUdLQ0ZkVW5pWnUwL0MwY2dBWThqUDlEdm1tK25kR0piRmlD?= =?utf-8?B?WkErRWFiWkx4UDFMeDh4b1g5em5mSWhSaWVxSS9HeHp6ZUJXT3k1OFZPenBZ?= =?utf-8?B?dElQb0JDRTc1VWZZQXpRTUM3L0VJc05tNG1BRlYxTlJIa2NuSTRFWHZHWU9w?= =?utf-8?B?MVBpQ25GTmpFZVh2K1d1OU04RllqVGpIYnV6ZVRiSE0rSUtwVEZCWFdLSXYv?= =?utf-8?B?MlFBem5tL2NRcm1PMjdEUWY4TGZFUDQ1VUJIc3EzNFR2OW1LdXM3YzB3dlhm?= =?utf-8?B?a09rby9JMENadnNQeFBUVVRaL3IvNm5pNXp1bzVIVDVvZDVCOWlyc1hLR09W?= =?utf-8?B?LzNmL3ZxQkQvekhrOHV0NU9sUVkrcG1EYVJIU0I0M1JwS3BiSk1CYnlENWlL?= =?utf-8?B?a1B1QkJXeWMwNzFJeHJJcTIwbDJzQ2ZiaUJpaTQ4aW1kUUlwZzh5Y2dIY3Ey?= =?utf-8?Q?HygieqmEWl+R0Ric+pows71av?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 40c7400c-f9cb-48c3-26f9-08dab1a5b114 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:44:02.6048 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0FH0OPZQNC2aytKi8GbB8EBedXXPjhTSRlpqI1OcdNirYjhPDHWkdxKeN7hjlCu71X/RPPyCM9nDT6eFrhSn5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB8064 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165465117100001 Content-Type: text/plain; charset="utf-8" The registration by virtual/linear address has downsides: At least on x86 the access is expensive for HVM/PVH domains. Furthermore for 64-bit PV domains the area is inaccessible (and hence cannot be updated by Xen) when in guest-user mode. Introduce a new vCPU operation allowing to register the runstate area by guest-physical address. An at least theoretical downside to using physically registered areas is that PV then won't see dirty (and perhaps also accessed) bits set in its respective page table entries. Signed-off-by: Jan Beulich --- a/xen/arch/x86/x86_64/domain.c +++ b/xen/arch/x86/x86_64/domain.c @@ -12,6 +12,22 @@ CHECK_vcpu_get_physid; #undef xen_vcpu_get_physid =20 +static void cf_check +runstate_area_populate(void *map, struct vcpu *v) +{ + if ( is_pv_vcpu(v) ) + v->arch.pv.need_update_runstate_area =3D false; + + v->runstate_guest_area_compat =3D true; + + if ( v =3D=3D current ) + { + struct compat_vcpu_runstate_info *info =3D map; + + XLAT_vcpu_runstate_info(info, &v->runstate); + } +} + int compat_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) = arg) { @@ -57,6 +73,25 @@ compat_vcpu_op(int cmd, unsigned int vcp =20 break; } + + case VCPUOP_register_runstate_phys_area: + { + struct compat_vcpu_register_runstate_memory_area area; + + rc =3D -EFAULT; + if ( copy_from_guest(&area.addr.p, arg, 1) ) + break; + + rc =3D map_guest_area(v, area.addr.p, + sizeof(struct compat_vcpu_runstate_info), + &v->runstate_guest_area, + runstate_area_populate); + if ( rc =3D=3D -ERESTART ) + rc =3D hypercall_create_continuation(__HYPERVISOR_vcpu_op, "ii= h", + cmd, vcpuid, arg); + + break; + } =20 case VCPUOP_register_vcpu_time_memory_area: { --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -1789,6 +1789,26 @@ bool update_runstate_area(struct vcpu *v return rc; } =20 +static void cf_check +runstate_area_populate(void *map, struct vcpu *v) +{ +#ifdef CONFIG_PV + if ( is_pv_vcpu(v) ) + v->arch.pv.need_update_runstate_area =3D false; +#endif + +#ifdef CONFIG_COMPAT + v->runstate_guest_area_compat =3D false; +#endif + + if ( v =3D=3D current ) + { + struct vcpu_runstate_info *info =3D map; + + *info =3D v->runstate; + } +} + long common_vcpu_op(int cmd, struct vcpu *v, XEN_GUEST_HANDLE_PARAM(void) = arg) { long rc =3D 0; @@ -1963,6 +1983,25 @@ long common_vcpu_op(int cmd, struct vcpu =20 break; } + + case VCPUOP_register_runstate_phys_area: + { + struct vcpu_register_runstate_memory_area area; + + rc =3D -EFAULT; + if ( copy_from_guest(&area.addr.p, arg, 1) ) + break; + + rc =3D map_guest_area(v, area.addr.p, + sizeof(struct vcpu_runstate_info), + &v->runstate_guest_area, + runstate_area_populate); + if ( rc =3D=3D -ERESTART ) + rc =3D hypercall_create_continuation(__HYPERVISOR_vcpu_op, "ii= h", + cmd, vcpuid, arg); + + break; + } =20 default: rc =3D -ENOSYS; --- a/xen/include/public/vcpu.h +++ b/xen/include/public/vcpu.h @@ -235,6 +235,15 @@ struct vcpu_register_time_memory_area { typedef struct vcpu_register_time_memory_area vcpu_register_time_memory_ar= ea_t; DEFINE_XEN_GUEST_HANDLE(vcpu_register_time_memory_area_t); =20 +/* + * Like the respective VCPUOP_register_*_memory_area, just using the "addr= .p" + * field of the supplied struct as a guest physical address (i.e. in GFN s= pace). + * The respective area may not cross a page boundary. Pass 0 to unregiste= r an + * area. Note that as long as an area is registered by physical address, = the + * linear address based area will not be serviced (updated) by the hypervi= sor. + */ +#define VCPUOP_register_runstate_phys_area 14 + #endif /* __XEN_PUBLIC_VCPU_H__ */ =20 /* From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165530; cv=pass; d=zohomail.com; s=zohoarc; b=NKzCgB2Wu/Wghnf4fh0Hsnm4tgYOWITJ77+dqocX67RUThy2fUoUuMjmMD1t1Os0q2DVqf/Ouyo1PAy1B1F4eZ4jQj60T8rhSZxWhH79BfqpCaxUwGnpbFZqxpcEMNiHTLE74e/GS5VlUBUkW0XMdSqWzmECUHMMUj5U8wq8aVw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165530; 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=9eflRRB2jmPiyNvfvJoh4skvHiPaEH7JTca4Ol831Ug=; b=EeDJdwVaiI/E04TyBs9+6QmiGaxktslFdhvMtiOFWorx/Wktl8jSy7KSPlONxjqo/qZmA6QDGQ4vlsGO+k9qtqqMVIIehXwsQZitGFS2tOYke0yhPvFTJcX9qa8sc3Ylerf59xzzeGsj3yL8eoHiie1116A2gcxf3JQ0vRH3VGw= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1666165530519903.993649383367; Wed, 19 Oct 2022 00:45:30 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425584.673503 (Exim 4.92) (envelope-from ) id 1ol3lD-0007TE-Lt; Wed, 19 Oct 2022 07:45:07 +0000 Received: by outflank-mailman (output) from mailman id 425584.673503; Wed, 19 Oct 2022 07:45:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3lD-0007T7-II; Wed, 19 Oct 2022 07:45:07 +0000 Received: by outflank-mailman (input) for mailman id 425584; Wed, 19 Oct 2022 07:45:06 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3lC-0007Sw-2K for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:45:06 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60054.outbound.protection.outlook.com [40.107.6.54]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id f1f3af92-4f81-11ed-91b4-6bf2151ebd3b; Wed, 19 Oct 2022 09:45:05 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM8PR04MB8018.eurprd04.prod.outlook.com (2603:10a6:20b:236::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.29; Wed, 19 Oct 2022 07:45:03 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:45:03 +0000 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: f1f3af92-4f81-11ed-91b4-6bf2151ebd3b ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=moBix3iTL+mkz6rmwQ8Lxjq+wqCwplriD7m1Wc2FBoP0Fd49C234W1baD8AbP2DQFUOx9JLE4ZYZSf5Ytd2T1gM/G4xAVDbBJcxdKJLZj2bLDNOLcKaYJw85eKT5o64bOuCofRCo4x1uSXOe/p6aUWr5zLlkMRjQgR5MwWSt5FbX5rB7GyngDvmeVuGb0KR58L6P47s+mZGGbBRQR/bB7B+JEp6ygL7R0+RRYwLmqjX0fIKw48nFKBy+QzPbw9uTva5Usp5KRLPfsL6mhZa58twkOpOtc7GFYa8pzCG3RHUQPkCYZlmdOfK+cm+4ew3ESVRIuk7w7loggLTRUAGCkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9eflRRB2jmPiyNvfvJoh4skvHiPaEH7JTca4Ol831Ug=; b=NmvinShEUZOBxVMoRUiskbK280RIZcc0sGk2t4Pk4Wd96tN17vMDnTBwh79kaZ1HJyMFIA4GVdNbOkArZ6PWWr+BsfZ60V7y2Ji0l3LiiQ1m5jz7BaDhMtEo825EiEg5KmLIuVYTsSq6Tsin67fojLuIUpg9Vcr571BvL4PoY92tcFsme3/c29JYNNvIM8MlwxoFR8wePhaCQzxpY7VSKHbnWZOZ2jwAW+QT5anz+1SpW2m2zpzUg9f48w8qJYcMmNoqfvecxRbjS9TKe1Ys3VfXf5cnfJ4TNmtvBncc1JwvS/piUWNyAzus1I8yfA5YvyXUPzcHM1czXy4FLUOxwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9eflRRB2jmPiyNvfvJoh4skvHiPaEH7JTca4Ol831Ug=; b=dRwIuD6ggBCTjjcntzvnkiLV3hUFz6WVLqP3W2dFBfgtmh+M+ESCAfB+eMbE/xNCqQPFADQ+EeaiZiRYvOANNA2zqwFnuBcNmR6y4uysWRcqa91JmiS+H/FfQ8Tv9ZcmftaMpFHvG97frLHZ/J0/jX8gm8LVJssaOszoN3KohkokPIqAYD7bp9OwYAWfdTpfFu3VsBENmjjNnMCHzxT4Z2kj5A9HkIsjgWdgSGK1m6/pF+9+8acePWR1mWhCp+qnwnliyXx5Kz4KdNn+4US6nGR7jzPsU9oNAXZscaLpJZUMPjpn0WNrgOS4iEN97FO+CMBvEaeXTY5Uq0Vl/Mychg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Wed, 19 Oct 2022 09:45:01 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH 09/10] x86: introduce GADDR based secondary time area registration alternative Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM5PR0601CA0048.eurprd06.prod.outlook.com (2603:10a6:203:68::34) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM8PR04MB8018:EE_ X-MS-Office365-Filtering-Correlation-Id: 1350ba36-13f1-43cc-5d77-08dab1a5d51e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9MplujuXHuxO5nfVn/J5+8mmUx7bS9K7YH/dp8ZUjz6nb+nUGoOaJMCwjBdRJwcZNTOoMlAXr6EwFtFjTqvBtbDDuOMYfCMrVA/qPKhgFxuZ0rYWSICdP+WESIB6dqAy5x8PCJjeJvNaydun+lqxS6tast1jhvzNsSTVvuJcy2T9Bm/MCOzex2mKGnQNKWXzMhw4NRYhzJllh3yUAo6u8zoCujt9/2IuTUBRwXf2Mm69wXOWPqmnqzEXLh1X9PgXCiHMozAF70DNyHuDQOG76yBavUu1U6DVsryTMxsvu7eMAh8LUnVQ0JqhfH+w+/Q3P7O4BTZQidxtj/7jTHpBqZXrdoEN+qfA5Kiag8ipvCz+Gtn//AeMSW+0uZd5XziMCBTib0I8HfcmS1g8qptfqEGqW1MLvEASu2qCKbSQ5T1CmRO29kyiC7m1TvAe2fvz2CWwRH2dvGguUCh6yJa4fHp9GgYepQrQD/YB2/fq7d56N2qUJ+mLn+R+zuwfTYZdj++cf2cdUtO10cZ3YqMEd7ALS6y14B0Zms3swu9Pl8Z7gbBJYFmvi0MkkANbUR97Nq1wdP7wW179P5/zE/O+vWHC9ZhkADlgK+2GtbZWWOxAWCm4ZDICpBiQCwGgygYgvEACVJJ0lD4GMXjwXJJtKTBnnfXV+z0exMcEHYjU4POiq9Zjx5B1T2g8GB8MKXifxtS6vBGR3T/gAaMmFzS7RAAqYtkEkupsUKZ0OuT2qlbqf4ilRZoi4z9fDkprXEeKVY1UXZUu0JSTrm1xz+EJmx2dwY8X4pPiDQzJtx3Bu+M= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(376002)(136003)(366004)(39860400002)(396003)(451199015)(316002)(186003)(2906002)(83380400001)(31696002)(36756003)(86362001)(38100700002)(31686004)(6486002)(478600001)(6916009)(54906003)(2616005)(41300700001)(6506007)(5660300002)(8936002)(26005)(6512007)(4326008)(66476007)(66946007)(8676002)(66556008)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OUNoWFFqcjUyR2NMOUlod2pWbXlZTjIwNzU2Q1V4T0pNaGorTkk5bG5tZWJR?= =?utf-8?B?Z3BJd1B5Y0tZOUUyRjNTY2xvSnpOK0JHT3l3WVZzUUVFbWdzVVF2K2plMTF6?= =?utf-8?B?cDNLekhnWEJoSFZ4enlBeWs1bnpBV1BCNkVEY3JDMlhFSVZZZks4eWZxTzlr?= =?utf-8?B?QTc0ejA3cU5nelZuRUw0eUE3SlRYUWhDdVRUSkEydXE3eWRUZWVTdmU3bVR2?= =?utf-8?B?NmVSYmxBam1BQVRyY2NaUThwa1F2dWo0dkdZYi9VU1lUYUtKaStrdDVMKzdI?= =?utf-8?B?a2l6TmxqekhyL2c1U2pYZUJzRDFLbk1XUERuNFFhS2h2Tjk1VWlXMy9tWGxu?= =?utf-8?B?a1o5aUs0TkhMdzFkMEdPcWVMVHYwT2lEUmpSUXFvbmNZcFUwenlXeG9WVG5v?= =?utf-8?B?RTgwTUFIeWFkY0w4R3VMR25ZOGdPT0lIaTRIRlFSbDliTjFad0RvK1NUVndU?= =?utf-8?B?Y2dsZ21FYXFhTjhDd0RnY0Rld0g4VWFwcis0ZVVzSDFNRlhFMWRabGR1N3hr?= =?utf-8?B?b0ZNVEphQnptQk5OSkZJV0ZEaEdJTm9ZTS8waGpHNlNMZ3ViT2U3dU9CcjZC?= =?utf-8?B?eDVuVmJ4S01EMGZHVXlqODhtN3FyWmtKemdBeFpPelVPQnFmdGYxdFh5cFl1?= =?utf-8?B?L3ltaTRKVU4yc1RDNVRvVndoMHJZYUc4akIrbElPdVFqRU00VlJHa2xsM0pl?= =?utf-8?B?RVY5V3p5WDBQcTkrUnF2WTNaM04wUjNFVDlnZ3A1cDhpaGpwRWtLU3hQVUxs?= =?utf-8?B?OFU3UVd1NXhEQ2VCS1BwUkVtQjBzdU1lT0Y3M3h6cFRGM1ltR29hTXV4cHlC?= =?utf-8?B?YzlkMThaZnVhK3Y3VEFvakNJaWsxQTlRQmhqUzNoRStHV2orVDRoRUQ2cTJY?= =?utf-8?B?cXZ0ZU0reEFPSXBPdTZSWThzRFVxTnErZ2hQQm9mNVlqUitNWUxLbUh0ZVBT?= =?utf-8?B?ZXJ3VTBzZ1VWMlA2bHAxRkRQQ0JleFFtenQ0WStnbXhybzFlVnFyZXd3eWs1?= =?utf-8?B?SGQ5RVRjelJmTzcxRytuYnBJNHlqZGN2L3JlTWFuQWFneStHVWR2L244clN6?= =?utf-8?B?KzIybTJDK2kwRnovbTM5UC91dk1GZjRLaThGUVdFdU9xa3RPY2dacU45MEF3?= =?utf-8?B?TFVtQXlCbUoxWW9zbHN4QmZabVdIclFYRVNHL3NEa2pOVTEvdnlTcnNNL29s?= =?utf-8?B?c1ZxSE1mTUlySzk2MUxXVXV6MUhKK1RlYUhBMHFteUZ2TVRLU1RNRFRLUGVB?= =?utf-8?B?d0RZNENRc3d5blRqSDN6bGZXdWFMZVFRc0ovSEI5L1Z4R0FDS1hybERxNS81?= =?utf-8?B?clFia3VBTkNBNExiZzk5YnMwOU9SSUtUY3RxSUhKcGYwNjV6Sko0dFhKOER3?= =?utf-8?B?Zmh4anRIRlhmN1NjNFFtL0Z5eWxhdHRnR2lqSERKL3MxakF1VlZueEUxd251?= =?utf-8?B?Y1hyMHpjengwSURPREFVYzVZeGhncXVya09PWGdka0tZMThGaUphRmhRVFFQ?= =?utf-8?B?MFNqelZ4WFRSNHBlUy80andhM2V1SVQ2RFhsVnZVaWRjT1R5MDlKQlp5VjV0?= =?utf-8?B?Y1B2SkNySUJpNGNFQmxFdW5ud0dvNlpqWXZrcGdmVGE0ek95MUQ1L0l3Y0Jw?= =?utf-8?B?dG15OFJjYjhlUUh0RUsyQzc0ZTZzYWJlTUZBN3haWEdaWU1SUE5hTHA5YklP?= =?utf-8?B?dEJoazZVNU1QWEtEMXJReWFBeU5aNUlLcGI1VFNBdWpHSzdhVnlRUFFmTURR?= =?utf-8?B?bGpjeU1JbmFLZFEyN2IzZC84aEpTYmdXWXB2UmpPTHkrRjErMytVTVBHOHBR?= =?utf-8?B?dXlYVGxKeGEwZ1FuQ2cwTmlCQXZoWVM5eUNPMHdjS05CeDAyZXIvL3FMNURK?= =?utf-8?B?bU5OVDlKUVlpa1pCUFY2OGhNcTNzYVVSMUFQNFJXZld2bHBnSm1SZFBiRkNw?= =?utf-8?B?NDBoOFk2RkhUZUNHczdNdmlscG1SYjlibHFjL0gzdnUxbktVUmZrVzdhWXNU?= =?utf-8?B?SHB1cUhwTXhvakZyVkZ0UVZFenBjY1lvaGY0dFZuSHFlVGZCdzNXY2RiZkRa?= =?utf-8?B?MjNwMklmbDBGQzNKQURZdi9XUXRIdXpIZEs2cmxkWFEzd2kreWNUWi9oQ2FB?= =?utf-8?Q?vU8WELX2EOMNkpVRO1r4rqziY?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1350ba36-13f1-43cc-5d77-08dab1a5d51e X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:45:03.1166 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 1F4PrKNus+XtsfTrp2xvWHMg25bdippVu7hh+UXefZ2C87cA/wVJWINKDBIdjL2CUvooMaqqJeUOLy/s1NsUhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB8018 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165531768100001 Content-Type: text/plain; charset="utf-8" The registration by virtual/linear address has downsides: The access is expensive for HVM/PVH domains. Furthermore for 64-bit PV domains the area is inaccessible (and hence cannot be updated by Xen) when in guest-user mode. Introduce a new vCPU operation allowing to register the secondary time area by guest-physical address. An at least theoretical downside to using physically registered areas is that PV then won't see dirty (and perhaps also accessed) bits set in its respective page table entries. Signed-off-by: Jan Beulich --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1520,6 +1520,15 @@ int arch_vcpu_reset(struct vcpu *v) return 0; } =20 +static void cf_check +time_area_populate(void *map, struct vcpu *v) +{ + if ( is_pv_vcpu(v) ) + v->arch.pv.pending_system_time.version =3D 0; + + force_update_secondary_system_time(v, map); +} + long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void)= arg) { long rc =3D 0; @@ -1557,6 +1566,25 @@ long do_vcpu_op(int cmd, unsigned int vc =20 break; } + + case VCPUOP_register_vcpu_time_phys_area: + { + struct vcpu_register_time_memory_area area; + + rc =3D -EFAULT; + if ( copy_from_guest(&area.addr.p, arg, 1) ) + break; + + rc =3D map_guest_area(v, area.addr.p, + sizeof(vcpu_time_info_t), + &v->arch.time_guest_area, + time_area_populate); + if ( rc =3D=3D -ERESTART ) + rc =3D hypercall_create_continuation(__HYPERVISOR_vcpu_op, "ii= h", + cmd, vcpuid, arg); + + break; + } =20 case VCPUOP_get_physid: { --- a/xen/arch/x86/x86_64/domain.c +++ b/xen/arch/x86/x86_64/domain.c @@ -115,6 +115,7 @@ compat_vcpu_op(int cmd, unsigned int vcp =20 case VCPUOP_send_nmi: case VCPUOP_get_physid: + case VCPUOP_register_vcpu_time_phys_area: rc =3D do_vcpu_op(cmd, vcpuid, arg); break; =20 --- a/xen/arch/x86/include/asm/domain.h +++ b/xen/arch/x86/include/asm/domain.h @@ -684,6 +684,8 @@ void domain_cpu_policy_changed(struct do =20 bool update_secondary_system_time(struct vcpu *, struct vcpu_time_info *); +void force_update_secondary_system_time(struct vcpu *, + struct vcpu_time_info *); =20 void vcpu_show_execution_state(struct vcpu *); void vcpu_show_registers(const struct vcpu *); --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1524,6 +1524,15 @@ void force_update_vcpu_system_time(struc __update_vcpu_system_time(v, 1); } =20 +void force_update_secondary_system_time(struct vcpu *v, + struct vcpu_time_info *map) +{ + struct vcpu_time_info u; + + collect_time_info(v, &u); + write_time_guest_area(map, &u); +} + static void update_domain_rtc(void) { struct domain *d; --- a/xen/include/public/vcpu.h +++ b/xen/include/public/vcpu.h @@ -243,6 +243,7 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_register_ti * linear address based area will not be serviced (updated) by the hypervi= sor. */ #define VCPUOP_register_runstate_phys_area 14 +#define VCPUOP_register_vcpu_time_phys_area 15 =20 #endif /* __XEN_PUBLIC_VCPU_H__ */ From nobody Fri May 17 11:58:40 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=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1666165583; cv=pass; d=zohomail.com; s=zohoarc; b=aV/6QOSumSK438c8RGCNQrGVFZBrJc6ILV9j0aKgg/zcAFd7uyqC5Epvlf91bdruPQzuOd5EGiU7rndT7k9d/NP6Qw5SzkpBksSmN92Y1boOR7T5WxhazPoPuE019fQCJ8d/RMLQ7LfLKhtnjMB2owc7bhruyqQzQKEiFjR1HLU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666165583; 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=DgBhR75TKXzhjJAKk8igA43OaQRf/s9CHiXdfaBkBfE=; b=fcJGI5w1ad0mOF6Sg4/ofDLLSZz5N6fmghr1DiiYZcmiOHAZQOcZeaGxV8lifEpb6nKw7wUTq2oyTG9PEUeNshAVTPOMAtTd/SMuXoe0/ZdBsHowekzhSmdX5+xVQoLCr60zIzazT4bjZ9E32Ysd+lxCd2f5mdOw4/Py68a1kv4= 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=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 166616558334185.28381707225037; Wed, 19 Oct 2022 00:46:23 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.425591.673513 (Exim 4.92) (envelope-from ) id 1ol3m3-00085V-UK; Wed, 19 Oct 2022 07:45:59 +0000 Received: by outflank-mailman (output) from mailman id 425591.673513; Wed, 19 Oct 2022 07:45:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3m3-00085O-RS; Wed, 19 Oct 2022 07:45:59 +0000 Received: by outflank-mailman (input) for mailman id 425591; Wed, 19 Oct 2022 07:45:58 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ol3m1-0007wU-Ml for xen-devel@lists.xenproject.org; Wed, 19 Oct 2022 07:45:58 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60071.outbound.protection.outlook.com [40.107.6.71]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 1089ad06-4f82-11ed-8fd0-01056ac49cbb; Wed, 19 Oct 2022 09:45:56 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM8PR04MB8018.eurprd04.prod.outlook.com (2603:10a6:20b:236::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.29; Wed, 19 Oct 2022 07:45:54 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5723.034; Wed, 19 Oct 2022 07:45:54 +0000 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: 1089ad06-4f82-11ed-8fd0-01056ac49cbb ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HmShmaqQykFqvmtCcfCQ1GOW4Os2WvVSex46DrA1W/IA2XONfWPJZk5ErWkmBSOyIQcFanUMApAoyfk0ZDxh8FzhVIO7CA6rfV2hDgbW+t1/zAhL8XLnTdcvwJRX0QgKHiQzkYP/8jNhm8wJEPoHxHZxJtkRwKhRkQeJkKAvdwL93aLXZ+zVYLRrFAeBjjXDLh5i0TD4nJI6gX3Flbs6aBKlg+mFcQmIDgFhXtFxqKvZE7wZJiC6JQZyY63TPGbLH9TW06OCdQ2q+38G75SjDet/Px5X+ONIiwoh9mGmaUXwD3yjz2HWvpy7uucLO/pTsvbHSUWGGgYXVNAUe/MaLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DgBhR75TKXzhjJAKk8igA43OaQRf/s9CHiXdfaBkBfE=; b=iz25YbwMEI8ZEwfiXIX1isd7+QjHbDI+Qenlwqd9kfuEWxhyFlnFnfkNjwJk+zJC7NwCMvfM2rE2b3n3/g5pC+T6E6H3s46UAWZF6dHOKxRy0gLJy/Z2DTSBKebYZf20WNYpq4kNVFtTMO+5Uf+7tnu5g0q0eyIYCt32M2CVo2RMYKGFu3vaXrdd4uEmUdDRR0WGMGuNR5JWpRcJbZo65/gc1VQDWdSXc/GYk4UAlLwKRP0LNzBjSoWFohyn2ycG0G0MEyg1+a021jYjFSsBLE45BCftmEilv+yUh2qVszJ0je4jXgWmaCgL3MBmaCIaOO7SLlq66cbWLzs/JtAH/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DgBhR75TKXzhjJAKk8igA43OaQRf/s9CHiXdfaBkBfE=; b=WiPwRwz/yM48cBypGN2NvO1SJMJmqMJFJ9laL+qptGd36jswR3IjjY0vPTweTf0D8slKscE/lIwMRgm2L94IXyePTnpc8FMVE51PiaehwApJKMdUG/HhnOMUP59DFLDWQSWrX0/0yhQz0/IniIPwHIm9/FFzowW/M6yoRFxYQOACuoM9YCbDU21cDx1nTuG5lhinDDA1NxnfB21IQvNEjMV8xssOfS1jFMWqqLmwDwkSvKnOswRtjUoY9kRDzYqY4cZY1bV/gkeaqMydEXUh8lDa8jimiFS4caDW56m984f+GcrJFevW5DDT+BwgrKhEW4XQBd/aCwABX2CWaJZYLA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Wed, 19 Oct 2022 09:45:52 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH RFC 10/10] common: convert vCPU info area registration Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Tamas K Lengyel References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM5PR0601CA0047.eurprd06.prod.outlook.com (2603:10a6:203:68::33) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM8PR04MB8018:EE_ X-MS-Office365-Filtering-Correlation-Id: 2dcfca35-a02f-4ce7-ae75-08dab1a5f3d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2T65b7R6Aal8xTNpLsZA6Y7pIPoufXUXsCieyNMeOAV2reGiv0yma6tRbOwmzYhH5DrYW/HT/scx6UVlkfFkdoXKbnYcDwMrbzPKAI2JDDle5u4y5nI1g1bUW+EiQFZjxzzqicyP2HJtzF+QLnSBwOlWoFUxTitmz+ETchAcRMXaAnN6v1FR17uZhF22XIIyMLOysb0i4gfQCfHu+wAoS3SAU8snYxb/t4Gd57Kck0CYwHGxbOkL2FKV3b+69uHvy+miEhZh5oXLrfH7gmcj2Z+8Oy6ujAVXdpK7er3nIJeETIEASlIykqPZ+IurHICF8yD1koUPC3rFwPAIj8YrpN1QPFU0LDPSZaWj9CJP4PT5XxJo4ndhjzntTD6qIuYS+aRRhTDtNaHkudWcUUuE+NlWDGPYl5h8pIUBaJB/li0vKRBlF/M7Q1fXHDrloj/nAatLvzDcOiS+5JcNjCa7Sc6SYFQnLB7PJf6GUzCtayhZKfPO7jQcXjpLv+toKQl8rWXA8z6Y6PDriduKc9HJRP4bqYavER+OU0SlFlJeUKJKTbupX8VDfIPCb7WyCzJLpHj62zR2CcSfS3/hPQQIlemylO3CJ9TL6aXlcolVvWeFyas5ew97Hh81EMlZq1ZECXGLzBsGP/IRDP5uk/JLOi7NYKgwfAwkpwsJMgYpd79LM4ioWPBqdnx9XEekz8WM2WgNFUZYdus5JyBSI7/Rz1XY+aNS4HkMvHRMWfMV831KLqLM5rqqJeQa0Wa2uQT45uBmj/pUGwhUqSKJDrOq4iUOygoN9veXGr28YNcZ7Zy64W48VTuYQ0bcX9RHk9Vp X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(376002)(136003)(366004)(39860400002)(396003)(451199015)(316002)(186003)(2906002)(83380400001)(31696002)(36756003)(86362001)(38100700002)(31686004)(6486002)(478600001)(6916009)(54906003)(2616005)(41300700001)(6506007)(5660300002)(8936002)(30864003)(26005)(6512007)(4326008)(66476007)(66946007)(8676002)(66556008)(45980500001)(43740500002)(309714004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UmY3SGhPOGp3UmtoZjhGSFBETWQ5clNSWG5IQkMzSUJQdG5Da2lObzRhd0Jh?= =?utf-8?B?QTJoaGVkMUpnUjhwTlRWdTJaR3hHdy8xZEhwWndKTWVsdTJMT2Y3cnhMUVM3?= =?utf-8?B?QVZ6SE5ISHMzbkJBbGJ3UXZNZEN2elVDeFVmWWptVjEyN1AwT0VPVmdpUklJ?= =?utf-8?B?cXVxVlpyTWZQQWt2MlNJZHB2dS9wdHdpK3ozNUhTTFNrT2ExNy85dDJhdWRT?= =?utf-8?B?NVhiU0ZydlMyY3N3WW9VaU0vRkpUemFyTDJQMVV0MDFxQUNJZ3JYWTd3RmZN?= =?utf-8?B?QktvbnRDQjR5K1BpUmJxQm5wUjNrdHJCTitKRllZa3loRXJGdEg2VUsrckZ3?= =?utf-8?B?dFEzb2NoSWdZNVJMYitEc0xnMTZpczd1eDRSRzljMEtwaDY5bUFqdERROE1H?= =?utf-8?B?NllKZHF0VmxBek5EK1ZzT052ZWc3dW01UmNVOU5BUnluQUpZYWdtRElrUHRm?= =?utf-8?B?aWt2R0JzOVZuU1grM2FHMHdmUTIvR3UyMkg2Yk5GY05SSjZBQTlvVDVhT3Nr?= =?utf-8?B?ZE01OFNEY0R2ZDFMbStrakVUR08wMnFGZlcwWlVRR1d2UlVvcU1pUTdpaHgr?= =?utf-8?B?Tk5zY1JDNWZoeEcwMWtsSDlRQ0JhSmZXbWVUbkt0a2FDRGdyNE1veUlyNTFZ?= =?utf-8?B?WDNxQ1duQVRwME11VXRHNjViUUFXSFZLTmNFY0ZNbjl0T2t4VlVjNWN6K2RT?= =?utf-8?B?aGY4ZUNxRWh0M00vS21VenZUZ0hsTzRLVW1xanNHNWRBbU5oaHdQdkZjT2hu?= =?utf-8?B?TDl0TWR5ak9RNkJFb3FCQzY4UjhUNW95b0gvN1lPREpNa01yUnl0M2pkdEJQ?= =?utf-8?B?THVxby9FRnhYUktzSU91WXl3V05Fclc1NldZQ1Z2Q2E2MFBabmZ3d2J4cisr?= =?utf-8?B?UEpjL09DU0N4enk4RFBXUVlJWmpVUXNwL1N4NWZ6RHFHL1BGd09TZlU5VTV2?= =?utf-8?B?SXZRQ082QnZ5aCtxNUJyY0YzRjVVRCt1a0JMZ2tHSDJ1VW5yS1crcC9EZnNt?= =?utf-8?B?ODhSVWNGYzJMVHhtQThFWjdEdTFiTEZTZ2tET0xrT2pYZlJ6TkQzNzhqT0JE?= =?utf-8?B?VzVyY29Gb05zODBWbWFVOXBReURnTml3dWZ3MHREOXhVWWtsVmJtZ2R1UlR0?= =?utf-8?B?U0txam5sUWpmMHF2cWNDZUNSM0pxTmRxcTJmQjJNRzFjTndQVmR1bXNDU2hL?= =?utf-8?B?ZE9VcFo1dkJZYXZ2SkgvZElYRE9OY3k5ZFEvVGlJN1JrWUdKbnlsbXEySnpn?= =?utf-8?B?T0wrb3JxMng4UkRJM29OcTFvRC90UnJCbjBPSm5iSHNEQnBaWnJuRHNyMDNn?= =?utf-8?B?YlFDUkU1U2VJWHd1TnB4cFhKTmxqTFNlRTY0VEdWUGJJcFpKQ1RSd09FWHIz?= =?utf-8?B?TGVZVC9DV0hoYWVJUHpNeGNoWUhuVHlFOTFUVmJkZFIwTGd2TTk1YWloZHBL?= =?utf-8?B?dFRvOHRYRVd0cnBvMVFEeVRGMlF6VThucGp1eVNsVGQvdEVUNVhkMTV4L2Ry?= =?utf-8?B?djVqRTJGZGRrck9mY3JVWGJOTE41bVBONWsrRnRNcmsvYVlQNytRdFlHaEcz?= =?utf-8?B?VnVHZ3RmTGlwQ0cwWE9HaFVDRU5RYkVCVllJWHVuRXdGczhaNVBLaHF1UVYr?= =?utf-8?B?S2Y5RGYzWGRmb1pHUDIraG0yR1VXV1ExenRiUjBwUVozUk81cWtUUjNib2VS?= =?utf-8?B?WXBicWlQajBJTVRPSzl2bkFFNSsrWWlzWHpMcUp2MUNRcDhZekJCcEJXdHhZ?= =?utf-8?B?SUphbjZyN1N4WGxyb0o4KzRNRng5eStWMEo5ckpGaVhKRkhEV2l5T0dNRUVy?= =?utf-8?B?RlFIcWRXeDhZQk5ELytOSFdtcS9rRjBMbXdWajZWOFdEY01JdlVCSlZQWENI?= =?utf-8?B?MXUxdGZNS3J4NThoYkFvOXVyZUo5OVBDR216Z2EyMVpDbk96U2swNXAzVmdJ?= =?utf-8?B?RDBMcjVjQWFOd1RLVWxCaCtOYXVITWpvd2lQb1FMdU4wZTFrQlFuNkgwbEtF?= =?utf-8?B?QTBpQzc5WitXVzF0bkRoNlkvdTNJRURtZDk5VitHYlF6bDFzblBjcEpZY0VG?= =?utf-8?B?NGYzSStET0trWXFVaW5OTkcyMWlWYWZ0eHFEMHpVY2w0Z0xTN3YrSFBMcGtL?= =?utf-8?Q?qmJnh+8sP2n6iG0pnW7oOlmCR?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2dcfca35-a02f-4ce7-ae75-08dab1a5f3d9 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2022 07:45:54.6446 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HIxhdHhpl8su2QnFekvrpJ10UDoYmLUcgdVaDKrmkZLPIde2EjEbvwB92JvDLaUxr1Pr7dBkAd30niVc4nRVxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB8018 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1666165584151100001 Content-Type: text/plain; charset="utf-8" Switch to using map_guest_area(). Noteworthy differences from map_vcpu_info(): - remote vCPU-s are paused rather than checked for being down (which in principle can change right after the check), - the domain lock is taken for a much smaller region, - areas could now be registered more than once, if we want this, - as a corner case registering the area at GFN 0 offset 0 is no longer possible (this is considered an invalid de-registration request). Note that this eliminates a bug in copy_vcpu_settings(): The function did allocate a new page regardless of the GFN already having a mapping, thus in particular breaking the case of two vCPU-s having their info areas on the same page. Signed-off-by: Jan Beulich --- RFC: While the "no re-registration" check is retained, it is now racy. If we really think it needs retaining _and_ properly enforcing, then locking will be needed, but I don't think we can hold the domain lock around a call to map_guest_area(), first and foremost because of its use of vcpu_pause(). RFC: Is the GFN 0 offset 0 behavioral change deemed acceptable? RFC: To have just a single instance of casts to vcpu_info_t *, introducing a macro (or inline function if header dependencies permit) might be nice. However, the only sensible identifier for it would imo be vcpu_info(). Yet we already have a macro of that name. With some trickery it might be possible to overload the macro (making the "field" argument optional), but this may not be desirable for other reasons (it could e.g. be deemed confusing). --- a/xen/arch/x86/include/asm/shared.h +++ b/xen/arch/x86/include/asm/shared.h @@ -27,16 +27,16 @@ static inline void arch_set_##field(stru static inline type arch_get_##field(const struct vcpu *v) \ { \ return !has_32bit_shinfo(v->domain) ? \ - v->vcpu_info->native.arch.field : \ - v->vcpu_info->compat.arch.field; \ + ((const vcpu_info_t *)v->vcpu_info_area.map)->native.arch.field= : \ + ((const vcpu_info_t *)v->vcpu_info_area.map)->compat.arch.field= ; \ } \ static inline void arch_set_##field(struct vcpu *v, \ type val) \ { \ if ( !has_32bit_shinfo(v->domain) ) \ - v->vcpu_info->native.arch.field =3D val; \ + ((vcpu_info_t *)v->vcpu_info_area.map)->native.arch.field =3D val;= \ else \ - v->vcpu_info->compat.arch.field =3D val; \ + ((vcpu_info_t *)v->vcpu_info_area.map)->compat.arch.field =3D val;= \ } =20 #else @@ -57,12 +57,12 @@ static inline void arch_set_##field(stru #define GET_SET_VCPU(type, field) \ static inline type arch_get_##field(const struct vcpu *v) \ { \ - return v->vcpu_info->arch.field; \ + return ((const vcpu_info_t *)v->vcpu_info_area.map)->arch.field; \ } \ static inline void arch_set_##field(struct vcpu *v, \ type val) \ { \ - v->vcpu_info->arch.field =3D val; \ + ((vcpu_info_t *)v->vcpu_info_area.map)->arch.field =3D val; \ } =20 #endif --- a/xen/arch/x86/mm/mem_sharing.c +++ b/xen/arch/x86/mm/mem_sharing.c @@ -1758,53 +1758,24 @@ static int copy_vpmu(struct vcpu *d_vcpu static int copy_vcpu_settings(struct domain *cd, const struct domain *d) { unsigned int i; - struct p2m_domain *p2m =3D p2m_get_hostp2m(cd); int ret =3D -EINVAL; =20 for ( i =3D 0; i < cd->max_vcpus; i++ ) { struct vcpu *d_vcpu =3D d->vcpu[i]; struct vcpu *cd_vcpu =3D cd->vcpu[i]; - mfn_t vcpu_info_mfn; =20 if ( !d_vcpu || !cd_vcpu ) continue; =20 - /* Copy & map in the vcpu_info page if the guest uses one */ - vcpu_info_mfn =3D d_vcpu->vcpu_info_mfn; - if ( !mfn_eq(vcpu_info_mfn, INVALID_MFN) ) - { - mfn_t new_vcpu_info_mfn =3D cd_vcpu->vcpu_info_mfn; - - /* Allocate & map the page for it if it hasn't been already */ - if ( mfn_eq(new_vcpu_info_mfn, INVALID_MFN) ) - { - gfn_t gfn =3D mfn_to_gfn(d, vcpu_info_mfn); - unsigned long gfn_l =3D gfn_x(gfn); - struct page_info *page; - - if ( !(page =3D alloc_domheap_page(cd, 0)) ) - return -ENOMEM; - - new_vcpu_info_mfn =3D page_to_mfn(page); - set_gpfn_from_mfn(mfn_x(new_vcpu_info_mfn), gfn_l); - - ret =3D p2m->set_entry(p2m, gfn, new_vcpu_info_mfn, - PAGE_ORDER_4K, p2m_ram_rw, - p2m->default_access, -1); - if ( ret ) - return ret; - - ret =3D map_vcpu_info(cd_vcpu, gfn_l, - PAGE_OFFSET(d_vcpu->vcpu_info)); - if ( ret ) - return ret; - } - - copy_domain_page(new_vcpu_info_mfn, vcpu_info_mfn); - } - - /* Same for the (physically registered) runstate and time info are= as. */ + /* + * Copy and map the vcpu_info page and the (physically registered) + * runstate and time info areas. + */ + ret =3D copy_guest_area(&cd_vcpu->vcpu_info_area, + &d_vcpu->vcpu_info_area, cd_vcpu, d); + if ( ret ) + return ret; ret =3D copy_guest_area(&cd_vcpu->runstate_guest_area, &d_vcpu->runstate_guest_area, cd_vcpu, d); if ( ret ) --- a/xen/arch/x86/pv/shim.c +++ b/xen/arch/x86/pv/shim.c @@ -395,7 +395,7 @@ int pv_shim_shutdown(uint8_t reason) for_each_vcpu ( d, v ) { /* Unmap guest vcpu_info page and runstate/time areas. */ - unmap_vcpu_info(v); + unmap_guest_area(v, &v->vcpu_info_area); unmap_guest_area(v, &v->runstate_guest_area); unmap_guest_area(v, &v->arch.time_guest_area); =20 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1438,7 +1438,7 @@ static void __update_vcpu_system_time(st struct vcpu_time_info *u =3D &vcpu_info(v, time), _u; const struct domain *d =3D v->domain; =20 - if ( v->vcpu_info =3D=3D NULL ) + if ( !v->vcpu_info_area.map ) return; =20 collect_time_info(v, &_u); --- a/xen/arch/x86/x86_64/asm-offsets.c +++ b/xen/arch/x86/x86_64/asm-offsets.c @@ -53,7 +53,7 @@ void __dummy__(void) =20 OFFSET(VCPU_processor, struct vcpu, processor); OFFSET(VCPU_domain, struct vcpu, domain); - OFFSET(VCPU_vcpu_info, struct vcpu, vcpu_info); + OFFSET(VCPU_vcpu_info, struct vcpu, vcpu_info_area.map); OFFSET(VCPU_trap_bounce, struct vcpu, arch.pv.trap_bounce); OFFSET(VCPU_thread_flags, struct vcpu, arch.flags); OFFSET(VCPU_event_addr, struct vcpu, arch.pv.event_callback_eip); --- a/xen/arch/x86/x86_64/traps.c +++ b/xen/arch/x86/x86_64/traps.c @@ -97,7 +97,7 @@ static void _show_registers( if ( context =3D=3D CTXT_hypervisor ) printk(" %pS", _p(regs->rip)); printk("\nRFLAGS: %016lx ", regs->rflags); - if ( (context =3D=3D CTXT_pv_guest) && v && v->vcpu_info ) + if ( (context =3D=3D CTXT_pv_guest) && v && v->vcpu_info_area.map ) printk("EM: %d ", !!vcpu_info(v, evtchn_upcall_mask)); printk("CONTEXT: %s", context_names[context]); if ( v && !is_idle_vcpu(v) ) --- a/xen/common/compat/domain.c +++ b/xen/common/compat/domain.c @@ -49,7 +49,7 @@ int compat_common_vcpu_op(int cmd, struc { case VCPUOP_initialise: { - if ( v->vcpu_info =3D=3D &dummy_vcpu_info ) + if ( v->vcpu_info_area.map =3D=3D &dummy_vcpu_info ) return -EINVAL; =20 #ifdef CONFIG_HVM --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -127,10 +127,10 @@ static void vcpu_info_reset(struct vcpu { struct domain *d =3D v->domain; =20 - v->vcpu_info =3D ((v->vcpu_id < XEN_LEGACY_MAX_VCPUS) - ? (vcpu_info_t *)&shared_info(d, vcpu_info[v->vcpu_id]) - : &dummy_vcpu_info); - v->vcpu_info_mfn =3D INVALID_MFN; + v->vcpu_info_area.map =3D + ((v->vcpu_id < XEN_LEGACY_MAX_VCPUS) + ? (vcpu_info_t *)&shared_info(d, vcpu_info[v->vcpu_id]) + : &dummy_vcpu_info); } =20 static void vmtrace_free_buffer(struct vcpu *v) @@ -951,7 +951,7 @@ int domain_kill(struct domain *d) return -ERESTART; for_each_vcpu ( d, v ) { - unmap_vcpu_info(v); + unmap_guest_area(v, &v->vcpu_info_area); unmap_guest_area(v, &v->runstate_guest_area); } d->is_dying =3D DOMDYING_dead; @@ -1406,7 +1406,7 @@ int domain_soft_reset(struct domain *d, for_each_vcpu ( d, v ) { set_xen_guest_handle(runstate_guest(v), NULL); - unmap_vcpu_info(v); + unmap_guest_area(v, &v->vcpu_info_area); unmap_guest_area(v, &v->runstate_guest_area); } =20 @@ -1454,111 +1454,6 @@ int vcpu_reset(struct vcpu *v) return rc; } =20 -/* - * Map a guest page in and point the vcpu_info pointer at it. This - * makes sure that the vcpu_info is always pointing at a valid piece - * of memory, and it sets a pending event to make sure that a pending - * event doesn't get missed. - */ -int map_vcpu_info(struct vcpu *v, unsigned long gfn, unsigned int offset) -{ - struct domain *d =3D v->domain; - void *mapping; - vcpu_info_t *new_info; - struct page_info *page; - unsigned int align; - - if ( offset > (PAGE_SIZE - sizeof(*new_info)) ) - return -ENXIO; - -#ifdef CONFIG_COMPAT - BUILD_BUG_ON(sizeof(*new_info) !=3D sizeof(new_info->compat)); - if ( has_32bit_shinfo(d) ) - align =3D alignof(new_info->compat); - else -#endif - align =3D alignof(*new_info); - if ( offset & (align - 1) ) - return -ENXIO; - - if ( !mfn_eq(v->vcpu_info_mfn, INVALID_MFN) ) - return -EINVAL; - - /* Run this command on yourself or on other offline VCPUS. */ - if ( (v !=3D current) && !(v->pause_flags & VPF_down) ) - return -EINVAL; - - page =3D get_page_from_gfn(d, gfn, NULL, P2M_UNSHARE); - if ( !page ) - return -EINVAL; - - if ( !get_page_type(page, PGT_writable_page) ) - { - put_page(page); - return -EINVAL; - } - - mapping =3D __map_domain_page_global(page); - if ( mapping =3D=3D NULL ) - { - put_page_and_type(page); - return -ENOMEM; - } - - new_info =3D (vcpu_info_t *)(mapping + offset); - - if ( v->vcpu_info =3D=3D &dummy_vcpu_info ) - { - memset(new_info, 0, sizeof(*new_info)); -#ifdef XEN_HAVE_PV_UPCALL_MASK - __vcpu_info(v, new_info, evtchn_upcall_mask) =3D 1; -#endif - } - else - { - memcpy(new_info, v->vcpu_info, sizeof(*new_info)); - } - - v->vcpu_info =3D new_info; - v->vcpu_info_mfn =3D page_to_mfn(page); - - /* Set new vcpu_info pointer /before/ setting pending flags. */ - smp_wmb(); - - /* - * Mark everything as being pending just to make sure nothing gets - * lost. The domain will get a spurious event, but it can cope. - */ -#ifdef CONFIG_COMPAT - if ( !has_32bit_shinfo(d) ) - write_atomic(&new_info->native.evtchn_pending_sel, ~0); - else -#endif - write_atomic(&vcpu_info(v, evtchn_pending_sel), ~0); - vcpu_mark_events_pending(v); - - return 0; -} - -/* - * Unmap the vcpu info page if the guest decided to place it somewhere - * else. This is used from domain_kill() and domain_soft_reset(). - */ -void unmap_vcpu_info(struct vcpu *v) -{ - mfn_t mfn =3D v->vcpu_info_mfn; - - if ( mfn_eq(mfn, INVALID_MFN) ) - return; - - unmap_domain_page_global((void *) - ((unsigned long)v->vcpu_info & PAGE_MASK)); - - vcpu_info_reset(v); /* NB: Clobbers v->vcpu_info_mfn */ - - put_page_and_type(mfn_to_page(mfn)); -} - int map_guest_area(struct vcpu *v, paddr_t gaddr, unsigned int size, struct guest_area *area, void (*populate)(void *dst, struct vcpu *v)) @@ -1628,6 +1523,30 @@ int map_guest_area(struct vcpu *v, paddr =20 domain_unlock(currd); =20 + /* Set pending flags /after/ new vcpu_info pointer was set. */ + if ( area =3D=3D &v->vcpu_info_area ) + { + /* + * Mark everything as being pending just to make sure nothing gets + * lost. The domain will get a spurious event, but it can cope. + */ +#ifdef CONFIG_COMPAT + if ( !has_32bit_shinfo(currd) ) + { + vcpu_info_t *info =3D area->map; + + /* For VCPUOP_register_vcpu_info handling in common_vcpu_op().= */ + BUILD_BUG_ON(sizeof(*info) !=3D sizeof(info->compat)); + write_atomic(&info->native.evtchn_pending_sel, ~0); + } + else +#endif + write_atomic(&vcpu_info(v, evtchn_pending_sel), ~0); + vcpu_mark_events_pending(v); + + force_update_vcpu_system_time(v); + } + if ( v !=3D current ) vcpu_unpause(v); =20 @@ -1654,7 +1573,10 @@ void unmap_guest_area(struct vcpu *v, st =20 domain_lock(d); map =3D area->map; - area->map =3D NULL; + if ( area =3D=3D &v->vcpu_info_area ) + vcpu_info_reset(v); + else + area->map =3D NULL; pg =3D area->pg; area->pg =3D NULL; domain_unlock(d); @@ -1789,6 +1711,27 @@ bool update_runstate_area(struct vcpu *v return rc; } =20 +/* + * This makes sure that the vcpu_info is always pointing at a valid piece = of + * memory, and it sets a pending event to make sure that a pending event + * doesn't get missed. + */ +static void cf_check +vcpu_info_populate(void *map, struct vcpu *v) +{ + vcpu_info_t *info =3D map; + + if ( v->vcpu_info_area.map =3D=3D &dummy_vcpu_info ) + { + memset(info, 0, sizeof(*info)); +#ifdef XEN_HAVE_PV_UPCALL_MASK + __vcpu_info(v, info, evtchn_upcall_mask) =3D 1; +#endif + } + else + memcpy(info, v->vcpu_info_area.map, sizeof(*info)); +} + static void cf_check runstate_area_populate(void *map, struct vcpu *v) { @@ -1818,7 +1761,7 @@ long common_vcpu_op(int cmd, struct vcpu switch ( cmd ) { case VCPUOP_initialise: - if ( v->vcpu_info =3D=3D &dummy_vcpu_info ) + if ( v->vcpu_info_area.map =3D=3D &dummy_vcpu_info ) return -EINVAL; =20 rc =3D arch_initialise_vcpu(v, arg); @@ -1942,16 +1885,30 @@ long common_vcpu_op(int cmd, struct vcpu case VCPUOP_register_vcpu_info: { struct vcpu_register_vcpu_info info; + paddr_t gaddr; =20 rc =3D -EFAULT; if ( copy_from_guest(&info, arg, 1) ) break; =20 - domain_lock(d); - rc =3D map_vcpu_info(v, info.mfn, info.offset); - domain_unlock(d); + rc =3D -EINVAL; + gaddr =3D gfn_to_gaddr(_gfn(info.mfn)) + info.offset; + if ( !gaddr || + gfn_x(gaddr_to_gfn(gaddr)) !=3D info.mfn || + /* + * Technically re-registration is okay, but it wasn't allowed + * originally. By trying to win a race, a guest might be able + * to bypass this restriction. + */ + v->vcpu_info_area.pg ) + break; =20 - force_update_vcpu_system_time(v); + /* See the BUILD_BUG_ON() in vcpu_info_populate(). */ + rc =3D map_guest_area(v, gaddr, sizeof(vcpu_info_t), + &v->vcpu_info_area, vcpu_info_populate); + if ( rc =3D=3D -ERESTART ) + rc =3D hypercall_create_continuation(__HYPERVISOR_vcpu_op, "ii= h", + cmd, vcpuid, arg); =20 break; } --- a/xen/include/xen/domain.h +++ b/xen/include/xen/domain.h @@ -79,9 +79,6 @@ void cf_check free_pirq_struct(void *); int arch_vcpu_create(struct vcpu *v); void arch_vcpu_destroy(struct vcpu *v); =20 -int map_vcpu_info(struct vcpu *v, unsigned long gfn, unsigned int offset); -void unmap_vcpu_info(struct vcpu *v); - int map_guest_area(struct vcpu *v, paddr_t gaddr, unsigned int size, struct guest_area *area, void (*populate)(void *dst, struct vcpu *v)); --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -175,7 +175,7 @@ struct vcpu =20 int processor; =20 - vcpu_info_t *vcpu_info; + struct guest_area vcpu_info_area; =20 struct domain *domain; =20 @@ -288,9 +288,6 @@ struct vcpu =20 struct waitqueue_vcpu *waitqueue_vcpu; =20 - /* Guest-specified relocation of vcpu_info. */ - mfn_t vcpu_info_mfn; - struct evtchn_fifo_vcpu *evtchn_fifo; =20 /* vPCI per-vCPU area, used to store data for long running operations.= */ --- a/xen/include/xen/shared.h +++ b/xen/include/xen/shared.h @@ -44,6 +44,7 @@ typedef struct vcpu_info vcpu_info_t; extern vcpu_info_t dummy_vcpu_info; =20 #define shared_info(d, field) __shared_info(d, (d)->shared_info, fiel= d) -#define vcpu_info(v, field) __vcpu_info(v, (v)->vcpu_info, field) +#define vcpu_info(v, field) \ + __vcpu_info(v, (vcpu_info_t *)(v)->vcpu_info_area.map, field) =20 #endif /* __XEN_SHARED_H__ */