Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp11775297ybi; Thu, 25 Jul 2019 23:18:34 -0700 (PDT) X-Google-Smtp-Source: APXvYqw7y7c4E7gv3XFN+3982bujoE/iz291XgEmE8XYVHdx7EfiXu5WKYB2GKeO8gTa+d/xPJze X-Received: by 2002:a65:4189:: with SMTP id a9mr62966300pgq.399.1564121914188; Thu, 25 Jul 2019 23:18:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564121914; cv=none; d=google.com; s=arc-20160816; b=p3ax68weX2apfny05jL8WV4RD/3bvI3B7alWx+V/9TogwB/0/AzcKXQLLaAplE3C7v sxdmJ9AKWEghBiq0geI/oCsmmfCP6CvVPsk+GdAUSXzySqhfo7fPFNAqrNlyK4Kty0hD mZujkJSriZgeHvtrXo9cVfcXm8/qUS5FmgMVcXsxqB9G4zxEU5T0a8PcjY5XHk+C29Iu d54zhUE9c6Rh8D9gYTtJZ9/fASH0FWFmLTyOMJc7PMXUD1n5zRhuGE9goGy90yy35g3S jQqDGjb3v61aFj1UMT78vvyNbS6JmPxClKj716tIEfJ3NLyB45kH0TH9ogGedGCXMHIt zitw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=bWhcVowPDp5hww55kUYR42YNfTJnzOgRCOisQOx0g5s=; b=E4x6kCKTUWtSKedmj6ntXRlqhOWzN2vubokBqPXNz6a4c4kqbbxuOtvAsDFWOXl2lw h/EwLqxKIzmQ/a18WF8Bp2JMqQzH1tT2FBU0xv/KuuKeSiKCevQubmKT/ycV0RySlnZm B2+LHN1HP6qmaEEHM+NCo5Wq6LL4bpg+W+Svgx5ATGdqpMsRjP/pVno/aHIJo2axS2Va n+ZDqaG8OwAbohJ1hCapEl90fESHG+Y6Lw36XywaXrqzaB8fQGwEmqKv+7V6mEFzBRPS T8C7ARL5qDhqlnZe7ADfvthUKYlIcmvoZ7K/abGBAWEmcJvj1i8hA3Y5XvyWBT0zLeF6 A+bA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=i41rX2aT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id b8si12720613pgn.56.2019.07.25.23.18.19; Thu, 25 Jul 2019 23:18:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=i41rX2aT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1726124AbfGZGQ0 (ORCPT + 99 others); Fri, 26 Jul 2019 02:16:26 -0400 Received: from mail-oi1-f196.google.com ([209.85.167.196]:35080 "EHLO mail-oi1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726067AbfGZGQ0 (ORCPT ); Fri, 26 Jul 2019 02:16:26 -0400 Received: by mail-oi1-f196.google.com with SMTP id a127so39463539oii.2; Thu, 25 Jul 2019 23:16:25 -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:content-transfer-encoding; bh=bWhcVowPDp5hww55kUYR42YNfTJnzOgRCOisQOx0g5s=; b=i41rX2aTdMFTYSrfy9XMiDfTAIJm9h+bgaZvpHOA+SPg5d99/C6dHyeIHGk4KCaFao 1ZT0D+D/IfrwH7O71FkAmavofjcNhTJ0YKNBuDDhZv0qNpJpINrcfSkkm6e5h15s9szf YCyDULz2DXMccGSxgq2b9QxyUHkpv332Cj2p8VhQ69hzN43eh/DQ+84B40Ura4Mp+qeD bvLUd02WctRRazTQTAXJWVTIDcMmki7PSnrFyUtoBUqv4VuxksraAPZIgGWBbbfbuJOL TQINF1j2AP7/dvKVhVotnu6NQvxYhAAMka/da0whexdPPT1HSgpo2ebJtLOiz9qJpCfV /QYQ== 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:content-transfer-encoding; bh=bWhcVowPDp5hww55kUYR42YNfTJnzOgRCOisQOx0g5s=; b=Rr9YXPLXxNU6SSIkVPpB0XDtTdmNSN6k3SMhxinDILmSfME39LPOuNb+J5ofE5jOYq ACOKtuOkzV2eMKR+EBR1Ph54tYQflEIHSCIw30PdQrLBcpm9gHlIOWRFQRxp1yMNJWcM KDluPchFB+W0z9jU0rH9oRv7zrTDlIpJihHb+taOcH0mtIumyG2nah8H9l59OppYwzx5 XrwQ0nJb5afNREHJZ4TP3Fr/0aPV98zQXRvT71EQb/k58aWtHMtPUw9qKUwh+m88JLkz IxhSoOojGUwmhjRBUtnGUip76WxYiVPv2zQukd/bt1IABC+LVEW5jyVnMwzoiZP+FKBA fGPQ== X-Gm-Message-State: APjAAAUXlL+8Oc+NSXmlkJD+DQWZGbVR40DjPWnoO18GsgWQgZvbhLHu MdLh8sGfl30JIkeccU73LN3ENzewpVYlL1aieYPnRADn X-Received: by 2002:aca:3dd7:: with SMTP id k206mr41464700oia.47.1564121784919; Thu, 25 Jul 2019 23:16:24 -0700 (PDT) MIME-Version: 1.0 References: <1564121417-29375-1-git-send-email-wanpengli@tencent.com> In-Reply-To: <1564121417-29375-1-git-send-email-wanpengli@tencent.com> From: Wanpeng Li Date: Fri, 26 Jul 2019 14:16:11 +0800 Message-ID: Subject: Re: [PATCH] KVM: X86: Use IPI shorthands in kvm guest when support To: LKML , kvm Cc: Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Thomas Gleixner , Sean Christopherson , Nadav Amit Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 26 Jul 2019 at 14:10, Wanpeng Li wrote: > > From: Wanpeng Li > > IPI shorthand is supported now by linux apic/x2apic driver, switch to > IPI shorthand for all excluding self and all including self destination > shorthand in kvm guest, to avoid splitting the target mask into serveral > PV IPI hypercalls. > > Cc: Thomas Gleixner > Cc: Paolo Bonzini > Cc: Radim Kr=C4=8Dm=C3=A1=C5=99 > Cc: Sean Christopherson > Cc: Nadav Amit > Signed-off-by: Wanpeng Li > --- > Note: rebase against tip tree's x86/apic branch > > arch/x86/kernel/kvm.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c > index b7f34fe..87b73b8 100644 > --- a/arch/x86/kernel/kvm.c > +++ b/arch/x86/kernel/kvm.c > @@ -34,7 +34,9 @@ > #include > #include > > +static struct apic orig_apic; > static int kvmapf =3D 1; > +DECLARE_STATIC_KEY_FALSE(apic_use_ipi_shorthand); > > static int __init parse_no_kvmapf(char *arg) > { > @@ -507,12 +509,18 @@ static void kvm_send_ipi_mask_allbutself(const stru= ct cpumask *mask, int vector) > > static void kvm_send_ipi_allbutself(int vector) > { > - kvm_send_ipi_mask_allbutself(cpu_online_mask, vector); > + if (static_branch_likely(&apic_use_ipi_shorthand)) > + orig_apic.send_IPI_allbutself(vector); > + else > + kvm_send_ipi_mask_allbutself(cpu_online_mask, vector); > } > > static void kvm_send_ipi_all(int vector) > { > - __send_ipi_mask(cpu_online_mask, vector); > + if (static_branch_likely(&apic_use_ipi_shorthand)) > + orig_apic.send_IPI_allbutself(vector); Make a mistake here, just resend the patch. > + else > + __send_ipi_mask(cpu_online_mask, vector); > } > > /* > @@ -520,6 +528,8 @@ static void kvm_send_ipi_all(int vector) > */ > static void kvm_setup_pv_ipi(void) > { > + orig_apic =3D *apic; > + > apic->send_IPI_mask =3D kvm_send_ipi_mask; > apic->send_IPI_mask_allbutself =3D kvm_send_ipi_mask_allbutself; > apic->send_IPI_allbutself =3D kvm_send_ipi_allbutself; > -- > 2.7.4 >