Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp1734739imm; Sat, 30 Jun 2018 03:06:26 -0700 (PDT) X-Google-Smtp-Source: ADUXVKISvk7YSsb+9+TNU94luW99HRLybMI4vAXO5a97ZUqLjSI7d66G/Djtf0TnSArLnnHhiWuY X-Received: by 2002:a63:b305:: with SMTP id i5-v6mr15453726pgf.370.1530353186029; Sat, 30 Jun 2018 03:06:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530353186; cv=none; d=google.com; s=arc-20160816; b=deR16Cn5s4liwWa6vSIMx0hI5dBr8LsJhnjPlM+++Q8uISHpDcyCyCAy39q4kkDymA QhWY4BV7BJEAcLfVikjTR4kqKMf7O6+KAg9TOazGE0hsiSfOwIlQmAduRxjnnFqN/w7s rqeXtSewhtLjEynrYnMOAYtjGfhUG66ua3yYTXJJoAQHLS4bQqHsc5mBWUqn8ZW7CNfm tkcBkSDdYnO/CyJfjjixVq1k0u0QBT2j9O4CX/qi0nHPAYgEsxggla+WLcbW+Wd0hVuH WbbZOEGfD1US7dsf/D3pca529k8Ll1TFEqf7zdbFh72R0WUtXYYJUQfpMVehNv4YLPxn Dsmw== 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:arc-authentication-results; bh=uixBXpDrTavno4xCA72W1tyqkgX52QZV5ghh4IqiwL0=; b=GNcB5UwmwP4n7d3MVkKHJBMzsqvC/ih4AvJlTF0suxK+yCt3dHqV6p2ca5J/IKvftx EhEzMm8Ti8r7DhfEeboCaTGDL1wXkUJYYcOF3qZR5DGrJo4+mCxFZjCyOxRaDyNFnm/P BdMBqQMvt8f0quAeSyu1Z5CtCi1Ttgv3RxirRS3HtP3LtvHk0ub7xFsyNtE7vdAZzofe kYllGrTuAipJ9eOtOW7Fw8vjZRhBb71QQb6qhQWI0erPto8aGwK5OdcUtK9hXiJGbQlH JeZCIb/CPFHWkY2b0buKeFdXCArN6r5BwwpizBmuvbZ+4rHDcHrqrg1s2VAO0YmAUjcn FsWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=pmdJbKxJ; 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 s2-v6si11275031plq.372.2018.06.30.03.05.58; Sat, 30 Jun 2018 03:06:26 -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=pmdJbKxJ; 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 S1030270AbeF3KE2 (ORCPT + 99 others); Sat, 30 Jun 2018 06:04:28 -0400 Received: from mail-ot0-f195.google.com ([74.125.82.195]:40295 "EHLO mail-ot0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934077AbeF3KEY (ORCPT ); Sat, 30 Jun 2018 06:04:24 -0400 Received: by mail-ot0-f195.google.com with SMTP id f17-v6so12520856otl.7; Sat, 30 Jun 2018 03:04:24 -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=uixBXpDrTavno4xCA72W1tyqkgX52QZV5ghh4IqiwL0=; b=pmdJbKxJqMcJklHctVmoQ6NJCUGz/RBUh9kFzkwl3ezVKQryChF2zTXI2pZdqvCvER 5omLZsqutgwgzZCz3twFkOOAMClNDD6JPADYY50dDVqTxWC6IjrnUbM9pDhsShR3ubOP z0LIX/f56fqr+QL2MScQ80TbrEtKF7KI/5lcQ9092KZUO9dIss2lYQFnmuod7B2LLGB5 rR80pbaARIx3HX7CR/TSgPl0mAdMuwvzDQTYFbByrtEjiFGk9cyh1j8UZ/MXYsE/IW58 f38mNLQkJ0phW+F/0GNJrAOgw8gGt/uelK4l62lb0eawiz9eyMLLSA2GE2BYUoJbyKbx 8/7Q== 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=uixBXpDrTavno4xCA72W1tyqkgX52QZV5ghh4IqiwL0=; b=QkyZp022Igf0MOfh4rRroAazyycW1wxJiNxoR40sPNLdT8JOckfit+WfrJLnLU5ziL Duw75DH4t8F2Bsz6feKcxUIbDHp1mL+bL6HbiAx4RPKBl0d9cZOghEhgIPDOEa8B3GU0 ora5eMaGEjsvW1UKP9IdkLyD7jPek1pfbWuoey+TAsLey3huXqWmAitSSZKwG+JAHB3b 3zr2itm7NiHsCw4J/CXblo4RyXaML/Gg5gmeFh9Ku/IHHUjgGOzKZQmDDYEzGBHFP0KB QB7IulWnDywH+8W3UjmJX1eaiLVcXkyrW0TR1MudfXUKcccwHsDjNuTOdLvdTTCnk9gG NE7g== X-Gm-Message-State: APt69E2Coo9AD1DH2BYkALV5biBm9/vccPSs8di5J05RagKB/WWLukhp HbC0hb0ZaHG02EkdurFDW57WPvjw7tX1ga+C8WM= X-Received: by 2002:a9d:5223:: with SMTP id e35-v6mr11470658oth.250.1530353064119; Sat, 30 Jun 2018 03:04:24 -0700 (PDT) MIME-Version: 1.0 References: <1530265876-18136-1-git-send-email-wanpengli@tencent.com> <1530265876-18136-2-git-send-email-wanpengli@tencent.com> <877emhewdx.fsf@vitty.brq.redhat.com> In-Reply-To: <877emhewdx.fsf@vitty.brq.redhat.com> From: Wanpeng Li Date: Sat, 30 Jun 2018 18:04:12 +0800 Message-ID: Subject: Re: [PATCH 1/2] KVM: X86: Implement PV IPI in linux guest To: Vitaly Kuznetsov Cc: LKML , kvm , Paolo Bonzini , Radim Krcmar 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, 29 Jun 2018 at 18:10, Vitaly Kuznetsov wrote: > > Wanpeng Li writes: > > > From: Wanpeng Li > > > > Implement PV IPIs in guest kernel. > > > > Cc: Paolo Bonzini > > Cc: Radim Kr=C4=8Dm=C3=A1=C5=99 > > Cc: Vitaly Kuznetsov > > Signed-off-by: Wanpeng Li > > --- > > arch/x86/include/uapi/asm/kvm_para.h | 1 + > > arch/x86/kernel/kvm.c | 63 ++++++++++++++++++++++++++++= ++++++++ > > 2 files changed, 64 insertions(+) > > > > diff --git a/arch/x86/include/uapi/asm/kvm_para.h b/arch/x86/include/ua= pi/asm/kvm_para.h > > index 0ede697..19980ec 100644 > > --- a/arch/x86/include/uapi/asm/kvm_para.h > > +++ b/arch/x86/include/uapi/asm/kvm_para.h > > @@ -28,6 +28,7 @@ > > #define KVM_FEATURE_PV_UNHALT 7 > > #define KVM_FEATURE_PV_TLB_FLUSH 9 > > #define KVM_FEATURE_ASYNC_PF_VMEXIT 10 > > +#define KVM_FEATURE_PV_SEND_IPI 11 > > > > #define KVM_HINTS_REALTIME 0 > > > > diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c > > index 5b2300b..b4f8dc3 100644 > > --- a/arch/x86/kernel/kvm.c > > +++ b/arch/x86/kernel/kvm.c > > @@ -454,6 +454,57 @@ static void __init sev_map_percpu_data(void) > > } > > > > #ifdef CONFIG_SMP > > + > > +static void __send_ipi_mask(const struct cpumask *mask, int vector) > > +{ > > + unsigned long flags, ipi_bitmap =3D 0; > > + int cpu; > > + > > + local_irq_save(flags); > > + > > + for_each_cpu(cpu, mask) > > + __set_bit(per_cpu(x86_cpu_to_apicid, cpu), &ipi_bitmap); > > We need a protection against per_cpu(x86_cpu_to_apicid, cpu) > here. Will do in v2. Regards, Wanpeng Li