From patchwork Thu Apr 27 12:30:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 13225445 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1124AC77B73 for ; Thu, 27 Apr 2023 12:31:10 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.526988.819092 (Exim 4.92) (envelope-from ) id 1ps0lv-0005IT-DY; Thu, 27 Apr 2023 12:30:51 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 526988.819092; Thu, 27 Apr 2023 12:30:51 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ps0lv-0005IM-An; Thu, 27 Apr 2023 12:30:51 +0000 Received: by outflank-mailman (input) for mailman id 526988; Thu, 27 Apr 2023 12:30:50 +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 1ps0lu-0005IG-7i for xen-devel@lists.xenproject.org; Thu, 27 Apr 2023 12:30:50 +0000 Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on20606.outbound.protection.outlook.com [2a01:111:f400:fe12::606]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 570e67e0-e4f7-11ed-b224-6b7b168915f2; Thu, 27 Apr 2023 14:30:49 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM9PR04MB7698.eurprd04.prod.outlook.com (2603:10a6:20b:282::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21; Thu, 27 Apr 2023 12:30:47 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::52b2:f58:e19:56ae]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::52b2:f58:e19:56ae%2]) with mapi id 15.20.6319.033; Thu, 27 Apr 2023 12:30:47 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 570e67e0-e4f7-11ed-b224-6b7b168915f2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U2GUxjBLQNoYdJvKh8yU8WqSHbgtEprjKthpU4kWYbc0Vdex31787FKr+HEN+FS0UL8PmbsDCYz1w4kbLybJj00dWLojVaICh/1DAhjigkUWyD0HZecwgg3CvLGEX3UvFgfCsAhHwU70bU6T+m7EDrPcZUPG/1WWMp1u+fFv1619+CXsKmJT+zuiynFvbgK5Ng72BlJYfsFyqt1Xykzh8S6A/JyMcn+Nr08GGDcMufTc7wFngayLwMz9eRqfMojza8rEbIEvNzTd/16OpCytHJA4w7EsCksBymgsgJSbu1+U485O0aBiSSkkv1N4gtPrUIBcg5QX3PUw+GabL1UyGw== 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=TSCDGoMS8DxV99cjm4knNAU2old1EG2GkTc6sQ76v8M=; b=iBUAILYoepAVxZouI/7DytgeFwi/D8nW6HQOYXhspsCvdEACaXSbkqkn0H5gLYr0EracMoir99gB1cxD+jXioTp5FNCAR70vFO80Ql+OQ/9JqYxnjk9uEjeuYkLS6QA/At5KxWJkYBWl7afWtL3knPz+n8JUmd+wxZO6YwwKkv0KnXqJWRoQ899YZZqCt4gO1Iu8wxVdBcRKUsXYY/g/6CAhzWxFP3Cbq4kad9GnEASNNxeMM+jtkOOYyDvjQ1hgYB9uttm4W8QoDG6PBMOQkAukF2jsqHolPlPt+KUgFVwRpG9SpbFMlLm6Ml9RzuE4q1Z2/qsYf2QfFYpRbm8tQA== 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=TSCDGoMS8DxV99cjm4knNAU2old1EG2GkTc6sQ76v8M=; b=e4sO/7+87GVi1yaL0Rz3OGqUOVx8oAo05be+x8OhM3RgN7hZkwL/SDX88tqbUoQlUmbwWmWq1OsqCmLLiZ+w3mmTs2WInDSg6E8LsBmPdYEhm8lCb+U9EAtRS071fE/JeEeqGlPjXgyRk2NGgWCDjRKnHREemh5GWgQbpD0eiFbPRQ7dQRvweHTI+1/bJXiJrqQKfnuATqaPF/dzHEo3mGRQEdzl9nZkutU3pRdpDd4Qc1XrLvNWdkZGQWUmxNWv1EHv7Yy5jI43oOJPPUGw1KqNDo1jQ3EmYcxZ0cLQtiGDm64fgrUufWJsVJq3/cUlSxdSVOpnFtUR8TOgqtUSbQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Thu, 27 Apr 2023 14:30:45 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 From: Jan Beulich Subject: [PATCH] x86/mm: drop log-dirty-enable's log_global parameter To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= , George Dunlap , Tim Deegan Content-Language: en-US X-ClientProxiedBy: FRYP281CA0017.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10::27) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM9PR04MB7698:EE_ X-MS-Office365-Filtering-Correlation-Id: 1251d0c2-2ff2-424e-79fd-08db471b3a59 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jneGr4KRieLA59UhpXlfTLdK2OkIMlN7BtV6b9qsgT94p4DLZyg1TACB/335hW6d0OOwRJ15Q7NRZEg//IWaACY4HIqqEYE3if4va+MfivbfcVbWUguhUFubes0U5cgAB0fBtCutzyHv4T0vU/Uiu7zsuL1xQMbBdNR/4s1MZBtQkN1asGMDlyvUBqglioF5soc5Dpf3OTMPRYCbiAKMyZHz8kZUSX+MpmqZ4e7KJhosMuYUBRaHqYWx4QSeH/r6yWmi8+IysAp67xib/mwl2qk7Vqkf1jeZQYSSu3ceqbMEFARKR8nQZNOLkFzQ1PB3/PqFO68uB/nfyWbFp+UNI6491XOcJfRZHBNArkjfhVWhjSzUpsFqd9p6x0/P++SG2KM0a5nRW48atG5T5mqRTRZYiZfoMinSPyNB2rt6w1VtHWiBnixe0MDfpUA0c3FMuMwvTpx6G2vj+2wh4+0iPMZ4glqjIE9dt1SPnrZLZlGDcvNkkfe1UpCYPUYGWDBeR9AyT8ZCBU2u1M+xNkV0PEbkDd7ffxave7Qh4KQ1Qr1hjPWjZOpXjrctu8c0hHQsHVySEH3eL7EDmQNgHLE3bq5XlzyePgcG08Td0h3NBGrPbZYqmEqL6NI+xXsOCvk2jgClWxcvmylr5kujNmjZmP/9fxlymVbSZk+f5BIdqcw= 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:(13230028)(39860400002)(396003)(366004)(346002)(376002)(136003)(451199021)(6512007)(66946007)(66556008)(478600001)(6916009)(6486002)(4326008)(54906003)(8936002)(66476007)(41300700001)(186003)(38100700002)(8676002)(316002)(2616005)(26005)(6506007)(86362001)(31696002)(36756003)(2906002)(5660300002)(31686004)(14143004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?Hp1DkABFrksLkwZOFyc5AMmb//nW?= =?utf-8?q?1cIwFdUe043OTmq22YpdSWVqxZVy/g5T14dqkberaRWhAku1iWitr7Hqq4ToouhYB?= =?utf-8?q?X5LKR5gmFLAryHseVFgUN5YiJ1k0wO0iXJGmRp6a1ga0dXDjfTRHuWvGRVq0HWe7/?= =?utf-8?q?9+KVJclYpDZWoe+DY5EAaSebgy11HZ40QREHnZFPP/p7daS4ForXjE+KLbNmXGuST?= =?utf-8?q?sX8XlVXGEqmDgtp9B6Xe5JzUoZKRWWW1/jp44Sjq06ClbvM34+jPfL7ABSC/69v8Y?= =?utf-8?q?XlUuz6p0zytnNs/qOQXdKvxIjzkbP1IAKr0RIKape+Diz51vRHavyFDREyd8J8Q2v?= =?utf-8?q?7StUPBL2Sfm3Uoi2PZ7Z6KFZwpzZBS1zhmUXXQSJxFEECUCXVbYTsEgbDj+1aU209?= =?utf-8?q?nESYJWQDAj6tQ/sZRVkhrrvCcZzuD946kHc6WE65F46ewi5woVi79/gqQaTcODl3Q?= =?utf-8?q?3j0PaMapywpB/8aR3E0URoWETlakhpbb4YAlxAmDNVgt4tzfyCi0RL3uDuV2nxvBp?= =?utf-8?q?PecFkDnSRBnzQ6+1U/A8XYx1oFqcXw1PLN2+osPGZ8qCXkKgt52TocxWPUurdiBsQ?= =?utf-8?q?dx7Iuuc2u3/ARTye9/7c3iUZGNvS3csZxGOzlRLQDyV/ZLKrbWAP2xUhgtooKtr6j?= =?utf-8?q?cAMIZIRglbSXDXw/m9T0gjbuiQ9wnaNC98dTRmgj1YF/UR3ORNfQgocx2hckVlxb7?= =?utf-8?q?IV3yDDNWm/G7ZvTf86NsShjCRilAj0Wisnwmcr36GiCSMkZKvCIyqcCYMTJNP1ec1?= =?utf-8?q?fNB7l+pRBGp0Vg/ACKvX5Twh/mYANtFuBLWOHDVyeaeubES1xhbETmpRMYvsA/4W1?= =?utf-8?q?9mCp3USmksrxsXzqu2/DxeVkjwNa4FiR+P2vSSe/GrEUatyA0NtGSUaB+4YepLx0E?= =?utf-8?q?r1IkzbW1O0V3gkttL5uANHXpWcol4kq7QWMgVHNvXKQR/14Ghqu6zFspxneiyBC3o?= =?utf-8?q?YLuRPG4EoeqAkzDb1Vl3VXMJpA4Szgtil2pldTE51khw7OOh3rFxQDo7UParK2ZJY?= =?utf-8?q?580wPQbyph32nwcgfE+GBloH2iHwLqa4Zj5+7Oz39rIrJPTEgix5PjAheqo3YoZz2?= =?utf-8?q?JFoTbGzAWK+B4Usxg6O9YjtdNknutLUlwKLrI0XHkjIXDX1cjEIs/7o+wachDOckI?= =?utf-8?q?YOHu7pySw/fcanR9gUTkd+W+6v466h+4mwNg6CaPJGFc45mPwXHAfq0Wv6S/TVbdP?= =?utf-8?q?MYEffJLJS863Iv7k50AlqvZFmc9zb4jHfplGfDAhxSpra+2Av8KMinhf1Isi/Lv3y?= =?utf-8?q?+74Og5EB2JsXNkX0UOmAc0GjtM5uFaR2QDpWkmemCaMuVirWBenkcj/rTElP154Bi?= =?utf-8?q?8nKy92m5pOJ/hNcEPzrQIHzBJWdKx012GIpO+GS48IH5twX3PvjDY1opKiFGVGiC+?= =?utf-8?q?+I8V9gWe62iSnJS0bjaonVsvUNeEKjRaz0u1v2V0a3XFgf/8UWQsyq0fRZjFotc0v?= =?utf-8?q?8zyTpD7rQJNw8CgZLS93fuqGl/2g8WcwFcGnTeZSvAqaNjvp+vbEETtel68mYqULj?= =?utf-8?q?MHJtbZhrZxmk?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1251d0c2-2ff2-424e-79fd-08db471b3a59 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2023 12:30:47.3111 (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: XF2vTIVbsKZSiPnLqferFOnouzILiYmERqEd9S/JqagFRQ8EhBKCCo8FO9ru7nlUXf41DUPZIP4EVCGkKuIXSA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB7698 As of XSA-397 the only caller passes true for it. Simplify things by getting rid of the parameter for both the internal paging function and the involved hook. Signed-off-by: Jan Beulich Acked-by: Andrew Cooper --- a/xen/arch/x86/include/asm/domain.h +++ b/xen/arch/x86/include/asm/domain.h @@ -186,7 +186,7 @@ struct log_dirty_domain { /* functions which are paging mode specific */ const struct log_dirty_ops { - int (*enable )(struct domain *d, bool log_global); + int (*enable )(struct domain *d); int (*disable )(struct domain *d); void (*clean )(struct domain *d); } *ops; --- a/xen/arch/x86/mm/hap/hap.c +++ b/xen/arch/x86/mm/hap/hap.c @@ -164,10 +164,10 @@ out: /* * hap code to call when log_dirty is enable. return 0 if no problem found. * - * NB: Domain that having device assigned should not set log_global. Because + * NB: Domains having a device assigned should not come here, because * there is no way to track the memory updating from device. */ -static int cf_check hap_enable_log_dirty(struct domain *d, bool log_global) +static int cf_check hap_enable_log_dirty(struct domain *d) { struct p2m_domain *p2m = p2m_get_hostp2m(d); @@ -175,7 +175,7 @@ static int cf_check hap_enable_log_dirty * Refuse to turn on global log-dirty mode if * there are outstanding p2m_ioreq_server pages. */ - if ( log_global && read_atomic(&p2m->ioreq.entry_count) ) + if ( read_atomic(&p2m->ioreq.entry_count) ) return -EBUSY; /* turn on PG_log_dirty bit in paging mode */ @@ -186,15 +186,13 @@ static int cf_check hap_enable_log_dirty /* Enable hardware-assisted log-dirty if it is supported. */ p2m_enable_hardware_log_dirty(d); - if ( log_global ) - { - /* - * Switch to log dirty mode, either by setting l1e entries of P2M table - * to be read-only, or via hardware-assisted log-dirty. - */ - p2m_change_entry_type_global(d, p2m_ram_rw, p2m_ram_logdirty); - guest_flush_tlb_mask(d, d->dirty_cpumask); - } + /* + * Switch to log dirty mode, either by setting l1e entries of P2M table + * to be read-only, or via hardware-assisted log-dirty. + */ + p2m_change_entry_type_global(d, p2m_ram_rw, p2m_ram_logdirty); + guest_flush_tlb_mask(d, d->dirty_cpumask); + return 0; } --- a/xen/arch/x86/mm/paging.c +++ b/xen/arch/x86/mm/paging.c @@ -201,11 +201,11 @@ static int paging_free_log_dirty_bitmap( return rc; } -static int paging_log_dirty_enable(struct domain *d, bool log_global) +static int paging_log_dirty_enable(struct domain *d) { int ret; - if ( has_arch_pdevs(d) && log_global ) + if ( has_arch_pdevs(d) ) { /* * Refuse to turn on global log-dirty mode @@ -218,7 +218,7 @@ static int paging_log_dirty_enable(struc return -EINVAL; domain_pause(d); - ret = d->arch.paging.log_dirty.ops->enable(d, log_global); + ret = d->arch.paging.log_dirty.ops->enable(d); domain_unpause(d); return ret; @@ -728,7 +728,7 @@ int paging_domctl(struct domain *d, stru break; /* Else fall through... */ case XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY: - return paging_log_dirty_enable(d, true); + return paging_log_dirty_enable(d); case XEN_DOMCTL_SHADOW_OP_OFF: if ( (rc = paging_log_dirty_disable(d, resuming)) != 0 ) --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -67,7 +67,7 @@ const uint8_t sh_type_to_size[] = { DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags); -static int cf_check sh_enable_log_dirty(struct domain *, bool log_global); +static int cf_check sh_enable_log_dirty(struct domain *); static int cf_check sh_disable_log_dirty(struct domain *); static void cf_check sh_clean_dirty_bitmap(struct domain *); @@ -3030,7 +3030,7 @@ static int shadow_test_disable(struct do /* Shadow specific code which is called in paging_log_dirty_enable(). * Return 0 if no problem found. */ -static int cf_check sh_enable_log_dirty(struct domain *d, bool log_global) +static int cf_check sh_enable_log_dirty(struct domain *d) { int ret; --- a/xen/arch/x86/mm/shadow/none.c +++ b/xen/arch/x86/mm/shadow/none.c @@ -1,13 +1,7 @@ #include #include -static int cf_check _enable_log_dirty(struct domain *d, bool log_global) -{ - ASSERT(is_pv_domain(d)); - return -EOPNOTSUPP; -} - -static int cf_check _disable_log_dirty(struct domain *d) +static int cf_check _toggle_log_dirty(struct domain *d) { ASSERT(is_pv_domain(d)); return -EOPNOTSUPP; @@ -27,8 +21,8 @@ int shadow_domain_init(struct domain *d) { /* For HVM set up pointers for safety, then fail. */ static const struct log_dirty_ops sh_none_ops = { - .enable = _enable_log_dirty, - .disable = _disable_log_dirty, + .enable = _toggle_log_dirty, + .disable = _toggle_log_dirty, .clean = _clean_dirty_bitmap, };