Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp158937pxk; Wed, 9 Sep 2020 01:43:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZ9im0cDsmfG5Khi2+DVH7yNTtyClATjdlh8LDOBj7ZnmxtL6Vhgx74oZwtzazXk2OVAVC X-Received: by 2002:a05:6402:44e:: with SMTP id p14mr3071188edw.1.1599640987411; Wed, 09 Sep 2020 01:43:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599640987; cv=none; d=google.com; s=arc-20160816; b=xjQ1Q6Va2oCQWHf+A/JNFWc3NJDY7q2yGtU/77X7RGyC46tSFBJRdhnWyIfqxe1nxR xuGhIq0g1jwEL6ec40D/qeW50qrZLnsxziqlY0udVj2M7IcKO0W8NFm1qubSBrjSCE7C eBlG1dF6lgVKdshdpUDoC5AFVaoj5Cdmy3vYFpclrYwzWkJCzbB4m7zCnSwvuWz/IA5q +K2b1oDtXb9bLFs2XxoXaNayDajAAO5H8d5gv7uIl8/RAKqA4wCJ6dmpD69hA7gd9rXf Q0otbRcSSuBeolwKO3cjItulrw/cABKMpis7wjAjHUx2bctIHG/rvD046qip6iD6HZCQ naVg== 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=VXHXXV715sJGvUd4gjnShEaVrmyYwXRLuNaJb8O8w9Y=; b=xKcR+cAvcrAp7tXBKSn058tk9MC4IZ/NM/+aTn0fMI+b/ac8MAj3miebqJgw2jIgrk qV5nqbTibMx7lINbhvot8JunhQNhE+qXBTwL145yNP5XkYUSroQ5nE7Juuo0NkG1E36z Y+A5Y1Yf7HY8koa2WsQTD3piwqpOig2An6ATBD406jVUEV6QB+pkld5fGR0LL/qRdFTV 9StZwcVtLYR7RDibKDHBysha5WrxLOpoBQNfdrr36Qes70Pj5HULPwMHuvJRo4soGXyf 9UsSjIRun27yPnvZtokFG63wUwYMCfn9JPdVoWEpzqZzuZTKsQrDl/EeBTWFygjQyRhl 6Vlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GCxfoG85; 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 t12si969991ejj.713.2020.09.09.01.42.44; Wed, 09 Sep 2020 01:43:07 -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=GCxfoG85; 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 S1727893AbgIIIl5 (ORCPT + 99 others); Wed, 9 Sep 2020 04:41:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40556 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725984AbgIIIlz (ORCPT ); Wed, 9 Sep 2020 04:41:55 -0400 Received: from mail-ot1-x344.google.com (mail-ot1-x344.google.com [IPv6:2607:f8b0:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 62399C061573; Wed, 9 Sep 2020 01:41:55 -0700 (PDT) Received: by mail-ot1-x344.google.com with SMTP id g10so1614074otq.9; Wed, 09 Sep 2020 01:41:55 -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=VXHXXV715sJGvUd4gjnShEaVrmyYwXRLuNaJb8O8w9Y=; b=GCxfoG85fPs+aC2goM6GRmpl9a0HZJlzmp22qMa6XqflGM2Y6etiGlEODS++mRNXtX mrPSot5h/upKBw5pz6rsf59r90lS9QdsqGEwcdY7s0tZ3UPQ/BIJzwGOivmFhnn2ZG6e RLLczMN++oMR0rlKZD+T4FdM6dU90Cb/DSpdo+JaBk0pp35KSvse1gBwYbYzZ/0pywPv zaGEvnTlAOXirNCtQPgEmxyX52UMGpHtnb+0S1AMBhyZuvl5U7f6Jzf/LLJvfyH4ghFv XNeSo23ecZWs5cHeGLj1JsLt5udTJyCZZWTfkQGrNLjpSzSVGqHOHWBW7l76yKOeRIWy M9iw== 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=VXHXXV715sJGvUd4gjnShEaVrmyYwXRLuNaJb8O8w9Y=; b=hO0l4HRYWMuQZ5Wyw2Isig8vVmyXtIk3CWaXheF4k+KIhO7FKqrEAm8NdydQwUBS9R iQPYLIX1Cik/M3GHARLFcEngkAjsX8CL2oXAbWHweUyRg+YgrKrDeajLJQyQ+x5Xt36V dqRrh2UhskWvZmRaLxkm1eKHtgj2sB0H8sHiAIX89IknQrT0HoPeWrqyCiPLeoA7CEq1 lIhwEvfPsiVSWMYNyThdb3uPJapq3rt2N7X8/vRCleJe2qVXGy6wEh5VZ4Dakfn3ngb4 8um3LDI4S0falFDP7C59Yn5glxSIQca1oxIETiWUzadWc00bvF1YS3ZyHe03ggtWurq4 0ebA== X-Gm-Message-State: AOAM530JHoa/VkkaBNIeK+O9J6eNdRYeqG8UngwuvbtybWWbbn4oA3cP ie2RHszo1rNX6Yx/P3lmkFIHeUBOeng7wASXAhkSQYig X-Received: by 2002:a9d:c44:: with SMTP id 62mr2273269otr.185.1599640914398; Wed, 09 Sep 2020 01:41:54 -0700 (PDT) MIME-Version: 1.0 References: <1597827327-25055-1-git-send-email-wanpengli@tencent.com> In-Reply-To: <1597827327-25055-1-git-send-email-wanpengli@tencent.com> From: Wanpeng Li Date: Wed, 9 Sep 2020 16:41:43 +0800 Message-ID: Subject: Re: [PATCH 1/2] KVM: LAPIC: Fix updating DFR missing apic map recalculation To: LKML , kvm Cc: Paolo Bonzini , Sean Christopherson , Vitaly Kuznetsov , 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 Any Reviewed-by for these two patches? :) On Wed, 19 Aug 2020 at 16:55, Wanpeng Li wrote: > > From: Wanpeng Li > > There is missing apic map recalculation after updating DFR, if it is > INIT RESET, in x2apic mode, local apic is software enabled before. > This patch fix it by introducing the function kvm_apic_set_dfr() to > be called in INIT RESET handling path. > > Signed-off-by: Wanpeng Li > --- > arch/x86/kvm/lapic.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c > index 5ccbee7..248095a 100644 > --- a/arch/x86/kvm/lapic.c > +++ b/arch/x86/kvm/lapic.c > @@ -310,6 +310,12 @@ static inline void kvm_apic_set_ldr(struct kvm_lapic *apic, u32 id) > atomic_set_release(&apic->vcpu->kvm->arch.apic_map_dirty, DIRTY); > } > > +static inline void kvm_apic_set_dfr(struct kvm_lapic *apic, u32 val) > +{ > + kvm_lapic_set_reg(apic, APIC_DFR, val); > + atomic_set_release(&apic->vcpu->kvm->arch.apic_map_dirty, DIRTY); > +} > + > static inline u32 kvm_apic_calc_x2apic_ldr(u32 id) > { > return ((id >> 4) << 16) | (1 << (id & 0xf)); > @@ -1984,10 +1990,9 @@ int kvm_lapic_reg_write(struct kvm_lapic *apic, u32 reg, u32 val) > break; > > case APIC_DFR: > - if (!apic_x2apic_mode(apic)) { > - kvm_lapic_set_reg(apic, APIC_DFR, val | 0x0FFFFFFF); > - atomic_set_release(&apic->vcpu->kvm->arch.apic_map_dirty, DIRTY); > - } else > + if (!apic_x2apic_mode(apic)) > + kvm_apic_set_dfr(apic, val | 0x0FFFFFFF); > + else > ret = 1; > break; > > @@ -2303,7 +2308,7 @@ void kvm_lapic_reset(struct kvm_vcpu *vcpu, bool init_event) > SET_APIC_DELIVERY_MODE(0, APIC_MODE_EXTINT)); > apic_manage_nmi_watchdog(apic, kvm_lapic_get_reg(apic, APIC_LVT0)); > > - kvm_lapic_set_reg(apic, APIC_DFR, 0xffffffffU); > + kvm_apic_set_dfr(apic, 0xffffffffU); > apic_set_spiv(apic, 0xff); > kvm_lapic_set_reg(apic, APIC_TASKPRI, 0); > if (!apic_x2apic_mode(apic)) > -- > 2.7.4 >