From patchwork Tue May 30 15:30:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 13260490 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 68BF1C7EE23 for ; Tue, 30 May 2023 15:30:23 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.541236.843770 (Exim 4.92) (envelope-from ) id 1q41IW-0003DK-PJ; Tue, 30 May 2023 15:30:08 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 541236.843770; Tue, 30 May 2023 15:30:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1q41IW-0003DD-Lt; Tue, 30 May 2023 15:30:08 +0000 Received: by outflank-mailman (input) for mailman id 541236; Tue, 30 May 2023 15:30:08 +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 1q41IW-00038g-07 for xen-devel@lists.xenproject.org; Tue, 30 May 2023 15:30:08 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on060a.outbound.protection.outlook.com [2a01:111:f400:fe0c::60a]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id da4be508-fefe-11ed-8611-37d641c3527e; Tue, 30 May 2023 17:30:06 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by PAXPR04MB8830.eurprd04.prod.outlook.com (2603:10a6:102:20d::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23; Tue, 30 May 2023 15:30:04 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c%5]) with mapi id 15.20.6433.022; Tue, 30 May 2023 15:30:04 +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: da4be508-fefe-11ed-8611-37d641c3527e ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fVMIRt4Ysn2ESQ9jE8OCzequOH+oPAWYSM31g1/uf4ebEp+IkPpv7Npiwbwi3JUi00C5QisJOjmTGyURDbn4eRM9zurX35rwJsaf+c1WvMl0LXlU5H4hPlWfDtkXBigp5fkA2ERy/lG1xf/HplALIVv92Yic1AM9/s/tu8ZI8IjKdpmQHnxdnrmCkm0j7LghHxqE0VIPAokEo455K0D3bbUL/vm9vswxWxo21JGrnamOn6gx5pzdE7gWY6rhz53pWZqal4DLmcLH9KcUTEctTWR2U2EMpnZddFcWsWAzLG08uQe6srPGxwVswGvXFQEpoma556KUKWtvAyWpq9gquw== 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=IAG71PtkJKdo4vtdYFhwpAHf5tOfIIddYmApNP3+/zY=; b=ZvRgD52vO67tz+jGJPgVi/WvOjMWCvhWDX+Qg5SvtxAFf0Msz9Aa3Q1Nk+v2ZlPLAOx7YFMuRrZJwAyjgZxs7OHym0Tb5N+0318Za4XTUauvz6L+4IUvekjJwhhFnl814CHltbB0un1Nq/7g38E1oNPAayqBKTj4ttEjyV2lyiZcE71RxfsZoBlleCHkUA/kJAxtYc4wFGo9m4H/6jyzVdzxebtWSls1xqMD7ICkQnPzixtT0Y5Qd3sHuOYe3ASxRd2LnZ6MwoiSJ3gAVdu81XDEsXRaIFvKaMfI0DiOKsBimbSVdfA+YMwO9vuMrUJxbFBefOOqj+ZEjonWAm88kg== 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=IAG71PtkJKdo4vtdYFhwpAHf5tOfIIddYmApNP3+/zY=; b=KAfos2uGCkE8yU1H/NNG5lwzBXyGTkO6KJ6EOkk+wnwwGBiZYRRl8ruMSYPYAqf2LgN73ICj+qb3kqsFKpIETl4VYAg6ayXhVGOTmIJ20n1obYEZtQ/dKCJQblPyZDi9sdRsm1nvVBhj+qvS0iarPWc9GuSlW/QcR1ZJ3wg6qip8nFJL6x7nMIpGqK3Oybl3qFREDY5bH9Zw5Xpo57l9opLqkvF6YR4Avl/OSJs0UxjDcgaMBqlDSHvuUGChvpNxYypu5LfLbHraTvogBk6Ikw2HLsTTpUbJy+BLrYmGeuETpXNCTaByWYfRkHMidyofM/owHwWE/6A10Wv7UyFyHQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Tue, 30 May 2023 17:30:02 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: [PATCH 1/2] x86/vPIT: re-order functions 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?= References: In-Reply-To: X-ClientProxiedBy: FR3P281CA0160.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a2::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_|PAXPR04MB8830:EE_ X-MS-Office365-Filtering-Correlation-Id: 1036e4d9-9588-4803-ddcf-08db6122bd90 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hKEbQKUepn9bXgc7glL2LuoAybckJ8ZaNz/BFFeNcbo1Sci1wS1Yczxy2qxq0ldNz8UeMMvMuKzDFTsnKiI5iqLjyRNfPu0wKh1QmAPJVOMaKTzKns/fIDFNAbZ+noEOFrPzKKAxzmurM6HxgqajIMTuvmFsKLhmJjlXUZknzflFjAsrRLNIPKB/0GE9mC0clH/wOxenvXIDQEs8k4Ox1RwfFIRimY0wuHHHdZFw9dmbAhym3yyjhBcufVzKyN/ZJ5JrnOfh5L+IwEaBYB5J5YLw0pLk4rd10pkm9ViAwo2nJcaLAZ9YrvIzNAzfnOeLh/kiQBaoa8Wdd4j7bALsbvaczJBjlpk0jRXwxGQSNjtbkWMvrhxU3CGtWNSIsNVnwC+X7R4L7l5NDr3++27TPEgJGndqneb7y+UkatQ5oX5aTlNecKALWXfEu4sfxnbV/elBjpsOIhQsfmteG6BpJZhYfrfUnlQVY7OHfbOmb2K3gRHT4hiISL4MMlvjT/xeH2EKpoBO+1GUVYa7n+icnep0bKOG0tL71WhvtfW5GjVrl6ASseJXQteS171buLfl9ap2wfkbQJ5kJGgT5Q1OtV++u1atKtASrR3ADAtDOzsEDGrCwgk7ERopykdWCXpAdMSGdFfg2j782F4psdHDwxOaPZA463JmzbYIePnlV8eoSyXNYE1Bol7jtSZXx6lS 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)(136003)(396003)(346002)(366004)(376002)(451199021)(478600001)(6486002)(54906003)(6512007)(6506007)(186003)(26005)(2906002)(6916009)(8676002)(316002)(66556008)(66476007)(8936002)(41300700001)(5660300002)(66946007)(4326008)(38100700002)(31696002)(86362001)(36756003)(83380400001)(2616005)(31686004)(169823001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?C+NJo3m74AEw+I+E9GdJq7bmK6d3?= =?utf-8?q?QkAlfzJi/y0x1v7NpIvmTP67ljFBM3ivEmk1VwHECTelo7mWRdznrmKj1D7sii8PE?= =?utf-8?q?XmFFAKvUHrjCVbZtwKFlJuWEWeq8h6HhlM/6Cyl4JUNIJxW/m0B9dXxSkGFvDDETN?= =?utf-8?q?6YVIW18yMfRh2gyGG+/iuoEKNwXZbsfZKhIn2GBMkiEwTxOUbD4AFVS1ItSu6dI0m?= =?utf-8?q?3ZdGqN/XO3iilKXHlTO9KL+3mHxPtVJJzy3MxzOL+wAoYV5Wpw/+o/MkPW2LruiVt?= =?utf-8?q?fsd5c53OP5Nj7oqsWgllqHuYWNAb0zvHgUadwi6gUJLHFG+3ZSP5rIa3IZurdfFuH?= =?utf-8?q?Y97Q9Ibz+URt8pTRR+QJRZZe+mVTL3l5UP5MqkSpyF5rumel3NF9Kma1eJ0SfJF0j?= =?utf-8?q?QE4TrO9m6Tb95R2k9uTBHUvq06vTJP/tb4wKi1oiauHHafYFFN8x3xfouiNZxyet6?= =?utf-8?q?i9xFG7QvnkmP0dZjTpiXZbz5PS1BH9BblrfIrB/qt9tom6iEl/RRlBjjpt4+Fa27d?= =?utf-8?q?DLtrF9/B4A0cC5GGX3ZYY4L6O9PWf6D5T4roc06c+hrxNCoq+8WLNwQEKjatAXPvc?= =?utf-8?q?i/4zuUN4r5IBLnnZSB7LOEB6CoX0LughtHWx/DyHWs92zCueXDFm8JGi4W4i1aAY/?= =?utf-8?q?HIhA7i7DxgCFtgWdpfFg3dD7Jziq3HC3huopSvUejcPqEgSBoC/L1Vbl9fC/i+lfB?= =?utf-8?q?C3VMKxQEEHii1Oo7mCr9oZyM4w4Hrkf9k5/sJTfMjfEE58Arp2FuNP70eFx0hAt+f?= =?utf-8?q?bq9gGV3N8DROx0Oxd7JTuI0QDFJzKjz7a5c1Onv2sMW2AA9kY36/zaWEJlkN/Yeyg?= =?utf-8?q?4Cx7qOD9ZtpX3IkuDxu342+YWgYSb32BwjpC9/URQYPeHoIOWur/SuhyfsIS/IQ4V?= =?utf-8?q?BkgdyLMkhWrYdZ8nICRFJ8dvz4bWP9MFuBho/ZvczT7aIMdDK6QKJfTJz+iE8jJS1?= =?utf-8?q?jYRLICQ7Sfi5rtceEk6CCoT0yZtrXQVvziJu5h19rgXN+QWjGhhdSueKglIuyrl/q?= =?utf-8?q?OEN+awdr4h58ip2pYGQOHbd2+6aKF4L2PsTU1LCQclv8WqPzpeFHVyuu3ydVKy60T?= =?utf-8?q?g4tYgPaQ3tqQTFHO1clNVrJ4zG81NwRi65vH/sFyZy4sC5AogUV5Is4nRLlkXkwwV?= =?utf-8?q?ob5OUeRloPcC/7i6zt1/ddu3hVmXdqqtAY4DQrzGG/chkTgD4XygijDOhHh9W46io?= =?utf-8?q?LfhnufAwpk9HbVicuD3IG1rfRCOd/ztyzf9127XV60p8QgDeg5gXetY7Fw/5GAVxD?= =?utf-8?q?jKx0jLcjD+7Z5Sz6A4dmTuiZCwKS8NsSf46GSld91Vz0C0A1yg74joiGJbfRguwtC?= =?utf-8?q?tR89YP/EtCrQcjR85Ew4K4DroZ9J0tKPtfJHj8RU2tZmJEw2/luWDWcLFd+48HUyu?= =?utf-8?q?il7MoAzgA/G2unawmHDn6hWhiPTUME2kjo00F8COM49JhYzL79hfo9SjiybT22IOX?= =?utf-8?q?20l8FiJInE2g454TPIECIKH3p3Mez/vKgwyUawuBRm4rVIf9N5+gbcLFz7qrSNNfv?= =?utf-8?q?rwc2Tb65I2qu?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1036e4d9-9588-4803-ddcf-08db6122bd90 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2023 15:30:04.1710 (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: D740qdPzNjVufyk4Q7plvA6Pk0Ptp8tltmIr8v+dK+aPxIXnzZ8/61L7ZXG5KUYvRGRMSYQKkKOeWNfhkq2ISA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8830 To avoid the need for a forward declaration of pit_load_count() in a subsequent change, move it earlier in the file (along with its helper callback). Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monné --- a/xen/arch/x86/emul-i8254.c +++ b/xen/arch/x86/emul-i8254.c @@ -87,6 +87,57 @@ static int pit_get_count(PITState *pit, return counter; } +static void cf_check pit_time_fired(struct vcpu *v, void *priv) +{ + uint64_t *count_load_time = priv; + TRACE_0D(TRC_HVM_EMUL_PIT_TIMER_CB); + *count_load_time = get_guest_time(v); +} + +static void pit_load_count(PITState *pit, int channel, int val) +{ + u32 period; + struct hvm_hw_pit_channel *s = &pit->hw.channels[channel]; + struct vcpu *v = vpit_vcpu(pit); + + ASSERT(spin_is_locked(&pit->lock)); + + if ( val == 0 ) + val = 0x10000; + + if ( v == NULL ) + pit->count_load_time[channel] = 0; + else + pit->count_load_time[channel] = get_guest_time(v); + s->count = val; + period = DIV_ROUND(val * SYSTEM_TIME_HZ, PIT_FREQ); + + if ( (v == NULL) || !is_hvm_vcpu(v) || (channel != 0) ) + return; + + switch ( s->mode ) + { + case 2: + case 3: + /* Periodic timer. */ + TRACE_2D(TRC_HVM_EMUL_PIT_START_TIMER, period, period); + create_periodic_time(v, &pit->pt0, period, period, 0, pit_time_fired, + &pit->count_load_time[channel], false); + break; + case 1: + case 4: + /* One-shot timer. */ + TRACE_2D(TRC_HVM_EMUL_PIT_START_TIMER, period, 0); + create_periodic_time(v, &pit->pt0, period, 0, 0, pit_time_fired, + &pit->count_load_time[channel], false); + break; + default: + TRACE_0D(TRC_HVM_EMUL_PIT_STOP_TIMER); + destroy_periodic_time(&pit->pt0); + break; + } +} + static int pit_get_out(PITState *pit, int channel) { struct hvm_hw_pit_channel *s = &pit->hw.channels[channel]; @@ -156,57 +207,6 @@ static int pit_get_gate(PITState *pit, i return pit->hw.channels[channel].gate; } -static void cf_check pit_time_fired(struct vcpu *v, void *priv) -{ - uint64_t *count_load_time = priv; - TRACE_0D(TRC_HVM_EMUL_PIT_TIMER_CB); - *count_load_time = get_guest_time(v); -} - -static void pit_load_count(PITState *pit, int channel, int val) -{ - u32 period; - struct hvm_hw_pit_channel *s = &pit->hw.channels[channel]; - struct vcpu *v = vpit_vcpu(pit); - - ASSERT(spin_is_locked(&pit->lock)); - - if ( val == 0 ) - val = 0x10000; - - if ( v == NULL ) - pit->count_load_time[channel] = 0; - else - pit->count_load_time[channel] = get_guest_time(v); - s->count = val; - period = DIV_ROUND(val * SYSTEM_TIME_HZ, PIT_FREQ); - - if ( (v == NULL) || !is_hvm_vcpu(v) || (channel != 0) ) - return; - - switch ( s->mode ) - { - case 2: - case 3: - /* Periodic timer. */ - TRACE_2D(TRC_HVM_EMUL_PIT_START_TIMER, period, period); - create_periodic_time(v, &pit->pt0, period, period, 0, pit_time_fired, - &pit->count_load_time[channel], false); - break; - case 1: - case 4: - /* One-shot timer. */ - TRACE_2D(TRC_HVM_EMUL_PIT_START_TIMER, period, 0); - create_periodic_time(v, &pit->pt0, period, 0, 0, pit_time_fired, - &pit->count_load_time[channel], false); - break; - default: - TRACE_0D(TRC_HVM_EMUL_PIT_STOP_TIMER); - destroy_periodic_time(&pit->pt0); - break; - } -} - static void pit_latch_count(PITState *pit, int channel) { struct hvm_hw_pit_channel *c = &pit->hw.channels[channel];