Received: by 2002:a25:ca44:0:0:0:0:0 with SMTP id a65csp739884ybg; Sun, 26 Jul 2020 20:32:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyMiMZ8aORFv56jbNxjzEUDY9OEYQnwTamA6dELeUIavA7sGGZTpnrVyPw8NLr3BtIj+1Gp X-Received: by 2002:a17:906:748:: with SMTP id z8mr19720715ejb.257.1595820750381; Sun, 26 Jul 2020 20:32:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595820750; cv=none; d=google.com; s=arc-20160816; b=oh6vjlVoAoudVC8VpcpYtE2XClqV15vjdPsBG10oj5a12YpLU/dDpMOQrAul8LIIx2 d4wi7Av9m3Q5SiuDYJNgUOdDIx9sLA5EkZTXW0689c/XL0ihOyBpgfhUmf7NBxJJg0YT q5YiR5uCdzexbSry6vEEgQZMHZLgrmZ3bR4VQCsB6J0cwzgbGlsHY7dgExZez2ZI/vgJ 8dfsW2Tymk+CUMTkClOgrCQLLjmewd2mSSw6560+UlyOnbdv3/xd0SVZP1saYdnoDg6E uyfMr7/wY92dP4jcjRkIe/laXkF6IzGckFVpU8GECgnBk83giLk62FtnysWLf4uMbG3i sMsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=6yKlaBSWRYtFbLh+hPRBH7MDAZ6KKac4QvWCCFjrjmc=; b=aLJOdCgQlXNS+O86n1xavQtP1fPSXtNQc4PuH4RdGohW8Z0h/3wibQgZg6EsmyHnaI fT8hDpGCFfQ62139vAYOXjqdiEHQIFTA4kHWqIhe9Vw45xRDydUWB4Aao/XkjxeapB/3 eZAiVm5JU4Huoie5oPF4kcfO1MJR6t9o/XgsBhTYeebLO8Qr3kTUkfcy0G+HZgy3yJSS EOT+9Oed18Iywvs8YwkczCx42ewNMrXA4WSzRHfRsoSvc1Bt9Xv0FqzysDYQU9Q1G9zK 7T7e2GF48uc4CWsbKTT7IKZriGPoj5fec3S5G2LSwDuAIs3dIsSxr1Tb175hw0NxdO/a Mgaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ms3HKQCx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id qt10si5181562ejb.466.2020.07.26.20.32.07; Sun, 26 Jul 2020 20:32:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ms3HKQCx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726769AbgG0D3Y (ORCPT + 99 others); Sun, 26 Jul 2020 23:29:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48812 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726044AbgG0D3X (ORCPT ); Sun, 26 Jul 2020 23:29:23 -0400 Received: from mail-oi1-x243.google.com (mail-oi1-x243.google.com [IPv6:2607:f8b0:4864:20::243]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 898CDC0619D2; Sun, 26 Jul 2020 20:29:23 -0700 (PDT) Received: by mail-oi1-x243.google.com with SMTP id l84so634324oig.10; Sun, 26 Jul 2020 20:29:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=6yKlaBSWRYtFbLh+hPRBH7MDAZ6KKac4QvWCCFjrjmc=; b=ms3HKQCxFeS2AOUxLb5rlSA4Cr3sUD6ZWFpPB4bwt5e+bRRQBpUss2l3sKiJxk2IYl UdVZoZKqqY3b24VA6Pa9x3G1QgCy5f8wWV6CpeQq+C7odFoVVLZzSuXo2o3pJg4EYts2 TWx3NWJjygf5JpIbqptGnJm/+V7cxABWdUgcgrtH/+aI6YyPr4hR7ZzsREveSyjAQSrd DqntnFktk+NhjxkPl9tygrM3b3LdxgY7pGznp5a/eKh8SmZeol71I98mooapptjeWdV9 bt/3V1huVjdXsuOkYUPmsdXK+lr1vQMymEGmBZKorcAtKL5ujtDw5KIzYX+tOcSwf85I UFHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=6yKlaBSWRYtFbLh+hPRBH7MDAZ6KKac4QvWCCFjrjmc=; b=c5/CeXpB3tYeBHPR88zzgn4PcrzMwVdcfgUsfffLGnL+POvgmLkEaBqT5IepDsfqyC y+1XRd6dz8plJGMqMY68uDRRScaIb+nw7L0CEP3qgRLEfaRIyeQ2b7O+ZiwE4dFdRgfV v2VsUPCeC1LH71jMjIIpqLHzpZPTVdJSskcid30Pnu7FzweIJ+GWuCIWF284G5VrpQ5Z nNHLB4EL5lpQDy14Zzj3VHGAeXhSUqGQwIerbnq1p1wnn1mPv7+p9BgIA4h+u0Hj33Af 1M0Y+OqsSPRgfsRQRkC+I4VS2I+Yr4N/BvSzG7jH8cONOHajwRMPL1R0Pdm09PkYrijM n+eQ== X-Gm-Message-State: AOAM532LiNOxzd1qRTOUyN+hHYWd+KGdJzVnClyk6hFeuyaxSbVu/7Zr E4YB4cz7kcB5qJxbZtLKdGV8b0JWhCarhagmgC0= X-Received: by 2002:aca:5842:: with SMTP id m63mr17024204oib.5.1595820562707; Sun, 26 Jul 2020 20:29:22 -0700 (PDT) MIME-Version: 1.0 References: <1595323468-4380-1-git-send-email-wanpengli@tencent.com> <1595323468-4380-2-git-send-email-wanpengli@tencent.com> <87lfjdp2dd.fsf@vitty.brq.redhat.com> In-Reply-To: <87lfjdp2dd.fsf@vitty.brq.redhat.com> From: Wanpeng Li Date: Mon, 27 Jul 2020 11:29:11 +0800 Message-ID: Subject: Re: [PATCH 2/2] KVM: LAPIC: Set the TDCR settable bits To: Vitaly Kuznetsov Cc: LKML , kvm , Paolo Bonzini , Sean Christopherson , Wanpeng Li , Jim Mattson , Joerg Roedel Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 21 Jul 2020 at 18:51, Vitaly Kuznetsov wrote: > > Wanpeng Li writes: > > > From: Wanpeng Li > > > > Only bits 0, 1, and 3 are settable, others are reserved for APIC_TDCR. > > Let's record the settable value in the virtual apic page. > > > > Signed-off-by: Wanpeng Li > > --- > > arch/x86/kvm/lapic.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c > > index 4ce2ddd..8f7a14d 100644 > > --- a/arch/x86/kvm/lapic.c > > +++ b/arch/x86/kvm/lapic.c > > @@ -2068,7 +2068,7 @@ int kvm_lapic_reg_write(struct kvm_lapic *apic, u32 reg, u32 val) > > case APIC_TDCR: { > > uint32_t old_divisor = apic->divide_count; > > > > - kvm_lapic_set_reg(apic, APIC_TDCR, val); > > + kvm_lapic_set_reg(apic, APIC_TDCR, val & 0xb); > > update_divide_count(apic); > > if (apic->divide_count != old_divisor && > > apic->lapic_timer.period) { > > AFAIU bit 2 should be 0 and other upper bits are reserved. Checking on > bare hardware, > > # wrmsr 0x83e 0xb > # rdmsr 0x83e > b > # wrmsr 0x83e 0xc > wrmsr: CPU 0 cannot set MSR 0x0000083e to 0x000000000000000c > # rdmsr 0x83e > b > > Shouldn't we fail the write in case (val & ~0xb) ? Sorry for the late response since I just come back from vacation. I can remove the "others are reserved" in patch description for the next version. It is a little different between Intel and AMD, Intel's bit 2 is 0 and AMD is reserved. On bare-metal, Intel will refuse to set APIC_TDCR once bits except 0, 1, 3 are setting, however, AMD will accept bits 0, 1, 3 and ignore other bits setting as patch does. Before the patch, we can get back anything what we set to the APIC_TDCR, this patch improves it. Wanpeng