Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp5310958ybv; Mon, 17 Feb 2020 17:12:34 -0800 (PST) X-Google-Smtp-Source: APXvYqx/RBd03FSKv2sBQhFLn9pUy2FrO1i6BD5RdrF34/289KBXd2RmijS9t5rd2i/YzyjoUgi0 X-Received: by 2002:a9d:6c55:: with SMTP id g21mr14310250otq.264.1581988354336; Mon, 17 Feb 2020 17:12:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581988354; cv=none; d=google.com; s=arc-20160816; b=QJaL4H1lqD9tk22HAjBJoK7I+QGl8R4ZfcGdPLZacUGwUGSh6ljy5JrU79tS/VGs/7 yUVsSvxpe5fQW49OsigAc6vfHPP/zDPjA7WDeVd75SgJYkcZy7wbNuNcIOOeOZj3l1DX MgSiXoBL4SuQcsCMIUAeHT1+FQ/EivuSNVbtMkuR2w+NuYHKTEx4ImeiMHqGwaoASxgx B+z8pQUg2i1aSvZxIyIL8EifoOCdSLRmk2e+pFeZQTtlDkwDOpKakXsrcDShLUN6ZGiu eIS6bAIdFFbML3QXdNRUOImDHc+dwtdhSBMKUildpRkptCmmzH4d/4rbM/B7tdD5c+eP /diQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=ZxKP5V2Mq8nq1NJT8kCExycpnJ7xXGIEe62BmBC6pgo=; b=wyB3R9JOczjbSd8N8GroHhHYHnTSCMb7tWh1DUF41Rgzdpjea8QvRld8BwSacFJwfr /qz/llht6JWf7svpvmyUZzrSFCV3yT3yLrUoFccYorWOg0sQ3n6cI6a3xbfkGr4XOZps vrOkr6xXVyth3iHG0jKqPwDgZ5zAhgDRPWDgyOSwowJEc+2w0lQp94H6nccyBv4GsmtM mI6khpZGMdWs3Pgz/E8W70wNMN232KKy0lzY4fb/6WjUW0L1j2cQB9tI0hmDeVYhQ/8G fGFskXuu+QN0QyLjAQ9Sih3kVc2XdQ7n215BYzXpqrOsY7Y9I043zeEEsmL7T/xfPG7r ZFPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=SgnErVfo; 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 o2si1033426otj.312.2020.02.17.17.12.21; Mon, 17 Feb 2020 17:12:34 -0800 (PST) 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=SgnErVfo; 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 S1726185AbgBRBMR (ORCPT + 99 others); Mon, 17 Feb 2020 20:12:17 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:46041 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726069AbgBRBMR (ORCPT ); Mon, 17 Feb 2020 20:12:17 -0500 Received: by mail-pl1-f194.google.com with SMTP id b22so7380381pls.12; Mon, 17 Feb 2020 17:12:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=ZxKP5V2Mq8nq1NJT8kCExycpnJ7xXGIEe62BmBC6pgo=; b=SgnErVfo7B0izjblZdA7Xjs+KoiIHz/UwsemL9I+V5sI8Tnr8cHyqoLbYLkmJFBJy4 5nbmHMJpaHep+xoxexfAbnCpnLXgE8flUzIKz2viz/FWFiSlBVuFskCxoo9H9Y60CwQJ acNe1VUdIpPRPamEDEkTyllDVGSXre11aHOpSF13dbhLRzpqaxmjEREmt5kAZnh1cFzk N47zcEDYxVpMEsAAg29OK5hkNncjuDzvGZKO2sQyS92MW/H9Vmt7/IiUKSlEBfRjlB3q VpA32+S67p8kmm/PavGgILWqVeg7xr2t7Hw0SZgOLuAZu5LEUHR15C9k6jmC4HmnmAQo fkUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ZxKP5V2Mq8nq1NJT8kCExycpnJ7xXGIEe62BmBC6pgo=; b=iI0+UtxWccX7phl8UMbd84fwT+iyAqy/dE9ZvaupdwaY9Znlj5z0TqYJv0OW10WRiW tBJ+PbObZSjUJdK/R08iVA2lINt3cmyiciKrnIbanx1Qh/wknoSkUQKJ30kQwbuClA8w qN8M2CWPX8FSjAK0tX5yQMIbmqaKGH9vLlZ8qg/JcSPrt/QtePf5wwrRs0vuXSQMUpd5 7MpMYBniPuhWlVxckXQb79mcQA05uDWSUmdYN6Thdk7MFaXOaBfSRVGqz5EOuYk0S6qu X/0qlFqR8n6vXTuJcItfIfJI2ph40ENrtXrF0e/cKRGVGjqdFLfAYPPZem2WK+Zkwjrn CFxA== X-Gm-Message-State: APjAAAVWryNJCJolhV/JU0ysUGtwIgszwPPyxLa6eJZwzZHPBizIJG4+ Is+NK3jQfadXy2SmT6XGoQPfNNMGtshHpg== X-Received: by 2002:a17:90a:a88d:: with SMTP id h13mr2085017pjq.48.1581988336244; Mon, 17 Feb 2020 17:12:16 -0800 (PST) Received: from kernel.DHCP ([120.244.140.205]) by smtp.googlemail.com with ESMTPSA id x23sm2074774pge.89.2020.02.17.17.11.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 17 Feb 2020 17:12:15 -0800 (PST) From: Wanpeng Li X-Google-Original-From: Wanpeng Li To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Paolo Bonzini , Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel Subject: [PATCH RESEND v2 1/2] KVM: Introduce pv check helpers Date: Tue, 18 Feb 2020 09:08:23 +0800 Message-Id: <1581988104-16628-1-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wanpeng Li Introduce some pv check helpers for consistency. Suggested-by: Vitaly Kuznetsov Reviewed-by: Konrad Rzeszutek Wilk Signed-off-by: Wanpeng Li --- arch/x86/kernel/kvm.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index d817f25..76ea8c4 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -425,7 +425,27 @@ static void __init sev_map_percpu_data(void) } } +static bool pv_tlb_flush_supported(void) +{ + return (kvm_para_has_feature(KVM_FEATURE_PV_TLB_FLUSH) && + !kvm_para_has_hint(KVM_HINTS_REALTIME) && + kvm_para_has_feature(KVM_FEATURE_STEAL_TIME)); +} + #ifdef CONFIG_SMP + +static bool pv_ipi_supported(void) +{ + return kvm_para_has_feature(KVM_FEATURE_PV_SEND_IPI); +} + +static bool pv_sched_yield_supported(void) +{ + return (kvm_para_has_feature(KVM_FEATURE_PV_SCHED_YIELD) && + !kvm_para_has_hint(KVM_HINTS_REALTIME) && + kvm_para_has_feature(KVM_FEATURE_STEAL_TIME)); +} + #define KVM_IPI_CLUSTER_SIZE (2 * BITS_PER_LONG) static void __send_ipi_mask(const struct cpumask *mask, int vector) @@ -619,9 +639,7 @@ static void __init kvm_guest_init(void) pv_ops.time.steal_clock = kvm_steal_clock; } - if (kvm_para_has_feature(KVM_FEATURE_PV_TLB_FLUSH) && - !kvm_para_has_hint(KVM_HINTS_REALTIME) && - kvm_para_has_feature(KVM_FEATURE_STEAL_TIME)) { + if (pv_tlb_flush_supported()) { pv_ops.mmu.flush_tlb_others = kvm_flush_tlb_others; pv_ops.mmu.tlb_remove_table = tlb_remove_table; } @@ -632,9 +650,7 @@ static void __init kvm_guest_init(void) #ifdef CONFIG_SMP smp_ops.smp_prepare_cpus = kvm_smp_prepare_cpus; smp_ops.smp_prepare_boot_cpu = kvm_smp_prepare_boot_cpu; - if (kvm_para_has_feature(KVM_FEATURE_PV_SCHED_YIELD) && - !kvm_para_has_hint(KVM_HINTS_REALTIME) && - kvm_para_has_feature(KVM_FEATURE_STEAL_TIME)) { + if (pv_sched_yield_supported()) { smp_ops.send_call_func_ipi = kvm_smp_send_call_func_ipi; pr_info("KVM setup pv sched yield\n"); } @@ -700,7 +716,7 @@ static uint32_t __init kvm_detect(void) static void __init kvm_apic_init(void) { #if defined(CONFIG_SMP) - if (kvm_para_has_feature(KVM_FEATURE_PV_SEND_IPI)) + if (pv_ipi_supported()) kvm_setup_pv_ipi(); #endif } @@ -739,9 +755,7 @@ static __init int kvm_setup_pv_tlb_flush(void) if (!kvm_para_available() || nopv) return 0; - if (kvm_para_has_feature(KVM_FEATURE_PV_TLB_FLUSH) && - !kvm_para_has_hint(KVM_HINTS_REALTIME) && - kvm_para_has_feature(KVM_FEATURE_STEAL_TIME)) { + if (pv_tlb_flush_supported()) { for_each_possible_cpu(cpu) { zalloc_cpumask_var_node(per_cpu_ptr(&__pv_tlb_mask, cpu), GFP_KERNEL, cpu_to_node(cpu)); -- 2.7.4