From patchwork Wed Feb 8 14:38:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 13133102 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 B0277C05027 for ; Wed, 8 Feb 2023 14:45:27 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.491868.761202 (Exim 4.92) (envelope-from ) id 1pPlhC-00011Q-CL; Wed, 08 Feb 2023 14:45:14 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 491868.761202; Wed, 08 Feb 2023 14:45:14 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1pPlhC-00011J-9P; Wed, 08 Feb 2023 14:45:14 +0000 Received: by outflank-mailman (input) for mailman id 491868; Wed, 08 Feb 2023 14:45:12 +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 1pPlac-0005uV-Hw for xen-devel@lists.xenproject.org; Wed, 08 Feb 2023 14:38:26 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0631.outbound.protection.outlook.com [2a01:111:f400:fe1f::631]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 3e991945-a7be-11ed-933c-83870f6b2ba8; Wed, 08 Feb 2023 15:38:25 +0100 (CET) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by VE1PR04MB7456.eurprd04.prod.outlook.com (2603:10a6:800:1ac::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.17; Wed, 8 Feb 2023 14:38:22 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178%7]) with mapi id 15.20.6064.036; Wed, 8 Feb 2023 14:38:22 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 3e991945-a7be-11ed-933c-83870f6b2ba8 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A2DhN7QHe7zq7Zsg7u1Bi+z6xTHyas2R9c86qcKo2D5oJFooHYLIvwzMjOO4EtT7h5uD9fvabhnm1fMOw4ZyTRG5FxzU5JbZWrwTwZ0kibQUy8gcSq62CUS9wI07ppulPjy2aqgRimUd6k1l0uu+SNTsCavRwXAVlzNN6tVJtwsjD6J3wMOeeh6uE9qpi6vqMua6d0Jq8ol+XXycZ79e/ntj1nM4amnNS14KStL8fPAfAIGgT9Rlb2euAmMtn7svDO88SQW07cC4yWRSoii+ED25UbPcTzJTRX/h0PHuzmOWdXiI5H2vROzTZXbJH0phqZCXFKM97djYFLYBTFTFew== 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=XKJmP6oShTkiMe9LQzsbVOzIHfIJVktiMOexocp7MYs=; b=fy2S+gTW/THUSoE7KvVg/sG/JYzC2AGNiW676RhDe4x39cFzCJXXhzGefBK7A+12rWY1OzhLSr+Lw7t5mCR0PkF4TihiePUSiEKC3DfAyNgz4hi15GRDz7VPg1/vEEoaZo2xG01BPu45me3o6ymoGynWaxN3hVhA3krDkvhwIY9jpYrjeaWO/hx7l9udNE72zT9D2Qe8fjf454nyBUWUmJ84YyxTlSmOLngCddVeZ8L7nRG86wax6IDUDoOcNYQrYyj4lva8mmUelZS3suzvgM4Haj23n6n8CLrGjsFEOcep7kzzdOLR7izohloP0IMecCL0yqgOrJM6wGq4KH6Y2w== 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=XKJmP6oShTkiMe9LQzsbVOzIHfIJVktiMOexocp7MYs=; b=EWolOIufNmtQWstOjAkal5lY6bl5mOzqequ5Bmm29NL+UXHInuhMuHh4fMj8HJz+FhLptwNNTj5NLQOTS6suNDEsqrDx3TvEAgXwX4i9qPoZ+A1IyE5wwE9IMugII7Ed3w+JY0Ao/5ltA9fOyWFP0CnoVogfdSob9SxJdvlvPyV19aHz6YihtHj65FeZr+EwRsr758UoIieEjf1gMYYWIEaIfbplERWPNmQikYcutEwt53zGqWRiPniztLMHfHSup8yHCkqbqi5/GO0defzIgO1hkI8uI+jnsVhFBXmDw81KFRXNhdO9iJ5mo1XTOw2xfyaBJeHPlZ4beq9MitOrvw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <7d2dd28a-a821-e906-6245-ab26e5518706@suse.com> Date: Wed, 8 Feb 2023 15:38:19 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: [PATCH v3 4/4] x86/shadow: re-work 4-level SHADOW_FOREACH_L2E() Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= , Tim Deegan , George Dunlap References: In-Reply-To: X-ClientProxiedBy: FR3P281CA0032.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::13) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|VE1PR04MB7456:EE_ X-MS-Office365-Filtering-Correlation-Id: 071df123-240e-4793-6b2a-08db09e220df X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fwBNcL90U63MLLRc4y8L2x+95daJtqeuWtw/o4hnROkjouBOStc9Y96ehp6cofPc0BvKrhtBpJa9h9Htl6F4fMQvIt0xdjlQLdSOq3Dc4ODfsIu2yjyZQrfNuF66y76HtdWqaHNThuqbf6aZz5Bo8sljj4jQCV9oKwXWtH0OkuIsqKTZMY6LNztKdgrHwPbo/ezK/tJMPBwn4W8dmil4iUEWTISGfAFbErxB+AHA38rEeEWgNxFd8QCo3w/lI9llFAUV3yCDkuy9jSquXymmNGj6sOvsWH0ge/PzIIPJXQ5O3ekq/E0EhRhvD/9jUqqwfxiNXbwU4xTqUskHyXnbDkNXWAViXWB/PLVlwF1DfGMzYfXyOK1c7GS4eJh5AwneEO8dMujdEbnQZnGzKFv0Xmne85ZoTswBiBxbniF/IBXBOw5CoEJCj45gGouDx84SVCGC5ThgHN3jzOLsO4aEXWFzvZBT9s4NEWAb85lUqZxAM4l5YjX6BUx+mig1gt/zDebBUoVm0ABR/pGDcbEQgWXB/teEEwdkuXmFiXy8hIqHzJdyxwTNwL/Db2OjnM5z0vdY0qJpdDFoCFsXB739vH0Xo1rhTAv5oHxHIOc2hOshINKhmkAPRSaExnrz+MlTrAmDzx/y8We+gvEN37UUFjrJMr2iZ24y1z0+u/jm0RkGiwaWZOjtTjwczb910cLG3uykrAxAdgsPZE7FNuEk9zSDsmVZreNfvffFWocISFc= 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:(13230025)(39850400004)(346002)(136003)(376002)(396003)(366004)(451199018)(6506007)(86362001)(5660300002)(26005)(6512007)(31686004)(186003)(66556008)(8936002)(6666004)(2906002)(66946007)(6916009)(66476007)(4326008)(8676002)(38100700002)(41300700001)(316002)(2616005)(31696002)(478600001)(6486002)(54906003)(36756003)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?XU7vGO1HLwwGKQCb3Et4TI8cdGQY?= =?utf-8?q?I4RNET8ctobYd1h7UdJLwP3e7lQqu4wPNF4ZAVqYTRpsQQc+IcPv8lmeYFvuiB6k8?= =?utf-8?q?vqQBkCajIFhMH3UsesBJODPcV2H/7BpffUREiiXWfXB3zrcm5cgxV+qUfiJ/vaGaB?= =?utf-8?q?2OykVd/Qm6h2n9SezetFRIjfBvJ4WXkJFEhjrjmVqPnR3r0D8nks3xRCn4Ml7RfYI?= =?utf-8?q?RvEm+2YH+p37g5hsRzLyRZs7on7Ha7FphAUwBs54CtM3ASYlI9ax8xXiaMMwzVZ0a?= =?utf-8?q?75RQOwtncJGjwvmIKAfZqoACV1VCUzVjYsku4E3t9KNNxs4HpEEcoGCY+ss1S3Qy8?= =?utf-8?q?6NxBtsZSDV1Oykl8SNDQdV5EInUUt3p6MoIqNUXgOFh4NdkBnl3v7rQNwNmE4qrG5?= =?utf-8?q?EPFCmU0V9w+40cug2VQhT1ry9MrStIm/BUGeXoGTN+JzQdL9yf0Z5UDPOlKqk3sUs?= =?utf-8?q?VIcebKvRhd6DzPlKehLHTjlW0XzAExHNmJ3Nk8sfhd0UmQvDro2XY5qEMSRfMDGfO?= =?utf-8?q?1DXKZ+qnyM7JBii8oXOPan/YcFttKmoZoyTDBteo9LnsXeY+26u0CV2IXWwRkgmhP?= =?utf-8?q?Vaq2pbS3jVCINB25F12z3X99/lnye0DKtf0NOTIUjTyiCsiz6/F2FTuIO0GWzuwig?= =?utf-8?q?Op+VcQ2ko0ZPdg/txqL6kar82YqW7pJ1y10mZmb0SNzPjKRClQAipFfr63FZ3SnIg?= =?utf-8?q?11rjUT/PFcwHIClzQBQE2cCaKSTHOIJpoL0mfW3MbHCRvSbSIKuWjTkPUSdzHdNab?= =?utf-8?q?Aa04VuSF/XVaCN50XQ+d74LnP66Vlrw5CAeKjmMw8LgpHdY1+Y4MRh7z/pazMDX0U?= =?utf-8?q?LZ/RityTS7MNJ6BV9SrsIQLxcuK53PXGFAct+SqZPakvjUL8vIbkuPDOPFw6hM44h?= =?utf-8?q?PlE374VUrX7xSFz20gKWR147zAcSEqrUroEduPxW4vDJnTzvbffYfDLfCeHIApNWl?= =?utf-8?q?NKK8vih/8dfEPnqkV60fO+8vAQ2vofRL+705rCfJbLacfKoRxwsKrko+zCPFE/J6y?= =?utf-8?q?lNp5eLDZiH/rY5pIV1vrec20tb19q6iwWN3ZvTxvifXGhiWvL9z6thnNR++HjySNA?= =?utf-8?q?e6oZa+cuZ82l3VXEOljONGqcintX9siVruamRXZ5+Oh07mwuIXZoTMrFZv/PEZK7c?= =?utf-8?q?X3K7wnfZOkLUEH8C04vyChQUflXGKcVX1EHbrFkCeam+Eu53NSj2H0QygYXskf2/y?= =?utf-8?q?0KUgy/mvf4Byr7H7DgyecoIqVi2Dd1L4YIhd8a94XqKgdCbSgzjEVee9WkuIOpCCX?= =?utf-8?q?j/D1Y8SCGVUCcO2TzhtB3TKWMHWcGdk/HRvvoCUed2JvELVTGPNkBT2KYmlCkyAaT?= =?utf-8?q?nHEu4H2AkY+Nz+RE68O4zU0Avrtf8A/MnRIniwTf26Sb09Oi1UgPo6zhVdHWOi9Cy?= =?utf-8?q?KZOES/uRbujXk3GYowzFhHoaeGjv3sNwr8bafqSFoXvO8+zkUHeESAQ2zOWHwcS/5?= =?utf-8?q?bLmfboyEajcbSy+FLDBuQdXh+QY920uPYTHnX+dHHx4bVKJ/12yBTukDCTyClzRyt?= =?utf-8?q?2rv8cCYKw62m?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 071df123-240e-4793-6b2a-08db09e220df X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Feb 2023 14:38:22.3078 (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: 5Zc58En/NsA12WA3fRrPtf+x/g2lfS7FHp8d0dCg/zUpemhuq8kzu8LKINKEu8Q33rUuTXFVGrPQwv2zrOHKNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB7456 First of all move the almost loop-invariant condition out of the loop; transform it into an altered loop boundary, noting that the updating of _gl2p is relevant only at one use site, and then also only inside the _code blob it provides. Then drop the shadow_mode_external() part of the condition as being redundant with the is_pv_32bit_domain() check. Further, since the new local variable wants to be "unsigned int", convert the loop induction variable accordingly. Finally also adjust formatting as most code needs touching anyway. Signed-off-by: Jan Beulich Acked-by: Andrew Cooper --- v3: Drop shadow_mode_external(). Switch back from using trailing underscores. Convert style to be fully conformant. v2: New. --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -861,23 +861,22 @@ do { /* 64-bit l2: touch all entries except for PAE compat guests. */ #define SHADOW_FOREACH_L2E(_sl2mfn, _sl2e, _gl2p, _done, _dom, _code) \ do { \ - int _i; \ - int _xen = !shadow_mode_external(_dom); \ + unsigned int _i, _end = SHADOW_L2_PAGETABLE_ENTRIES; \ shadow_l2e_t *_sp = map_domain_page((_sl2mfn)); \ ASSERT_VALID_L2(mfn_to_page(_sl2mfn)->u.sh.type); \ - for ( _i = 0; _i < SHADOW_L2_PAGETABLE_ENTRIES; _i++ ) \ + if ( is_pv_32bit_domain(_dom) /* implies !shadow_mode_external(_dom) */ && \ + mfn_to_page(_sl2mfn)->u.sh.type != SH_type_l2_64_shadow ) \ + _end = COMPAT_L2_PAGETABLE_FIRST_XEN_SLOT(_dom); \ + for ( _i = 0; _i < _end; ++_i ) \ { \ - if ( (!(_xen)) \ - || !is_pv_32bit_domain(_dom) \ - || mfn_to_page(_sl2mfn)->u.sh.type == SH_type_l2_64_shadow \ - || (_i < COMPAT_L2_PAGETABLE_FIRST_XEN_SLOT(_dom)) ) \ + (_sl2e) = _sp + _i; \ + if ( shadow_l2e_get_flags(*(_sl2e)) & _PAGE_PRESENT ) \ { \ - (_sl2e) = _sp + _i; \ - if ( shadow_l2e_get_flags(*(_sl2e)) & _PAGE_PRESENT ) \ - {_code} \ - if ( _done ) break; \ - increment_ptr_to_guest_entry(_gl2p); \ + _code; \ } \ + if ( _done ) \ + break; \ + increment_ptr_to_guest_entry(_gl2p); \ } \ unmap_domain_page(_sp); \ } while (0)