From nobody Wed May 15 13:06:30 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=1644830714; cv=pass; d=zohomail.com; s=zohoarc; b=nCjwn5+VOk69GrHFZZLJvec/pRV1y4JuV4ZTyB+kKy8Qk1SysidZemW184uuKVI/L5fg/mJF0omPY3IAl2tfoRPIh2Pjx9rxzEYg8/e7roH0Jy0bE8vEeKzQkXQAtlE9oOlkSN4qUDuw0rdjVfEVhCGOS7zRD4fteCv8LhkhV4Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644830714; 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=jRtj4tiv1hm3ixQ2cH3tp9s+VaiO4YvJFI8HrqxEZ68=; b=hss+5drXCjDOxK/fAJYsMsgfUm2deJ5Dk97kWYB31FuuRSsEEdcOmdRLg/fZ7zvTXXXIPnl5mC9nYdi61uBSc6GzPUh8IorIIDopCs3iovSxdBBbZ1WzPTwr/FGw4WKQuh1LkbRxM6q6dIv36J9rLTKByki1uIH7q86RgcURySY= 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 1644830714577229.33513496515513; Mon, 14 Feb 2022 01:25:14 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.271282.465675 (Exim 4.92) (envelope-from ) id 1nJXbJ-0003XD-1E; Mon, 14 Feb 2022 09:24:53 +0000 Received: by outflank-mailman (output) from mailman id 271282.465675; Mon, 14 Feb 2022 09:24:53 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nJXbI-0003X6-UG; Mon, 14 Feb 2022 09:24:52 +0000 Received: by outflank-mailman (input) for mailman id 271282; Mon, 14 Feb 2022 09:24:51 +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 1nJXbH-0003X0-BS for xen-devel@lists.xenproject.org; Mon, 14 Feb 2022 09:24:51 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id f54e5ad5-8d77-11ec-8eb8-a37418f5ba1a; Mon, 14 Feb 2022 10:24:50 +0100 (CET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2111.outbound.protection.outlook.com [104.47.18.111]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-30-lqBSNoEcPIG3vdXAKS47dg-1; Mon, 14 Feb 2022 10:24:48 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by AS8PR04MB7688.eurprd04.prod.outlook.com (2603:10a6:20b:29d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.15; Mon, 14 Feb 2022 09:24:47 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65%5]) with mapi id 15.20.4975.015; Mon, 14 Feb 2022 09:24:47 +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: f54e5ad5-8d77-11ec-8eb8-a37418f5ba1a DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1644830689; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jRtj4tiv1hm3ixQ2cH3tp9s+VaiO4YvJFI8HrqxEZ68=; b=dEBsRK+YI8zdr/7wM+r8gZBYg+DTeOvb7SjoMFPbF7BPltWzA7cGCxVmc5xkHP4jR+eUYU Pyo8YS/3/qva5icvxGLJkJIoJTey9X5F6W6PSJUjsCY8P1jx2r+LsBTuv1KjfBNwm/ShZu DLYlK+vRKF3F4rdyvuRda09Zh25SPys= X-MC-Unique: lqBSNoEcPIG3vdXAKS47dg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ccgPs2X5KqWgOEOwIW7kXcoewEniZzSlZGVxrxmgWKQCkHdoVdGV1UWwspWegJchnVoMEJs8fSr2ESEQ3uj8YZ9KKiTU/pAMcFM/eMxCOhF0BhpbpWuEGtrHdVoT1rVFu1sUGBCLS9jivgqupyec0oP6ItfFmN9vKtY1Ivuhkk/WSbsVAf9PjjZxDSqDPUZ8Fv6K8U38ZKq7agvDQbnmutGVX440fWEE29zOUbxZ7grZ9sHWh+Xp06MstCnzWFlj8xHLJW0mE6wiNibYsjfz3QEe4djZ82SY9z7yAMAih9dkiTuSxQD9Cpe7pwnn0s1WPahgvkzlIiygPaAkUK33vA== 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=jRtj4tiv1hm3ixQ2cH3tp9s+VaiO4YvJFI8HrqxEZ68=; b=NlyTV/Mbsw6gLNr0FgehfXhr/4aMY43s4ZJQXbq3HSEZ9ndbow/4xK75WxwGBShSYZTrrSdjVDTa1lFTKbT6sfd2+X/HfKlXb/Ihz4QqVKhM78HmJe6iUP4o0hZSK68vO/3wy0mqNbxl71lYbMhp4VOif7XYPsYah5CsyD9FvMB+LO6Dx4a+mmHbHEX9XOynJb9T/+g/Qhg9bOzpMGFVNMDi2ZnfhwE7kIp8K3hXCJlh9JwCqcBOuhGZ9dUxYwpS9e0YTD+fPNVMyYEyI4mL+5ENwQ3D0dFgkfuJrWsfLoYkWPeS1JegbCz/kL0+2ASk5a5FfvpLVl/zCMt/+mGGJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <65c123fe-c8e7-b9cf-4dea-904bf28170a7@suse.com> Date: Mon, 14 Feb 2022 10:24:49 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.0 Subject: [PATCH v3 1/4] x86/time: further improve TSC / CPU freq calibration accuracy 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: <35cb3c72-05ba-24c7-1fdd-3ee1aced3aec@suse.com> In-Reply-To: <35cb3c72-05ba-24c7-1fdd-3ee1aced3aec@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FRYP281CA0004.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10::14) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 99849706-52eb-4af9-8704-08d9ef9bd83b X-MS-TrafficTypeDiagnostic: AS8PR04MB7688:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jdYvnhKPTPi8T6jFp3jmFSaWfU30V+UsWq/K/w8dGM2YA6GC7Q2UWA7Gzy1bXJFjFfSp20ZPDNKf9yFrz5q1OUkfw1mPSYNZzjvaI2I2lKufhB5/rG2g6hJTmvJGZ4EuGfQhnFCg8bSg6d6MLdVRehCik0JnXIUmVPwlZgFQcnCWWWio/t/IdSTTaD4EgHjDllESOfugFQzXy17ZS3P/HMOJ6M8z/2ValhqlQdTpyj2p6NkSm+K7G6ZvaIFaeVn/ttfp1IZEH+bFSztdzHediIA6LPLTfe4ihYqTy9LvePXlLe5PUmufPnn5WHacKdICzrkPy+buiDfQbnyqA0hGUR78j5xPOoGwJIZ0rVq+f3GmOOhVE3RMSGzEzs02wFIRAbbvsawc94JAyCJhiNeHMRVsWzOtL4sB6AxAeZAvdqo0SDab+b9g49cYRwbk6dM2j4i4dK8bH3Kj5fbaXUTxqHmEFBjCWZvkLcAAZSpUPwuuQbzB7RQox8vDZkAeN1qXrtE2q8/MAlGadKd/ecBqJZ81eghzqbvtLQqNX+15jvq7LgPWGYjiZHZcQJ34YRzSWa5anoyza4ayGF04d4pUWqPx+CCfKWXziStk+6wYeDZJxt6GTqeDbLa+pof+PxNOzGdCtZshgOWl//GYue2FUB5Maobz3svsZ4/YXdU+YD7nlutqCWI+HBayhan57cvhxhYU0lbezkX79poe1AzBir8QIkcjdtr1s/c0pPSVo18= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(186003)(6916009)(38100700002)(26005)(6486002)(508600001)(54906003)(6512007)(6506007)(316002)(2616005)(86362001)(66946007)(4326008)(31686004)(5660300002)(66556008)(66476007)(8936002)(31696002)(8676002)(83380400001)(2906002)(36756003)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R1lGYThMTWFZYXA1UlJvWnJFZHdCdmpWWGIwK2ZqcEVSR2VQS3RIM1BIUGg5?= =?utf-8?B?M0tvZzYrMjJuVVBlV2NxM0VoT1dRT3VvWjVINS9sZW9Nb0tZbnVhc010T0Q0?= =?utf-8?B?b1RKSWVLaER6Q2NQVVVreVRYVzQ2NkloVHc1TEV6NDVCMVE2Slh5eDB5aldK?= =?utf-8?B?eVZFYkNLQ3RFcko3NHBTY2tsY21RQWNuUWkwV3ROSGVDR0YxZHJuakh5V2ZR?= =?utf-8?B?NHVnYWNnd08xTnMrMGdhK2VUd21UTXYrd01ickpnaDE0RmtVN0RRRHp5L1ZF?= =?utf-8?B?aFV0Y1U1bWtXOEJBNXBOSk5VeFFNQUZWcnlsVFVvMXJZOTFZeFhsbldVS1cx?= =?utf-8?B?alpMeUpmV1hTVlJpbzljay9rMFRDZEFUYUdEUGNGZzVDMW5INmVjNE9KSDdF?= =?utf-8?B?SkR4NFh6MlNrZ2w2bmoxSE82WVFhWkp1RW5TZjBZT2NCVzdRUTFPZ0xhajE5?= =?utf-8?B?eDVna21GMnJTSi9HbE1maDBEemJpSEJrVW1PZjN0bjQzUkE1bldqUS80UWtw?= =?utf-8?B?OTJBbDhqN0dYcFRGUlJScGU5dmpSNXBQaDZNZzhaUWRQcGw1WTdRc3RDSFR1?= =?utf-8?B?OU5jSXVRU2pCL3BPM2RYS1YzYjduTFdMTERmY3N2S0x3ZzN1M0tUL29qTHlN?= =?utf-8?B?eE1KYzRGbGN0b3NwNXFUSFhCSGZOcHhGdVcxUWlJTUkydG9IbDNuL2RSckx6?= =?utf-8?B?YnlER3ZNZ3QzRXdsVXZrTVFOZjhpT3dlNkpFc0wza2ZwN2FpS3hOZDdBQkpF?= =?utf-8?B?Nmh1VkRBeHFjcFdKTWhmNjFRU3AwNE9RSGx6SVRQY05xWnJUSXpLOVpVZU91?= =?utf-8?B?dzkwNlFRZ3ZGVTR2Uzk4Q0ZKT2FxazdyRm5VSGl5VEhIKy9GazJhUnkrY0xy?= =?utf-8?B?eW5tSjFJSGZ2cVZIcnkwSGZVVGc4Sk9seHlLbWtkUTlzWnprVUFiV2ppRytk?= =?utf-8?B?T1hkakt1SUNyaFJQSWdiaWN1VUtWQXRhdWtPdkc1emFva013VW9jQ2pFVTVz?= =?utf-8?B?aXNGTEF5djdxVkthNW5TZFBhZGJzVm9UUlA3dmo3T3prdktpeHRETDBsWDg2?= =?utf-8?B?QkQ4bVBmRmdUbzVML0IzMW1VVmhycE85cnlxUmI0TkEzN1VaQkdWQzk5QTNO?= =?utf-8?B?b2JwRmlkSGk1VTArOGc4YmcrSzBmeDFpdkJWZk5JczhWRE5ydTlXUmRiVE1j?= =?utf-8?B?eDhrZUVHUnhLMG5uRmV1ODMrUGcwTHhOSWNzQTJNSlF4WmdEOW5aaTdMNkU0?= =?utf-8?B?QXNnYTdqSW5kbmR2NkhUNWRrV1pJbGI2QnJkZHBod2JyQ0xmWE1MdDgvYStz?= =?utf-8?B?TDZQd3ZUN2NlWjV5R29rc1pSMU5tS1R1aEcwcStKdlNwdlZjL1pqTCtNdzRu?= =?utf-8?B?Y1NGMmdtZkxCUW9yVGZaTFRZc1JUcElTdUFTMVdMeEdzclk3aW0yMHduY3Ay?= =?utf-8?B?N0ZqeE1SWjRnSFFONm41ejlaQXlTU0tsakhmWVEzK3c0SXlqNzIwSGY3R1NS?= =?utf-8?B?UlROMEppOUJjdklYWVNYK0VXRTl0S0I1czMzNWN6Y3RtZGY4dktGdVpGbmt4?= =?utf-8?B?Z0hOVWdsR1B3K1UwcjVmRTJ6N21LeDdycFFEVysybDNuMFoycHBVcEpJbDZH?= =?utf-8?B?ckZnUzlMRldEUno3L1hlU2VrQlBRSURCcEVqWC8yYUdHSFViZlBGOGpzbFlS?= =?utf-8?B?RzZVcVRKckVyRWxINlV1bVBvbWZIOXlPMTA0d0dRYjhkYW9yK1pQYU44WEp4?= =?utf-8?B?VlVJSzdmOUtzYjFoZ08ybnQvbzFCUUJ1ZjhONXp5aGIxZy8yOXZhZC9xUXFt?= =?utf-8?B?enB6T0c1L1JBRWVpdVNrdnhxVDBUWTVoZG5IMnVUdUlobWlXUDdvRUg3OVZG?= =?utf-8?B?S3ozYndWcU4wRE1SOHpLTnoyZzgwbEpMbytsYmM4b3dHckszVFlmdG94cVJ6?= =?utf-8?B?L3BLTyt3QjJtemxYZjh0M09PWFZCL013YWQ5d2FmWDBIN3g2MElhV0wxTWM1?= =?utf-8?B?R0tQOGNyVjBlZTRIaWZ4N0pLdnJVRDdiUEIzaVY4Z3Iwa2dVWmV3S1dYajRV?= =?utf-8?B?STgxZlMrUWlKY21KeEtpWngzVmQ0d2VOWGxCU0VkSis2OVYwbm9IT1h6UE8z?= =?utf-8?B?VzR3bkpmM2Q5VWNWelpUSzdRYkJWT2MxS0EyNWg1ZXdWamJvQ0VFRjhzSXR2?= =?utf-8?Q?LLpi7eM/5IIh+6C3vPq4Wxw=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 99849706-52eb-4af9-8704-08d9ef9bd83b X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2022 09:24:47.7478 (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: o3T5TjLjqbFv4ZxLJBYKRlWqhR+09NYnFNHxifvSSgawRhPMQmxWcbvkM/8O3L1epdeUPfpnuTipJUc1jN8jbw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7688 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1644830715593100001 Content-Type: text/plain; charset="utf-8" Calibration logic assumes that the platform timer (HPET or ACPI PM timer) and the TSC are read at about the same time. This assumption may not hold when a long latency event (e.g. SMI or NMI) occurs between the two reads. Reduce the risk of reading uncorrelated values by doing at least four pairs of reads, using the tuple where the delta between the enclosing TSC reads was smallest. From the fourth iteration onwards bail if the new TSC delta isn't better (smaller) than the best earlier one. Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monn=C3=A9 --- When running virtualized, scheduling in the host would also constitute long latency events. I wonder whether, to compensate for that, we'd want more than 3 "base" iterations, as I would expect scheduling events to occur more frequently than e.g. SMI (and with a higher probability of multiple ones occurring in close succession). --- v3: Fix 24-bit PM timer wrapping between the two read_pt_and_tsc() invocations. v2: Use helper functions to fold duplicate code. --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -287,9 +287,47 @@ static char *freq_string(u64 freq) return s; } =20 -static uint64_t adjust_elapsed(uint64_t elapsed, uint32_t actual, - uint32_t target) +static uint32_t __init read_pt_and_tsc(uint64_t *tsc, + const struct platform_timesource *p= ts) { + uint64_t tsc_prev =3D *tsc =3D rdtsc_ordered(), tsc_min =3D ~0; + uint32_t best =3D best; + unsigned int i; + + for ( i =3D 0; ; ++i ) + { + uint32_t pt =3D pts->read_counter(); + uint64_t tsc_cur =3D rdtsc_ordered(); + uint64_t tsc_delta =3D tsc_cur - tsc_prev; + + if ( tsc_delta < tsc_min ) + { + tsc_min =3D tsc_delta; + *tsc =3D tsc_cur; + best =3D pt; + } + else if ( i > 2 ) + break; + + tsc_prev =3D tsc_cur; + } + + return best; +} + +static uint64_t __init calibrate_tsc(const struct platform_timesource *pts) +{ + uint64_t start, end, elapsed; + unsigned int count =3D read_pt_and_tsc(&start, pts); + unsigned int target =3D CALIBRATE_VALUE(pts->frequency), actual; + unsigned int mask =3D (uint32_t)~0 >> (32 - pts->counter_bits); + + while ( ((pts->read_counter() - count) & mask) < target ) + continue; + + actual =3D (read_pt_and_tsc(&end, pts) - count) & mask; + elapsed =3D end - start; + if ( likely(actual > target) ) { /* @@ -395,8 +433,7 @@ static u64 read_hpet_count(void) =20 static int64_t __init init_hpet(struct platform_timesource *pts) { - uint64_t hpet_rate, start; - uint32_t count, target, elapsed; + uint64_t hpet_rate; /* * Allow HPET to be setup, but report a frequency of 0 so it's not sel= ected * as a timer source. This is required so it can be used in legacy @@ -467,13 +504,7 @@ static int64_t __init init_hpet(struct p =20 pts->frequency =3D hpet_rate; =20 - count =3D hpet_read32(HPET_COUNTER); - start =3D rdtsc_ordered(); - target =3D CALIBRATE_VALUE(hpet_rate); - while ( (elapsed =3D hpet_read32(HPET_COUNTER) - count) < target ) - continue; - - return adjust_elapsed(rdtsc_ordered() - start, elapsed, target); + return calibrate_tsc(pts); } =20 static void resume_hpet(struct platform_timesource *pts) @@ -508,22 +539,12 @@ static u64 read_pmtimer_count(void) =20 static s64 __init init_pmtimer(struct platform_timesource *pts) { - uint64_t start; - uint32_t count, target, mask, elapsed; - if ( !pmtmr_ioport || (pmtmr_width !=3D 24 && pmtmr_width !=3D 32) ) return 0; =20 pts->counter_bits =3D pmtmr_width; - mask =3D 0xffffffff >> (32 - pmtmr_width); - - count =3D inl(pmtmr_ioport); - start =3D rdtsc_ordered(); - target =3D CALIBRATE_VALUE(ACPI_PM_FREQUENCY); - while ( (elapsed =3D (inl(pmtmr_ioport) - count) & mask) < target ) - continue; =20 - return adjust_elapsed(rdtsc_ordered() - start, elapsed, target); + return calibrate_tsc(pts); } =20 static struct platform_timesource __initdata plt_pmtimer =3D From nobody Wed May 15 13:06:30 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=1644830741; cv=pass; d=zohomail.com; s=zohoarc; b=jwjrMIsRSDuIQ4RKYpBETCFxqnyyt29XLxPCsx3AbkvcQqqCGFwiiv/ZGKzASTEY95rRjN1hrCzRrpkHql+ZBmosoEuBEXWPmAnWAI8DIscaTEHUHd85vLTDPX4/IG4iZhBTcEA5SoooiEADQaANQABr+veeqc5lfxCSaU9jPG8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644830741; 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=jCxscIvq6zLulNKcY3/NWbd2vQ3CrupkD38ZmXXmcn4=; b=OyLxUF0jvjZnlb2kyyWdU/pbBhtrOHKGqydo1iRpyDZcbpBByvR2EYIsevBM+FFYpBXHR0z080vZUKOtHBoFU4dVAfi1fiKkKRkvaSunr6HkMHht+FI07i6+yv7vljc81azK4SnaW6tFv7ijlEsdlAVVlDz0zF7E/3mfFJvsswU= 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 1644830741400189.31953175154763; Mon, 14 Feb 2022 01:25:41 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.271286.465686 (Exim 4.92) (envelope-from ) id 1nJXbh-000445-Ci; Mon, 14 Feb 2022 09:25:17 +0000 Received: by outflank-mailman (output) from mailman id 271286.465686; Mon, 14 Feb 2022 09:25:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nJXbh-00043y-9V; Mon, 14 Feb 2022 09:25:17 +0000 Received: by outflank-mailman (input) for mailman id 271286; Mon, 14 Feb 2022 09:25:16 +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 1nJXbf-00043T-T6 for xen-devel@lists.xenproject.org; Mon, 14 Feb 2022 09:25:16 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 019c5b25-8d78-11ec-b215-9bbe72dcb22c; Mon, 14 Feb 2022 10:25:10 +0100 (CET) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-he1eur02lp2050.outbound.protection.outlook.com [104.47.5.50]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-28-FVX4WaY3NL2bj_q26NJuLw-2; Mon, 14 Feb 2022 10:25:13 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB5168.eurprd04.prod.outlook.com (2603:10a6:803:56::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.18; Mon, 14 Feb 2022 09:25:10 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65%5]) with mapi id 15.20.4975.015; Mon, 14 Feb 2022 09:25: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: 019c5b25-8d78-11ec-b215-9bbe72dcb22c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1644830714; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jCxscIvq6zLulNKcY3/NWbd2vQ3CrupkD38ZmXXmcn4=; b=IjK0pCrTHa7qvrMdV0z1bj+fdmCDhPevyzDv1upUqpouyGIFSkir/RbOTo/p0EU5x4S3Sm 5zF5s0JjguopesyxkZc1hZGHuvmGzYO7ahVo8yEK+aWksGw2AN53e50q1mZL8aC84aX/wk V4Udg+Fb4zyEeqqw6rnGONB1l6N6SVo= X-MC-Unique: FVX4WaY3NL2bj_q26NJuLw-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Me3rN0K44Qo1Dwa2BajlxJYcjyIZKXkdUv7ynhC5osN/BStBFZrYOAjR8e6veGNvV/7n72gb/YgvqFmuwnlf8uYMjmhsCJg6gAMh7Slm6HPG+7TX88oHVmrLLULHJ79DbS1IvOju9dyYjrhw1udvOEkOO2n4GrUWi+gTf5mWSDFtDnMD0AD5IL180KU1QpkPOhzyVsRkLXdEW90Df0OQavfDqi8Uteq0VrgWynBaDuJctVGE2PDQuSiWu4goO14F9YPtd2EE7oZlLrufh4lOV8ufAguvLc9rEmjDZL71wR796E1TYUe5RNl9S9lVIAjvsx58hTmUZSy5/abABxWqKw== 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=jCxscIvq6zLulNKcY3/NWbd2vQ3CrupkD38ZmXXmcn4=; b=G8q/9ZRn6bsNqFo7W3kv5VnUFpQDuPArOIMxB3pCRVwmi8GTfJ1/D2pEAzVMZItTa/K0U7+M3YOW822PI/KXijN8GpUesG1YSiHHgCejYQgj4x9cKVae/6DMBEEd4bT2WUet/Cr8WJx0wcOY+PkRzisZn/5tqYY5mgOo4MPiVfdC3FOZZZbNdclrqfQBa9KUAmiXXVSsNMVj40Ludb9nfMcfkIKucjJerSkF4jVpqOhgEDv0pZIphmei/TXsugECDIPcpvsf6zXoQ7mD5IGzI3hZIm8dbv5SvRY/FgyBk2RFBWrImMxO8p79+lfbHpatbElybt5z8B9OLfO4y9kLtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Mon, 14 Feb 2022 10:25:11 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.0 Subject: [PATCH v3 2/4] x86/APIC: calibrate against platform timer when possible 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: <35cb3c72-05ba-24c7-1fdd-3ee1aced3aec@suse.com> In-Reply-To: <35cb3c72-05ba-24c7-1fdd-3ee1aced3aec@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FRYP281CA0015.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10::25) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f922ffd4-8132-4aac-11e1-08d9ef9be5cd X-MS-TrafficTypeDiagnostic: VI1PR04MB5168:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5797; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SHdl4Z4XHmSQ2gTxzFX/8pyNdq/odi/ilnDIezipMC9QHCOm7QT6J7qlonGdFQKD0Dfe10yX3KuvxCHJF1p/OryNfM3uqQZYPjTLHs0KijGsZekf0ktwwLNtUbme4HSzjA4flMQDyw1/GirNoBDB2AdSOYG2GRw5s3JC0AFBqRHbQq9cbqqZynxVLGa3IIz4Z++hbisMRpALV310A9AiGB6rZV2EjRuNhVCR0agfy9JULi3gNhvqWthDPzzxg9Yz778Dhoainu3xs4+9crcOq6OwkiASonUgWlCjC4bFlnjIqbRkcEKRdZT9+OaWpfKt7R9VjScwgdnA2/EceRCvA48jVGW2YHSGVWTyUw/y2+JiQFtKwMFVVa6Wrf8kSvGQs5reozzQdhIthVLbDQTkp6/jJE2B5kyZ7TmDxoKy1QbA0bV/q5di09R5mfFv21hzXTGwYdcAJP5XGeKCxrzTPIa+vggeRt1qe3FqbJb1m1rwUI+a4Ra6GhhlMqbsaLVjU4w2E1KLI9iRKNx8p7o+bUGJo9IKya+YRCsqPfGvuGTMSuejhp/A6BjyNEMlxQOr3/Othm5Q0BLtCFaN1QzQVwYSkbEjTtBUSeETdsdABQOkWkHUZx4M6Fr2TYJ3gfA4lWN+EO2iNuqVG57imUFwP567Wf8Ai/D1BF5OM1WxJknswv1+LkpINxtk5mOMO8nWw48kpeZRifHIonIFAK2F/98ZQlGQYO8bciYqiTK+bI0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(36756003)(316002)(38100700002)(6916009)(31686004)(66556008)(66476007)(5660300002)(86362001)(54906003)(4326008)(8676002)(6486002)(508600001)(31696002)(83380400001)(26005)(2616005)(2906002)(8936002)(66946007)(186003)(6512007)(6506007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MVVqbUFVdkpsMHc5YTNXQ1creFQ0RHF2YU50NFlpbDZDa3NmcURJaDlraHk5?= =?utf-8?B?T0RxcDhUbGs5TmxBTHVSa2J5QWV5MXJIMzdGRTlaYXNRdHluRnBEaGtuS2tC?= =?utf-8?B?WjBlYXpqZTJZZ3IzKzY5M2ptK204S2JucUJkZ0E3MEQxVkg0cjVXSkZGN1hh?= =?utf-8?B?anBKaThOTHRtWE4vOUxrQXYyaCsvbldNRmpTNlF3MkRyT0cxWDJGOFVkZzZ0?= =?utf-8?B?cEZLME9VaHJoK3FLVEUwVEN2QTRVRThRNW1SQUVGYlFRZDQyVnVEc2tTc2Fp?= =?utf-8?B?YWdlZlRlSGRaZ3FwaUNPU3JuazlsNndsSzM1TjNCc0JHbXRSYlpSaUxRWVVK?= =?utf-8?B?M25RWjB5dlNwb09FTDRnYUplVzgwWG5GSTg2aXBRd0tsUkkrOFAvaEhGMG90?= =?utf-8?B?QnhkaW9nMHd0Rjl3allldzNZR3REdENkanZsWGNCeWRNOHVXNDhtN1JGSW5I?= =?utf-8?B?Y1hpcEVqMlBkUDl5NkJCaUNKdkk5a0N0QVhOb3FYNW4wTm0zcitHQ2c3b01E?= =?utf-8?B?M0M1aW1qQlVSNUhEM2o3OTM3NnUwTkVGWU04THR5MEoxQ1JoUHJXdEoxNldx?= =?utf-8?B?bzZ3Z0pXNjJUdE5lYjBOSktrRElTeHlHNnBHWkpodktnSEhWWTNWTkFUSEVE?= =?utf-8?B?S3BGcFlia3QrZFFMWlgwbWIwem95c0RMOUZudm5qNE8yMXFDVlZod25RZk9G?= =?utf-8?B?dG54YkxOREhEdWNEWEFQdEVmOEdTdlJmUjR2b3ZFUkVXRlErREhjeUo2VHpr?= =?utf-8?B?K3RoakQvQXFVczNDWUJpSkhpa3BidGJGWHJkVS9FcXE0d3VvNnd6eE51dlJ5?= =?utf-8?B?QWE1T1R2dXZab3hIbDhZU2FNQng0b1FETGxYVDQrZ01XRWtvUGNEeXk2TUN0?= =?utf-8?B?YkJaS3NlY2p0VFNwaCtzbmtwVHlQUHZYU1Q5djg3R1NTQlNrYjg3N3NCc08y?= =?utf-8?B?Yjc5UHpIWGJyNVZRSGJUSEtHOVpGT0pLdnErRUhKdDRxZXM5TENsYUdrMENh?= =?utf-8?B?OFRWNXNXZSt2UWJINXNrVlhRdmtyUHBiSW1SSDdIRHo2S0xNOVpibHc3NU44?= =?utf-8?B?TWVKeVFIZ3hFR3dHVVBOMVlwckpUTTZ4OHdGbHU2QnkrQmZlN2lUMjdWZVlF?= =?utf-8?B?T0NCL1prQ21sOFRMQXVpRExCdmNvZ3ZwL2tUcE45elVIOWpUZGJidEJCcjVv?= =?utf-8?B?ejU2dGxBSlFuUEdCakE3bEJVbjE1UThjcXB2V29VcE1PZVlWUzNRQUo5eHNx?= =?utf-8?B?dEZ6ZmNnR29xMUE0OTd1TWF3VXJwbGF3SE81ZTdPZFNiZCtIR210OUJ4SjBx?= =?utf-8?B?UFR6Snk4ajV3NFhMaEMzNVdOT0xQLzBoTXhLeS9RbDZHV3ZoajcyTW9LVUFV?= =?utf-8?B?cDB3RlVzdkFjUnN6QlJnbnFXOHZua3RPT1M2YlFwR1haY1IwNkw3OXEveU1p?= =?utf-8?B?STZ2YTY0YVdRN2JJTUdNRW1sNGJjbWtHNTdnUUwzM3YvS0lhTEhBbnprM2N1?= =?utf-8?B?c1FtM2NmTGtIdWhTNW50SmM2SzVqS2szYmtmdXJUVks2Zng5d2RTeGF4Q2Nz?= =?utf-8?B?Vys0SVMwK2U1Q1Y0ampselhWakJyTWVOZVdhN3RnNTRVVjRtdHpHb1JFTGxI?= =?utf-8?B?dHJaNEkyZ1NMYnV4alFlSFB0ZWh1TlBWaFo1aE1LOFY4THgxL0ZvcjA4OFEr?= =?utf-8?B?akUyeWkzbnE0SlFPbWdvYmtjMS90Yy9BVk02OTVrK3cyMjdjYVBGUms2SGpV?= =?utf-8?B?WjN6bTVQSU54dHp5T28xUEdFbWJlc2RqbWRrU0Fjb2lkUlhCdi9TME54cnIw?= =?utf-8?B?V1htZ0hxYm9ZbzFGc0FZWXBWMnJMcDZBTmhRQ25mL2p5VFJtUlA4b0h5Y3RQ?= =?utf-8?B?MGRhT0lmOVFJWlhVUE1wQ3ZhUER4MlV5TWxTYm15YWQ5SCt6Z0ZkcG42MFow?= =?utf-8?B?UWgwL1lJTDVEOFFXdFFUOURPaXNLSWtHWFpPU3VuN2JJZVIvcmUyV2dQNHBn?= =?utf-8?B?YnRCSmVkRXVOVnpYSUw2dTFCV0FwbVB1VmZvTUp2TzNwejdWb1RzZW5ud3FN?= =?utf-8?B?UlRHazRmV003Y3NURCtxcDhXYlJSUDhBWjhocnIrTEF4alp6WUx4QTFDNXVR?= =?utf-8?B?L3BWdUFLTXFPb2RQTElKYnhBSmRBQTJJR1JaRGIvNEYzVXd6VWJPT21md0Zk?= =?utf-8?Q?vwr12mSJ8CXZDyXrgvw0lng=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f922ffd4-8132-4aac-11e1-08d9ef9be5cd X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2022 09:25:10.5277 (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: DTMdktAVdtUzWkNAwAskxLRp3X4OBGh/tN6Sa7IEttAaQUfHkW5Qs3IG+VUpAF8EF66f7WbSsrS6sVsotzQHjQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5168 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1644830743995100001 Content-Type: text/plain; charset="utf-8" Use the original calibration against PIT only when the platform timer is PIT. This implicitly excludes the "xen_guest" case from using the PIT logic (init_pit() fails there, and as of 5e73b2594c54 ["x86/time: minor adjustments to init_pit()"] using_pit also isn't being set too early anymore), so the respective hack there can be dropped at the same time. This also reduces calibration time from 100ms to 50ms, albeit this step is being skipped as of 0731a56c7c72 ("x86/APIC: no need for timer calibration when using TDT") anyway. While re-indenting the PIT logic in calibrate_APIC_clock(), besides adjusting style also switch around the 2nd TSC/TMCCT read pair, to match the order of the 1st one, yielding more consistent deltas. Signed-off-by: Jan Beulich --- Open-coding apic_read() in read_tmcct() isn't overly nice, but I wanted to avoid x2apic_enabled being evaluated twice in close succession. (The barrier is there just in case only anyway: While this RDMSR isn't serializing, I'm unaware of any statement whether it can also be executed speculatively, like RDTSC can.) An option might be to move the function to apic.c such that it would also be used by calibrate_APIC_clock(). Unlike the CPU frequencies enumerated in CPUID leaf 0x16 (which aren't precise), using CPUID[0x15].ECX - if populated - may be an option to skip calibration altogether. Iirc the value there is precise, but using the systems I have easy access to I cannot verify this: In the sample of three I have, none have ECX populated. I wonder whether the secondary CPU freq measurement (used for display purposes only) wouldn't better be dropped at this occasion. --- v2: New. --- a/xen/arch/x86/apic.c +++ b/xen/arch/x86/apic.c @@ -1182,20 +1182,6 @@ static void __init check_deadline_errata "please update microcode to version %#x (or later)\n", rev); } =20 -static void __init wait_tick_pvh(void) -{ - u64 lapse_ns =3D 1000000000ULL / HZ; - s_time_t start, curr_time; - - start =3D NOW(); - - /* Won't wrap around */ - do { - cpu_relax(); - curr_time =3D NOW(); - } while ( curr_time - start < lapse_ns ); -} - /* * In this function we calibrate APIC bus clocks to the external * timer. Unfortunately we cannot use jiffies and the timer irq @@ -1211,9 +1197,6 @@ static void __init wait_tick_pvh(void) =20 static void __init calibrate_APIC_clock(void) { - unsigned long long t1, t2; - unsigned long tt1, tt2; - unsigned int i; unsigned long bus_freq; /* KAF: pointer-size avoids compile warns. */ unsigned int bus_cycle; /* length of one bus cycle in pico-seconds */ #define LOOPS_FRAC 10U /* measure for one tenth of a second */ @@ -1226,39 +1209,38 @@ static void __init calibrate_APIC_clock( */ __setup_APIC_LVTT(0xffffffff); =20 - if ( !xen_guest ) + bus_freq =3D calibrate_apic_timer(); + if ( !bus_freq ) + { + unsigned int i, tt1, tt2; + unsigned long t1, t2; + + ASSERT(!xen_guest); + /* - * The timer chip counts down to zero. Let's wait - * for a wraparound to start exact measurement: - * (the current tick might have been already half done) + * The timer chip counts down to zero. Let's wait for a wraparound= to + * start exact measurement (the current tick might have been alrea= dy + * half done): */ wait_8254_wraparound(); - else - wait_tick_pvh(); =20 - /* - * We wrapped around just now. Let's start: - */ - t1 =3D rdtsc_ordered(); - tt1 =3D apic_read(APIC_TMCCT); + /* We wrapped around just now. Let's start: */ + t1 =3D rdtsc_ordered(); + tt1 =3D apic_read(APIC_TMCCT); =20 - /* - * Let's wait HZ / LOOPS_FRAC ticks: - */ - for (i =3D 0; i < HZ / LOOPS_FRAC; i++) - if ( !xen_guest ) + /* Let's wait HZ / LOOPS_FRAC ticks: */ + for ( i =3D 0; i < HZ / LOOPS_FRAC; ++i ) wait_8254_wraparound(); - else - wait_tick_pvh(); =20 - tt2 =3D apic_read(APIC_TMCCT); - t2 =3D rdtsc_ordered(); + t2 =3D rdtsc_ordered(); + tt2 =3D apic_read(APIC_TMCCT); =20 - bus_freq =3D (tt1 - tt2) * APIC_DIVISOR * LOOPS_FRAC; + bus_freq =3D (tt1 - tt2) * APIC_DIVISOR * LOOPS_FRAC; =20 - apic_printk(APIC_VERBOSE, "..... CPU clock speed is %lu.%04lu MHz.\n", - ((unsigned long)(t2 - t1) * LOOPS_FRAC) / 1000000, - (((unsigned long)(t2 - t1) * LOOPS_FRAC) / 100) % 10000); + apic_printk(APIC_VERBOSE, "..... CPU clock speed is %lu.%04lu MHz.= \n", + ((t2 - t1) * LOOPS_FRAC) / 1000000, + (((t2 - t1) * LOOPS_FRAC) / 100) % 10000); + } =20 apic_printk(APIC_VERBOSE, "..... host bus clock speed is %ld.%04ld MHz= .\n", bus_freq / 1000000, (bus_freq / 100) % 10000); --- a/xen/arch/x86/include/asm/apic.h +++ b/xen/arch/x86/include/asm/apic.h @@ -192,6 +192,8 @@ extern void record_boot_APIC_mode(void); extern enum apic_mode current_local_apic_mode(void); extern void check_for_unexpected_msi(unsigned int vector); =20 +uint64_t calibrate_apic_timer(void); + extern void check_nmi_watchdog(void); =20 extern unsigned int nmi_watchdog; --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -1004,6 +1005,78 @@ static u64 __init init_platform_timer(vo return rc; } =20 +static uint32_t __init read_tmcct(void) +{ + if ( x2apic_enabled ) + { + alternative("lfence", "mfence", X86_FEATURE_MFENCE_RDTSC); + return apic_rdmsr(APIC_TMCCT); + } + + return apic_mem_read(APIC_TMCCT); +} + +static uint64_t __init read_pt_and_tmcct(uint32_t *tmcct) +{ + uint32_t tmcct_prev =3D *tmcct =3D read_tmcct(), tmcct_min =3D ~0; + uint64_t best =3D best; + unsigned int i; + + for ( i =3D 0; ; ++i ) + { + uint64_t pt =3D plt_src.read_counter(); + uint32_t tmcct_cur =3D read_tmcct(); + uint32_t tmcct_delta =3D tmcct_prev - tmcct_cur; + + if ( tmcct_delta < tmcct_min ) + { + tmcct_min =3D tmcct_delta; + *tmcct =3D tmcct_cur; + best =3D pt; + } + else if ( i > 2 ) + break; + + tmcct_prev =3D tmcct_cur; + } + + return best; +} + +uint64_t __init calibrate_apic_timer(void) +{ + uint32_t start, end; + uint64_t count =3D read_pt_and_tmcct(&start), elapsed; + uint64_t target =3D CALIBRATE_VALUE(plt_src.frequency), actual; + uint64_t mask =3D (uint64_t)~0 >> (64 - plt_src.counter_bits); + + /* + * PIT cannot be used here as it requires the timer interrupt to maint= ain + * its 32-bit software counter, yet here we run with IRQs disabled. + */ + if ( using_pit ) + return 0; + + while ( ((plt_src.read_counter() - count) & mask) < target ) + continue; + + actual =3D read_pt_and_tmcct(&end) - count; + elapsed =3D start - end; + + if ( likely(actual > target) ) + { + /* See the comment in calibrate_tsc(). */ + while ( unlikely(actual > (uint32_t)actual) ) + { + actual >>=3D 1; + target >>=3D 1; + } + elapsed =3D muldiv64(elapsed, target, actual); + } + + return elapsed * CALIBRATE_FRAC; +} + u64 stime2tsc(s_time_t stime) { struct cpu_time *t; From nobody Wed May 15 13:06:30 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=1644830753; cv=pass; d=zohomail.com; s=zohoarc; b=ly49dKKSnsnU3LfQYpC6H1UUjm+pTQiOIm1Zl/J1UkH4uBLvy94+b+u+wELxAKUANKbRQz43RURqYeFjLnIP5bvP0HFY3qNuvlQWl9r1Mb4MNJibzNVYfOKgC0HpyiBGDja98Nv/ufVz4T5L6WNCCTzOJk6e4OfLpMZrP2aMc/s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644830753; 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=O+QV9f4zvS046E/T2Qkac91dJy0u0hz2Q9q4aDSre0U=; b=nGmPyZgtRa67LdRsTD64kz0PTvOSHJPcgqdsyBexYdgwzylbpFDGh0UlWjyms9+Mqy/dwaG9bIgGaKOqi4wpVSPCtVruc6r4/E6OU+ib9h/RjKhyZ/D5HbzXgykRlr4lpMQYDHDt6fQexJfJLMo810mudyBpF+A5oYtNhH+bU4Y= 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 16448307535600.9798833638800488; Mon, 14 Feb 2022 01:25:53 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.271291.465697 (Exim 4.92) (envelope-from ) id 1nJXbz-0004aA-LR; Mon, 14 Feb 2022 09:25:35 +0000 Received: by outflank-mailman (output) from mailman id 271291.465697; Mon, 14 Feb 2022 09:25:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nJXbz-0004Zb-Hv; Mon, 14 Feb 2022 09:25:35 +0000 Received: by outflank-mailman (input) for mailman id 271291; Mon, 14 Feb 2022 09:25:34 +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 1nJXbx-00043T-S7 for xen-devel@lists.xenproject.org; Mon, 14 Feb 2022 09:25:33 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 0cc35a1a-8d78-11ec-b215-9bbe72dcb22c; Mon, 14 Feb 2022 10:25:29 +0100 (CET) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-he1eur02lp2056.outbound.protection.outlook.com [104.47.5.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-GuhDHtz2NK2pHNWIx8v9mg-1; Mon, 14 Feb 2022 10:25:31 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB5168.eurprd04.prod.outlook.com (2603:10a6:803:56::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.18; Mon, 14 Feb 2022 09:25:30 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65%5]) with mapi id 15.20.4975.015; Mon, 14 Feb 2022 09:25:30 +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: 0cc35a1a-8d78-11ec-b215-9bbe72dcb22c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1644830733; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=O+QV9f4zvS046E/T2Qkac91dJy0u0hz2Q9q4aDSre0U=; b=N+jjAsKrxPQk7f04yzErt10ld9LTyUNC+CdnA4oKjMeheu8qAnKuYUmahqv4QmFkERtvjh kWbWw7KgQydCVmxJzJ/MCVZlEL12yGTnjiYphGQfSK83SLz7Osji1mXdb56ADr8fIaUlPl lQMVNPkUqwxk9wCTbaKaRywhwPiBg20= X-MC-Unique: GuhDHtz2NK2pHNWIx8v9mg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NmsxkszlYhy9rfK5pTW28fFHhpMd0i6AoM1UXVRopzgF7syyUC1934kuiF+UpCyP5UDWAgZfqoRMsWgTg1lBqNzJbAgAudbwNyqrfU3Xu1zmuj61toRonZ0s12QLnidebIRucvN/L8riM7XgVo8Td75i0n6gLK1bKu22dzNISUlBpm1ZzYDTnI12/6noXEm0gddq8skXBLLnNJVglav/E6XNjJ7Lw0zKT1Ez8JUu9L9RLzjAqEAz/FgGm0yEClLAbGe/iiPY09LpM5ZQzoGqVzmc7RCqXlD696ABxMl/C9Fh8HHxu9H4ZgD3ZbvLV46dEHL+1SEa2YBLSQltHjaEEQ== 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=O+QV9f4zvS046E/T2Qkac91dJy0u0hz2Q9q4aDSre0U=; b=KfutONe6ZQ8QBqcd0ReSkeFI54gpCk4BVW+Dvn8SSeh2vdOmq10wI6IFSDTmjAA5Czw64VcxFTqNcV1SsrCOi1OQfIaCUMpA4R5UqKCCWpd6NZ6cyTEtHdSFbpEW+GdnHj9Xk0/wCXKYoi7omNQolZCtoT/9hJZrtqff7R7Q6a+qJqCzyt7Dd5XQktq2B31KHDLp+PsTu2fbQ1JBkkMWRu0Dygi9AKI6oL66uo65PQE9uxKKhPv0Ay7vIIkxrd3AjlPBP3XapV8DvMWbRP44r3lFhT+94d8fqi31+hcxrDuMy916Dfk3xw575fzXK4LrcAN1yU3SL9nOgSZTUcVUCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Mon, 14 Feb 2022 10:25:31 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.0 Subject: [PATCH v3 3/4] x86/APIC: skip unnecessary parts of __setup_APIC_LVTT() 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: <35cb3c72-05ba-24c7-1fdd-3ee1aced3aec@suse.com> In-Reply-To: <35cb3c72-05ba-24c7-1fdd-3ee1aced3aec@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS8PR04CA0125.eurprd04.prod.outlook.com (2603:10a6:20b:127::10) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6c447af9-bff8-4182-a35a-08d9ef9bf1b8 X-MS-TrafficTypeDiagnostic: VI1PR04MB5168:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BF58ZCy2mrVZd/TySIs1MooX5HdVPTPsrTfAQgyWDd+NmvD7jVjw7rKng8kkpbowlmuMrIHqap44KKLJZNwTN7ApD4r7RN/vcFaEMZ6nJoAnhDXCI02DCv48QAlr5hFiXk+noeTLszOslzjKVtshP6Gk1MytEVKIFoJTYD2BP3sbPcC550RDXJm7fg/FPxDV73BTj6nZy1CqTD96ajF1xKZ+PcgYIZUXrv36GBvh80kw9JVTn5gKj9COdcHuZC4VRq1MI8xwL8vXSzAZ4G2BNYidYHHbn/bCW/rf/B8wsv1wMLW7QtgNCX4Bs3Rfq0f/4SNDNudztUcPtf30jM7aWdBJ0I66cFNLLkJhoywHygKSvGzCVUsldPwrEm7yc1lYzwrvB/YglBRHEAVS/Vffj2Z7xinPAQsQcRDxOPhqz8huR5WfBR4ov1F+sa+XBDOAaodCr/K6C8ta7K/Vje/Il5nuFyUJmp38Mp5agnkvabnXl+5lq5TI/6MBeT5+rYZH3RqdVn9yP3nAAqrqjiWWr2k3Zplbtblesp9lV+SbpdgN15inAuSx+wwGO5FQFj5wKbG0Y30bpAohS1K3J7wu7AlxLML609/brBc0Qbk79Y+V9BLZlJ34hCQ3S8OfC4hQK374rxsGfsoFElFzt9KYWpDHV4GtuswMpVOZISIg/lrmRzjMRs5b7Fzjy60FYk0JGYv9Y5MV2/03uNfabyb0vKjEHNyZNgoAn1IDre2eYGpX/ON1o6nBG0261f021B8n X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(36756003)(316002)(38100700002)(6916009)(31686004)(66556008)(66476007)(5660300002)(86362001)(54906003)(4326008)(8676002)(6486002)(508600001)(31696002)(26005)(2616005)(2906002)(8936002)(66946007)(186003)(6512007)(6506007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y2dNQnVvVCtPUzJxS2cwb3N2alJDMVIzOUl0TUlBdXlCcm1VOFI0c1FzUFJm?= =?utf-8?B?Wko3d2wzSzhNYXh0WTBabFNxbFNtK3FTMXVkQlJtL0F0QlVLQm0vYkUydnIy?= =?utf-8?B?QVVTSnYyOUJoLzRUaStZUCtRcFh3ZXRxSDJPMjJXbkVaY2dvTmFXU3RRd1Y0?= =?utf-8?B?Yk42cVVaODVPTEZORTJRdkVjTzdNUVdxS3IxYlFPditYUkZrNUhUd0h4bEJ2?= =?utf-8?B?VHF4ajhlZ3g3WFpzM3Qxb1lTVlNKZkZzMVlBYlEyVEdGUjYwVFR6bHpCenc4?= =?utf-8?B?RitOd1p1Q0xhbkNFQnJGVVd4bi9rbzIzamw0NXI5K1NDbGloalQ2S0ppeTk1?= =?utf-8?B?bzBYYW8rWW9KTm5TSWxYa2g3c0IrbmYzQ01rd3ZvVGRtU0Z3THhBdXBhcE1E?= =?utf-8?B?VWNXZU5pa0FaTmNuZmx5cXhndGpFN2FnVWJMUzE0dDVaSS9PS2I1MHVvcjJw?= =?utf-8?B?eG1aQy9uYVprSzgzUUpaM0MxdUgvSitZZC9ocndVUS9GOEMxaUV6TkR6d2pO?= =?utf-8?B?NExOMXZlMjFvdXRWUW1YMDdFeXVJYkFIMnZwcEhtekVPcjJndWxDNWpEcVlK?= =?utf-8?B?L2FhMlE3MHdTWTBTdllYTHFlZ2pwcUFsS1J3NW1yWjhNdlpIT0pDT2ZaNFhS?= =?utf-8?B?OXZsRFNBK1dOYnZaVmhtSGF6d3VadUlqNThGV3JGenZNVHk1UXFIa1kydHhT?= =?utf-8?B?Y1h3U3p6UWhnaWZ2WjY1SmNDd0I1eTZiK0xQZ2ZOT3Uwa1JCOGlPN1haSmFN?= =?utf-8?B?b1BSOVNkdElhMk43YnN6T0xtYitTbmtVNHI5RWZZQkFYdlV2VDB0dDBndGFQ?= =?utf-8?B?OStVd01JVyt5SndyVXphbVZrdjNvOStSeFZJdGRDbWxxazV0dHJJTnQzaXdH?= =?utf-8?B?aXJZQTZVMm5IQ1pYQnptbDc4MlpxcmNSS1RrbENyYmlDc2RrRklzZ3NsdGZW?= =?utf-8?B?ZkxUMi92ditEM2FwMTFIRi8vT2FhcmZrZUxPaStBN2RSMlB4b3JweDJ2T3RZ?= =?utf-8?B?WjFpd3RsTkZhdXEvM0t1SGJyakVwb25VeENHSld1NGZpVW1LeDFhNGRPR2sw?= =?utf-8?B?blA0QW9WK2Y3ODNEa211NStIUkgvdHFKdXNjT2FFRnN2MHNHMlp6UVNqeUZC?= =?utf-8?B?TWhSQ08yOXU0R0U1dDJyRGNjUThPQ2Q4WSt5MElocGU5K2FVemxKYnk1WU1N?= =?utf-8?B?aTRHSFAzREtuWWRsR3JoaXh6TUVVaU5IcHF1NkRYTW9qTitBL1NWSDNLV2E1?= =?utf-8?B?WXN3cm9UNFlBay9oVmRPMmdzT2JFRXFkTGthK2ZyYjcwRTZIVDlZUjNFOFJX?= =?utf-8?B?VmJMcXdwVzRnV3hxb1RmOHYvKy9QQVJCeGdYRHBXb2RGczZFcDgrMUkxT1ZH?= =?utf-8?B?MlFnV1ltdXZJMUwwWlYvTEI1WEJLZ2I1NmY1ZUZxNi9TMXJ2REVnQnRiN0Vk?= =?utf-8?B?M1Ixd1d5d3hXMkdkQXBaNXV5QWdFNDR1LzRwN3I0YTg2WUdHWUVsM2lsWEJh?= =?utf-8?B?L0F0R3Q3Rm05SmlmNDZTTy9Ha1phbFk5bitUVERLQkhYTmZLZHZnWXJENUto?= =?utf-8?B?clRuUzlpd3poVXg1SFZFeFB2U0FRRTZGKzhQMGkzK0FRUUF5MEYySGl0d3Yv?= =?utf-8?B?ZFBxeVBOdGxrNThNcHpTYXdQbmI4dnlHbHZjL2g1RElwTnhQbWRaZXpuM1l6?= =?utf-8?B?YjNySGZpeDdjU3l5RzJZNGlzZzRvb0J5UVZYMDNpdU9vODE0SDJEeDFRN3JO?= =?utf-8?B?WkNtQ2prVi8zNkNrTVEyaitidGJQRnhCTUFjQ25ZNGY5NTZET2pyWkUwNkJR?= =?utf-8?B?c24rYWkxWmQ0QkRoanlQNXdMMzFzZ212ejhaRmQ2c1R2d3dTWnNCOUxPQUo2?= =?utf-8?B?aTJSdk05Qm0rb2VER0pnQlp6ZGZBZXE0RSt2dmpDOG5tQWZQa05ORWJLcDEv?= =?utf-8?B?eWtzWHBmOHlJeEV1KytFRXZ3Q05US09CVnJUZTNtbEFoa0U4V3IwY2hiZlcw?= =?utf-8?B?clN1TGViRnNKWlNzKzY1eWtFMnFXcndWelFQNDR0UGNNaEthRkk0YnM4eTN5?= =?utf-8?B?Y2RidnovUXE2bzhIeCtPMy96dytJQzZWYzVEYTdNNnRjTkp5THMwMXBYK2Zy?= =?utf-8?B?TnlZeEpBOXlmQlFockFQSk45TTNmVlhrMEhudTlHcEFkRmFvZDlESDZnM1hs?= =?utf-8?Q?hl2dRG+KZtxZdntm+IpO4kE=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c447af9-bff8-4182-a35a-08d9ef9bf1b8 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2022 09:25:30.6202 (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: AKz6K/yInSzvCMCOegjV14k5CrxAh3N/Wq3em6a+ELqHlNs9BPO0nZQgtZmIPXGxsQhdfMJR9eP+wvNuLzhf8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5168 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1644830755915100001 Content-Type: text/plain; charset="utf-8" In TDT mode there's no point writing TDCR or TMICT, while outside of that mode there's no need for the MFENCE. No change intended to overall functioning. Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monn=C3=A9 --- v2: New. --- a/xen/arch/x86/apic.c +++ b/xen/arch/x86/apic.c @@ -1059,24 +1059,25 @@ static void __setup_APIC_LVTT(unsigned i { unsigned int lvtt_value, tmp_value; =20 - /* NB. Xen uses local APIC timer in one-shot mode. */ - lvtt_value =3D /*APIC_TIMER_MODE_PERIODIC |*/ LOCAL_TIMER_VECTOR; - if ( tdt_enabled ) { - lvtt_value &=3D (~APIC_TIMER_MODE_MASK); - lvtt_value |=3D APIC_TIMER_MODE_TSC_DEADLINE; + lvtt_value =3D APIC_TIMER_MODE_TSC_DEADLINE | LOCAL_TIMER_VECTOR; + apic_write(APIC_LVTT, lvtt_value); + + /* + * See Intel SDM: TSC-Deadline Mode chapter. In xAPIC mode, + * writing to the APIC LVTT and TSC_DEADLINE MSR isn't serialized. + * According to Intel, MFENCE can do the serialization here. + */ + asm volatile( "mfence" : : : "memory" ); + + return; } =20 + /* NB. Xen uses local APIC timer in one-shot mode. */ + lvtt_value =3D /*APIC_TIMER_MODE_PERIODIC |*/ LOCAL_TIMER_VECTOR; apic_write(APIC_LVTT, lvtt_value); =20 - /* - * See Intel SDM: TSC-Deadline Mode chapter. In xAPIC mode, - * writing to the APIC LVTT and TSC_DEADLINE MSR isn't serialized. - * According to Intel, MFENCE can do the serialization here. - */ - asm volatile( "mfence" : : : "memory" ); - tmp_value =3D apic_read(APIC_TDCR); apic_write(APIC_TDCR, tmp_value | APIC_TDR_DIV_1); =20 From nobody Wed May 15 13:06:30 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=1644830781; cv=pass; d=zohomail.com; s=zohoarc; b=MD8ppKm4StclxEBIr3hMB1WGc32flOcYgDs1QX+pLlMer9SFfTYo58ISWAJq3f+312dWtQbgGqsIsMGBUa6tAKjjaIxr4ELyzX38E7X2oCa/EwBbz/7pWkjTcq7uUJV0Sw00oVU2D+b0VL0FpGg+NCOpz1rkJKVBPuUqJw+4qac= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644830781; 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=UMb8XxBGQTglh7QS0g0uFzDDbX+ZM/GP4Y8wGvBBNIg=; b=BXDiHAfe1ZRMAYAU86L1WdPwQjGPnRS27dlwcyNrhlI22LzQZCKTIhcsfheBQPtInPhz0jv1YtIIJMkBxRk+tCiJIHiIiR7ANgKXQrM6k+Ph3XEk0fkXXxVhf6HE9MxHS17mboDkvSGtL3p1o6aGodcPwRr7F5MKErIj6QJP0NQ= 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 1644830781458727.6507274944914; Mon, 14 Feb 2022 01:26:21 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.271299.465708 (Exim 4.92) (envelope-from ) id 1nJXcP-0005Dn-Vy; Mon, 14 Feb 2022 09:26:01 +0000 Received: by outflank-mailman (output) from mailman id 271299.465708; Mon, 14 Feb 2022 09:26:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nJXcP-0005Dg-S3; Mon, 14 Feb 2022 09:26:01 +0000 Received: by outflank-mailman (input) for mailman id 271299; Mon, 14 Feb 2022 09:26:00 +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 1nJXcO-00043T-7o for xen-devel@lists.xenproject.org; Mon, 14 Feb 2022 09:26:00 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 1c6b6420-8d78-11ec-b215-9bbe72dcb22c; Mon, 14 Feb 2022 10:25:55 +0100 (CET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2107.outbound.protection.outlook.com [104.47.17.107]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-37-44xOc3-cNESaSOgGW-xH_Q-1; Mon, 14 Feb 2022 10:25:58 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by AM0PR04MB5522.eurprd04.prod.outlook.com (2603:10a6:208:116::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.18; Mon, 14 Feb 2022 09:25:56 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65%5]) with mapi id 15.20.4975.015; Mon, 14 Feb 2022 09:25:56 +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: 1c6b6420-8d78-11ec-b215-9bbe72dcb22c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1644830759; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UMb8XxBGQTglh7QS0g0uFzDDbX+ZM/GP4Y8wGvBBNIg=; b=mRdAclEOr//rEAsbA5nW6vo6WGZ2K0Mtmi0xj6pSgO5ovwU+SOeW2clKxIqetaZvEP+z07 0otW1HStR8JQWWyp/mWnAsrSS3oa3Bx0VaE5rkVuq/ZCw+OQtY1DVDTIv34Imyo0rbbNYW mFPRCjz/KEJWVBpMEejNqdSUYNGP1eA= X-MC-Unique: 44xOc3-cNESaSOgGW-xH_Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h2lIMcFN/Xk1/EWFHbeENn5NOo8ur8Q/hwxL9PUUxZsKWoUoumgCEC0USv578EU4oP6xtkfpVewigMenXqZ0oxNZXI+n3zH03r1HkEfGUCZzxHKqdw5cijhj6J4nvNkdK4mto6DFR4EtfRN8RFcuOshYK73Cgl+ohNY3TrUiuaTJSLBWQcspkmKHV6kbTtRjRxsauuU21U2Ok+fah3nOB8QqYDDuT69JEMOUZAbRfdsfa9aOhdoWEjt2l2bPTIqntb6SBV9aO+Fb7UeBeDvGdVyfYugtQi6vv7pjQYuRa770Ta6hsFwk12dD+vZZ4W37bLh01AHmWsvQpqecq90IgQ== 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=UMb8XxBGQTglh7QS0g0uFzDDbX+ZM/GP4Y8wGvBBNIg=; b=TUitKUC7TY2iXqruTsb5cNw8Z9W5KyyNJ7FYo71aedaQR+xlcqsAuGMyvfpx5H7ZkYPE7LTboLOHc6nVgPIAJzJstQfAn/i9401hDdxHLO01m+1g0T5ocJVyGe3i+wbPgKK8Ziy5lfHLUTpt5RUyTjh4be2h9gJcuyvcyS8oUYQmjW7MlQXP8g0nQBN+shcIqE0yKdOfcYGgM4VkAfkkaeaGnkrQx/AJ/g2qeQQA0wxC0VYgdYJ/rsSZ2SrjxobxVEnvB1WTh6HoStyyRJ3EWy0shUY3+7eTbP1WwtrGbxabQ10eLPuT1sam6d3LFACnmylPdbHDv4E+CxzDSaEdJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <123a9ae8-caab-01ae-5bea-8c590bd8f9d9@suse.com> Date: Mon, 14 Feb 2022 10:25:57 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.0 Subject: [PATCH v3 4/4] x86/APIC: make connections between seemingly arbitrary numbers 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: <35cb3c72-05ba-24c7-1fdd-3ee1aced3aec@suse.com> In-Reply-To: <35cb3c72-05ba-24c7-1fdd-3ee1aced3aec@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS9PR06CA0021.eurprd06.prod.outlook.com (2603:10a6:20b:462::27) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a71eb634-5e70-4ede-25e7-08d9ef9c010f X-MS-TrafficTypeDiagnostic: AM0PR04MB5522:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:913; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kswmukf+cs3lUe73hJqwM7zK573UjtjOyK3XOdlQncPof+NAghW8VsVwDhci2KFalTP8uKZTUQsrPLIXMhGmjb+dHn4JTSenENCVw1LhS/2+MaXjB2dghW6gWOBVIjLxlFP9BkTeOgihnVQyUdZyMZxQBWQQu0QTeUJ7Vn/KzWXlq7inGRY+3xn6SmMZ2zRA9ahh/HNPwj8o0YVsehdfsEQSPCzkrHlazzOzjUixmwKyKttP3HPEzujppX4AEcygrjIxK0rhLbLkySs3eqqyhnIj4Oj7CBHb4w5GDTyD00VI6pJUuFV8WbngmAuzr4SRQa6XFdC0fzSM1zjvUfN5OsXTDoEOTV5KQMm5pkfG++m3kRcLWX+Ak7H8jmecsveaI9eOXWqdCDjLFJglJsHO7i9Lp8JJUKXAeCVMUSTfjmrEFnmCihOsCn4ErYHOw+NRhMjslZtBCUUCroG5kRfM0SDbndKeAmoB34zVqZTXhqm8cegEHZCiJNivFBLiqPSgpchRX7aCM4sftH8af6ifHI4FUNW/rC6Y2JyIcyoiGIss4C+gd5FJlMZzsnmSkbowEolJwnFKY1Omzxum9vUYRMKAOK3qR4WQgaIBoffSzsQ2wBubqs53+xRTJ3YMCnSNSKoBsj5p/bLYOB9lx/TItAu/ZeTEuxpVdzZWM0i6Asd8SVAVOSWMA/qTdQiHf7E/uS+R7UWSz1qLSx/eaRc4WxeJvU0HVZsQHCvmPKJmWETXTJRhsa6U8hjG9uHrRLqK X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(66556008)(66946007)(8676002)(66476007)(4326008)(2616005)(2906002)(6506007)(38100700002)(8936002)(6512007)(5660300002)(6916009)(54906003)(83380400001)(186003)(26005)(31696002)(36756003)(6486002)(31686004)(86362001)(508600001)(316002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eHN1Q2htMTd1YitpalFCejJ3UDc2ZjBOYk5YSmgyWGY5bmdBS2V1c2Y2T3FY?= =?utf-8?B?LzdTc3FHWWlHTXFSeUJ1VGtnNm1acVlndmpiQlB1T2Fzdng2WTZTMWVvYkpq?= =?utf-8?B?enZ0TXErTlFxZEt5emtVeVBndlB1THJpMTBhTCtPZjNkS0l0a3hTTGZtREZy?= =?utf-8?B?MzV3Qlc5bVJ2U2s4K0ZTMnJKNVFIMktHT2dQbjZpUFFwR0JrTWVpcFMyTGRu?= =?utf-8?B?MlRWc0ZkelZJUEFOZ3ZlUEorVElrTE1tZWRsSndLbEsvdWpsVXRFbEp4K3VK?= =?utf-8?B?VzhnSzBTUHVZT00vYUFJSnlHTXVwRnlwSDJ2U1NWVXhiTytyMHBDOTFzdHFJ?= =?utf-8?B?ek0xT2wyNzk2Z0RnZDdqaHFxdlorc0xLRnVVRk9Da3htVVVnaE1KZEF1UHMy?= =?utf-8?B?d0wrZEs3VzZoZnNiSmhNc2s3RUl3S2Zkdy9haC9FU05SZ0R4SDI4Yko4Szg4?= =?utf-8?B?ejFpUmx6L1FHUW1lNm43NXBxbW5aYU9vaEdEL2M3aWZWZXEzcklIOVBqT2lu?= =?utf-8?B?U0syOHBWU092eURBNVF4NVVmcUxnbkVtRWRyRWFHQXdpY2lpdUdTRmRlMzFm?= =?utf-8?B?UDhvYWoyMzc2dG91eVl4dzhJdTJJNVBoaXFTcHNsQndXN3FuQ3dCN2dweVU2?= =?utf-8?B?RTEzNnl0eFRNQThEYVBqckFVU0ZRaHIzY3RoYnFZQzFqV0VKN1pzZXNIU3JY?= =?utf-8?B?U045NVpQbFA5aDJoR1NyYStEbmlRS2xIOENQWmQ1RE5vMEx2bWVSbXRzckdH?= =?utf-8?B?TjlId3F6Sys4UDRVRHN0NEU2Nm5weG96QWZTeTgrU3VzemxUVjNuejZLU01i?= =?utf-8?B?d2gxak5lOGZDS1dFNjZxRGVSK2ZPckhRcEhJOHFVNEYyVVk4R1g2S1lMM0FR?= =?utf-8?B?M2ZZQjJrWWNPd1c0R2hLdDhhVmNXU1QxMzVWdHZvMGdQbURpa2dUZFhFcFRC?= =?utf-8?B?TmZaOXZYN0svL0tzS0trQmVjNXIydlVqckZiUlkra0RHaStKbk9NVjhraXlj?= =?utf-8?B?eWZlSEZZY01RTUdSR3VtTktyLy9mMFpMZElEZ0ZqSlFIODlkb0w0eFNCNVY1?= =?utf-8?B?bTZBN3E4dDJCbEQ1VmRuc0lta0pFQ243SUE2Mllvd0pkeXR5UGsxZ2RjeDVw?= =?utf-8?B?N3lwZUxWRGZnR0lydk9kZW1nTVVIT3VPalptVElab2hnWk1PcFh4eVQ2dVVz?= =?utf-8?B?RDQzNE1YbGE4dnRweHNadHdFZWtyeFdVekVyUFk1R05uMmdYOTBkUFlhVXJp?= =?utf-8?B?bTR4OHRVZmY2bytydjlkWXFzcHlYdzlFWjFVOWNFOHliaFJuMmVhWlFrbzU4?= =?utf-8?B?Zm5sZGdrT3pRSUtFMFRZYkwraHRFNTlMaWV0NU1EOVJnb0tCdkE5eVhzam9p?= =?utf-8?B?TzQrRytmU2pSNmZ6d081RERYcXhpdnJoY1BjWUhLRWZ3bE0va0RwWXB4WXZT?= =?utf-8?B?RWJsMEJ3N2xRVUNiY1lEbHBOVW1ZSWtqYTl4QXcxUHJBYXdzaERpZWNZNXdk?= =?utf-8?B?aG00NDBEdVB6MFZLbksvRjRhU0Q1TlNiRzRFY2o1NEMreUdFRjFlcm84OTdJ?= =?utf-8?B?M1VhdHh5UVVMbjExd1p4MmpraFN2WmFOYTNkVmNscEFJZ2gyNVkyWnd1L0NX?= =?utf-8?B?OHZMc3I5cDFnWm9md0tWVlp2REp4VGlvS1RzemVvaDN2K2xUeVpLVUFBeFly?= =?utf-8?B?blBuTkRnLzVqcHRWbmRkVnlyd3pPZXdZTWlpdFNmYk1nOE05N3dQWld5SktW?= =?utf-8?B?VE02K3VMNkV4bGx4c2VLelVuQjhzY3ZTaFZZaUI5R3h3WGtGcGpVaXJqOEV5?= =?utf-8?B?V0FmWE16MGVlTnE2cjJKRjUyUnpxK1RVQ1BxL0JzeWF4VVdZeUlrejZEQUFX?= =?utf-8?B?UlRFbXFHUmRNQnkxU2ZhS0lDYUN5RVI5Q2w5Z2FsckhGUGMxeG5oU0N0Wng4?= =?utf-8?B?anFVMTdMbGtMVGVhY2kxd0hHSGhkRXg0NEl3ZE02clhwcnJRSjBwVVhTTFc0?= =?utf-8?B?ajkxM3ZnbVRBK1NRdzVYaG1BVHBmbms4MGI1ckxLS2RPdHJrNlNQTkNKYk5W?= =?utf-8?B?RXRPSm1MZ1NpRWx0Qmh4V24yelJycjJsR3F0OHJlYzVvYkZHOUxiZWZuamxG?= =?utf-8?B?S01weFdCVnFMbGpvSEJPWGxQZ00yOG01Z0l5ZmFSNEM4UlhGbkM3bGwza2VN?= =?utf-8?Q?o45Xs/x/i7IqzxoPOXjBp0w=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a71eb634-5e70-4ede-25e7-08d9ef9c010f X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2022 09:25:56.2592 (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: QfCXRqUmHuKmIHXDpbd9qz9DH02FHdx+3RNSlbt9rIpUkd6DuE2AhkmiXySJCj5LLuI3nWshpXgVQyUIFhTCGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5522 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1644830782029100001 Content-Type: text/plain; charset="utf-8" Making adjustments to arbitrarily chosen values shouldn't require auditing the code for possible derived numbers - such a change should be doable in a single place, having an effect on all code depending on that choice. For one make the TDCR write actually use APIC_DIVISOR. With the necessary mask constant introduced, also use that in vLAPIC code. While introducing the constant, drop APIC_TDR_DIV_TMBASE: The bit has been undefined in halfway recent SDM and PM versions. And then introduce a constant tying together the scale used when converting nanoseconds to bus clocks. No functional change intended. Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monn=C3=A9 --- I thought we have a generic "glue" macro, but I couldn't find one. Hence I'm (ab)using _AC(). --- v2: New. --- a/xen/arch/x86/apic.c +++ b/xen/arch/x86/apic.c @@ -1078,8 +1078,8 @@ static void __setup_APIC_LVTT(unsigned i lvtt_value =3D /*APIC_TIMER_MODE_PERIODIC |*/ LOCAL_TIMER_VECTOR; apic_write(APIC_LVTT, lvtt_value); =20 - tmp_value =3D apic_read(APIC_TDCR); - apic_write(APIC_TDCR, tmp_value | APIC_TDR_DIV_1); + tmp_value =3D apic_read(APIC_TDCR) & ~APIC_TDR_DIV_MASK; + apic_write(APIC_TDCR, tmp_value | _AC(APIC_TDR_DIV_, APIC_DIVISOR)); =20 apic_write(APIC_TMICT, clocks / APIC_DIVISOR); } @@ -1196,6 +1196,8 @@ static void __init check_deadline_errata * APIC irq that way. */ =20 +#define BUS_SCALE_SHIFT 18 + static void __init calibrate_APIC_clock(void) { unsigned long bus_freq; /* KAF: pointer-size avoids compile warns. */ @@ -1249,8 +1251,8 @@ static void __init calibrate_APIC_clock( /* set up multipliers for accurate timer code */ bus_cycle =3D 1000000000000UL / bus_freq; /* in pico seconds */ bus_cycle +=3D (1000000000000UL % bus_freq) * 2 > bus_freq; - bus_scale =3D (1000*262144)/bus_cycle; - bus_scale +=3D ((1000 * 262144) % bus_cycle) * 2 > bus_cycle; + bus_scale =3D (1000 << BUS_SCALE_SHIFT) / bus_cycle; + bus_scale +=3D ((1000 << BUS_SCALE_SHIFT) % bus_cycle) * 2 > bus_cycle; =20 apic_printk(APIC_VERBOSE, "..... bus_scale =3D %#x\n", bus_scale); /* reset APIC to zero timeout value */ @@ -1337,7 +1339,8 @@ int reprogram_timer(s_time_t timeout) } =20 if ( timeout && ((expire =3D timeout - NOW()) > 0) ) - apic_tmict =3D min_t(u64, (bus_scale * expire) >> 18, UINT_MAX); + apic_tmict =3D min_t(uint64_t, (bus_scale * expire) >> BUS_SCALE_S= HIFT, + UINT32_MAX); =20 apic_write(APIC_TMICT, (unsigned long)apic_tmict); =20 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -580,7 +580,7 @@ static uint32_t vlapic_get_tmcct(const s static void vlapic_set_tdcr(struct vlapic *vlapic, unsigned int val) { /* Only bits 0, 1 and 3 are settable; others are MBZ. */ - val &=3D 0xb; + val &=3D APIC_TDR_DIV_MASK; vlapic_set_reg(vlapic, APIC_TDCR, val); =20 /* Update the demangled hw.timer_divisor. */ @@ -887,7 +887,7 @@ void vlapic_reg_write(struct vcpu *v, un { uint32_t current_divisor =3D vlapic->hw.timer_divisor; =20 - vlapic_set_tdcr(vlapic, val & 0xb); + vlapic_set_tdcr(vlapic, val); =20 vlapic_update_timer(vlapic, vlapic_get_reg(vlapic, APIC_LVTT), fal= se, current_divisor); @@ -1019,7 +1019,7 @@ int guest_wrmsr_x2apic(struct vcpu *v, u break; =20 case APIC_TDCR: - if ( msr_content & ~APIC_TDR_DIV_1 ) + if ( msr_content & ~APIC_TDR_DIV_MASK ) return X86EMUL_EXCEPTION; break; =20 --- a/xen/arch/x86/include/asm/apicdef.h +++ b/xen/arch/x86/include/asm/apicdef.h @@ -106,7 +106,7 @@ #define APIC_TMICT 0x380 #define APIC_TMCCT 0x390 #define APIC_TDCR 0x3E0 -#define APIC_TDR_DIV_TMBASE (1<<2) +#define APIC_TDR_DIV_MASK 0xB #define APIC_TDR_DIV_1 0xB #define APIC_TDR_DIV_2 0x0 #define APIC_TDR_DIV_4 0x1