Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp26571rda; Fri, 20 Oct 2023 19:01:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHEaggY+MykSC2bFaI33uTqKbf4TPCRrG5VdIVbgVEsnV/wv1+3H6Ho+Y5+95WHDX1x3fue X-Received: by 2002:a05:6358:7f0e:b0:143:21e8:11f2 with SMTP id p14-20020a0563587f0e00b0014321e811f2mr3420665rwn.11.1697853661383; Fri, 20 Oct 2023 19:01:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697853661; cv=none; d=google.com; s=arc-20160816; b=LaOOrFHY+g8JxlK4nF02BOEtesuL/znOtchryzjYfYU0rpzLmbqsJHBNuL1TAigNAU 6V1bAi0BCTEHQG0CPTtwMsohwBgJTfH8EudBj6bgywcbxSnR4chhxeGynKGlvp2/S5GB JPwTl8JgMU8lNJQkrZRRFJAbZsiiJSBH/kxvk0qOoXGqAWpK/qprBGLpdYtmMGyu9KZD 5Wl0ItsdwkG48NuqqYUAUvsgLgH+O0eqDxIFgcRJokKluh0nndGAF8TQwAFriI4+vTIc 3lhnbhAlf2EXuYzgeJ5iDW7JUlK/gtY3DjQq0cfvyZa4wpxq675mTcL7D0RMDiq/a4PA wjVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=JH5LtROyHsoyvdQlfciX/YIIP+g5BUcp9Wprz46IPng=; fh=XPmmb8Az/ejEwKw3TFCld02ZAUAMWp35HAjHEQQVCFA=; b=cMRfRpCU3uD5TZnVCHAOrM4Ify7gg9VX+HYVdn2EqJguVdwBJWlbYCiYV2eBzPhteZ tDS0QaxMQNCVNkxOSvHLxJQIRJalYTq0w/g3XfCEi6VQDGWOGHqnkVu2JHTw4RJfDuqP LxLh/CLUzavj2f8Tz5qjc3ByTAM/Sl9IcTfKRfPTMvVdlZJl4kA+H6wtLK2YxtiOprj9 d36qyZzcnLDtU/67n2pH94LvU8NHqakzUMjwzU09h8+Xd8c2HWJKw/D5HiCTGnoMphH/ gEaHn0ZysrVMAXdJeyYgxzMgahhjKtmXudn9DntTZYRFW4HfAxCjTlFD9L3zmGs9eicA cmEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=Ru1zx9w1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id n3-20020a6546c3000000b0056b024a4dd0si2663023pgr.614.2023.10.20.19.01.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 19:01:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=Ru1zx9w1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id EF13482A59AD; Fri, 20 Oct 2023 19:00:58 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230243AbjJUBzN (ORCPT + 99 others); Fri, 20 Oct 2023 21:55:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34602 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229500AbjJUBzN (ORCPT ); Fri, 20 Oct 2023 21:55:13 -0400 Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C245D71 for ; Fri, 20 Oct 2023 18:55:11 -0700 (PDT) Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-533d31a8523so2041983a12.1 for ; Fri, 20 Oct 2023 18:55:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1697853309; x=1698458109; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=JH5LtROyHsoyvdQlfciX/YIIP+g5BUcp9Wprz46IPng=; b=Ru1zx9w1F7KCDav6hXCQsvCa2gKz7T/xUIxQ8G6yNVAcQbtjkbbZm78mhrwVpoNHqG 2w24h7ZO2qMwIE+uD6P1qDZpHl/wAutGwRqeROhc6FjH3CeeBjRPZe0+PK9lEBWZoEci azuaAi2FeHYuFUGoejPt8tIQSiLkQbpd6Zb+B1WRS7sx9QafjtfYtuOpFATyM+KhKQlT KRf3gEhTIkUo9LAzSl+LMvo9PQS8JN8NgmM2BNz1mY1C9C7ukMv0pz4iew67mXDWUl0E ZmiG9yr95ZKOCSmC2yEIctOXshqWmcpdPHWwR2VaflKGJTn4J6TNVpprIkjEHZfyPFCd atig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697853309; x=1698458109; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JH5LtROyHsoyvdQlfciX/YIIP+g5BUcp9Wprz46IPng=; b=pv+Jv63AgUBFP87BS6WnO+DhJG2opADm5+YZVpGcCGTt3ZvbP/4hF5nIC4MDKt6XYX 9vE1hRe13rQ5M1DX2aa1Ku7QA4Yy9q71xW5fn0gtyhpeGtzjSfU3zBerFeRjY53/k8Jd l1zc30PXuLIhp5h/08O8shhouB5FAdfVbL6ZyEWTJtWI65XZZSILuHaAt2wvRrODYjJa yigzjARaBvO+yd/VwhZzUcu+uXawdIHvkGukFZaARDDFCpJhMpiIDXFSB/wSahDTJy3I Q+tmdVZUJ4SdvXEoxfQ6qm8dMqN8pBQooX0fA8onzIbc/ND6Pmaz+IL8Y+99DF+gU/DB ZD6w== X-Gm-Message-State: AOJu0Yx/NkP1d7lmEwFsxzNjBxctHz60noEe9zQW6F2RR23kue2BrINJ x5N/3Ce68s0u2kcZXfQo6Of2hQjJapV87b1aM3zjZg== X-Received: by 2002:a17:907:9282:b0:9ae:5120:5147 with SMTP id bw2-20020a170907928200b009ae51205147mr2467893ejc.38.1697853309282; Fri, 20 Oct 2023 18:55:09 -0700 (PDT) MIME-Version: 1.0 References: <20231006011255.4163884-1-vannapurve@google.com> In-Reply-To: From: Vishal Annapurve Date: Sat, 21 Oct 2023 07:24:55 +0530 Message-ID: Subject: Re: [PATCH] x86/tdx: Override the tsc calibration for TDX VMs To: Sean Christopherson Cc: "Kirill A. Shutemov" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , Peter Zijlstra , Jun Nakajima , Isaku Yamahata , Erdem Aktas , Sagi Shahar , Nikolay Borisov , "Jason A. Donenfeld" , Kuppuswamy Sathyanarayanan , "H. Peter Anvin" , x86@kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Fri, 20 Oct 2023 19:00:59 -0700 (PDT) On Sat, Oct 14, 2023 at 4:32=E2=80=AFAM Sean Christopherson wrote: > > On Fri, Oct 13, 2023, Sean Christopherson wrote: > > On Fri, Oct 06, 2023, Vishal Annapurve wrote: > > > TSC calibration for native execution gets the TSC frequency from CPUI= D, > > > but also ends up setting lapic_timer_period. When using oneshot mode > > > with lapic timer, predefined value of lapic_timer_period causes lapic > > > timer calibration to be skipped with wrong multipliers set for lapic > > > timer. > > > > > > To avoid this issue, override the TSC calibration step for TDX VMs to > > > just calculate the TSC frequency using cpuid values. > > > > This is a hack to workaround a KVM TDX bug. Per Intel's SDM: > > > > The APIC timer frequency will be the processor=E2=80=99s bus clock or= core crystal > > clock frequency (when TSC/core crystal clock ratio is enumerated in C= PUID > > leaf 0x15) divided by the value specified in the divide configuration= register. > > > > TDX hardcodes the core crystal frequency to 25Mhz, whereas KVM hardcode= s the APIC > > bus frequency to 1Ghz. Upstream KVM's *current* behavior is fine, beca= use KVM > > doesn't advertise support for CPUID 0x15, i.e. doesn't announce to host= userspace > > that it's safe to expose CPUID 0x15 to the guest. Because TDX makes ex= posing > > CPUID 0x15 mandatory, KVM needs to be taught to correctly emulate the g= uest's > > APIC bus frequency, a.k.a. the TDX guest core crystal frequency of 25Mh= z. > > Ack, makes sense to pursue this fix from the KVM TDX side instead of guest changes as per your suggestion. > > > > I.e. tmict_to_ns() needs to replace APIC_BUS_CYCLE_NS with some math th= at makes > > the guest's APIC timer actually run at 25Mhz given whatever the host AP= IC bus > > runs at. > > > > static inline u64 tmict_to_ns(struct kvm_lapic *apic, u32 tmict) > > { > > return (u64)tmict * APIC_BUS_CYCLE_NS * (u64)apic->divide_count; > > } >